From ea8e889f4128822c5dd4b033d7aa48683e8398e5 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Sat, 1 Mar 2025 14:43:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=A7=92=E8=89=B2=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E6=96=B0=E5=A2=9E=E6=9D=83=E9=99=90=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Role.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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(); }