refactor: 角色分类新增权限字段输出

This commit is contained in:
2025-03-01 14:43:46 +08:00
parent 92979157cc
commit ea8e889f41

View File

@@ -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();
}