cqp 2 hafta önce
ebeveyn
işleme
cb4d46512b

+ 17 - 1
app/Http/Middleware/CheckLogin.php

@@ -40,8 +40,24 @@ class CheckLogin
         $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);
         //角色里特殊的按钮
         $data['special_button'] = EmployeeService::getSpecialButton($data['role'],$result);
-        //拥有的部门
+        //拥有的部门
         $data['depart_range'] = EmployeeService::getLoginDepart($result);
+        $query = config('morequery');
+        $url = $request->path();
+
+        //菜单ID
+        $menu = $query['menu'] ?? [];
+        if(isset($menu[$url])){
+            $param = $menu[$url];
+            if(is_array($param)){
+                $key = $param['key'];
+                $get = $request->input($key);
+                $menu_id = $param['array'][$get] ?? 0;
+            }else{
+                $menu_id = $param ?? 0;
+            }
+            $request->merge(['menu_id' => $menu_id]);
+        }
 
         //写入user信息
         $request->userData = $data;

+ 4 - 0
app/Model/Employee.php

@@ -34,4 +34,8 @@ class Employee extends Model
         1 => '正常',
         2 => '停用'
     ];
+
+    const AUTH_ONE = 1; // 我的
+    const AUTH_TWO = 2; // 部门
+    const AUTH_THREE = 3; // 全部
 }

+ 2 - 3
app/Model/EmployeeIndex.php

@@ -2,14 +2,13 @@
 
 namespace App\Model;
 
-use Illuminate\Database\Eloquent\Model;
-
-class EmployeeIndex extends Model
+class EmployeeIndex extends UseScopeBaseModel
 {
     protected $guarded = [];
     protected $table = "employee_index"; //指定表
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
+    const employee_column = 'employee_id';
     protected $dateFormat = 'U';
 
     //指标类型

+ 1 - 0
app/Model/GiveOut.php

@@ -7,6 +7,7 @@ class GiveOut extends UseScopeBaseModel
     protected $table = "give_out"; //指定表
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
+    const employee_column = 'employee_id_1';
     protected $dateFormat = 'U';
 
     public static $field = ['give_out_amount','id','mark','employee_id_1','employee_id_1_title','send_time','start_time','end_time'];

+ 2 - 3
app/Model/RevenueCost.php

@@ -2,14 +2,13 @@
 
 namespace App\Model;
 
-use Illuminate\Database\Eloquent\Model;
-
-class RevenueCost extends Model
+class RevenueCost extends UseScopeBaseModel
 {
     protected $guarded = [];
     protected $table = "revenue_cost"; //指定表
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
+    const employee_column = 'employee_id_1';
     protected $dateFormat = 'U';
 
     const ORDER_ONE = 1;

+ 3 - 3
app/Model/RevenueCostTotal.php

@@ -2,15 +2,15 @@
 
 namespace App\Model;
 
-use Illuminate\Database\Eloquent\Model;
-
-class RevenueCostTotal extends Model
+class RevenueCostTotal extends UseScopeBaseModel
 {
     protected $guarded = [];
     protected $table = "revenue_cost_total"; //指定表
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
+    const employee_column = 'employee_id_1';
     protected $dateFormat = 'U';
 
     public static $field = ['id','order_type','profit','profit_rate','order_time','income','adjust','business','employee_id_1','employee_id_1_title'];
+
 }

+ 2 - 3
app/Model/SalaryEmployee.php

@@ -2,14 +2,13 @@
 
 namespace App\Model;
 
-use Illuminate\Database\Eloquent\Model;
-
-class SalaryEmployee extends Model
+class SalaryEmployee extends UseScopeBaseModel
 {
     protected $guarded = [];
     protected $table = "salary_employee"; //指定表
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
+    const employee_column = 'employee_id_1';
     protected $dateFormat = 'U';
 
     public static $field = ['id','order_time','order_type','payment_amount','payment_amount_not_include_activity','payment_amount_activity','payment_amount_lower_than_rate','payment_amount_greater_than_rate','business','sale_bonus','index_1','pay_in_advance','basic_salary','should_pay','employee_id_1','employee_id_1_title'];

+ 26 - 528
app/Model/UseScopeBaseModel.php

@@ -2,14 +2,12 @@
 
 namespace App\Model;
 
-use App\Service\RangeService;
 use Illuminate\Database\Eloquent\Model;
 
 class UseScopeBaseModel extends Model
 {
-    //可见范围
-    const range_function = '';
-    const is_check_function = '';
+    //人员id字段
+    const employee_column = '';
 
     public function __construct(array $attributes = [])
     {
@@ -59,553 +57,53 @@ class UseScopeBaseModel extends Model
         return $query;
     }
 
-    //部门和顶级部门(公司)过滤
     public function scopeClear($query, $user, $search)
     {
-        //是否所有部门
-        $is_all_depart = $user['is_all_depart'] ?? 0;
         //权限范围内的部门
         $depart_range = $user['depart_range'] ?? [];
-        //我可见的
-        $is_see = ! empty($search['is_see']);
-        //全部 待审 待我审核
-        $is_check = ! empty($search['is_check']);
+        $depart_range = array_column($depart_range,'depart_id') ?? [];
         //个人 部门 所有
         $auth_type = $this->getQx($search,$user);
         // 获取模型的实例
         $model = $query->getModel();
         // 获取模型类名
         $className = get_class($model);
+        // 人员字段
+        $column = defined($className . '::employee_column') ? constant($className . '::employee_column') : '';
 
-        //可见范围方法
-        $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;
-        //自身的
-        $my_top_depart_id = $user['depart_top'][0] ?? [];
-        $my_top_depart_id = $my_top_depart_id['depart_id'] ?? 0;
-        if(empty($search_depart_id)){
-           $top_depart_id = $my_top_depart_id;
-        }else{
-            if($is_all_depart){
-                //顶级公司
-                $top_depart_id = $search_depart_id;
-            }else{
-                $top_depart_id = $my_top_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);
-
-        if($is_see){
-            //我可见的
-            $query->whereIn('id', $id);
-        }elseif($is_all_depart){
-            //所有权限
-            $this->allDepart($query, $is_check, $auth_type, $user, $depart_range, $search_depart_id, $top_depart_id, $id, $check_search);
-        }else{
-            //非所有权限
-            $this->notAllDepart($query, $is_check, $auth_type, $user, $depart_range, $top_depart_id, $id, $check_search);
-        }
-
-        if(! empty($search['get_my_top_depart_data'])) $query->where('top_depart_id', $my_top_depart_id);
+        $this->makeModel($query, $auth_type, $user, $depart_range,$column);
     }
 
     //最高权限
-    private function allDepart(&$query, $is_check, $auth_type, $user, $depart_range, $search_depart_id, $top_depart_id, $id, $check_search){
-        if(empty($search_depart_id)){
-            if ($is_check){
-                if(! $auth_type){
-                    //全部
-                    $query->when(! empty($check_search), function ($query) use ($check_search) {
-                        return $query->whereRaw($check_search);
-                    });
-                }elseif($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 == 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_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);
-                        });
-                }elseif($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);
-                }elseif($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);
-                        });
-                }
-            }
-        }
-    }
-
-    //非所有权限
-    private function notAllDepart(&$query, $is_check, $auth_type, $user, $depart_range, $top_depart_id, $id, $check_search){
-        if ($is_check){
-            if(! $auth_type || $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 == 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);
-                    });
-            }
-        }else{
-            if(! $auth_type || $auth_type == 3){
-                //指定公司下全部|所有  且加上可见
-                $query->where('top_depart_id', $top_depart_id)
-                    ->when(! empty($id), function ($query) use ($id) {
-                        return $query->orWhereIn('id', $id);
-                    });
-            }elseif($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);
-                    });
-            }
-        }
-    }
-
-    //部门和顶级部门(公司)过滤 取别名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);
-            }
-        }
-    }
-
-    //顶级部门过滤 取别名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);
+    private function makeModel(&$query, $auth_type, $user, $depart_range, $column){
+        if(empty($column)) return;
+
+        if($auth_type == Employee::AUTH_ONE){
+            //我创建的
+            $query->where($column,$user['id']);
+        }elseif ($auth_type == Employee::AUTH_TWO){
+            if (empty($depart_range)) {
+                $query->whereRaw('1 = 0');
+            } else {
+                $query->whereExists(function ($q) use ($column, $depart_range) {
+                    $q->from('employee_depart_permission')
+                        ->whereColumn('employee_depart_permission.employee_id', $column)
+                        ->whereIn('employee_depart_permission.depart_id', $depart_range);
+                });
             }
-        }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{
-            if($check_search){
-                $check_search2 = "(" . $check_search . " And top_depart_id = {$top_depart})";
-            } else{
-                $check_search2 = "(top_depart_id = {$top_depart})";
-            }
-
-            //某个分社全部 去掉不可见数
-            $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)
-                ->whereNotIn('id', $id)
-                ->OrWhereRaw($check_search2);
+        }elseif ($auth_type == Employee::AUTH_THREE){
+            //所有
         }
     }
 
     public function getQx($data, $user){
-        if(empty($data['menu_id'])) return 0;
-        if($user['id'] == Employee::SPECIAL_ADMIN) return 0;
+        if(empty($data['menu_id'])) return Employee::AUTH_ONE; // 我的
+        if($user['id'] == Employee::SPECIAL_ADMIN) return Employee::AUTH_THREE; // 全部
         if(! empty($user['role_authority'][$data['menu_id']])) {
             //指定菜单 显示对应权限
             return $user['role_authority'][$data['menu_id']];
         }else{
-            return 0;
+            return Employee::AUTH_ONE; // 我的
         }
     }
 

+ 38 - 37
app/Service/EmployeeService.php

@@ -13,12 +13,9 @@ use App\Model\EmployeeTeamPermission;
 use App\Model\Role;
 use App\Model\RoleMenu;
 use App\Model\RoleMenuButton;
-use App\Model\Storehouse;
 use App\Model\SysMenu;
 use App\Model\SysMenuButton;
 use App\Model\Team;
-use App\Model\WxEmployeeOfficial;
-use App\Service\Weixin\WeixinService;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Hash;
 use Mockery\Exception;
@@ -193,13 +190,22 @@ class EmployeeService extends Service
     public function employeeDel($data){
         if($this->isEmpty($data,'id')) return [false,'请选择删除的数据!'];
 
-        Employee::whereIn('id',$data['id'])->update([
-            'del_time'=>time()
-        ]);
-        EmployeeRole::where('del_time',0)->whereIn('employee_id',$data['id'])->update([
-            'del_time'=>time()
-        ]);
-        EmployeeDepartPermission::whereIn('employee_id',$data['id'])->delete();
+        try {
+            DB::beginTransaction();
+
+            Employee::whereIn('id',$data['id'])->update([
+                'del_time'=>time()
+            ]);
+            EmployeeRole::where('del_time',0)->whereIn('employee_id',$data['id'])->update([
+                'del_time'=>time()
+            ]);
+            EmployeeDepartPermission::whereIn('employee_id',$data['id'])->delete();
+
+            DB::commit();
+        }catch (\Throwable $exception){
+            DB::rollBack();
+            return [false, $exception->getMessage()];
+        }
 
         return [true,'删除成功'];
     }
@@ -328,20 +334,6 @@ class EmployeeService extends Service
         return $data;
     }
 
-    //获取当前顶级部门下人员id
-    public function getEmployee($user){
-        $top_depart_id = $user['depart_top'][0] ?? [];
-        $top_depart_id = $top_depart_id['depart_id'] ?? 0;
-        $list = Depart::where('del_time',0)->select('id','parent_id')->get()->toArray();
-        // 查找所有子级id
-        $childIds = $this->findChildIds($top_depart_id, $list);
-        $childIds[] = $top_depart_id;
-        $employee_id = EmployeeDepartPermission::whereIn('depart_id',$childIds)
-            ->select("employee_id")
-            ->get()->toArray();
-        return array_unique(array_column($employee_id,'employee_id'));
-    }
-
     /**
      * 用户参数规则
      * @param $data
@@ -473,17 +465,26 @@ class EmployeeService extends Service
             ->exists();
         if($bool) return [false,'角色已绑定人员!'];
 
-        Role::whereIn('id',$data['id'])->update([
-            'del_time' => time()
-        ]);
+        try {
+            DB::beginTransaction();
 
-        RoleMenu::where('del_time',0)->whereIn('role_id',$data['id'])->update([
-            'del_time' => time()
-        ]);
+            Role::whereIn('id',$data['id'])->update([
+                'del_time' => time()
+            ]);
 
-        RoleMenuButton::where('del_time',0)->whereIn('role_id',$data['id'])->update([
-            'del_time' => time()
-        ]);
+            RoleMenu::where('del_time',0)->whereIn('role_id',$data['id'])->update([
+                'del_time' => time()
+            ]);
+
+            RoleMenuButton::where('del_time',0)->whereIn('role_id',$data['id'])->update([
+                'del_time' => time()
+            ]);
+
+            DB::commit();
+        }catch (\Throwable $exception){
+            DB::rollBack();
+            return [false, $exception->getMessage()];
+        }
 
         return [true, ''];
     }
@@ -1097,15 +1098,15 @@ class EmployeeService extends Service
             ->whereIn('role_id',$role_id)
             ->select('menu_id','type')
             ->get()->toArray();
-        $sysmenu = SysMenu::where('del_time',0)
+        $sys_menu = SysMenu::where('del_time',0)
             ->where('is_authority','>',0)
             ->select('id')
             ->get()->toArray();
-        $sysmenu = array_column($sysmenu,'id');
+        $sys_menu_id = array_column($sys_menu,'id');
 
         $return = [];
         foreach ($role as $value){
-            if(! in_array($value['menu_id'],$sysmenu)) continue;
+            if(! in_array($value['menu_id'],$sys_menu_id)) continue;
             if(isset($return[$value['menu_id']])){
                 if($return[$value['menu_id']] < $value['type']) $return[$value['menu_id']] = $value['type'];
             }else{
@@ -1280,7 +1281,7 @@ class EmployeeService extends Service
             ->join('depart as b','b.id','a.depart_id')
             ->where('a.employee_id',$employee_id)
             ->where('b.is_use',Depart::IS_UES)
-            ->select('a.depart_id','b.title')
+            ->select('a.depart_id')
             ->orderBy('b.parent_id','asc')
             ->orderBy('a.depart_id','asc')
             ->get()->toArray();

+ 2 - 1
app/Service/GiveOutService.php

@@ -101,7 +101,8 @@ class GiveOutService extends Service
     public function giveOutCommon($data,$user, $field = []){
         if(empty($field)) $field = GiveOut::$field;
 
-        $model = GiveOut::where('del_time',0)
+        $model = GiveOut::Clear($user,$data);
+        $model = $model->where('del_time',0)
             ->select($field)
             ->orderby('id', 'desc');
 

+ 29 - 8
app/Service/StatisticsService.php

@@ -13,12 +13,13 @@ class StatisticsService extends Service
 {
     public function statisticsRevenueCostCommon($data,$user, $field = []){
         if(empty($field)) $field = RevenueCostTotal::$field;
-        $model = RevenueCostTotal::where('del_time',0)
+        $model = RevenueCostTotal::Clear($user,$data);
+
+        $model = $model->where('del_time',0)
             ->select($field)
             ->orderby('id', 'desc');
 
         if(! empty($data['employee_id_1_title'])) $model->where('employee_id_1_title', 'LIKE', '%'.$data['employee_id_1_title'].'%');
-
         if(! empty($data['order_time'][0]) && ! empty($data['order_time'][1])){
             list($start_time, $end_time) = $this->changeDateToTimeStampAboutRange($data['order_time'],false);
             if ($start_time === null || $end_time === null || $start_time > $end_time) return [false, "单据日期的区间无效"];
@@ -64,7 +65,9 @@ class StatisticsService extends Service
                 $field = RevenueCost::$field_xsfp;
             }
         }
-        $model = RevenueCost::where('del_time',0)
+        $model = RevenueCost::Clear($user,$data);
+
+        $model = $model->where('del_time',0)
             ->where('order_type',$data['order_type'])
             ->select($field)
             ->orderby('id', 'desc');
@@ -115,8 +118,9 @@ class StatisticsService extends Service
             $field[] = DB::raw('sum(price_4_total) as price_4_total');
             $field[] = DB::raw('sum(profit) as profit');
         }
+        $model = RevenueCost::Clear($user,$data);
 
-        $model = RevenueCost::where('del_time',0)
+        $model = $model->where('del_time',0)
             ->where('order_type',RevenueCost::ORDER_THREE)
             ->select($field)
             ->groupby('order_id')
@@ -205,8 +209,9 @@ class StatisticsService extends Service
         }
 
         $type = RevenueCost::ORDER_THREE;
-        $model = EmployeeIndex::where('employee_index.del_time',0)
-            ->where('employee_index.type',EmployeeIndex::TYPE_THREE)
+        $model = EmployeeIndex::Clear($user, $data)
+            ->where('employee_index.del_time', 0)
+            ->where('employee_index.type', EmployeeIndex::TYPE_THREE)
             ->leftJoin(DB::raw('revenue_cost as rc'), function ($join) use ($type) {
                 $join->on('rc.employee_id_2', '=', 'employee_index.employee_id')
                     ->where('rc.del_time', 0)
@@ -216,7 +221,21 @@ class StatisticsService extends Service
             })
             ->select($field)
             ->groupBy('employee_index.employee_id', 'employee_index.start_time', 'employee_index.end_time')
-            ->orderBy('employee_index.end_time','desc');
+            ->orderBy('employee_index.end_time', 'desc');
+
+//        $type = RevenueCost::ORDER_THREE;
+//        $model = EmployeeIndex::where('employee_index.del_time',0)
+//            ->where('employee_index.type',EmployeeIndex::TYPE_THREE)
+//            ->leftJoin(DB::raw('revenue_cost as rc'), function ($join) use ($type) {
+//                $join->on('rc.employee_id_2', '=', 'employee_index.employee_id')
+//                    ->where('rc.del_time', 0)
+//                    ->where('rc.order_type', $type)
+//                    ->whereRaw('rc.order_time >= employee_index.start_time')
+//                    ->whereRaw('rc.order_time <= employee_index.end_time');
+//            })
+//            ->select($field)
+//            ->groupBy('employee_index.employee_id', 'employee_index.start_time', 'employee_index.end_time')
+//            ->orderBy('employee_index.end_time','desc');
 
         if(! empty($data['order_time'][0]) && ! empty($data['order_time'][1])){;
             list($start_time, $end_time) = $this->changeDateToTimeStampAboutRange($data['order_time'],false);
@@ -382,7 +401,9 @@ class StatisticsService extends Service
         if(empty($field)) {
             $field = SalaryEmployee::$field;
         }
-        $model = SalaryEmployee::where('del_time',0)
+        $model = SalaryEmployee::Clear($user,$data);
+
+        $model = $model->where('del_time',0)
             ->where('order_type',RevenueCost::ORDER_THREE)
             ->select($field)
             ->orderby('order_time', 'desc');

+ 9 - 101
config/morequery.php

@@ -2,111 +2,19 @@
 
 return [
     "menu" => [
-        "api/productAdjustmentAdd" => 58,
-        "api/productAdjustmentEdit" => 58,
-        "api/productAdjustmentList" => 58,
-        "api/inventoryAdd" => 56,
-        "api/inventoryEdit" => 56,
-        "api/inventoryList" => 56,
-        "api/outBoundOrderList" => 55,
-        "api/outBoundOrderEdit" => 55,
-        "api/outBoundOrderAdd" => 55,
-        "api/customerList" => 16,
-        "api/customerAdd" => 16,
-        "api/customerEdit" => 16,
-        "api/paymentReceiptList" => 48,
-        "api/salesOrderList" => [
-            'key' => 'order_list',
-            'array' => [
-                1 => 37,
-                2 => 43,
-            ],
-        ],
-        "api/sportsBagOrderList" => [
-            'key' => 'is_attribute',
-            'array' => [
-                1 => 30,
-                2 => 57,
-            ],
-        ],
-        "api/sportsBagAdd" => [
-            'key' => 'is_attribute',
-            'array' => [
-                1 => 30,
-                2 => 57,
-            ],
-        ],
-        "api/sportsBagEdit" => [
-            'key' => 'is_attribute',
-            'array' => [
-                1 => 30,
-                2 => 57,
-            ],
-        ],
-        "api/invoiceOrderList" => 36,
-        "api/ReturnExchangeOrderList" => 35,
-        "api/ReturnExchangeOrderAdd" => 35,
-        "api/ReturnExchangeOrderEdit" => 35,
-        "api/constructionList" => 34,
-        "api/constructionEditOther" => 34,
-        "api/getSettingGetDetail2" => 34,
-        "api/purchaseOrderSubmit" => 44,
-        "api/purchaseOrderList" => [
+        "api/statisticsRevenueCost" => 68,
+        "api/statisticsRevenueCostOneAndTwo" => [
             'key' => 'order_type',
             'array' => [
-                1 => 38,
-                5 => 45,
+                1 => 69,
+                2 => 70,
             ],
         ],
-
-        "wx/customerList" => 16,
-        "wx/customerAdd" => 16,
-        "wx/customerEdit" => 16,
-        "wx/paymentReceiptList" => 48,
-        "wx/salesOrderList" => [
-            'key' => 'order_list',
-            'array' => [
-                1 => 37,
-                2 => 43,
-            ],
-        ],
-        "wx/invoiceOrderList" => 36,
-        "wx/ReturnExchangeOrderList" => 35,
-        "wx/ReturnExchangeOrderAdd" => 35,
-        "wx/ReturnExchangeOrderEdit" => 35,
-        "wx/constructionList" => 34,
-        "wx/constructionEditOther" => 34,
-        "wx/getSettingGetDetail2" => 34,
-        "wx/purchaseOrderSubmit" => 44,
-        "wx/purchaseOrderList" => [
-            'key' => 'order_type',
-            'array' => [
-                1 => 38,
-                5 => 45,
-            ],
-        ]
-    ],
-
-    "is_list_search" => [
-        "api/basicTypeList",
-        "wx/basicTypeList",
-//        "api/customerList",
-//        "wx/customerList",
-        "api/roleList",
-        "wx/roleList",
-    ],
-
-    //34 施工单 35 退换货单 37 订单合同  38 T9采购单  44 虚拟采购单 45 分社采购单 48 收付款单
-    "detail_message" => [
-        "16|list" => 'pages/CustomerManage/index/index?id=',//客户列表页
-        "16" => '/pages/CustomerManage/detail/detail?id=', //客户详情页
-        "34" => '/pages/ConstructionOrder/add/detail/detail?order_number=',
-        "35" => '/pages/ReturnExchangeOrder/detail/detail?order_number=',
-        "37" => '/pageA/pages/SalesOrder/detail/detail?order_number=',
-        "38" => '',
-        "44" => '',
-        "45" => '/pageA/pages/ProcureOrder/ProcureDetail/ProcureDetail?order_number=',
-        "48" => '/pages/PayOrder/detail/detail?order_number=',
+        "api/statisticsRevenueCostThree" => 71,
+        "api/giveOutList" => 72,
+        "api/statisticsEmployeeSalary" => 73,
+        "api/statisticsProfit" => 74,
+        "api/statisticsFreightFee" => 75,
     ],
 ];
 

+ 2 - 0
routes/api.php

@@ -145,4 +145,6 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('statisticsProfit', 'Api\StatisticsController@statisticsProfit');
     //业务员工资
     $route->any('statisticsEmployeeSalary', 'Api\StatisticsController@statisticsEmployeeSalary');
+    //运费
+    $route->any('statisticsFreightFee', 'Api\StatisticsController@statisticsFreightFee');
 });