From 2b5e27bb873af0f9d82ba6a62053030893d0ffc3 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Wed, 26 Feb 2025 16:39:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(menu):=20=E5=A2=9E=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=A8=A1=E5=9D=97=E8=8F=9C=E5=8D=95=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E8=8F=9C=E5=8D=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 model_menu_lists 方法,用于根据 ID 获取模块菜单 - 修改 getMenuByAdminId 方法,增加获取顶级菜单的功能 - 实现 getModelList 方法,用于获取指定模型的菜单列表 --- app/admin/controller/auth/MenuController.php | 13 ++++++- app/admin/logic/auth/AdminLogic.php | 2 ++ app/admin/logic/auth/MenuLogic.php | 38 +++++++++++++++++--- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/app/admin/controller/auth/MenuController.php b/app/admin/controller/auth/MenuController.php index a923a3f..5d1c230 100644 --- a/app/admin/controller/auth/MenuController.php +++ b/app/admin/controller/auth/MenuController.php @@ -130,5 +130,16 @@ class MenuController extends BaseAdminController return $this->data($result); } - + /** + * 根据id获取模块菜单 + */ + public function model_menu_lists() + { + $id=$this->request->get('id',0); + if($id==0){ + return $this->fail('缺少参数'); + } + $list=MenuLogic::getModelList($id,$this->adminId); + return $this->success('操作成功', $list); + } } \ No newline at end of file diff --git a/app/admin/logic/auth/AdminLogic.php b/app/admin/logic/auth/AdminLogic.php index bff5eb1..a1a909f 100644 --- a/app/admin/logic/auth/AdminLogic.php +++ b/app/admin/logic/auth/AdminLogic.php @@ -233,6 +233,8 @@ class AdminLogic extends BaseLogic $result['user'] = $admin; // 当前管理员角色拥有的菜单 $result['menu'] = MenuLogic::getMenuByAdminId($params['id']); + $result['top_menu'] = MenuLogic::getMenuByAdminId($params['id'],true); + // 当前管理员橘色拥有的按钮权限 $result['permissions'] = AuthLogic::getBtnAuthByRoleId($admin); return $result; diff --git a/app/admin/logic/auth/MenuLogic.php b/app/admin/logic/auth/MenuLogic.php index 6cb00e4..31d72f3 100644 --- a/app/admin/logic/auth/MenuLogic.php +++ b/app/admin/logic/auth/MenuLogic.php @@ -41,19 +41,26 @@ class MenuLogic extends BaseLogic * @author 乔峰 * @date 2022/7/1 10:50 */ - public static function getMenuByAdminId($adminId) + public static function getMenuByAdminId($adminId,$is_top=false) { $admin = Admin::findOrEmpty($adminId); $where = []; + $menu_where=[]; + $where[] = ['type', 'in', ['M', 'C']]; $where[] = ['is_disable', '=', 0]; - - if ($admin['root'] != 1) { - $roleMenu = SystemRoleMenu::whereIn('role_id', $admin['role_id'])->column('menu_id'); + if($is_top==true){ + $menu_where[]=['is_top','=',1]; + $where[] = ['pid', '=', 0]; + } + if ($admin['root'] != 1 || $is_top==true) { + if(!empty($admin['role_id'])){ + $menu_where[]=['role_id','in',$admin['role_id']]; + } + $roleMenu = SystemRoleMenu::where($menu_where)->column('menu_id'); $where[] = ['id', 'in', $roleMenu]; } - $menu = SystemMenu::where($where) ->order(['sort' => 'desc', 'id' => 'asc']) ->select(); @@ -181,4 +188,25 @@ class MenuLogic extends BaseLogic return linear_to_tree($data, 'children'); } + public static function getModelList($id,$adminId){ + $where = []; + $where[] = ['is_disable', '=', 0]; + $where[] = ['id', '=', $id]; + $model_name = SystemMenu::where($where)->value('paths'); + if($model_name){ + unset($where[1]); + $where[] = ['type', 'in', ['M', 'C']]; + $where[] = ['model_name', '=', $model_name]; + $admin = Admin::findOrEmpty($adminId); + if ($admin['root'] != 1) { + $roleMenu = SystemRoleMenu::whereIn('role_id', $admin['role_id'])->column('menu_id'); + $where[] = ['id', 'in', $roleMenu]; + } + $menu = SystemMenu::where($where) + ->order(['sort' => 'desc', 'id' => 'asc']) + ->select(); + return linear_to_tree($menu, 'children','id','pid',$id); + } + return []; + } } \ No newline at end of file