123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package system
  2. import (
  3. "errors"
  4. "spaceofcheng/services/models/model"
  5. "spaceofcheng/services/models/system"
  6. "spaceofcheng/services/service"
  7. "spaceofcheng/services/utils"
  8. )
  9. // RoleServ 系统处理
  10. type RoleServ struct {
  11. ctx *utils.Context
  12. dao *system.RoleDAO
  13. }
  14. // NewRoleServ 初始化
  15. func NewRoleServ(ctx *utils.Context) *RoleServ {
  16. return &RoleServ{
  17. ctx: ctx,
  18. dao: system.NewRoleDAO(ctx),
  19. }
  20. }
  21. // GetRoleList 获取Role列表
  22. func (s *RoleServ) GetRoleList(name string, page, pageSize int) (map[string]interface{}, error) {
  23. if pageSize == 0 {
  24. pageSize = service.PAGENUM
  25. }
  26. if page == 0 {
  27. page = 1
  28. }
  29. roles, err := s.dao.GetRoleList(name, page, pageSize)
  30. if err != nil {
  31. utils.LogError("获取角色列表失败: " + err.Error())
  32. return nil, errors.New("获取角色列表失败")
  33. }
  34. total, err := s.dao.GetRoleCount(name)
  35. if err != nil {
  36. utils.LogError("获取角色列表失败: " + err.Error())
  37. return nil, errors.New("获取角色列表失败")
  38. }
  39. return map[string]interface{}{
  40. "list": roles,
  41. "pagesize": pageSize,
  42. "pagenum": total,
  43. "page": page,
  44. }, nil
  45. }
  46. // GetRoleByID 根据ID获取角色
  47. func (s *RoleServ) GetRoleByID(roleid string) (*model.SysRole, error) {
  48. role, err := s.dao.GetRoleByID(roleid)
  49. if err != nil {
  50. utils.LogError("获取角色信息失败: " + err.Error())
  51. return nil, errors.New("获取角色信息失败")
  52. }
  53. // if role != nil {
  54. // menus, err := s.dao.GetRoleMenuByRoleID(roleid)
  55. // if err != nil {
  56. // beego.Error(err)
  57. // return nil, err
  58. // }
  59. // role.RoleMenu = menus
  60. // }
  61. return role, nil
  62. }
  63. // GetRoleMeneByID 根据ID获取角色菜单
  64. func (s *RoleServ) GetRoleMeneByID(roleid string) ([]model.SysMenu, error) {
  65. menus, err := s.dao.GetRoleMenuByRoleID(roleid)
  66. if err != nil {
  67. utils.LogError("获取角色菜单失败: " + err.Error())
  68. return nil, errors.New("获取角色菜单失败")
  69. }
  70. return menus, nil
  71. }
  72. // SaveRole 保存角色
  73. func (s *RoleServ) SaveRole(role model.SysRole) (*model.SysRole, error) {
  74. if role.RoleName == "" {
  75. return nil, utils.LogError("角色名称不允许为空!")
  76. }
  77. var newInfo *model.SysRole
  78. var err error
  79. if role.RoleId == "" {
  80. newInfo, err = s.dao.AddRole(role)
  81. } else {
  82. err = s.dao.UpdateRole(role)
  83. newInfo = &role
  84. }
  85. if err != nil {
  86. utils.LogError("保存角色信息失败: " + err.Error())
  87. return nil, errors.New("保存角色信息失败")
  88. }
  89. return newInfo, err
  90. }
  91. // SaveRoleMenu 保存角色菜单
  92. func (s *RoleServ) SaveRoleMenu(roleid, menuids string) error {
  93. var err error
  94. err = s.dao.DelRoleMenu(roleid)
  95. if err != nil {
  96. utils.LogError("保存角色菜单失败: " + err.Error())
  97. return errors.New("保存角色菜单失败")
  98. }
  99. err = s.dao.SaveRoleMenu(roleid, menuids)
  100. if err != nil {
  101. utils.LogError("保存角色菜单失败: " + err.Error())
  102. return errors.New("保存角色菜单失败")
  103. }
  104. err = s.dao.DelUserMenusByRole(roleid)
  105. if err != nil {
  106. utils.LogError("保存角色菜单失败: " + err.Error())
  107. return errors.New("保存角色菜单失败")
  108. }
  109. err = s.dao.SaveUserMenus(roleid)
  110. if err != nil {
  111. utils.LogError("保存角色菜单失败: " + err.Error())
  112. return errors.New("保存角色菜单失败")
  113. }
  114. return nil
  115. }
  116. // DelRole 删除角色
  117. func (s *RoleServ) DelRole(Roleid string) error {
  118. err := s.dao.DeleteRole(Roleid)
  119. if err != nil {
  120. utils.LogError("删除角色信息失败: " + err.Error())
  121. return errors.New("删除角色信息失败")
  122. }
  123. return err
  124. }