diff --git a/app/admin/controller/v1/Role.php b/app/admin/controller/v1/Role.php index 3ef08cba..a07b81ad 100644 --- a/app/admin/controller/v1/Role.php +++ b/app/admin/controller/v1/Role.php @@ -4,6 +4,7 @@ declare (strict_types = 1); namespace app\admin\controller\v1; use app\admin\exception\InvalidOperateException; +use app\admin\model\v1\SysMenuModel; use app\admin\model\v1\SysRoleAuthorityModel; use app\admin\model\v1\SysRoleModel; use app\admin\validate\v1\SysRoleValidate; @@ -38,6 +39,26 @@ class Role 'list_rows' => $params['size'], 'page' => $params['page'] ]); + if (!$roles->isEmpty()) { + $roles_id = array_column($roles->items(), 'id'); + $authority = SysMenuModel::alias('menu') + ->field(['menu.title', 'authority.role_id']) + ->join('sys_role_authority authority', 'authority.menu_id = menu.id') + ->whereIn('authority.role_id', $roles_id) + ->select(); + if (!empty($authority)) { + $authority_map = []; + foreach ($authority as $v) { + $authority_map[$v['role_id']][] = $v['title']; + } + $roles->each(function($item) use($authority_map) { + $item['authority'] = []; + if (isset($authority_map[$item['id']])) { + $item['authority'] = array_unique($authority_map[$item['id']]); + } + }); + } + } } else if ('all' == request()->param('scene')) { $roles = $roles->select(); }