user.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package user
  2. import (
  3. "gfast/library/utils"
  4. "github.com/gogf/gf/errors/gerror"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/os/gtime"
  7. "github.com/gogf/gf/util/gconv"
  8. )
  9. //设置用户状态参数
  10. type StatusReq struct {
  11. Id uint64 `p:"userId" v:"required#用户id不能为空"`
  12. UserStatus uint `p:"status" v:"required#用户状态不能为空"`
  13. }
  14. //重置用户密码状态参数
  15. type ResetPwdReq struct {
  16. Id uint64 `p:"userId" v:"required#用户id不能为空"`
  17. Password string `p:"password" v:"required|password#密码不能为空|密码以字母开头,只能包含字母、数字和下划线,长度在6~18之间"`
  18. }
  19. //用户搜索请求参数
  20. type SearchReq struct {
  21. DeptId string `p:deptId` //部门id
  22. DeptIds []int //所属部门id数据
  23. BeginTime string `p:"beginTime`
  24. EndTime string `p:"endTime"`
  25. Phonenumber string `p:"phonenumber"`
  26. Status string `p:"status"`
  27. KeyWords string `p:"userName"`
  28. PageNum int `p:"page"` //当前页码
  29. PageSize int `p:"pageSize"` //每页数
  30. }
  31. //添加修改用户公用请求字段
  32. type SetUserReq struct {
  33. DeptId uint64 `p:"deptId" v:"required#用户部门不能为空"` //所属部门
  34. Email string `p:"email" v:"email#邮箱格式错误"` //邮箱
  35. NickName string `p:"nickName" v:"required#用户昵称不能为空"`
  36. Phonenumber string `p:"phonenumber" v:"required|phone#手机号不能为空|手机号格式错误"`
  37. PostIds []int64 `p:"postIds"`
  38. Remark string `p:"remark"`
  39. RoleIds []int64 `p:"roleIds"`
  40. Sex int `p:"sex"`
  41. Status uint `p:"status"`
  42. IsAdmin int `p:"is_admin"` // 是否后台管理员 1 是 0 否
  43. }
  44. //添加用户请求
  45. type AddUserReq struct {
  46. SetUserReq
  47. UserName string `p:"userName" v:"required#用户账号不能为空"`
  48. Password string `p:"password" v:"required|password#密码不能为空|密码以字母开头,只能包含字母、数字和下划线,长度在6~18之间"`
  49. }
  50. //修改用户请求
  51. type EditUserReq struct {
  52. SetUserReq
  53. UserId int `p:"userId" v:"required#用户id不能为空"`
  54. }
  55. func GetUserById(id uint64) (*Entity, error) {
  56. return Model.Where("id", id).One()
  57. }
  58. //添加管理员操作
  59. func Add(req *AddUserReq) (InsertId int64, err error) {
  60. if i, _ := Model.Where("user_name=?", req.UserName).Count(); i != 0 {
  61. err = gerror.New("用户名已经存在")
  62. return
  63. }
  64. if i, _ := Model.Where("mobile=?", req.Phonenumber).Count(); i != 0 {
  65. err = gerror.New("手机号已经存在")
  66. return
  67. }
  68. //保存管理员信息
  69. entity := new(Entity)
  70. entity.UserName = req.UserName
  71. entity.DeptId = req.DeptId
  72. entity.UserStatus = req.Status
  73. entity.CreateTime = gconv.Int(gtime.Timestamp())
  74. entity.Mobile = req.Phonenumber
  75. entity.Sex = req.Sex
  76. entity.UserEmail = req.Email
  77. entity.UserNickname = req.NickName
  78. entity.UserPassword = req.Password
  79. entity.Remark = req.Remark
  80. entity.IsAdmin = req.IsAdmin
  81. res, err := entity.Save()
  82. if err != nil {
  83. return
  84. }
  85. InsertId, _ = res.LastInsertId()
  86. return
  87. }
  88. //修改用户信息
  89. func Edit(req *EditUserReq) (err error) {
  90. if i, _ := Model.Where("id!=? and mobile=?", req.UserId, req.Phonenumber).Count(); i != 0 {
  91. err = gerror.New("手机号已经存在")
  92. return
  93. }
  94. //保存管理员信息
  95. var entity *Entity
  96. entity, err = Model.Where("id", req.UserId).One()
  97. if err != nil || entity == nil {
  98. g.Log().Error(err)
  99. err = gerror.New("获取用户信息失败")
  100. return
  101. }
  102. entity.DeptId = req.DeptId
  103. entity.UserStatus = req.Status
  104. entity.Mobile = req.Phonenumber
  105. entity.Sex = req.Sex
  106. entity.UserEmail = req.Email
  107. entity.UserNickname = req.NickName
  108. entity.Remark = req.Remark
  109. entity.IsAdmin = req.IsAdmin
  110. _, err = entity.Update()
  111. if err != nil {
  112. g.Log().Error(err)
  113. err = gerror.New("修改用户信息失败")
  114. }
  115. return
  116. }
  117. //获取管理员列表
  118. func GetAdminList(req *SearchReq) (total, page int, userList []*Entity, err error) {
  119. userModel := Model
  120. if req != nil {
  121. if req.KeyWords != "" {
  122. keyWords := "%" + req.KeyWords + "%"
  123. userModel = userModel.Where("user_name like ? or user_nickname like ?",
  124. keyWords, keyWords)
  125. }
  126. if len(req.DeptIds) != 0 {
  127. userModel = userModel.Where("dept_id in (?)", req.DeptIds)
  128. }
  129. if req.Status != "" {
  130. userModel = userModel.Where("user_status", gconv.Int(req.Status))
  131. }
  132. if req.Phonenumber != "" {
  133. userModel = userModel.Where("mobile like ?", "%"+req.Phonenumber+"%")
  134. }
  135. if req.BeginTime != "" {
  136. userModel = userModel.Where("create_time >=?", utils.StrToTimestamp(req.BeginTime))
  137. }
  138. if req.EndTime != "" {
  139. userModel = userModel.Where("create_time <=?", utils.StrToTimestamp(req.EndTime))
  140. }
  141. }
  142. total, err = userModel.Count()
  143. if err != nil {
  144. g.Log().Error(err)
  145. err = gerror.New("获取总行数失败")
  146. return
  147. }
  148. if req.PageNum == 0 {
  149. req.PageNum = 1
  150. }
  151. page = req.PageNum
  152. userList, err = userModel.Page(page, req.PageSize).Order("id asc").All()
  153. return
  154. }
  155. //修改用户状态
  156. func ChangeUserStatus(req *StatusReq) error {
  157. user, err := Model.Where("id", req.Id).One()
  158. if err != nil || user == nil {
  159. g.Log().Error(err)
  160. return gerror.New("用户不存在")
  161. }
  162. user.UserStatus = req.UserStatus
  163. _, err = user.Update()
  164. if err != nil {
  165. g.Log().Error(err)
  166. return gerror.New("修改用户状态失败")
  167. }
  168. return nil
  169. }
  170. //重置用户密码
  171. func ResetUserPwd(req *ResetPwdReq) error {
  172. user, err := Model.Where("id", req.Id).One()
  173. if err != nil || user == nil {
  174. g.Log().Error(err)
  175. return gerror.New("用户不存在")
  176. }
  177. user.UserPassword = req.Password
  178. _, err = user.Update()
  179. if err != nil {
  180. g.Log().Error(err)
  181. return gerror.New("修改用户密码失败")
  182. }
  183. return nil
  184. }