sys_user.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package system
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "github.com/beego/beego/v2/client/orm"
  7. "strings"
  8. "time"
  9. )
  10. type LoginReq struct {
  11. Username string `description:"账号"`
  12. Password string `description:"密码"`
  13. IsRemember bool `description:"是否属于受信设备"`
  14. }
  15. type LoginResp struct {
  16. Authorization string
  17. AdminName string `description:"系统用户名称"`
  18. RealName string `description:"系统用户姓名"`
  19. RoleName string `description:"角色名称"`
  20. RoleTypeCode string `description:"角色类型编码"`
  21. SysRoleTypeCode string `description:"角色类型编码"`
  22. AdminId int `description:"系统用户id"`
  23. ProductName string `description:"产品名称:admin,ficc,权益"`
  24. Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长"`
  25. }
  26. type Admin struct {
  27. AdminId int `orm:"column(admin_id);pk" description:"系统用户id"`
  28. AdminName string `description:"系统用户名称"`
  29. AdminAvatar string `description:"用户头像"`
  30. RealName string `description:"系统用户姓名"`
  31. Password string `json:"-"`
  32. LastUpdatedPasswordTime string `json:"-"`
  33. Enabled int
  34. Email string `description:"系统用户邮箱"`
  35. LastLoginTime string
  36. CreatedTime time.Time
  37. LastUpdatedTime string
  38. Role string `description:"系统用户角色"`
  39. Mobile string `description:"手机号"`
  40. RoleType int `description:"角色类型:1需要录入指标,0:不需要"`
  41. RoleId int `description:"角色ID"`
  42. RoleName string `description:"角色名称"`
  43. RoleTypeCode string `description:"角色类型编码"`
  44. DepartmentId int `description:"部门id"`
  45. DepartmentName string `description:"部门名称"`
  46. GroupId int `description:"分组id"`
  47. GroupName string `description:"分组名称"`
  48. Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,3:超级管理员,4:ficc销售组长"`
  49. Position string `description:"职位"`
  50. DisableTime time.Time `description:"禁用时间"`
  51. ChartPermission int8 `description:"图表权限id"`
  52. OpenId string `description:"弘则部门公众号的openid"`
  53. UnionId string `description:"微信公众平台唯一标识"`
  54. EdbPermission int8 `description:"指标库操作权限,0:只能操作 自己的,1:所有指标可操作"`
  55. MysteelChemicalPermission int8 `description:"钢联化工指标操作权限,0:只能操作 自己的,1:所有指标可操作"`
  56. PredictEdbPermission int8 `description:"预测指标库操作权限,0:只能操作 自己的,1:所有预测指标可操作"`
  57. Province string `description:"省"`
  58. ProvinceCode string `description:"省编码"`
  59. City string `description:"市"`
  60. CityCode string `description:"市编码"`
  61. EmployeeId string `description:"员工工号(钉钉/每刻报销)"`
  62. TelAreaCode string `description:"手机区号"`
  63. IsLdap int `description:"是否为域用户:0-系统账户;1-域用户"`
  64. }
  65. // Update 更新用户基础信息
  66. func (item *Admin) Update(cols []string) (err error) {
  67. //o := global.DEFAULT_DmSQL
  68. err = global.DEFAULT_DmSQL.Select(cols).Updates(*item).Error
  69. return
  70. }
  71. func CheckSysUser(userName, password string) (item *Admin, err error) {
  72. sql := ` SELECT a.*,b.role_type_code FROM "admin" AS a
  73. INNER JOIN sys_role AS b ON a.role_id=b.role_id WHERE a.admin_name=? AND a.password=? LIMIT 1`
  74. o := orm.NewOrm()
  75. err = o.Raw(sql, userName, password).QueryRow(&item)
  76. return
  77. }
  78. func GetSysUserById(sysUserId int) (item *Admin, err error) {
  79. sql := `SELECT * FROM "admin" WHERE admin_id=? LIMIT 1`
  80. err = global.DEFAULT_DmSQL.Raw(sql, sysUserId).First(&item).Error
  81. return
  82. }
  83. func ModifyPwd(sysUserId int, newPwd string) (err error) {
  84. sql := `UPDATE "admin" SET password=?,last_updated_time=NOW() WHERE admin_id=? `
  85. o := orm.NewOrm()
  86. _, err = o.Raw(sql, newPwd, sysUserId).Exec()
  87. return
  88. }
  89. type ModifyPwdReq struct {
  90. OldPwd string `description:"旧密码"`
  91. NewPwd string `description:"新密码"`
  92. }
  93. // AdminWxUserRelation 管理员-微信用户关联
  94. type AdminWxUserRelation struct {
  95. AdminId int `json:"admin_id"`
  96. AdminName string `json:"admin_name"`
  97. RealName string `json:"real_name"`
  98. UserId int `json:"user_id"`
  99. }
  100. // GetAdminListByIdList 根据用户id列表获取系统用户列表
  101. func GetAdminListByIdList(idList []int) (items []*Admin, err error) {
  102. lenNum := len(idList)
  103. if lenNum <= 0 {
  104. return
  105. }
  106. sql := `SELECT * FROM "admin" WHERE admin_id in (` + utils.GetOrmInReplace(lenNum) + `) and enabled=1 `
  107. o := orm.NewOrm()
  108. _, err = o.Raw(sql, idList).QueryRows(&items)
  109. return
  110. }
  111. // GetAdminListByIdList 根据用户id列表获取系统用户列表
  112. func GetAdminListByIdListWithoutEnable(idList []int) (items []*Admin, err error) {
  113. lenNum := len(idList)
  114. if lenNum <= 0 {
  115. return
  116. }
  117. sql := `SELECT * FROM "admin" WHERE admin_id in (` + utils.GetOrmInReplace(lenNum) + `) `
  118. o := orm.NewOrm()
  119. _, err = o.Raw(sql, idList).QueryRows(&items)
  120. return
  121. }
  122. func (item *Admin) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  123. o := orm.NewOrm()
  124. sql := fmt.Sprintf(`SELECT COUNT(1) FROM "admin" WHERE 1=1 %s`, condition)
  125. err = o.Raw(sql, pars).QueryRow(&count)
  126. return
  127. }
  128. func (item *Admin) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*Admin, err error) {
  129. o := orm.NewOrm()
  130. fields := strings.Join(fieldArr, ",")
  131. if len(fieldArr) == 0 {
  132. fields = `*`
  133. }
  134. order := `ORDER BY created_time DESC`
  135. if orderRule != "" {
  136. order = ` ORDER BY ` + orderRule
  137. }
  138. sql := fmt.Sprintf(`SELECT %s FROM "admin" WHERE 1=1 %s %s`, fields, condition, order)
  139. _, err = o.Raw(sql, pars).QueryRows(&items)
  140. return
  141. }
  142. // GetSysUserByMobile 手机号获取用户
  143. func GetSysUserByMobile(mobile string) (item *Admin, err error) {
  144. o := global.DEFAULT_DmSQL
  145. sql := `SELECT
  146. a.*, b.role_type_code
  147. FROM
  148. admin AS a
  149. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  150. WHERE
  151. a.mobile = ?
  152. LIMIT 1`
  153. err = o.Raw(sql, mobile).Find(&item).Error
  154. return
  155. }
  156. // GetSysUserByEmail 邮箱获取用户
  157. func GetSysUserByEmail(email string) (item *Admin, err error) {
  158. o := global.DEFAULT_DmSQL
  159. sql := `SELECT
  160. a.*, b.role_type_code
  161. FROM
  162. admin AS a
  163. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  164. WHERE
  165. a.email = ?
  166. LIMIT 1`
  167. err = o.Raw(sql, email).Find(&item).Error
  168. return
  169. }
  170. // GetSysUserByAdminName 账号获取用户
  171. func GetSysUserByAdminName(adminName string) (item *Admin, err error) {
  172. o := global.DEFAULT_DmSQL
  173. sql := `SELECT
  174. a.*, b.role_type_code
  175. FROM
  176. "admin" AS a
  177. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  178. WHERE
  179. a.admin_name = ?
  180. LIMIT 1`
  181. err = o.Raw(sql, adminName).Find(&item).Error
  182. return
  183. }