user.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package request
  2. import (
  3. "gorm.io/gorm"
  4. pb "sghgogs.com/micro/shopping-service/proto"
  5. "time"
  6. )
  7. type User struct {
  8. ID int64 `gorm:"primary_key;not_null;auto_increment;" json:"id"`
  9. Username string `gorm:"unique_index;not_null" json:"username"`
  10. Password string `json:"-" gorm:"unique_index;not_null"` // 这里使用 "-" 表示在 JSON 输出时不包含密码字段
  11. PhoneNumber string `json:"phone_number"`
  12. Email string `json:"email"`
  13. Avatar string `json:"avatar"`
  14. CreatedAt time.Time `json:"created_at"` // 创建时间
  15. CreatedBy string `json:"created_by"`
  16. UpdatedAt *time.Time `json:"updated_at"`
  17. UpdatedBy string `json:"updated_by"`
  18. Addresses []Address `gorm:"foreignKey:UserID" json:"addresses"`
  19. ShoppingCart ShoppingCart `gorm:"foreignKey:UserID" json:"shopping_cart"`
  20. Orders []Order `gorm:"foreignKey:UserID" json:"orders"`
  21. UserAuth []UserAuth `gorm:"foreignKey:UserID" json:"user_auth"`
  22. Roles []Role `gorm:"many2many:user_role;" json:"roles"`
  23. Status pb.StatusEnum `json:"status"`
  24. GroupID int64 `json:"group_id"`
  25. Group UserGroup `gorm:"foreignKey:GroupID"`
  26. DeletedAt gorm.DeletedAt
  27. }
  28. type UserGroup struct {
  29. ID int64 `gorm:"primary_key;not_null;auto_increment;" json:"id"`
  30. Name string `gorm:"unique_index;not_null" json:"name"` // 用户组名称
  31. Description string `json:"description"` // 用户组介绍
  32. Code string `gorm:"unique_index;not_null" json:"code"` // 用户组CODE唯一代码
  33. CreatedAt time.Time `json:"created_at"` // 创建时间
  34. CreatedBy string `json:"created_by"` // 创建人
  35. UpdatedAt *time.Time `json:"updated_at"` // 更新时间
  36. UpdatedBy string `json:"updated_by"` // 更新人
  37. DeletedAt gorm.DeletedAt
  38. }
  39. type UserAuth struct {
  40. ID int64 `gorm:"primary_key;not_null;auto_increment;" json:"id"`
  41. UserID int64 `gorm:"not null" json:"user_id"` // 用户 ID
  42. OauthType string `gorm:"not null" json:"oauth_type"` // 第三方登陆类型 weibo、qq、wechat 等
  43. OauthID string `gorm:"not null" json:"oauth_id"` // 第三方 uid 、openid 等
  44. UnionID string `json:"union_id"` // QQ / 微信同一主体下 UnionId 相同
  45. Credential string `json:"credential"` // 密码凭证 /access_token (目前更多是存储在缓存里)
  46. DeletedAt gorm.DeletedAt
  47. }