package models import ( "gorm.io/gorm" ) // salt for user user password gen aes code // salt 32 hex / 16 byte / 128 bit // code 64 hex / 32 byte / 256 bit type User struct { BaseModel Username string `json:"username" gorm:"type:varchar(100);unique;default:not null" methods:"post,*patch,*list" parse:"json"` Nickname string `json:"nickname" gorm:"type:varchar(100)" methods:"*post,*patch,*list" parse:"json"` Icon string `json:"icon" methods:"*post,*patch" parse:"json"` Email string `json:"email" gorm:"unique;type:varchar(50);default:null" methods:"*post,*patch,*list" parse:"json"` Phone string `json:"phone" gorm:"type:varchar(30);unique;default:null" methods:"*post,*patch,*list" parse:"json"` Status uint `json:"status" methods:"*patch,*list" parse:"json"` Salt string `json:"-" gorm:"type:varchar(32)"` Code string `json:"-" gorm:"type:varchar(64)" methods:"post" parse:"json"` } type UserRole struct { BaseModel UserID string `json:"user_id" methods:"get,list,post,patch,delete" parse:"path"` User *User `json:"-" gorm:"foreignKey:UserID;references:ID"` RoleID string `json:"role_id" methods:"post,delete" parse:"json"` Role *Role `json:"-" gorm:"foreignKey:RoleID;references:ID"` AppID string `json:"app_id" methods:"post,delete" parse:"json"` App *App `json:"-" gorm:"foreignKey:AppID;references:ID"` Status string `json:"status" methods:"post,*patch,*list" parse:"json"` } func (m *UserRole) AfterCreate(tx *gorm.DB) error { return tx.Model(&Role{}).Where("id = ?", m.RoleID).Update("user_count", gorm.Expr("user_count + ?", 1)).Error }