admin.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package eta
  2. import (
  3. "errors"
  4. "eta/eta_bridge/global"
  5. "gorm.io/gorm/clause"
  6. "time"
  7. )
  8. // Admin 管理员表
  9. type Admin struct {
  10. AdminId int `gorm:"primaryKey;column:admin_id;type:bigint(20);not null" json:"admin_id"`
  11. AdminName string `gorm:"uniqueIndex:un;index:name;index:admin_pass;column:admin_name;type:varchar(60);not null" json:"admin_name"`
  12. AdminAvatar string `gorm:"column:admin_avatar;type:varchar(255);not null;default:''" json:"admin_avatar"` // 用户头像
  13. RealName string `gorm:"column:real_name;type:varchar(60)" json:"real_name"`
  14. Password string `gorm:"index:password;index:admin_pass;column:password;type:varchar(60);not null" json:"password"`
  15. LastUpdatedPasswordTime time.Time `gorm:"column:last_updated_password_time;type:datetime" json:"last_updated_password_time"`
  16. Enabled int `gorm:"uniqueIndex:un;column:enabled;type:tinyint(1);not null" json:"enabled"` // 1:有效,0:禁用
  17. Email string `gorm:"column:email;type:varchar(60)" json:"email"`
  18. LastLoginTime time.Time `gorm:"column:last_login_time;type:datetime" json:"last_login_time"` // 最近登陆时间
  19. CreatedTime time.Time `gorm:"index:created_time;column:created_time;type:datetime;default:CURRENT_TIMESTAMP" json:"created_time"` // 创建时间
  20. LastUpdatedTime time.Time `gorm:"index:last_updated_time;column:last_updated_time;type:timestamp;not null;default:CURRENT_TIMESTAMP" json:"last_updated_time"`
  21. Role string `gorm:"column:role;type:varchar(30);default:saller" json:"role"` // 用户角色
  22. Mobile string `gorm:"column:mobile;type:varchar(20)" json:"mobile"` // 手机号
  23. RoleType int `gorm:"column:role_type;type:tinyint(4);default:0" json:"role_type"` // 角色类型:1需要录入指标,0:不需要
  24. RoleId int `gorm:"column:role_id;type:int(11);default:0" json:"role_id"` // 角色id
  25. RoleName string `gorm:"column:role_name;type:varchar(100)" json:"role_name"` // 角色名称
  26. RoleTypeCode string `gorm:"column:role_type_code;type:varchar(20);default:''" json:"role_type_code"` // 角色编码
  27. DepartmentId int `gorm:"column:department_id;type:int(11);default:0" json:"department_id"` // 部门id
  28. DepartmentName string `gorm:"column:department_name;type:varchar(100)" json:"department_name"` // 部门名称
  29. GroupId int `gorm:"column:group_id;type:int(11);default:0" json:"group_id"` // 分组id
  30. GroupName string `gorm:"column:group_name;type:varchar(100)" json:"group_name"` // 分组名称
  31. Authority int `gorm:"column:authority;type:tinyint(4);default:0" json:"authority"` // 管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长
  32. Position string `gorm:"column:position;type:varchar(100)" json:"position"` // 职位
  33. DisableTime time.Time `gorm:"column:disable_time;type:datetime" json:"disable_time"` // 禁用时间
  34. ChartPermission uint `gorm:"column:chart_permission;type:tinyint(9) unsigned;default:0" json:"chart_permission"` // 图表指标操作权限,0:只能操作 自己的,1:所有图表可操作
  35. EdbPermission uint `gorm:"column:edb_permission;type:tinyint(9) unsigned;default:0" json:"edb_permission"` // 指标库操作权限,0:只能操作 自己的,1:所有指标可操作
  36. MysteelChemicalPermission uint `gorm:"column:mysteel_chemical_permission;type:tinyint(9) unsigned;default:0" json:"mysteel_chemical_permission"` // 钢联化工指标操作权限,0:只能操作 自己的,1:所有指标可操作
  37. OpenId string `gorm:"column:open_id;type:varchar(100);default:''" json:"open_id"` // 弘则部门公众号的openid
  38. UnionId string `gorm:"column:union_id;type:varchar(100);default:''" json:"union_id"` // 微信公众平台唯一标识
  39. PredictEdbPermission int `gorm:"column:predict_edb_permission;type:tinyint(9)" json:"predict_edb_permission"` // 预测指标库操作权限,0:只能操作 自己的,1:所有预测指标可操作
  40. Province string `gorm:"column:province;type:varchar(255);default:''" json:"province"` // 省
  41. ProvinceCode string `gorm:"column:province_code;type:varchar(100);default:''" json:"province_code"` // 省编码
  42. City string `gorm:"column:city;type:varchar(255);default:''" json:"city"` // 市
  43. CityCode string `gorm:"column:city_code;type:varchar(100);default:''" json:"city_code"` // 市编码
  44. EmployeeId string `gorm:"column:employee_id;type:varchar(64);not null;default:''" json:"employee_id"` // 员工工号(钉钉/每刻报销)
  45. TelAreaCode string `gorm:"column:tel_area_code;type:varchar(32);not null;default:'86'" json:"tel_area_code"` // 手机号区号
  46. OutID string `gorm:"column:out_id" json:"out_id"` // 外部id
  47. }
  48. func (m *Admin) TableName() string {
  49. return "admin"
  50. }
  51. // Create 新增用户
  52. func (m *Admin) Create() (err error) {
  53. err = global.MYSQL["hz_eta"].Create(m).Error
  54. return
  55. }
  56. // Update 更新用户
  57. func (m *Admin) Update(cols []string) (err error) {
  58. err = global.MYSQL["hz_eta"].Model(m).Select(cols).Updates(m).Error
  59. return
  60. }
  61. // GetSysUserById 主键获取系统用户
  62. func GetSysUserById(sysUserId int) (item *Admin, err error) {
  63. err = global.MYSQL["hz_eta"].Where("admin_id = ?", sysUserId).First(&item).Error
  64. return
  65. }
  66. // GetSysUserByAdminName 用户名获取系统用户
  67. func GetSysUserByAdminName(adminName string) (item *Admin, err error) {
  68. err = global.MYSQL["hz_eta"].Where("admin_name = ?", adminName).First(&item).Error
  69. return
  70. }
  71. // DeleteSysUserByName 根据用户名删除用户
  72. func DeleteSysUserByName(adminName string) (err error) {
  73. sql := `DELETE FROM admin WHERE admin_name = ? LIMIT 1`
  74. err = global.MYSQL["hz_eta"].Exec(sql, adminName).Error
  75. return
  76. }
  77. // GetAllSysUser 获取所有用户
  78. func GetAllSysUser() (items []*Admin, err error) {
  79. err = global.MYSQL["hz_eta"].Find(&items).Error
  80. return
  81. }
  82. // GetSysUserByOutId 通过外部id获取系统用户
  83. func GetSysUserByOutId(outId string) (item *Admin, err error) {
  84. if outId == `` {
  85. err = errors.New("outId不能为空")
  86. return
  87. }
  88. err = global.MYSQL["hz_eta"].Where("out_id = ?", outId).First(&item).Error
  89. return
  90. }
  91. func BatchInsertOrUpdateAdmin(admins []Admin) (err error) {
  92. db := global.MYSQL["hz_eta"]
  93. OnConflictFunc := clause.OnConflict{
  94. Columns: []clause.Column{{Name: "admin_name"}, {Name: "enabled"}},
  95. DoUpdates: clause.AssignmentColumns([]string{"real_name", "email", "mobile", "department_id", "department_name", "group_id", "group_name", "employee_id"}),
  96. }
  97. // 执行批量插入或更新操作
  98. err = db.Clauses(OnConflictFunc).Create(&admins).Error
  99. return
  100. }