feat: 新增获取用户菜单权限接口
This commit is contained in:
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ Route::group('v1', function () {
|
|||||||
|
|
||||||
// 登录接口
|
// 登录接口
|
||||||
Route::post('login', 'Login/index');
|
Route::post('login', 'Login/index');
|
||||||
|
|
||||||
|
// 获取用户菜单权限
|
||||||
|
Route::get('{id}/menu', 'User/menu');
|
||||||
});
|
});
|
||||||
|
|
||||||
// 语言模块
|
// 语言模块
|
||||||
|
|||||||
Reference in New Issue
Block a user