sys_user.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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. IsShareSeller int `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. }
  64. // Update 更新用户基础信息
  65. func (item *Admin) Update(cols []string) (err error) {
  66. o := orm.NewOrm()
  67. _, err = o.Update(item, cols...)
  68. return
  69. }
  70. func CheckSysUser(userName, password string) (item *Admin, err error) {
  71. sql := ` SELECT a.*,b.role_type_code FROM admin AS a
  72. INNER JOIN sys_role AS b ON a.role_id=b.role_id WHERE a.admin_name=? AND a.password=? LIMIT 1`
  73. o := orm.NewOrm()
  74. err = o.Raw(sql, userName, password).QueryRow(&item)
  75. return
  76. }
  77. func GetSysUserById(sysUserId int) (item *Admin, err error) {
  78. sql := `SELECT * FROM admin WHERE admin_id=? LIMIT 1`
  79. o := orm.NewOrm()
  80. err = o.Raw(sql, sysUserId).QueryRow(&item)
  81. return
  82. }
  83. // 根据权限code获取系统用户列表
  84. func GetAdminListByRoleCode(roleTypeCode string) (items []*Admin, err error) {
  85. sql := `SELECT * FROM admin WHERE role_type_code=? and enabled=1 `
  86. o := orm.NewOrm()
  87. _, err = o.Raw(sql, roleTypeCode).QueryRows(&items)
  88. return
  89. }
  90. // 根据权限id获取系统用户列表
  91. func GetAdminListByRoleId(roleId string) (items []*Admin, err error) {
  92. sql := `SELECT * FROM admin WHERE role_id=? and enabled=1 `
  93. o := orm.NewOrm()
  94. _, err = o.Raw(sql, roleId).QueryRows(&items)
  95. return
  96. }
  97. // GetAdminListByIds 根据用户id字符串获取系统用户列表
  98. func GetAdminListByIds(ids string) (items []*Admin, err error) {
  99. sql := `SELECT * FROM admin WHERE admin_id in (` + ids + `) and enabled=1 `
  100. o := orm.NewOrm()
  101. _, err = o.Raw(sql).QueryRows(&items)
  102. return
  103. }
  104. func ModifyPwd(sysUserId int, newPwd string) (err error) {
  105. sql := `UPDATE admin SET password=?,last_updated_time=NOW() WHERE admin_id=? `
  106. o := orm.NewOrm()
  107. _, err = o.Raw(sql, newPwd, sysUserId).Exec()
  108. return
  109. }
  110. type ModifyPwdReq struct {
  111. OldPwd string `description:"旧密码"`
  112. NewPwd string `description:"新密码"`
  113. }
  114. func GetAdminList() (items []*Admin, err error) {
  115. sql := `SELECT * FROM admin`
  116. o := orm.NewOrm()
  117. _, err = o.Raw(sql).QueryRows(&items)
  118. return
  119. }
  120. func GetAdminEnabledList() (items []*Admin, err error) {
  121. sql := `SELECT * FROM admin WHERE enabled=1 `
  122. o := orm.NewOrm()
  123. _, err = o.Raw(sql).QueryRows(&items)
  124. return
  125. }
  126. // GetSysUserByMobile 根据手机号获取管理信息
  127. //func GetSysUserByMobile(mobile string) (item *Admin, err error) {
  128. // sql := `SELECT * FROM admin WHERE mobile = ? LIMIT 1`
  129. // o := orm.NewOrm()
  130. // err = o.Raw(sql, mobile).QueryRow(&item)
  131. // return
  132. //}
  133. // 通过用户姓名跟身份获取管理员信息
  134. func CheckSysUserByName(userName, roleTypeCode string) (item *Admin, err error) {
  135. sql := ` SELECT a.* FROM admin AS a WHERE a.real_name=? AND a.role_type_code=? LIMIT 1`
  136. o := orm.NewOrm()
  137. err = o.Raw(sql, userName, roleTypeCode).QueryRow(&item)
  138. return
  139. }
  140. // GetAdminListByGroupId 根据分组id获取系统用户列表
  141. func GetAdminListByGroupId(groupId int) (items []*Admin, err error) {
  142. sql := `SELECT * FROM admin WHERE group_id=? and enabled=1 `
  143. o := orm.NewOrm()
  144. _, err = o.Raw(sql, groupId).QueryRows(&items)
  145. return
  146. }
  147. // AdminWxUserRelation 管理员-微信用户关联
  148. type AdminWxUserRelation struct {
  149. AdminId int `json:"admin_id"`
  150. AdminName string `json:"admin_name"`
  151. RealName string `json:"real_name"`
  152. UserId int `json:"user_id"`
  153. }
  154. // GetAdminWxUserRelationByWxUserIds 通过微信用户及平台获取后台关联信息
  155. func GetAdminWxUserRelationByWxUserIds(platform int, userIds []int) (list []*AdminWxUserRelation, err error) {
  156. userLen := len(userIds)
  157. if userLen == 0 {
  158. return
  159. }
  160. o := orm.NewOrm()
  161. sql := `SELECT
  162. ad.admin_id, ad.admin_name, ad.real_name, wu.user_id
  163. FROM
  164. admin AS ad
  165. JOIN wx_user AS wu ON ad.mobile = wu.mobile
  166. JOIN user_record AS ur ON wu.user_id = ur.user_id AND ur.create_platform = ?
  167. WHERE
  168. wu.user_id IN (` + utils.GetOrmInReplace(userLen) + `)`
  169. _, err = o.Raw(sql, platform, userIds).QueryRows(&list)
  170. return
  171. }
  172. // GetAdminListByIdList 根据用户id列表获取系统用户列表
  173. func GetAdminListByIdList(idList []int) (items []*Admin, err error) {
  174. lenNum := len(idList)
  175. if lenNum <= 0 {
  176. return
  177. }
  178. sql := `SELECT * FROM admin WHERE admin_id in (` + utils.GetOrmInReplace(lenNum) + `) and enabled=1 `
  179. o := orm.NewOrm()
  180. _, err = o.Raw(sql, idList).QueryRows(&items)
  181. return
  182. }
  183. // GetAdminListByIdList 根据用户id列表获取系统用户列表
  184. func GetAdminListByIdListWithoutEnable(idList []int) (items []*Admin, err error) {
  185. lenNum := len(idList)
  186. if lenNum <= 0 {
  187. return
  188. }
  189. sql := `SELECT * FROM admin WHERE admin_id in (` + utils.GetOrmInReplace(lenNum) + `) `
  190. o := orm.NewOrm()
  191. _, err = o.Raw(sql, idList).QueryRows(&items)
  192. return
  193. }
  194. func (item *Admin) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  195. o := orm.NewOrm()
  196. sql := fmt.Sprintf(`SELECT COUNT(1) FROM admin WHERE 1=1 %s`, condition)
  197. err = o.Raw(sql, pars).QueryRow(&count)
  198. return
  199. }
  200. func (item *Admin) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*Admin, err error) {
  201. o := orm.NewOrm()
  202. fields := strings.Join(fieldArr, ",")
  203. if len(fieldArr) == 0 {
  204. fields = `*`
  205. }
  206. order := `ORDER BY created_time DESC`
  207. if orderRule != "" {
  208. order = ` ORDER BY ` + orderRule
  209. }
  210. sql := fmt.Sprintf(`SELECT %s FROM admin WHERE 1=1 %s %s`, fields, condition, order)
  211. _, err = o.Raw(sql, pars).QueryRows(&items)
  212. return
  213. }
  214. // GetSysUserByMobile 手机号获取用户
  215. func GetSysUserByMobile(mobile string) (item *Admin, err error) {
  216. o := orm.NewOrm()
  217. sql := `SELECT
  218. a.*, b.role_type_code
  219. FROM
  220. admin AS a
  221. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  222. WHERE
  223. a.mobile = ?
  224. LIMIT 1`
  225. err = o.Raw(sql, mobile).QueryRow(&item)
  226. return
  227. }
  228. // GetSysUserByEmail 邮箱获取用户
  229. func GetSysUserByEmail(email string) (item *Admin, err error) {
  230. o := orm.NewOrm()
  231. sql := `SELECT
  232. a.*, b.role_type_code
  233. FROM
  234. admin AS a
  235. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  236. WHERE
  237. a.email = ?
  238. LIMIT 1`
  239. err = o.Raw(sql, email).QueryRow(&item)
  240. return
  241. }
  242. // GetSysUserByAdminName 账号获取用户
  243. func GetSysUserByAdminName(adminName string) (item *Admin, err error) {
  244. o := orm.NewOrm()
  245. sql := `SELECT
  246. a.*, b.role_type_code
  247. FROM
  248. admin AS a
  249. INNER JOIN sys_role AS b ON a.role_id = b.role_id
  250. WHERE
  251. a.admin_name = ?
  252. LIMIT 1`
  253. err = o.Raw(sql, adminName).QueryRow(&item)
  254. return
  255. }