package request import ( "gorm.io/gorm" pb "sghgogs.com/micro/shopping-service/proto" "time" ) type User struct { ID int64 `gorm:"primary_key;not_null;auto_increment;" json:"id"` Username string `gorm:"unique_index;not_null" json:"username"` Password string `json:"-" gorm:"unique_index;not_null"` // 这里使用 "-" 表示在 JSON 输出时不包含密码字段 PhoneNumber string `json:"phone_number"` Email string `json:"email"` Avatar string `json:"avatar"` CreatedAt time.Time `json:"created_at"` // 创建时间 CreatedBy string `json:"created_by"` UpdatedAt *time.Time `json:"updated_at"` UpdatedBy string `json:"updated_by"` Addresses []Address `gorm:"foreignKey:UserID" json:"addresses"` ShoppingCart ShoppingCart `gorm:"foreignKey:UserID" json:"shopping_cart"` Orders []Order `gorm:"foreignKey:UserID" json:"orders"` UserAuth []UserAuth `gorm:"foreignKey:UserID" json:"user_auth"` Roles []Role `gorm:"many2many:user_role;" json:"roles"` Status pb.StatusEnum `json:"status"` GroupID int64 `json:"group_id"` Group UserGroup `gorm:"foreignKey:GroupID"` DeletedAt gorm.DeletedAt } type UserGroup struct { ID int64 `gorm:"primary_key;not_null;auto_increment;" json:"id"` Name string `gorm:"unique_index;not_null" json:"name"` // 用户组名称 Description string `json:"description"` // 用户组介绍 Code string `gorm:"unique_index;not_null" json:"code"` // 用户组CODE唯一代码 CreatedAt time.Time `json:"created_at"` // 创建时间 CreatedBy string `json:"created_by"` // 创建人 UpdatedAt *time.Time `json:"updated_at"` // 更新时间 UpdatedBy string `json:"updated_by"` // 更新人 DeletedAt gorm.DeletedAt } type UserAuth struct { ID int64 `gorm:"primary_key;not_null;auto_increment;" json:"id"` UserID int64 `gorm:"not null" json:"user_id"` // 用户 ID OauthType string `gorm:"not null" json:"oauth_type"` // 第三方登陆类型 weibo、qq、wechat 等 OauthID string `gorm:"not null" json:"oauth_id"` // 第三方 uid 、openid 等 UnionID string `json:"union_id"` // QQ / 微信同一主体下 UnionId 相同 Credential string `json:"credential"` // 密码凭证 /access_token (目前更多是存储在缓存里) DeletedAt gorm.DeletedAt }