RoleService.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2017~2021 LARAVEL研发中心
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://www.laravel.cn
  8. // +----------------------------------------------------------------------
  9. // | Author: laravel开发员 <laravel.qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace App\Services\Common;
  12. use App\Models\MenuModel;
  13. use App\Models\RoleMenuModel;
  14. use App\Models\RoleModel;
  15. use App\Services\BaseService;
  16. /**
  17. * 角色管理-服务类
  18. * @author laravel开发员
  19. * @since 2020/11/11
  20. * Class RoleService
  21. * @package App\Services\Common
  22. */
  23. class RoleService extends BaseService
  24. {
  25. /**
  26. * 构造函数
  27. * @author laravel开发员
  28. * @since 2020/11/11
  29. * RoleService constructor.
  30. */
  31. public function __construct()
  32. {
  33. $this->model = new RoleModel();
  34. }
  35. /**
  36. * 获取角色列表
  37. * @return array
  38. * @since 2020/11/11
  39. * @author laravel开发员
  40. */
  41. public function getRoleList()
  42. {
  43. $list = $this->model->where([
  44. ['status', '=', 1],
  45. ['mark', '=', 1],
  46. ])->orderBy("sort", "asc")
  47. ->get()
  48. ->toArray();
  49. return message("操作成功", true, $list);
  50. }
  51. /**
  52. * 获取角色权限列表
  53. * @return mixed
  54. * @since 2020/11/11
  55. * @author laravel开发员
  56. */
  57. public function getPermissionList()
  58. {
  59. // 请求参数
  60. $param = request()->all();
  61. // 角色ID
  62. $roleId = intval(getter($param, "role_id", 0));
  63. // 获取全部菜单
  64. $menuModel = new MenuModel();
  65. $menuList = $menuModel->with(['parent'])->where([
  66. ['status', '=', 1],
  67. ['mark', '=', 1],
  68. ])->orderBy("sort", "asc")->get()->toArray();
  69. if (!empty($menuList)) {
  70. $roleMenuModel = new RoleMenuModel();
  71. $roleMenuList = $roleMenuModel->where("role_id", $roleId)->get("menu_id")->toArray();
  72. $menuIdList = array_key_value($roleMenuList, "menu_id");
  73. foreach ($menuList as &$val) {
  74. $parent = isset($val['parent'])? $val['parent'] : [];
  75. $pid = isset($val['pid'])? $val['pid'] : 0;
  76. if (in_array($val['id'], $menuIdList)) {
  77. $val['checked'] = true;
  78. $val['open'] = true;
  79. }
  80. if($pid>0 && $parent == null){
  81. unset($val);
  82. }
  83. }
  84. }
  85. return message(MESSAGE_OK, true, $menuList);
  86. }
  87. /**
  88. * 保存角色菜单权限数据
  89. * @return array
  90. * @since 2020/11/11
  91. * @author laravel开发员
  92. */
  93. public function savePermission()
  94. {
  95. // 请求参数
  96. $param = request()->all();
  97. // 角色ID
  98. $roleId = intval(getter($param, "role_id", 0));
  99. if (!$roleId) {
  100. return message("角色ID不能为空", false);
  101. }
  102. unset($param['role_id']);
  103. // 删除角色菜单关系数据
  104. $roleMenuModel = new RoleMenuModel();
  105. $roleMenuModel->where("role_id", $roleId)->delete();
  106. // 插入角色菜单关系数据
  107. if (is_array($param) && !empty($param)) {
  108. $list = [];
  109. foreach ($param as $val) {
  110. $data = [
  111. 'role_id' => $roleId,
  112. 'menu_id' => $val,
  113. ];
  114. $list[] = $data;
  115. }
  116. }
  117. $roleMenuModel->insert($list);
  118. return message();
  119. }
  120. }