ソースを参照

三个接口增加数据过滤

cqpCow 11 ヶ月 前
コミット
5a67eb6e52

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

@@ -71,11 +71,13 @@ class CheckLogin
         $is_check_stock = empty($my_top['is_stock']) ? ProductInventorySet::type_one : $my_top['is_stock'];
         $data['is_check_stock'] = $is_check_stock;
 
-        //菜单ID
         $query = config('morequery');
         $url = $request->path();
-        if(isset($query[$url])){
-            $param = $query[$url];
+
+        //菜单ID
+        $menu = $query['menu'] ?? [];
+        if(isset($menu[$url])){
+            $param = $menu[$url];
             if(is_array($param)){
                 $key = $param['key'];
                 $get = $request->input($key);
@@ -86,6 +88,15 @@ class CheckLogin
             $request->merge(['menu_id' => $menu_id]);
         }
 
+        $menu2 = $query['is_list_search'] ?? [];
+        if(in_array($url, $menu2)) {
+            if(! empty($data['is_list_search'])){//列表页呈现
+                $request->merge(['get_my_top_depart_data' => 0]);
+            }else{//建单据选择
+                $request->merge(['get_my_top_depart_data' => 1]);
+            }
+        }
+
         //写入user信息
         $request->userData = $data;
 

+ 14 - 3
app/Http/Middleware/CheckWx.php

@@ -90,11 +90,13 @@ class CheckWx
             $is_check_stock = empty($my_top['is_stock']) ? ProductInventorySet::type_one : $my_top['is_stock'];
             $data['is_check_stock'] = $is_check_stock;
 
-            //菜单ID
             $query = config('morequery');
             $url = $request->path();
-            if(isset($query[$url])){
-                $param = $query[$url];
+
+            //菜单ID
+            $menu = $query['menu'] ?? [];
+            if(isset($menu[$url])){
+                $param = $menu[$url];
                 if(is_array($param)){
                     $key = $param['key'];
                     $get = $request->input($key);
@@ -105,6 +107,15 @@ class CheckWx
                 $request->merge(['menu_id' => $menu_id]);
             }
 
+            $menu2 = $query['is_list_search'] ?? [];
+            if(in_array($url, $menu2)) {
+                if(! empty($data['is_list_search'])){//列表页呈现
+                    $request->merge(['get_my_top_depart_data' => 0]);
+                }else{//建单据选择
+                    $request->merge(['get_my_top_depart_data' => 1]);
+                }
+            }
+
             $request->userData = $data;
         }
 

+ 114 - 0
app/Model/UseScopeBaseModel.php

@@ -49,6 +49,13 @@ class UseScopeBaseModel extends Model
             $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;
     }
 
@@ -159,6 +166,113 @@ class UseScopeBaseModel extends Model
         }
     }
 
+    //部门和顶级部门(公司)过滤 取别名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)
     {

+ 0 - 5
app/Service/BasicTypeService.php

@@ -65,11 +65,6 @@ class BasicTypeService extends Service
 
         if(! empty($data['type'])) $model->where('type',$data['type']);
         if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
-        if(! empty($data['get_my'])){
-            $depart = ! empty($user['depart_top'][0]) ? $user['depart_top'][0]: [];
-            $depart_id = $depart['depart_id'] ?? 0;
-            $model->where('top_depart_id', $depart_id);
-        }
 
         $list = $this->limit($model,'',$data);
         $list = $this->fillData($list);

+ 1 - 0
app/Service/SalesOrderService.php

@@ -397,6 +397,7 @@ class SalesOrderService extends Service
                 }
                 PaymentReceiptInfo::insert($insert);
             }
+
             if(! empty($order['employee_one'])){
                 $insert = [];
                 foreach ($order['employee_one'] as $value){

+ 49 - 38
config/morequery.php

@@ -1,48 +1,59 @@
 <?php
 
 return [
-    "api/customerList" => 16,
-    "api/customerAdd" => 16,
-    "api/customerEdit" => 16,
-    "api/paymentReceiptList" => 48,
-    "api/salesOrderList" => [
-        'key' => 'order_list',
-        'array' => [
-            1 => 37,
-            2 => 43,
+    "menu" => [
+        "api/customerList" => 16,
+        "api/customerAdd" => 16,
+        "api/customerEdit" => 16,
+        "api/paymentReceiptList" => 48,
+        "api/salesOrderList" => [
+            'key' => 'order_list',
+            'array' => [
+                1 => 37,
+                2 => 43,
+            ],
         ],
-    ],
-    "api/invoiceOrderList" => 36,
-    "api/ReturnExchangeOrderList" => 35,
-    "api/constructionList" => 34,
-    "api/purchaseOrderList" => [
-        'key' => 'order_type',
-        'array' => [
-            1 => 38,
-            5 => 45,
+        "api/invoiceOrderList" => 36,
+        "api/ReturnExchangeOrderList" => 35,
+        "api/constructionList" => 34,
+        "api/purchaseOrderList" => [
+            'key' => 'order_type',
+            'array' => [
+                1 => 38,
+                5 => 45,
+            ],
         ],
-    ],
 
-    "wx/customerList" => 16,
-    "wx/customerAdd" => 16,
-    "wx/customerEdit" => 16,
-    "wx/paymentReceiptList" => 48,
-    "wx/salesOrderList" => [
-        'key' => 'order_list',
-        'array' => [
-            1 => 37,
-            2 => 43,
+        "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/constructionList" => 34,
+        "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",
     ],
-    "wx/invoiceOrderList" => 36,
-    "wx/ReturnExchangeOrderList" => 35,
-    "wx/constructionList" => 34,
-    "wx/purchaseOrderList" => [
-        'key' => 'order_type',
-        'array' => [
-            1 => 38,
-            5 => 45,
-        ],
-    ]
 ];