cqpCow 1 год назад
Родитель
Сommit
03eca284a6

+ 3 - 0
app/Http/Middleware/CheckLogin.php

@@ -39,6 +39,9 @@ class CheckLogin
 
         //人员角色
         $data['role'] = EmployeeService::getPersonRole($result);
+        //角色里所有菜单权限
+        $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);
+
         $return = EmployeeService::getLoginDepart($result);
         //所属部门
         $data['rule_depart'] = $return[0] ?? [];

+ 2 - 0
app/Http/Middleware/CheckWx.php

@@ -60,6 +60,8 @@ class CheckWx
 
             //人员角色
             $data['role'] = EmployeeService::getPersonRole($employee_id);
+            //角色里所有菜单权限
+            $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);
             $return = EmployeeService::getLoginDepart($employee_id);
             //所属部门
             $data['rule_depart'] = $return[0] ?? [];

+ 25 - 0
app/Service/EmployeeService.php

@@ -1102,6 +1102,31 @@ class EmployeeService extends Service
         return $role_id;
     }
 
+    public static function getPersonRoleQx($role_id){
+        if(empty($role_id)) return [];
+        $role = RoleMenu::where('del_time',0)
+            ->whereIn('role_id',$role_id)
+            ->select('menu_id','type')
+            ->get()->toArray();
+        $sysmenu = SysMenu::where('del_time',0)
+            ->where('is_authority','>',0)
+            ->select('id')
+            ->get()->toArray();
+        $sysmenu = array_column($sysmenu,'id');
+
+        $return = [];
+        foreach ($role as $value){
+            if(! in_array($value['menu_id'],$sysmenu)) continue;
+            if(isset($return[$value['menu_id']]) && $return[$value['menu_id']] < $value['type']){
+                $return[$value['menu_id']] = $value['type'];
+            }else{
+                $return[$value['menu_id']] = $value['type'];
+            }
+        }
+
+        return $return;
+    }
+
     //通过角色获取菜单
     public function getMenuByRoleInList($user){
         $role_id = $user['role'] ?? [];