package models import ( "strings" "time" "github.com/google/uuid" "gorm.io/gorm" ) // ============================================================================ // 结构体定义 // ============================================================================ // User 用户表模型 // 存储所有账号,包括超级管理员(Role=0)和子账号(Role=1等) // CreatedAt/UpdatedAt 由 GORM 自动维护 type User struct { ID uint `gorm:"primaryKey;comment:账号ID,自增主键"` UUID string `gorm:"uniqueIndex;size:36;not null;comment:唯一标识符" json:"uuid"` Username string `gorm:"uniqueIndex;size:64;not null;comment:账号名,唯一索引" json:"username"` Password string `gorm:"size:255;not null;comment:密码哈希值"` PasswordSalt string `gorm:"size:64;not null;comment:密码加密盐值"` Status int `gorm:"not null;default:1;comment:状态:0禁用,1启用" json:"status"` Role int `gorm:"not null;default:2;comment:角色类型:0超级管理员,1管理员,2子账号" json:"role"` Permissions string `gorm:"size:255;comment:权限列表,逗号分隔" json:"permissions"` Nickname string `gorm:"size:64;comment:用户昵称" json:"nickname"` Remark string `gorm:"size:255;comment:备注信息" json:"remark"` Avatar string `gorm:"size:255;comment:用户头像URL" json:"avatar"` CreatedAt time.Time `gorm:"autoCreateTime;comment:创建时间" json:"created_at"` UpdatedAt time.Time `gorm:"comment:更新时间"` } // ============================================================================ // 结构体方法 // ============================================================================ // BeforeCreate 在创建记录前自动生成UUID func (user *User) BeforeCreate(tx *gorm.DB) error { // 生成UUID if user.UUID == "" { user.UUID = strings.ToUpper(uuid.New().String()) } return nil }