cqp пре 1 месец
родитељ
комит
25da6bb0f6

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

@@ -35,10 +35,6 @@ class CheckLogin
         //人员角色 菜单权限
         $employee = array_merge($employee, LoginService::getPersonRoleAndPermissions($employee));
 
-        //校验是否有路由权限
-//        list($state, $msg) = LoginService::checkRoute($employee,$request);
-//        if(! $state) return response()->json(['code' => 201,'msg' => $msg,'data' => null]);
-
         $request->userData = $employee;
 
         return $next($request);

+ 3 - 0
app/Model/SysMenu.php

@@ -14,4 +14,7 @@ class SysMenu extends Model
 
     const type_zero = 0; // 正常用户菜单
     const type_one = 1; // 中台菜单
+
+    const tree_type_zero = 0; // 工时菜单
+    const tree_type_one = 1; // 项目管理
 }

+ 31 - 9
app/Service/LoginService.php

@@ -32,10 +32,15 @@ class LoginService extends Service
         list($status, $jwtToken) = TokenService::getToken($employee);
         if(! $status) return [false, $jwtToken];
 
+        //获取人员所有的所有的顶级菜单
+        $sysMenu = $this->getPersonRoleForSysMenuList($employee['id']);
+        if(empty($sysMenu)) return [false, '账户未设置菜单功能'];
+
         return [true, [
             'token' => $jwtToken,
             'employee_id' => $employee['id'],
             'title' => $employee['title'],
+            'sys_menu' => $sysMenu,
         ]];
     }
 
@@ -65,6 +70,29 @@ class LoginService extends Service
         ]];
     }
 
+    private function getPersonRoleForSysMenuList($employee_id) {
+        $sysMenu = SysMenu::where('del_time',0)
+            ->where('type', SysMenu::type_zero)
+            ->where('parent_id', 0)
+            ->select('id','title', 'tree_type')
+            ->get()->toArray();
+
+        $role_menu_id = EmployeeRole::from('employee_role as a')
+            ->join('role_menu as b', 'b.role_id', '=', 'a.role_id')
+            ->where('a.del_time', 0)
+            ->where('b.del_time', 0)
+            ->whereIn('b.menu_id', array_column($sysMenu,'id'))
+            ->where('a.employee_id',$employee_id)
+            ->pluck('b.menu_id')
+            ->toArray();
+
+        foreach ($sysMenu as $key => $value){
+            if(! in_array($value['id'], $role_menu_id)) unset($sysMenu[$key]);
+        }
+
+        return array_values($sysMenu);
+    }
+
     public static function checkUser($employee){
         if(empty($employee['employee_id'])) return [false, 'token错误'];
         if(! isset($employee['p_version'])) return [false, 'token错误'];
@@ -150,15 +178,9 @@ class LoginService extends Service
             return $result;
         }
 
-        $role_ids = EmployeeRole::from('employee_role as a')
-            ->join('role as b', 'b.id', '=', 'a.role_id')
-            ->where('a.del_time', 0)
-            ->where('b.top_depart_id', $employee['top_depart_id'])
-            ->where('a.employee_id', $employee['id'])
-            ->pluck('a.role_id')
-            ->unique()
-            ->sort()
-            ->values()
+        $role_ids = EmployeeRole::where('del_time', 0)
+            ->where('employee_id', $employee['id'])
+            ->pluck('role_id')
             ->toArray();
 
         if (empty($role_ids)) return $result;

+ 2 - 2
app/Service/SysMenuService.php

@@ -146,11 +146,11 @@ class SysMenuService extends Service
     public function menuList($data, $user){
         $return = [];
         $type = $data['type'] ?? "";
-        $tree_type = $data['tree_type'] ?? 0;
+        $tree_type = $data['tree_type'] ?? SysMenu::tree_type_zero;
 
         $sysList = SysMenu::where('del_time',0)
             ->where('type', SysMenu::type_zero)
-            ->where('tree_type', $tree_type)
+//            ->where('tree_type', $tree_type)
             ->select('title','icon','uri','parent_id','sort','id','is_authority', 'state')
             ->orderBy('sort','desc')
             ->get()