sys_user.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. package system
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "hongze/hz_crm_api/utils"
  6. "strings"
  7. "time"
  8. )
  9. type LoginReq struct {
  10. Username string `description:"账号"`
  11. Password string `description:"密码"`
  12. IsRemember bool `description:"是否属于受信设备"`
  13. }
  14. type LoginResp struct {
  15. Authorization string
  16. AdminName string `description:"系统用户名称"`
  17. RealName string `description:"系统用户姓名"`
  18. RoleName string `description:"角色名称"`
  19. RoleTypeCode string `description:"角色类型编码"`
  20. SysRoleTypeCode string `description:"角色类型编码"`
  21. AdminId int `description:"系统用户id"`
  22. ProductName string `description:"产品名称:admin,ficc,权益"`
  23. Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长"`
  24. }
  25. type Admin struct {
  26. AdminId int `orm:"column(admin_id);pk" description:"系统用户id"`
  27. AdminName string `description:"系统用户名称"`
  28. AdminAvatar string `description:"用户头像"`
  29. RealName string `description:"系统用户姓名"`
  30. Password string `json:"-"`
  31. LastUpdatedPasswordTime string `json:"-"`
  32. Enabled int
  33. Email string `description:"系统用户邮箱"`
  34. LastLoginTime string
  35. CreatedTime time.Time
  36. LastUpdatedTime string
  37. Role string `description:"系统用户角色"`
  38. Mobile string `description:"手机号"`
  39. RoleType int `description:"角色类型:1需要录入指标,0:不需要"`
  40. RoleId int `description:"角色ID"`
  41. RoleName string `description:"角色名称"`
  42. RoleTypeCode string `description:"角色类型编码"`
  43. DepartmentId int `description:"部门id"`
  44. DepartmentName string `description:"部门名称"`
  45. GroupId int `description:"分组id"`
  46. GroupName string `description:"分组名称"`
  47. Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,3:超级管理员,4:ficc销售组长"`
  48. Position string `description:"职位"`
  49. DisableTime time.Time `description:"禁用时间"`
  50. ChartPermission int8 `description:"图表权限id"`
  51. OpenId string `description:"弘则部门公众号的openid"`
  52. UnionId string `description:"微信公众平台唯一标识"`
  53. EdbPermission int8 `description:"指标库操作权限,0:只能操作 自己的,1:所有指标可操作"`
  54. MysteelChemicalPermission int8 `description:"钢联化工指标操作权限,0:只能操作 自己的,1:所有指标可操作"`
  55. PredictEdbPermission int8 `description:"预测指标库操作权限,0:只能操作 自己的,1:所有预测指标可操作"`
  56. Province string `description:"省"`
  57. ProvinceCode string `description:"省编码"`
  58. City string `description:"市"`
  59. CityCode string `description:"市编码"`
  60. EmployeeId string `description:"员工工号(钉钉/每刻报销)"`
  61. TelAreaCode string `description:"手机区号"`
  62. }
  63. // Update 更新用户基础信息
  64. func (item *Admin) Update(cols []string) (err error) {
  65. o := orm.NewOrm()
  66. _, err = o.Update(item, cols...)
  67. return
  68. }
  69. func CheckSysUser(userName, password string) (item *Admin, err error) {
  70. sql := ` SELECT a.*,b.role_type_code FROM admin AS a
  71. INNER JOIN sys_role AS b ON a.role_id=b.role_id WHERE a.admin_name=? AND a.password=? LIMIT 1`
  72. o := orm.NewOrm()
  73. err = o.Raw(sql, userName, password).QueryRow(&item)
  74. return
  75. }
  76. func GetSysUserById(sysUserId int) (item *Admin, err error) {
  77. sql := `SELECT * FROM admin WHERE admin_id=? LIMIT 1`
  78. o := orm.NewOrm()
  79. err = o.Raw(sql, sysUserId).QueryRow(&item)
  80. return
  81. }
  82. // 根据权限code获取系统用户列表
  83. func GetAdminListByRoleCode(roleTypeCode string) (items []*Admin, err error) {
  84. sql := `SELECT * FROM admin WHERE role_type_code=? and enabled=1 `
  85. o := orm.NewOrm()
  86. _, err = o.Raw(sql, roleTypeCode).QueryRows(&items)
  87. return
  88. }
  89. // 根据权限id获取系统用户列表
  90. func GetAdminListByRoleId(roleId string) (items []*Admin, err error) {
  91. sql := `SELECT * FROM admin WHERE role_id=? and enabled=1 `
  92. o := orm.NewOrm()
  93. _, err = o.Raw(sql, roleId).QueryRows(&items)
  94. return
  95. }
  96. // GetAdminListByIds 根据用户id字符串获取系统用户列表
  97. func GetAdminListByIds(ids string) (items []*Admin, err error) {
  98. sql := `SELECT * FROM admin WHERE admin_id in (` + ids + `) and enabled=1 `
  99. o := orm.NewOrm()
  100. _, err = o.Raw(sql).QueryRows(&items)
  101. return
  102. }
  103. func ModifyPwd(sysUserId int, newPwd string) (err error) {
  104. sql := `UPDATE admin SET password=?,last_updated_time=NOW() WHERE admin_id=? `
  105. o := orm.NewOrm()
  106. _, err = o.Raw(sql, newPwd, sysUserId).Exec()
  107. return
  108. }
  109. type ModifyPwdReq struct {
  110. OldPwd string `description:"旧密码"`
  111. NewPwd string `description:"新密码"`
  112. }
  113. func GetAdminList() (items []*Admin, err error) {
  114. sql := `SELECT * FROM admin`
  115. o := orm.NewOrm()
  116. _, err = o.Raw(sql).QueryRows(&items)
  117. return
  118. }
  119. func GetAdminEnabledList() (items []*Admin, err error) {
  120. sql := `SELECT * FROM admin WHERE enabled=1 `
  121. o := orm.NewOrm()
  122. _, err = o.Raw(sql).QueryRows(&items)
  123. return
  124. }
  125. // GetSysUserByMobile 根据手机号获取管理信息
  126. //func GetSysUserByMobile(mobile string) (item *Admin, err error) {
  127. // sql := `SELECT * FROM admin WHERE mobile = ? LIMIT 1`
  128. // o := orm.NewOrm()
  129. // err = o.Raw(sql, mobile).QueryRow(&item)
  130. // return
  131. //}
  132. // 通过用户姓名跟身份获取管理员信息
  133. func CheckSysUserByName(userName, roleTypeCode string) (item *Admin, err error) {
  134. sql := ` SELECT a.* FROM admin AS a WHERE a.real_name=? AND a.role_type_code=? LIMIT 1`
  135. o := orm.NewOrm()
  136. err = o.Raw(sql, userName, roleTypeCode).QueryRow(&item)
  137. return
  138. }
  139. // GetAdminListByGroupId 根据分组id获取系统用户列表
  140. func GetAdminListByGroupId(groupId int) (items []*Admin, err error) {
  141. sql := `SELECT * FROM admin WHERE group_id=? and enabled=1 `
  142. o := orm.NewOrm()
  143. _, err = o.Raw(sql, groupId).QueryRows(&items)
  144. return
  145. }
  146. // AdminWxUserRelation 管理员-微信用户关联
  147. type AdminWxUserRelation struct {
  148. AdminId int `json:"admin_id"`
  149. AdminName string `json:"admin_name"`
  150. RealName string `json:"real_name"`
  151. UserId int `json:"user_id"`
  152. }
  153. // GetAdminWxUserRelationByWxUserIds 通过微信用户及平台获取后台关联信息
  154. func GetAdminWxUserRelationByWxUserIds(platform int, userIds []int) (list []*AdminWxUserRelation, err error) {
  155. userLen := len(userIds)
  156. if userLen == 0 {
  157. return
  158. }
  159. o := orm.NewOrm()
  160. sql := `SELECT
  161. ad.admin_id, ad.admin_name, ad.real_name, wu.user_id
  162. FROM
  163. admin AS ad
  164. JOIN wx_user AS wu ON ad.mobile = wu.mobile
  165. JOIN user_record AS ur ON wu.user_id = ur.user_id AND ur.create_platform = ?
  166. WHERE
  167. wu.user_id IN (` + utils.GetOrmInReplace(userLen) + `)`
  168. _, err = o.Raw(sql, platform, userIds).QueryRows(&list)
  169. return
  170. }
  171. // GetAdminListByIdList 根据用户id列表获取系统用户列表
  172. func GetAdminListByIdList(idList []int) (items []*Admin, err error) {
  173. lenNum := len(idList)
  174. if lenNum <= 0 {
  175. return
  176. }
  177. sql := `SELECT * FROM admin WHERE admin_id in (` + utils.GetOrmInReplace(lenNum) + `) and enabled=1 `
  178. o := orm.NewOrm()
  179. _, err = o.Raw(sql, idList).QueryRows(&items)
  180. return
  181. }
  182. // GetAdminListByIdList 根据用户id列表获取系统用户列表
  183. func GetAdminListByIdListWithoutEnable(idList []int) (items []*Admin, err error) {
  184. lenNum := len(idList)
  185. if lenNum <= 0 {
  186. return
  187. }
  188. sql := `SELECT * FROM admin WHERE admin_id in (` + utils.GetOrmInReplace(lenNum) + `) `
  189. o := orm.NewOrm()
  190. _, err = o.Raw(sql, idList).QueryRows(&items)
  191. return
  192. }
  193. func (item *Admin) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  194. o := orm.NewOrm()
  195. sql := fmt.Sprintf(`SELECT COUNT(1) FROM admin WHERE 1=1 %s`, condition)
  196. err = o.Raw(sql, pars).QueryRow(&count)
  197. return
  198. }
  199. func (item *Admin) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*Admin, err error) {
  200. o := orm.NewOrm()
  201. fields := strings.Join(fieldArr, ",")
  202. if len(fieldArr) == 0 {
  203. fields = `*`
  204. }
  205. order := `ORDER BY created_time DESC`
  206. if orderRule != "" {
  207. order = ` ORDER BY ` + orderRule
  208. }
  209. sql := fmt.Sprintf(`SELECT %s FROM admin WHERE 1=1 %s %s`, fields, condition, order)
  210. _, err = o.Raw(sql, pars).QueryRows(&items)
  211. return
  212. }
  213. // GetSysUserByMobile 手机号获取用户
  214. func GetSysUserByMobile(mobile string) (item *Admin, err error) {
  215. o := orm.NewOrm()
  216. sql := `SELECT
  217. a.*, b.role_type_code
  218. FROM
  219. admin AS a
  220. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  221. WHERE
  222. a.mobile = ?
  223. LIMIT 1`
  224. err = o.Raw(sql, mobile).QueryRow(&item)
  225. return
  226. }
  227. // GetSysUserByEmail 邮箱获取用户
  228. func GetSysUserByEmail(email string) (item *Admin, err error) {
  229. o := orm.NewOrm()
  230. sql := `SELECT
  231. a.*, b.role_type_code
  232. FROM
  233. admin AS a
  234. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  235. WHERE
  236. a.email = ?
  237. LIMIT 1`
  238. err = o.Raw(sql, email).QueryRow(&item)
  239. return
  240. }
  241. // GetSysUserByAdminName 账号获取用户
  242. func GetSysUserByAdminName(adminName string) (item *Admin, err error) {
  243. o := orm.NewOrm()
  244. sql := `SELECT
  245. a.*, b.role_type_code
  246. FROM
  247. admin AS a
  248. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  249. WHERE
  250. a.admin_name = ?
  251. LIMIT 1`
  252. err = o.Raw(sql, adminName).QueryRow(&item)
  253. return
  254. }