81 lines
3.7 KiB
Go
81 lines
3.7 KiB
Go
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"`
|
||
}
|