package models import "time" // GoalfyMaxUser 对应 admin_goalfymax_users 表 type GoalfyMaxUser struct { ID uint `json:"id" gorm:"primaryKey;autoIncrement;comment:主键ID"` UserID int `json:"user_id" gorm:"not null;uniqueIndex:uk_user_id;comment:SSO用户ID"` Username string `json:"username" gorm:"not null;type:varchar(50);comment:用户名"` Email string `json:"email" gorm:"not null;type:varchar(100);comment:邮箱"` Nickname string `json:"nickname" gorm:"type:varchar(50);comment:昵称"` Avatar string `json:"avatar" gorm:"type:varchar(255);comment:头像URL"` UserLevelCode string `json:"user_level_code" gorm:"type:varchar(50);default:'normal';comment:用户等级代码"` IsBanned bool `json:"is_banned" gorm:"not null;default:false;comment:是否被封禁"` BanReason string `json:"ban_reason" gorm:"type:varchar(255);comment:封禁原因"` BannedAt *time.Time `json:"banned_at" gorm:"comment:封禁时间"` BannedBy int `json:"banned_by" gorm:"comment:封禁操作者ID"` LastLoginAt *time.Time `json:"last_login_at" gorm:"comment:最后登录时间"` GoalfyHubPermission int `json:"goalfy_hub_permission" gorm:"default:0;comment:是否具备GoalfyHub权限 (0: 不具备, 1: 具备)"` Version int `json:"version" gorm:"default:1;comment:1:用户版 2:观察版 3:用户版和观察版"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt *time.Time `json:"-" gorm:"default:null"` // Balance 用户余额(美元),从Redis查询,不存储在数据库中 Balance *float64 `json:"balance,omitempty" gorm:"-"` } func (GoalfyMaxUser) TableName() string { return "admin_goalfymax_users" } // 列表请求 type GoalfyMaxUserListRequest struct { Username string `form:"username"` Email string `form:"email"` Status *int `form:"status"` // 1 正常 0 封禁(映射到 IsBanned) Page int `form:"page,default=1"` Size int `form:"size,default=20"` } // 更新请求 type GoalfyMaxUserUpdateRequest struct { Nickname string `json:"nickname"` Email string `json:"email"` Avatar string `json:"avatar"` UserLevelCode string `json:"user_level_code"` Version *int `json:"version"` // 版本:1-用户版 2-观察版 3-用户版和观察版 GoalfyHubPermission *int `json:"goalfy_hub_permission"` } // 封禁请求 type GoalfyMaxUserBanRequest struct { Reason string `json:"reason" binding:"required"` } // 增加余额请求 type GoalfyMaxUserAddBalanceRequest struct { Amount float64 `json:"amount" binding:"required,gt=0"` // 美元金额,必须大于0 } // 新增用户请求 type GoalfyMaxUserCreateRequest struct { Username string `json:"username" binding:"required,min=3,max=50"` Email string `json:"email" binding:"required,email"` Password string `json:"password" binding:"required,min=8"` Nickname string `json:"nickname"` Avatar string `json:"avatar"` UserLevelCode string `json:"user_level_code"` // 默认为 normal Version int `json:"version"` // 版本:1-用户版 2-观察版 3-用户版和观察版,默认为1 } // 新增用户请求(支持字符串输入) type GoalfyMaxUserCreateRequestString struct { Username string `json:"username" binding:"required,min=3,max=50"` Email string `json:"email" binding:"required,email"` Phone string `json:"phone"` Password string `json:"password"` Nickname string `json:"nickname"` Avatar string `json:"avatar"` }