瀏覽代碼

内部使用oa后台

gogs 1 年之前
父節點
當前提交
7e681303fd
共有 1 個文件被更改,包括 718 次插入0 次删除
  1. 718 0
      app/Model/UseScopeBaseModel.php

+ 718 - 0
app/Model/UseScopeBaseModel.php

@@ -0,0 +1,718 @@
+<?php
+
+namespace App\Model;
+
+use App\Service\RangeService;
+use Illuminate\Database\Eloquent\Model;
+
+class UseScopeBaseModel extends Model
+{
+    //可见范围
+    const range_function = '';
+    const is_check_function = '';
+
+    public function __construct(array $attributes = [])
+    {
+        parent::__construct($attributes);
+    }
+
+    //顶级部门过滤
+    public function scopeTopClear($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0;
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        if($is_all_depart){
+            //所有部门
+            if(empty($search_depart_id)){
+                //全部
+                $query->whereIn('top_depart_id', $depart_range);
+            }else{
+                //查看某个分社
+                $query->where('top_depart_id', $top_depart_id);
+            }
+        }else{
+            //某个分社全部
+            $query->where('top_depart_id', $top_depart_id);
+        }
+
+        //获取当前门店下
+        if(! empty($search['get_my_top_depart_data'])){
+            $depart = ! empty($user['depart_top'][0]) ? $user['depart_top'][0]: [];
+            $depart_id = $depart['depart_id'] ?? 0;
+            $query->where('top_depart_id', $depart_id);
+        }
+
+        return $query;
+    }
+
+    //部门和顶级部门(公司)过滤
+    public function scopeClear($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+        //我可见的
+        if(isset($search['is_see'])){
+            if($search['is_see']){
+                $is_see = 1;
+            }else{
+                $is_see = 0;
+            }
+        }else{
+            $is_see = 0;
+        }
+
+        //全部 待审 待我审核
+        if(isset($search['is_check'])){
+            if($search['is_check']){
+                $is_check = $search['is_check'];
+            }else{
+                $is_check = 0;
+            }
+        }else{
+            $is_check = 0;
+        }
+
+        $model = $query->getModel(); // 获取模型的实例
+        $className = get_class($model); // 获取模型类名
+
+        //可见范围方法
+        $range_function = "";
+        if (defined($className . '::range_function')) $range_function = $className::range_function;
+        $function_range_bool = $this->hasMethod(new RangeService(),$range_function);
+
+        //全部 待审 已审
+        $is_check_function = "";
+        if (defined($className . '::is_check_function')) $is_check_function = $className::is_check_function;
+        $is_check_function_bool = $this->hasMethod(new RangeService(),$is_check_function);
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        $id = [];
+        //可见范围 以及单据里面填写人员 (状态类 是全部时检索)
+        if($function_range_bool) $id = RangeService::$range_function($user,$search);
+
+        //全部0 待审1 已审2 (状态类 是全部时检索)
+        $check_search = "";
+        if($is_check_function_bool && $is_check) $check_search = RangeService::$is_check_function($user,$search);
+
+        //个人部门所有
+        $auth_type = $this->getQx($search,$user);
+
+        if($is_all_depart){
+            //所有权限
+            if(empty($search_depart_id)){
+                if($is_see){
+                    //可见
+                    $query->whereIn('id', $id);
+                }elseif ($is_check){
+                    if(! $auth_type){
+                        //全部
+                        $query->whereIn('depart_id', $depart_range)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            });
+                    }else{
+                        if($auth_type == 1) { //我创建的 且加上可见
+                            $query->where('crt_id',$user['id'])
+                                ->when(! empty($check_search), function ($query) use ($check_search) {
+                                    return $query->whereRaw($check_search);
+                                })
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            //自己权限范围内的部门 或 所有
+                            $query->whereIn('depart_id', $depart_range)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            });
+                        }
+                    }
+                }else{
+                    if(! $auth_type){
+                        //全部
+                        $query->whereIn('depart_id', $depart_range);
+                    }else{
+                        if($auth_type == 1) { //我创建的 且加上可见
+                            $query->where('crt_id',$user['id'])
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            //自己权限范围内的部门 或 所有
+                            $query->whereIn('depart_id', $depart_range);
+                        }
+                    }
+                }
+            }else{
+                if($is_see){
+                    //查看指定公司 且 我可见
+                    $query->whereIn('id', $id);
+                }elseif ($is_check){
+                    if(! $auth_type){
+                        //查看指定公司
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            });
+                    }else{
+                        if($auth_type == 1) { //指定公司下 且 我创建的  且加上可见
+                            $query->where('top_depart_id', $top_depart_id)
+                                ->where('crt_id',$user['id'])
+                                ->when(! empty($check_search), function ($query) use ($check_search) {
+                                    return $query->whereRaw($check_search);
+                                })
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
+                            $query->where('top_depart_id', $top_depart_id)
+                                ->whereIn('depart_id', $depart_range)
+                                ->when(! empty($check_search), function ($query) use ($check_search) {
+                                    return $query->whereRaw($check_search);
+                                })
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }
+                    }
+                }else{
+                    if(! $auth_type){
+                        //查看指定公司
+                        $query->where('top_depart_id', $top_depart_id);
+                    }else{
+                        if($auth_type == 1) { //指定公司下 且 我创建的  且加上可见
+                            $query->where('top_depart_id', $top_depart_id)
+                                ->where('crt_id',$user['id'])
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
+                            $query->where('top_depart_id', $top_depart_id)
+                                ->whereIn('depart_id', $depart_range)
+                                ->when(! empty($id), function ($query) use ($id) {
+                                    return $query->orWhereIn('id', $id);
+                                });
+                        }
+                    }
+                }
+            }
+        }else{
+            //非所有权限
+            if($is_see){
+                //某个分社可见
+                $query->whereIn('id', $id);
+            }elseif ($is_check){
+                if(! $auth_type){
+                    //指定公司下全部  且加上可见
+                    $query->where('top_depart_id', $top_depart_id)
+                        ->whereIn('depart_id', $depart_range)
+                        ->when(! empty($check_search), function ($query) use ($check_search) {
+                            return $query->whereRaw($check_search);
+                        })
+                        ->when(! empty($id), function ($query) use ($id) {
+                            return $query->orWhereIn('id', $id);
+                        });
+                }else{
+                    if($auth_type == 1) {
+                        //指定公司下 且 我创建的 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->where('crt_id',$user['id'])
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            })
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }elseif ($auth_type == 2) {
+                        //指定公司下 且 自己权限范围内的部门 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->whereIn('depart_id', $depart_range)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            })
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }elseif ($auth_type == 3) {
+                        // 指定公司下所有 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->when(! empty($check_search), function ($query) use ($check_search) {
+                                return $query->whereRaw($check_search);
+                            })
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }
+                }
+            }else{
+                if(! $auth_type){
+                    //指定公司下全部  且加上可见
+                    $query->where('top_depart_id', $top_depart_id)
+                        ->whereIn('depart_id', $depart_range)
+                        ->when(! empty($id), function ($query) use ($id) {
+                            return $query->orWhereIn('id', $id);
+                        });
+                }else{
+                    if($auth_type == 1) {
+                        //指定公司下 且 我创建的 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->where('crt_id',$user['id'])
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }elseif ($auth_type == 2) {
+                        //指定公司下 且 自己权限范围内的部门 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->whereIn('depart_id', $depart_range)
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }elseif ($auth_type == 3) {
+                        // 指定公司下所有 且加上可见
+                        $query->where('top_depart_id', $top_depart_id)
+                            ->when(! empty($id), function ($query) use ($id) {
+                                return $query->orWhereIn('id', $id);
+                            });
+                    }
+                }
+            }
+        }
+
+        if(! empty($search['get_my_top_depart_data'])){
+            $depart = ! empty($user['depart_top'][0]) ? $user['depart_top'][0]: [];
+            $depart_id = $depart['depart_id'] ?? 0;
+            $query->where('top_depart_id', $depart_id);
+        }
+    }
+
+    //部门和顶级部门(公司)过滤 取别名a
+    public function scopeAClear($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+        //我可见的
+        $is_see = $search['is_see'] ?? 0;
+
+        //可见范围方法
+        $model = $query->getModel(); // 获取模型的实例
+        $range_function = $model::range_function ?? ""; // 访问静态属性
+        $is_function_range = $this->hasMethod(new RangeService(),$range_function);
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        $id = [];
+        //可见范围 以及单据里面填写人员
+        if($is_function_range) $id = RangeService::$range_function($user,$search);
+
+        //个人部门所有
+        $auth_type = $this->getQx($search,$user);
+
+        if($is_all_depart){
+            //所有权限
+            if(empty($search_depart_id)){
+                if(! $is_see){
+                    if(! $auth_type){
+                        //全部
+                        $query->whereIn('a.depart_id', $depart_range);
+                    }else{
+                        if($auth_type == 1) { //我创建的 且加上可见
+                            $query->where('a.crt_id',$user['id'])
+                                ->orWhereIn('a.id', $id);
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            //自己权限范围内的部门 或 所有
+                            $query->whereIn('a.depart_id', $depart_range);
+                        }
+                    }
+                }else{
+                    //可见
+                    $query->whereIn('a.id', $id);
+                }
+            }else{
+                if(! $is_see){
+                    if(! $auth_type){
+                        //查看指定公司
+                        $query->where('a.top_depart_id', $top_depart_id);
+                    }else{
+                        if($auth_type == 1) { //指定公司下 且 我创建的  且加上可见
+                            $query->where('a.top_depart_id', $top_depart_id)
+                                ->where('a.crt_id',$user['id'])
+                                ->orWhereIn('a.id', $id);
+                        }elseif ($auth_type == 2 || $auth_type == 3){
+                            // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
+                            $query->where('a.top_depart_id', $top_depart_id)
+                                ->whereIn('a.depart_id', $depart_range)
+                                ->orWhereIn('a.id', $id);
+                        }
+                    }
+                }else{
+                    //查看指定公司 且 我可见
+                    $query->whereIn('a.id', $id);
+                }
+            }
+        }else{
+            //非所有权限
+            if(! $is_see){
+                if(! $auth_type){
+                    //指定公司下全部  且加上可见
+                    $query->where('a.top_depart_id', $top_depart_id)
+                        ->whereIn('a.depart_id', $depart_range)
+                        ->orWhereIn('a.id', $id);
+                }else{
+                    if($auth_type == 1) {
+                        //指定公司下 且 我创建的 且加上可见
+                        $query->where('a.top_depart_id', $top_depart_id)
+                            ->where('a.crt_id',$user['id'])
+                            ->orWhereIn('a.id', $id);
+                    }elseif ($auth_type == 2) {
+                        //指定公司下 且 自己权限范围内的部门 且加上可见
+                        $query->where('a.top_depart_id', $top_depart_id)
+                            ->whereIn('a.depart_id', $depart_range)
+                            ->orWhereIn('a.id', $id);
+                    }elseif ($auth_type == 3) {
+                        // 指定公司下所有 且加上可见
+                        $query->where('a.top_depart_id', $top_depart_id)
+                            ->orWhereIn('a.id', $id);
+                    }
+                }
+            }else{
+                //某个分社可见
+                $query->whereIn('a.id', $id);
+            }
+        }
+    }
+
+    //部门和顶级部门(公司)过滤 Old
+    public function scopeClear1($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+        //我可见的
+        $is_see = $search['is_see'] ?? 0;
+
+        //可见范围方法
+        $model = $query->getModel(); // 获取模型的实例
+        $range_function = $model::range_function ?? ""; // 访问静态属性
+        $is_function_range = $this->hasMethod(new RangeService(),$range_function);
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        $id = [];
+        //可见范围 以及单据里面填写人员
+        if($is_function_range) $id = RangeService::$range_function($user,$search);
+
+        if($is_all_depart){
+            //所有部门
+            if(empty($search_depart_id)){
+                if(! $is_see){
+                    //全部
+                    $query->whereIn('depart_id', $depart_range);
+                }else{
+                    //可见
+                    $query->whereIn('id', $id);
+                }
+            }else{
+                if(! $is_see){
+                    //查看某个分社
+                    $query->where('top_depart_id', $top_depart_id);
+                }else{
+                    //查看某个分社可见
+                    $query->whereIn('id', $id);
+                }
+            }
+        }else{
+            //某个分社
+            if(! $is_see){
+                //某个分社全部
+                $query->where('top_depart_id', $top_depart_id)
+                    ->whereIn('depart_id', $depart_range)
+                    ->orWhereIn('id', $id);
+            }else{
+                //某个分社可见
+                $query->whereIn('id', $id);
+            }
+        }
+    }
+
+    //顶级部门过滤 取别名a
+    public function scopeATopClear($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0;
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        if($is_all_depart){
+            //所有部门
+            if(empty($search_depart_id)){
+                //全部
+                $query->whereIn('a.top_depart_id', $depart_range);
+            }else{
+                //查看某个分社
+                $query->where('a.top_depart_id', $top_depart_id);
+            }
+        }else{
+            //某个分社全部
+            $query->where('a.top_depart_id', $top_depart_id);
+        }
+
+        return $query;
+    }
+
+    //产品不可见 部门和顶级部门(公司)过滤
+    public function scopeProductClear($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+        //总社id
+        $top_depart_id = $user['head'] ?? [];
+        $top_depart = $top_depart_id['id'] ?? 0;
+
+        //可见范围方法
+        $model = $query->getModel(); // 获取模型的实例
+        $range_function = $model::range_function ?? ""; // 访问静态属性
+        $is_function_range = $this->hasMethod(new RangeService(),$range_function);
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        $id = [];
+        //产品 不可见范围
+        if($is_function_range) $id = RangeService::$range_function($user,$search);
+
+        if($is_all_depart){
+            //所有部门
+            if(empty($search_depart_id)){
+                //全部
+                $query->whereIn('depart_id', $depart_range);
+            }else{
+                //查看某个分社
+                $query->where('top_depart_id', $top_depart_id);
+            }
+        }else{
+            //某个分社全部 去掉不可见数
+            $query->where('top_depart_id', $top_depart_id)
+                ->whereIn('depart_id', $depart_range)
+                ->orWhere('top_depart_id',$top_depart)
+                ->whereNotIn('id', $id);
+        }
+    }
+
+    //产品不可见 部门和顶级部门(公司)过滤
+    public function scopeProductClear2($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+        //总社id
+        $top_depart_id = $user['head'] ?? [];
+        $top_depart = $top_depart_id['id'] ?? 0;
+
+        //可见范围方法
+        $model = $query->getModel(); // 获取模型的实例
+        $range_function = $model::range_function ?? ""; // 访问静态属性
+        $is_function_range = $this->hasMethod(new RangeService(),$range_function);
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        $id = [];
+        //产品 不可见范围
+        if($is_function_range) $id = RangeService::$range_function($user,$search);
+
+        if($is_all_depart){
+            //所有部门
+            if(empty($search_depart_id)){
+                //全部
+                $query->whereIn('depart_id', $depart_range);
+            }else{
+                //查看某个分社
+                $query->where('top_depart_id', $top_depart_id)
+                    ->orWhere('top_depart_id',$top_depart);
+            }
+        }else{
+            //某个分社全部 去掉不可见数
+            $query->where('top_depart_id', $top_depart_id)
+                ->whereIn('depart_id', $depart_range)
+                ->orWhere('top_depart_id',$top_depart)
+                ->whereNotIn('id', $id);
+        }
+    }
+
+    //活动包 部门和顶级部门(公司)过滤
+    public function scopeSportsBagClear($query, $user, $search)
+    {
+        //是否所有部门
+        $is_all_depart = $user['is_all_depart'] ?? 0;
+        //权限范围内的部门
+        $depart_range = $user['depart_range'] ?? [];
+        //总社id
+        $top_depart_id = $user['head'] ?? [];
+        $top_depart = $top_depart_id['id'] ?? 0;
+
+        //可见范围方法
+        $model = $query->getModel(); // 获取模型的实例
+        $range_function = $model::range_function ?? ""; // 访问静态属性
+        $is_function_range = $this->hasMethod(new RangeService(),$range_function);
+
+        $model = $query->getModel(); // 获取模型的实例
+        $className = get_class($model); // 获取模型类名
+
+        //全部 待审 待我审核
+        if(isset($search['is_check'])){
+            if($search['is_check']){
+                $is_check = $search['is_check'];
+            }else{
+                $is_check = 0;
+            }
+        }else{
+            $is_check = 0;
+        }
+
+        //全部 待审 已审
+        $is_check_function = "";
+        if (defined($className . '::is_check_function')) $is_check_function = $className::is_check_function;
+        $is_check_function_bool = $this->hasMethod(new RangeService(),$is_check_function);
+
+        //全部0 待审1 已审2 (状态类 是全部时检索)
+        $check_search = "";
+        if($is_check_function_bool && $is_check) $check_search = RangeService::$is_check_function($user,$search);
+
+        //顶级部门
+        $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
+        if(empty($search_depart_id)){
+            //默认进来 自身顶级公司
+            $top_depart_id = $user['depart_top'][0] ?? [];
+            $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        }else{
+            //查询 顶级公司
+            $top_depart_id = $search_depart_id;
+        }
+
+        $id = [];
+        //不可见范围
+        if($is_function_range) $id = RangeService::$range_function($user,$search);
+
+        if($is_all_depart){
+            //所有部门
+            if(empty($search_depart_id)){
+                //全部
+                $query->whereIn('depart_id', $depart_range)
+                    ->when(! empty($check_search), function ($query) use ($check_search) {
+                        return $query->whereRaw($check_search);
+                    });
+            }else{
+                //查看某个分社
+                $query->where('top_depart_id', $top_depart_id)
+                    ->when(! empty($check_search), function ($query) use ($check_search) {
+                        return $query->whereRaw($check_search);
+                    });
+            }
+        }else{
+            //某个分社全部 去掉不可见数
+            $query->where('top_depart_id', $top_depart_id)
+                ->when(! empty($check_search), function ($query) use ($check_search) {
+                    return $query->whereRaw($check_search);
+                })
+                ->whereIn('depart_id', $depart_range)
+                ->orWhere('top_depart_id',$top_depart)
+                ->whereNotIn('id', $id);
+        }
+    }
+
+    public function getQx($data, $user){
+        if(empty($data['menu_id'])) return 0;
+        if($user['id'] == Employee::SPECIAL_ADMIN) return 0;
+        if(! empty($user['role_authority'][$data['menu_id']])) {
+            //指定菜单 显示对应权限
+            return $user['role_authority'][$data['menu_id']];
+        }else{
+            return 0;
+        }
+    }
+
+    function hasMethod($class, $methodName)
+    {
+        $reflection = new \ReflectionClass($class);
+        return $reflection->hasMethod($methodName);
+    }
+}