feat: 新增获取用户菜单权限接口

This commit is contained in:
2025-03-01 15:42:42 +08:00
parent 060984fdf4
commit 88273b1c78
2 changed files with 64 additions and 0 deletions

View File

@@ -3,6 +3,8 @@ declare (strict_types = 1);
namespace app\admin\controller\v1; namespace app\admin\controller\v1;
use app\admin\model\v1\SysMenuModel;
use app\admin\model\v1\SysRoleAuthorityModel;
use app\admin\model\v1\SysUserLoginLogModel; use app\admin\model\v1\SysUserLoginLogModel;
use app\admin\model\v1\SysUserModel; use app\admin\model\v1\SysUserModel;
use app\admin\validate\v1\SysUserValidate; use app\admin\validate\v1\SysUserValidate;
@@ -12,6 +14,65 @@ use app\admin\validate\v1\SysUserValidate;
*/ */
class User class User
{ {
// 获取用户菜单权限
public function menu()
{
$id = request()->param('id');
$user = SysUserModel::bypk($id)->find();
if (empty($user)) {
return error('用户不存在');
}
$menus = SysMenuModel::alias('menu')->field([
'menu.id',
'menu.pid',
'menu.title',
'menu.name',
'menu.path',
'menu.icon',
'menu.redirect',
'menu.component',
'menu.hidden',
'menu.actived',
'menu.keep_alive'
])
->where('menu.status', '=', 1)
->whereExists(function($query) use($user) {
$query->table((new SysRoleAuthorityModel)->getTable())->alias('authority')
->where('authority.role_id', '=', $user->role_id)
->where('authority.menu_id = menu.id')
->group('authority.menu_id');
})
->select();
if (!$menus->isEmpty()) {
$authoritys = SysRoleAuthorityModel::field([
'menu_id',
'permission'
])
->roleId($user->role_id)
->whereNotNull('permission')
->select();
$authoritys_map = [];
foreach ($authoritys as $val) {
$authoritys_map[$val['menu_id']][] = $val['permission'];
}
if (!empty($authoritys_map)) {
$menus->each(function($item) use($authoritys_map) {
$item['hidden'] = !!$item['hidden'];
$item['actived'] = !!$item['actived'];
$item['keep_alive'] = !!$item['keep_alive'];
$item['permissions'] = [];
if (isset($authoritys_map[$item['id']])) {
$item['permissions'] = $authoritys_map[$item['id']];
}
return $item;
});
}
}
return success('获取成功', array_to_tree($menus->toArray(), 0));
}
// 用户分页数据 // 用户分页数据
public function index() public function index()
{ {

View File

@@ -24,6 +24,9 @@ Route::group('v1', function () {
// 登录接口 // 登录接口
Route::post('login', 'Login/index'); Route::post('login', 'Login/index');
// 获取用户菜单权限
Route::get('{id}/menu', 'User/menu');
}); });
// 语言模块 // 语言模块