sys_user.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package model
  2. import (
  3. "errors"
  4. "fmt"
  5. model2 "gas-cylinder-api/common/model"
  6. "github.com/google/uuid"
  7. coreModel "gogs.baozhida.cn/zoie/OAuth-core/model"
  8. "golang.org/x/crypto/bcrypt"
  9. "gorm.io/gorm"
  10. )
  11. type PROVUser struct {
  12. UserId string `json:"userId" gorm:"size:48;"` // 用户ID
  13. Name string `json:"name" gorm:"size:128;"` // 用户姓名
  14. IdCard string `json:"idCard" gorm:"size:32;"` // 身份证号
  15. No string `json:"no" gorm:"size:32;"` // 用户工号
  16. Phone string `json:"phone" gorm:"size:32;"` // 联系电话
  17. UserType int `json:"userType" gorm:"size:4;"` // 用户类型
  18. Description string `json:"description" gorm:"size:255;"` // 描述
  19. HireStatus string `json:"hireStatus" gorm:"size:64;"` // 聘用状态
  20. HireTime string `json:"hireTime" gorm:"size:10;"` // 聘用日期
  21. Education string `json:"education" gorm:"size:64;"` // 教育程度
  22. JobCategory string `json:"jobCategory" gorm:"size:64;"` // 岗位类别
  23. PersonQual string `json:"personQual" gorm:"size:128;"` // 资质
  24. Isorders int `json:"isorders" gorm:"size:4;"` // 用户类型
  25. CmpCode string `json:"cmpCode" gorm:"size:48;"` // 所属机构登记编
  26. }
  27. type SysUser struct {
  28. model2.Model
  29. coreModel.User
  30. Dept SysDept `json:"dept" gorm:"-"` // 部门
  31. Role SysRole `json:"role" gorm:"-"` // 角色
  32. ProvUser PROVUser `json:"prov_user" gorm:"-"` // 省平台用户信息
  33. model2.ControlBy
  34. model2.ModelTime
  35. }
  36. func (SysUser) TableName() string {
  37. return "sys_user"
  38. }
  39. func (e *SysUser) Generate() model2.ActiveRecord {
  40. o := *e
  41. return &o
  42. }
  43. func (e *SysUser) GetId() interface{} {
  44. return e.Id
  45. }
  46. // 加密
  47. func (e *SysUser) Encrypt() (err error) {
  48. if e.Password == "" {
  49. return
  50. }
  51. var hash []byte
  52. if hash, err = bcrypt.GenerateFromPassword([]byte(e.Password), bcrypt.DefaultCost); err != nil {
  53. return
  54. } else {
  55. e.Password = string(hash)
  56. return
  57. }
  58. }
  59. func (e *SysUser) BeforeCreate(_ *gorm.DB) error {
  60. e.Uuid = uuid.NewString()
  61. return e.Encrypt()
  62. }
  63. func (e *SysUser) BeforeUpdate(_ *gorm.DB) error {
  64. if e.Username == "admin" {
  65. return errors.New("禁止修改系统用户")
  66. }
  67. var err error
  68. if e.Password != "" {
  69. err = e.Encrypt()
  70. }
  71. return err
  72. }
  73. func (e *SysUser) BeforeDelete(_ *gorm.DB) error {
  74. if e.Username == "admin" {
  75. return errors.New("禁止删除系统用户")
  76. }
  77. return nil
  78. }
  79. func GetUserCacheKey(id int) string {
  80. return fmt.Sprintf("oauth:user:%d", id)
  81. }