SystemRoleController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. // | Author: sai <1430792918@qq.com>
  6. // +----------------------------------------------------------------------
  7. namespace plugin\saiadmin\app\controller\system;
  8. use plugin\saiadmin\app\model\system\SystemUserRole;
  9. use plugin\saiadmin\basic\BaseController;
  10. use plugin\saiadmin\app\cache\UserInfoCache;
  11. use plugin\saiadmin\app\model\system\SystemUser;
  12. use plugin\saiadmin\app\validate\system\SystemRoleValidate;
  13. use plugin\saiadmin\app\logic\system\SystemRoleLogic;
  14. use support\Request;
  15. use support\Response;
  16. /**
  17. * 角色控制器
  18. */
  19. class SystemRoleController extends BaseController
  20. {
  21. /**
  22. * 构造
  23. */
  24. public function __construct()
  25. {
  26. $this->logic = new SystemRoleLogic();
  27. $this->validate = new SystemRoleValidate;
  28. parent::__construct();
  29. }
  30. /**
  31. * 数据列表
  32. * @param Request $request
  33. * @return Response
  34. */
  35. public function index(Request $request) : Response
  36. {
  37. $where = $request->more([
  38. ['name', ''],
  39. ['code', ''],
  40. ['status', ''],
  41. ]);
  42. $data = $this->logic->tree($where);
  43. return $this->success($data);
  44. }
  45. /**
  46. * 可操作角色
  47. * @param Request $request
  48. * @return Response
  49. */
  50. public function accessRole(Request $request) : Response
  51. {
  52. $where = [];
  53. $data = $this->logic->accessRole($where);
  54. return $this->success($data);
  55. }
  56. /**
  57. * 菜单权限
  58. * @param Request $request
  59. * @return Response
  60. */
  61. public function menuPermission(Request $request) : Response
  62. {
  63. $id = $request->get('id');
  64. $menu_ids = $request->post('menu_ids');
  65. $this->logic->saveMenuPermission($id, $menu_ids);
  66. return $this->success('操作成功');
  67. }
  68. /**
  69. * 根据角色获取菜单
  70. * @param Request $request
  71. * @return Response
  72. */
  73. public function getMenuByRole(Request $request) : Response
  74. {
  75. $id = $request->get('id');
  76. $data = $this->logic->getMenuByRole($id);
  77. return $this->success($data);
  78. }
  79. /**
  80. * 数据改变后执行
  81. * @param $type
  82. * @param $args
  83. * @return void
  84. */
  85. protected function afterChange($type, $args): void
  86. {
  87. // 批量清理用户缓存
  88. if ($type == 'update') {
  89. $role_id = request()->input('id', '');
  90. $userIds = SystemUserRole::where('role_id', $role_id)->column('user_id');
  91. $userIds = array_unique($userIds);
  92. foreach ($userIds as $userId) {
  93. $userInfoCache = new UserInfoCache($userId);
  94. $userInfoCache->clearUserInfo();
  95. }
  96. }
  97. if ($type == 'destroy') {
  98. $role_ids = request()->input('ids', '');
  99. if (is_array($role_ids)) {
  100. $userIds = SystemUserRole::whereIn('role_id', $role_ids)->column('user_id');
  101. $userIds = array_unique($userIds);
  102. foreach ($userIds as $userId) {
  103. $userInfoCache = new UserInfoCache($userId);
  104. $userInfoCache->clearUserInfo();
  105. }
  106. }
  107. }
  108. }
  109. }