roleSvc.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package role
  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/role"
  9. "gmanager/app/model/role_menu"
  10. "gmanager/app/service/log"
  11. "gmanager/library"
  12. "gmanager/library/base"
  13. )
  14. // 请求参数
  15. type Request struct {
  16. role.Entity
  17. UserId int `form:"userId" json:"userId"`
  18. }
  19. // 通过id获取实体
  20. func GetById(id int64) (*role.Entity, error) {
  21. if id <= 0 {
  22. glog.Error(" get id error")
  23. return new(role.Entity), errors.New("参数不合法")
  24. }
  25. return role.Model.FindOne(" id = ?", id)
  26. }
  27. // 根据条件获取实体
  28. func GetOne(form *base.BaseForm) (*role.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 role.Model.FindOne(where, params)
  36. }
  37. // 删除实体
  38. func Delete(id int64, userId int) (int64, error) {
  39. if id <= 0 {
  40. glog.Error("delete id error")
  41. return 0, errors.New("参数不合法")
  42. }
  43. // 获取删除对象
  44. entity, err := GetById(id)
  45. if err != nil {
  46. return 0, err
  47. }
  48. entity.UpdateId = userId
  49. entity.UpdateTime = library.GetNow()
  50. r, err1 := role.Model.Delete(" id = ?", id)
  51. if err1 != nil {
  52. return 0, err1
  53. }
  54. log.SaveLog(entity, constants.DELETE)
  55. return r.RowsAffected()
  56. }
  57. // 保存实体
  58. func Save(request *Request) (int64, error) {
  59. entity := (*role.Entity)(nil)
  60. err := gconv.Struct(request.Entity, &entity)
  61. if err != nil {
  62. return 0, errors.New("数据错误")
  63. }
  64. entity.UpdateId = request.UserId
  65. entity.UpdateTime = library.GetNow()
  66. // 判断新增还是修改
  67. if entity.Id <= 0 {
  68. entity.CreateId = request.UserId
  69. entity.CreateTime = library.GetNow()
  70. r, err := role.Model.Insert(entity)
  71. if err != nil {
  72. return 0, err
  73. }
  74. // 回写主键
  75. lastId, err := r.LastInsertId()
  76. if err != nil {
  77. return 0, err
  78. }
  79. entity.Id = gconv.Int(lastId)
  80. request.Id = gconv.Int(lastId)
  81. log.SaveLog(entity, constants.INSERT)
  82. return r.RowsAffected()
  83. } else {
  84. r, err := role.Model.OmitEmpty().Where(" id = ?", entity.Id).Update(entity)
  85. if err != nil {
  86. return 0, err
  87. }
  88. log.SaveLog(entity, constants.UPDATE)
  89. return r.RowsAffected()
  90. }
  91. }
  92. // 列表数据查询
  93. func List(form *base.BaseForm) ([]*role.Entity, error) {
  94. where := " 1 = 1 "
  95. var params []interface{}
  96. if form.Params != nil && form.Params["name"] != "" {
  97. where += " and name like ? "
  98. params = append(params, "%"+form.Params["name"]+"%")
  99. }
  100. return role.Model.Order(form.OrderBy).FindAll(where, params)
  101. }
  102. // 角色菜单列表数据查询
  103. func ListRoleMenu(form *base.BaseForm) ([]*role_menu.Entity, error) {
  104. where := " 1 = 1 "
  105. var params []interface{}
  106. if form.Params != nil && gconv.Int(form.Params["roleId"]) > 0 {
  107. where += " and role_id = ? "
  108. params = append(params, gconv.Int(form.Params["roleId"]))
  109. }
  110. return role_menu.Model.Order(form.OrderBy).FindAll(where, params)
  111. }
  112. // 分页查询
  113. func Page(form *base.BaseForm) ([]*role.Entity, error) {
  114. if form.Page <= 0 || form.Rows <= 0 {
  115. glog.Error("page param error", form.Page, form.Rows)
  116. return []*role.Entity{}, nil
  117. }
  118. where := " 1 = 1 "
  119. var params []interface{}
  120. if form.Params != nil && form.Params["name"] != "" {
  121. where += " and name like ? "
  122. params = append(params, "%"+form.Params["name"]+"%")
  123. }
  124. num, err := role.Model.As("t").FindCount(where, params)
  125. form.TotalSize = num
  126. form.TotalPage = num / form.Rows
  127. if err != nil {
  128. glog.Error("page count error", err)
  129. return []*role.Entity{}, err
  130. }
  131. // 没有数据直接返回
  132. if num == 0 {
  133. form.TotalPage = 0
  134. form.TotalSize = 0
  135. return []*role.Entity{}, err
  136. }
  137. dbModel := role.Model.As("t").Fields(role.Model.Columns() + ",su1.real_name as updateName,su2.real_name as createName")
  138. dbModel = dbModel.LeftJoin("sys_user su1", " t.update_id = su1.id ")
  139. dbModel = dbModel.LeftJoin("sys_user su2", " t.update_id = su2.id ")
  140. return dbModel.Where(where, params).Order(form.OrderBy).Page(form.Page, form.Rows).FindAll(where, params)
  141. }
  142. // 保存角色和菜单
  143. func SaveRoleMenu(roleId int, menuIds string) error {
  144. if roleId <= 0 {
  145. return errors.New("参数错误")
  146. }
  147. _, err := role_menu.Model.Delete(" role_id = ?", roleId)
  148. if err != nil {
  149. return err
  150. }
  151. if menuIds == "" {
  152. return nil
  153. }
  154. menuIdArray := gstr.Split(menuIds, ",")
  155. for _, menuId := range menuIdArray {
  156. roleMenu := role_menu.Entity{RoleId: roleId, MenuId: gconv.Int(menuId)}
  157. _, err := roleMenu.Insert()
  158. if err != nil {
  159. return err
  160. }
  161. }
  162. return nil
  163. }