package model import ( "SciencesServer/utils" "fmt" "time" "gorm.io/gorm" ) type SysUser struct { Model UUID uint64 `gorm:"column:uuid;uniqueIndex:idx_sys_user_uuid;type:int;default:0;comment:用户唯一UUID" json:"-"` TenantID uint64 `gorm:"column:tenant_id;type:int;default:0;comment:租户ID,0表示系统用户" json:"-"` Account string `gorm:"column:account;type:varchar(50);default:'';comment:账户名" json:"account"` Avatar string `gorm:"column:avatar;type:varchar(255);default:'';comment:头像" json:"avatar"` Name string `gorm:"column:name;type:varchar(20);default:'';comment:真实姓名" json:"name"` Mobile string `gorm:"column:mobile;index:idx_sys_user_mobile;type:varchar(15);default:'';comment:联系方式" json:"mobile"` Email string `gorm:"column:email;type:varchar(50);default:'';comment:邮箱" json:"email"` Gender Password string `gorm:"column:password;type:varchar(100);default:'';comment:密码" json:"-"` Salt string `gorm:"column:salt;type:varchar(10);default:'';comment:盐值" json:"-"` IsAdmin SysUserAdministrator `gorm:"column:is_admin;type:tinyint(1);default:0;comment:管理员(0:普通用户,1:管理员)" json:"-"` Remark string `gorm:"column:remark;type:varchar(255);default:'';comment:备注" json:"-"` Status SysUserStatus `gorm:"column:status;type:tinyint(1);default:1;comment:账号状态" json:"status"` ModelDeleted ModelAt } type SysUserAdministrator int const ( // SysUserAdministratorForOrdinary 普通人员 SysUserAdministratorForOrdinary SysUserAdministrator = iota // SysUserAdministratorForAdmin 管理员 SysUserAdministratorForAdmin ) type SysUserStatus int const ( // SysUserStatusForNormal 正常 SysUserStatusForNormal SysUserStatus = iota + 1 // SysUserStatusForDisable 禁止登陆 SysUserStatusForDisable ) func (m *SysUser) TableName() string { return "sys_user" } func (m *SysUser) BeforeCreate(db *gorm.DB) error { m.Pass() snowflake, _ := utils.NewSnowflake(1) m.UUID = uint64(snowflake.GetID()) m.CreatedAt = time.Now() return nil } func (m *SysUser) Pass() { m.Salt = utils.GetRandomString(8) m.Password = utils.HashString([]byte(utils.Md5String(m.Password, m.Salt))) } func (m *SysUser) UUIDString() string { return fmt.Sprintf("%d", m.UUID) } func NewSysUser() *SysUser { return &SysUser{} }