package model import ( "time" "gorm.io/gorm" ) // 性别取值,空字符串表示未设置。 const ( GenderMale = "male" GenderFemale = "female" GenderOther = "other" ) // User 用户,与用户组为多对多关系。 type User struct { ID uint `gorm:"primaryKey" json:"id"` Username string `gorm:"size:50;uniqueIndex;not null" json:"username"` Email string `gorm:"size:255;uniqueIndex;not null" json:"email"` PasswordHash string `gorm:"size:255;not null" json:"-"` Nickname string `gorm:"size:50" json:"nickname"` Avatar string `gorm:"size:255" json:"avatar"` Gender string `gorm:"size:10;not null;default:''" json:"gender" example:"male"` Birthday Date `gorm:"type:date" json:"birthday" swaggertype:"string" example:"1995-06-15"` Status int8 `gorm:"not null;default:1" json:"status"` Groups []UserGroup `gorm:"-" json:"groups"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` } // IsAdmin 是否属于管理员组。 func (u User) IsAdmin() bool { for _, group := range u.Groups { if group.ID == GroupIDAdmin { return true } } return false }