sys_user.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package model
  2. import (
  3. model2 "cold-delivery/common/model"
  4. "errors"
  5. "fmt"
  6. coreModel "gogs.baozhida.cn/zoie/OAuth-core/model"
  7. "golang.org/x/crypto/bcrypt"
  8. "gorm.io/gorm"
  9. )
  10. var (
  11. UserTypeSys = "sys"
  12. UserTypeCustomer = "customer"
  13. SysUserTypeSys = 1
  14. SysUserTypeWarehouse = 2
  15. SysUserTypeDriver = 3
  16. )
  17. type SysUser struct {
  18. model2.Model
  19. coreModel.User
  20. Type int `json:"type" gorm:"size:128;comment:类型"` // 管理员1 仓管2 司机3
  21. UserType string `json:"userType" gorm:"size:128;comment:用户类型"` // 系统用户-sys 客户-customer
  22. Openid string `json:"openid" gorm:"size:128;comment:微信openid"` // 微信openid
  23. Dept SysDept `json:"dept" gorm:"->"` // 部门
  24. Role SysRole `json:"-" gorm:"-"` // 角色
  25. model2.ControlBy
  26. model2.ModelTime
  27. }
  28. func (SysUser) TableName() string {
  29. return "sys_user"
  30. }
  31. func (e *SysUser) Generate() model2.ActiveRecord {
  32. o := *e
  33. return &o
  34. }
  35. func (e *SysUser) GetId() interface{} {
  36. return e.Id
  37. }
  38. // 加密
  39. func (e *SysUser) Encrypt() (err error) {
  40. if e.Password == "" {
  41. return
  42. }
  43. var hash []byte
  44. if hash, err = bcrypt.GenerateFromPassword([]byte(e.Password), bcrypt.DefaultCost); err != nil {
  45. return
  46. } else {
  47. e.Password = string(hash)
  48. return
  49. }
  50. }
  51. var (
  52. ErrForbidUpdateSysUser = errors.New("禁止修改系统用户")
  53. ErrForbidDeleteSysUser = errors.New("禁止删除系统用户")
  54. )
  55. func (e *SysUser) BeforeCreate(_ *gorm.DB) error {
  56. return e.Encrypt()
  57. }
  58. func (e *SysUser) BeforeUpdate(_ *gorm.DB) error {
  59. if e.Username == "admin" {
  60. return ErrForbidUpdateSysUser
  61. }
  62. var err error
  63. if e.Password != "" {
  64. err = e.Encrypt()
  65. }
  66. return err
  67. }
  68. func (e *SysUser) BeforeDelete(_ *gorm.DB) error {
  69. if e.Username == "admin" {
  70. return ErrForbidDeleteSysUser
  71. }
  72. return nil
  73. }
  74. func GetUserCacheKey(id int) string {
  75. return fmt.Sprintf("oauth:user:%d", id)
  76. }
  77. type SysUserOmit struct {
  78. Id int `json:"id,omitempty"` // 主键编码
  79. NickName string `json:"nickName,omitempty"` // 昵称
  80. Phone string `json:"phone,omitempty"` // 昵称
  81. }
  82. func (SysUserOmit) TableName() string {
  83. return "sys_user"
  84. }
  85. type SysUserForBind struct {
  86. model2.Model
  87. coreModel.User
  88. Type int `json:"type" gorm:"size:128;comment:类型"` // 管理员1 仓管2 司机3
  89. UserType string `json:"userType" gorm:"size:128;comment:用户类型"` // 系统用户-sys 客户-customer
  90. Openid string `json:"openid" gorm:"size:128;comment:微信openid"` // 微信openid
  91. IsBind bool
  92. model2.ControlBy
  93. model2.ModelTime
  94. }
  95. func (SysUserForBind) TableName() string {
  96. return "sys_user"
  97. }