feat: 新增获取用户菜单权限接口
This commit is contained in:
@@ -3,6 +3,8 @@ declare (strict_types = 1);
|
||||
|
||||
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\SysUserModel;
|
||||
use app\admin\validate\v1\SysUserValidate;
|
||||
@@ -12,6 +14,65 @@ use app\admin\validate\v1\SysUserValidate;
|
||||
*/
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -24,6 +24,9 @@ Route::group('v1', function () {
|
||||
|
||||
// 登录接口
|
||||
Route::post('login', 'Login/index');
|
||||
|
||||
// 获取用户菜单权限
|
||||
Route::get('{id}/menu', 'User/menu');
|
||||
});
|
||||
|
||||
// 语言模块
|
||||
|
||||
Reference in New Issue
Block a user