auth_rule.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package auth_service
  2. import (
  3. "database/sql"
  4. "gfast/app/model/auth_rule"
  5. "gfast/app/model/role"
  6. "github.com/gogf/gf/database/gdb"
  7. "github.com/gogf/gf/errors/gerror"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/os/gtime"
  10. "github.com/gogf/gf/util/gconv"
  11. "github.com/gogf/gf/util/gvalid"
  12. )
  13. //菜单对象
  14. type MenuReq struct {
  15. IsMenu int `p:"ismenu" c:"ismenu" v:"min:0|max:1#菜单类型最小值为:min|菜单类型最大值为:max"`
  16. Pid int `p:"pid" c:"pid" v:"min:0"`
  17. Name string `p:"name" c:"name" v:"required#请填写规则名称"`
  18. Title string `p:"title" c:"title" v:"required|length:1,100#请填写标题|标题长度在:min到:max位"`
  19. Icon string `p:"icon" c:"icon"`
  20. Weigh int `p:"weigh" c:"weigh"`
  21. Condition string `p:"condition" c:"condition"`
  22. Remark string `p:"remark" c:"remark"`
  23. Status int `p:"status" c:"status"`
  24. }
  25. //获取菜单列表
  26. func GetMenuList(where string, params ...interface{}) (error, g.List) {
  27. var err error
  28. var list []*auth_rule.Entity
  29. if where != "" {
  30. list, err = auth_rule.Model.Where(where, params...).Order("weigh desc,id asc").FindAll()
  31. } else {
  32. list, err = auth_rule.Model.Order("weigh desc,id asc").FindAll()
  33. }
  34. if err != nil {
  35. g.Log().Error(err)
  36. return err, nil
  37. }
  38. var gList = make(g.List, len(list))
  39. for k, v := range list {
  40. tMap := gconv.Map(v)
  41. gList[k] = tMap
  42. }
  43. return nil, gList
  44. }
  45. // 添加菜单操作
  46. func AddMenu(req *MenuReq) (err error, insertId int64) {
  47. menuMap := gconv.Map(req)
  48. now := gtime.Timestamp()
  49. menuMap["createtime"] = now
  50. menuMap["updatetime"] = now
  51. res, e := auth_rule.Model.Insert(menuMap)
  52. err = e
  53. insertId, _ = res.LastInsertId()
  54. return
  55. }
  56. //修改菜单操作
  57. func EditMenu(req *MenuReq, id int) (err error, rows int64) {
  58. menuMap := gconv.Map(req)
  59. now := gtime.Timestamp()
  60. menuMap["updatetime"] = now
  61. res, e := auth_rule.Model.Where("id=?", id).Update(menuMap)
  62. err = e
  63. rows, _ = res.RowsAffected()
  64. return
  65. }
  66. //获取用户组列表
  67. func GetRoleList(where string, params ...interface{}) (err error, list g.List) {
  68. var rl []*role.Entity
  69. if where != "" {
  70. rl, err = role.Model.Where(where, params).OrderBy("list_order asc,id asc").All()
  71. } else {
  72. rl, err = role.Model.OrderBy("list_order asc,id asc").All()
  73. }
  74. if err != nil {
  75. g.Log().Error(err)
  76. return err, nil
  77. }
  78. list = make(g.List, len(rl))
  79. for k, v := range rl {
  80. tMap := gconv.Map(v)
  81. list[k] = tMap
  82. }
  83. return
  84. }
  85. //保存角色信息并返回插入的id
  86. func AddRole(tx *gdb.TX, data map[string]interface{}) (InsId int64, err error) {
  87. if e := checkRoleData(data); e != nil {
  88. err = gerror.New(e.(*gvalid.Error).FirstString())
  89. return
  90. }
  91. //保存角色信息
  92. now := gtime.Timestamp()
  93. roleMap := gdb.Map{
  94. "parent_id": data["parent_id"],
  95. "status": data["status"],
  96. "name": data["name"],
  97. "create_time": now,
  98. "update_time": now,
  99. "list_order": data["list_order"],
  100. "remark": data["remark"],
  101. }
  102. var res sql.Result
  103. res, err = tx.Table(role.Table).Data(roleMap).Save()
  104. if err != nil {
  105. return
  106. }
  107. InsId, _ = res.LastInsertId()
  108. return
  109. }
  110. func AddRoleRule(tx *gdb.TX, iRule interface{}, roleId int64) (err error) {
  111. rule := iRule.([]interface{})
  112. for _, v := range rule {
  113. g.Log().Debug(v)
  114. }
  115. return
  116. }
  117. func checkRoleData(params map[string]interface{}) error {
  118. rules := []string{
  119. "name@required|length:1,20#请填写角色名称|名称应在:min到:max个字符之间",
  120. "parent_id@integer|min:0#父级ID必须为整数|父级ID必须大于等于0",
  121. }
  122. e := gvalid.CheckMap(params, rules)
  123. if e != nil {
  124. return e
  125. }
  126. return nil
  127. }