userSvc.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package user
  2. import (
  3. "errors"
  4. "github.com/gogf/gf/os/glog"
  5. "github.com/gogf/gf/text/gstr"
  6. "github.com/gogf/gf/util/gconv"
  7. "gmanager/app/constants"
  8. "gmanager/app/model/user"
  9. "gmanager/app/model/user_role"
  10. "gmanager/app/service/log"
  11. "gmanager/library"
  12. "gmanager/library/base"
  13. )
  14. // 请求参数
  15. type Request struct {
  16. user.Entity
  17. UserId int `form:"userId" json:"userId"`
  18. }
  19. // 通过id获取实体
  20. func GetById(id int64) (*user.Entity, error) {
  21. if id <= 0 {
  22. glog.Error(" get id error")
  23. return new(user.Entity), errors.New("参数不合法")
  24. }
  25. return user.Model.FindOne(" id = ?", id)
  26. }
  27. // 根据条件获取实体
  28. func GetOne(form *base.BaseForm) (*user.Entity, error) {
  29. where := " 1 = 1 "
  30. var params []interface{}
  31. if form.Params != nil && form.Params["id"] != "" {
  32. where += " and id = ? "
  33. params = append(params, gconv.Int(form.Params["id"]))
  34. }
  35. return user.Model.FindOne(where, params)
  36. }
  37. // 根据用户名获取实体
  38. func GetByUsername(username string) (*user.Entity, error) {
  39. if username == "" {
  40. glog.Error(" getByUsername username error")
  41. return new(user.Entity), nil
  42. }
  43. return user.Model.FindOne("username = ?", username)
  44. }
  45. // 删除实体
  46. func Delete(id int64, userId int) (int64, error) {
  47. if id <= 0 {
  48. glog.Error("delete id error")
  49. return 0, errors.New("参数不合法")
  50. }
  51. // 获取删除对象
  52. entity, err := GetById(id)
  53. if err != nil {
  54. return 0, err
  55. }
  56. entity.UpdateId = userId
  57. entity.UpdateTime = library.GetNow()
  58. r, err1 := user.Model.Delete(" id = ?", id)
  59. if err1 != nil {
  60. return 0, err1
  61. }
  62. log.SaveLog(entity, constants.DELETE)
  63. return r.RowsAffected()
  64. }
  65. // 保存实体
  66. func Save(request *Request) (int64, error) {
  67. entity := (*user.Entity)(nil)
  68. err := gconv.Struct(request.Entity, &entity)
  69. if err != nil {
  70. return 0, errors.New("数据错误")
  71. }
  72. entity.UpdateId = request.UserId
  73. entity.UpdateTime = library.GetNow()
  74. // 判断新增还是修改
  75. if entity.Id <= 0 {
  76. entity.CreateId = request.UserId
  77. entity.CreateTime = library.GetNow()
  78. r, err := user.Model.Insert(entity)
  79. if err != nil {
  80. return 0, err
  81. }
  82. // 回写主键
  83. lastId, err := r.LastInsertId()
  84. if err != nil {
  85. return 0, err
  86. }
  87. entity.Id = gconv.Int(lastId)
  88. log.SaveLog(entity, constants.INSERT)
  89. return r.RowsAffected()
  90. } else {
  91. r, err := user.Model.OmitEmpty().Where(" id = ?", entity.Id).Update(entity)
  92. if err != nil {
  93. return 0, err
  94. }
  95. log.SaveLog(entity, constants.UPDATE)
  96. return r.RowsAffected()
  97. }
  98. }
  99. // 列表数据查询
  100. func List(form *base.BaseForm) ([]*user.Entity, error) {
  101. where := " 1 = 1 "
  102. var params []interface{}
  103. if form.Params != nil && form.Params["name"] != "" {
  104. where += " and name like ? "
  105. params = append(params, "%"+form.Params["name"]+"%")
  106. }
  107. return user.Model.Order(form.OrderBy).FindAll(where, params)
  108. }
  109. // 用户角色列表数据查询
  110. func ListUserRole(form *base.BaseForm) ([]*user_role.Entity, error) {
  111. where := " 1 = 1 "
  112. var params []interface{}
  113. if form.Params != nil && gconv.Int(form.Params["userId"]) > 0 {
  114. where += " and user_id = ? "
  115. params = append(params, gconv.Int(form.Params["userId"]))
  116. }
  117. return user_role.Model.Order(form.OrderBy).FindAll(where, params)
  118. }
  119. // 分页查询
  120. func Page(form *base.BaseForm) ([]user.Entity, error) {
  121. if form.Page <= 0 || form.Rows <= 0 {
  122. glog.Error("page param error", form.Page, form.Rows)
  123. return []user.Entity{}, nil
  124. }
  125. where := " 1 = 1 "
  126. var params []interface{}
  127. if form.Params != nil {
  128. if form.Params["username"] != "" {
  129. where += " and t.username like ? "
  130. params = append(params, "%"+form.Params["username"]+"%")
  131. }
  132. if form.Params["realName"] != "" {
  133. where += " and t.real_name like ? "
  134. params = append(params, "%"+form.Params["realName"]+"%")
  135. }
  136. if gconv.Int(form.Params["userType"]) > 0 {
  137. where += " and t.user_type = ? "
  138. params = append(params, gconv.Int(form.Params["userType"]))
  139. }
  140. if gconv.Int(form.Params["departId"]) > 0 {
  141. where += " and t.depart_id = ? "
  142. params = append(params, gconv.Int(form.Params["departId"]))
  143. }
  144. }
  145. num, err := user.Model.As("t").FindCount(where, params)
  146. form.TotalSize = num
  147. form.TotalPage = num / form.Rows
  148. if err != nil {
  149. glog.Error("page count error", err)
  150. return []user.Entity{}, err
  151. }
  152. // 没有数据直接返回
  153. if num == 0 {
  154. form.TotalPage = 0
  155. form.TotalSize = 0
  156. return []user.Entity{}, err
  157. }
  158. var resData []user.Entity
  159. dbModel := user.Model.As("t").Fields(user.Model.Columns() +
  160. ",depart.name as departName,su1.real_name as updateName,su2.real_name as createName")
  161. dbModel = dbModel.LeftJoin("sys_department depart", "t.depart_id = depart.id ")
  162. dbModel = dbModel.LeftJoin("sys_user su1", " t.update_id = su1.id ")
  163. dbModel = dbModel.LeftJoin("sys_user su2", " t.update_id = su2.id ")
  164. err = dbModel.Where(where, params).Order(form.OrderBy).Page(form.Page, form.Rows).M.Structs(&resData)
  165. if err != nil {
  166. glog.Error("page list error", err)
  167. return []user.Entity{}, err
  168. }
  169. return resData, nil
  170. }
  171. // 保存用户和角色
  172. func SaveUserRole(userId int, roleIds string) error {
  173. if userId <= 0 {
  174. return errors.New("参数错误")
  175. }
  176. _, err := user_role.Model.Delete(" user_id = ?", userId)
  177. if err != nil {
  178. return err
  179. }
  180. if roleIds == "" {
  181. return nil
  182. }
  183. roleIdArray := gstr.Split(roleIds, ",")
  184. for _, roleId := range roleIdArray {
  185. userRole := user_role.Entity{UserId: userId, RoleId: gconv.Int(roleId)}
  186. _, err := userRole.Insert()
  187. if err != nil {
  188. return err
  189. }
  190. }
  191. return nil
  192. }