cqpCow 1 jaar geleden
bovenliggende
commit
62c62efa6d
2 gewijzigde bestanden met toevoegingen van 16 en 49 verwijderingen
  1. 10 42
      app/Service/EmployeeService.php
  2. 6 7
      app/Service/SysMenuService.php

+ 10 - 42
app/Service/EmployeeService.php

@@ -1058,11 +1058,13 @@ class EmployeeService extends Service
         if($res['is_admin'] != Employee::IS_ADMIN) return [false,'该账号不能登录!'];
         if($res['state'] == Employee::NOT_USE) return [false,'账号停用!'];
 
+        //总社分社信息
         $return = EmployeeService::getLoginDepart($res['id']);
         $is_main = $return[4] ?? 0;
         $depart_top = $return[1] ?? [];
         $depart_top_title = $depart_top[0]['title'] ?? "";
         $depart_top_id = $depart_top[0]['depart_id'] ?? 0;
+
         return [true, ['id'=>$res['id'], 'name'=>$res['emp_name'], 'is_main' => $is_main, 'top_depart_id' => $depart_top_id,'top_depart_title' => $depart_top_title]];
     }
 
@@ -1087,7 +1089,7 @@ class EmployeeService extends Service
      * @return array
      */
     public static function getPersonRole($employee_id){
-        if(empty($employee_id)) return [];
+        if(empty($employee_id) || $employee_id == Employee::SPECIAL_ADMIN) return [];
         $role = EmployeeRole::where('del_time',0)
             ->where('employee_id',$employee_id)
             ->select('role_id')
@@ -1101,54 +1103,20 @@ class EmployeeService extends Service
         return $role_id;
     }
 
-    /**
-     * 获取登录账号的角色的菜单
-     * @param $role_id
-     * @param $user
-     * @return array
-     */
-    public function getMenuByRole($role_id,$user){
+    //通过角色获取菜单
+    public function getMenuByRoleInList($role_id,$user){
         $menu = SysMenu::where('del_time',0)->select('id')->get()->toArray();
-        $button = SysMenuButton::where('del_time',0)->select('id','menu_id')->get()->toArray();
-        $button_map = [];
-        foreach ($button as $value){
-            $button_map[$value['menu_id']][] = $value['id'];
-        }
-        $object = [];//返回的模型
-        if($user['id'] == Employee::SPECIAL_ADMIN){
-            //超级管理员
-            foreach ($menu as $value){
-                $object[] = [
-                    'type' => 0,//所有权限
-                    'menu_id' => $value['id'],
-                    'button' => $button_map[$value['id']] ?? [],
-                ];
-            }
-            return $object;
-        }
+
+        if($user['id'] == Employee::SPECIAL_ADMIN) return array_column($menu,'id');
 
         //没绑定角色
         if(empty($role_id)) return [];
 
-        $search = RoleMenu::whereIn('role_id',$role_id)
+        $role_menu = RoleMenu::whereIn('role_id',$role_id)
             ->where('del_time',0)
-            ->select('menu_id','type')
+            ->select('menu_id')
             ->get()->toArray();
-        $button = $this->fillRoleButton($role_id);
-        $tmp = [];
-        foreach ($search as $value){
-            if(! in_array($value['menu_id'],$tmp)){
-                $object[] = [
-                    'menu_id' => $value['menu_id'],
-                    'type' => $value['type'],
-                    'button' => $button[$value['menu_id']] ?? [],
-                ];
-                $tmp[] = $value['menu_id'];
-            }
-        }
-        unset($tmp);
-
-        return $object;
+        return array_column($role_menu,'menu_id');
     }
 
     /**

+ 6 - 7
app/Service/SysMenuService.php

@@ -134,18 +134,17 @@ class SysMenuService extends Service
                 ->where('state',1)
                 ->select('title','icon','uri','parent_id','sort','crt_time','id')
                 ->orderBy('sort','desc');
-            if($user['id'] != Employee::SPECIAL_ADMIN){
-                $emp = new EmployeeService();
-                $role = $emp->getPersonRole($user['id']);
-                $menu = $emp->getMenuByRole($role,$user);
-                $list->whereIn('id',array_column($menu,'menu_id'));
-            }
+            //过滤菜单
+            $emp = new EmployeeService();
+            $role = $emp->getPersonRole($user['id']);
+            $menu = $emp->getMenuByRoleInList($role,$user);
+            $list->whereIn('id',$menu);
             $list = $list->get()->toArray();
             $return = $this->makeTree(0,$list);
             $return = $this->set_sort_circle($return);
         }
 
-        return [200,$return];
+        return [200, $return];
     }
 
     public function menuRule($data, $is_check = true){