cqpCow 1 سال پیش
والد
کامیت
558d3e83f3

+ 22 - 0
app/Http/Controllers/Api/RangeController.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\RangeService;
+use Illuminate\Http\Request;
+
+class RangeController extends BaseController
+{
+    public function seeRange(Request $request)
+    {
+        $service = new RangeService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->seeRange($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 0 - 6
app/Model/CustomerInfo.php

@@ -16,8 +16,6 @@ class CustomerInfo extends Model
     const type_four = 4; // 联系人
     const type_five = 5; // 图片
     const type_six = 6; // 文件
-    const type_seven = 7; // 可见部门
-    const type_eight = 8; // 可见人
     const type_nine = 9; //前负责人
     public static $type = [
         self::type_one,
@@ -26,18 +24,14 @@ class CustomerInfo extends Model
         self::type_four,
         self::type_five,
         self::type_six,
-        self::type_seven,
-        self::type_eight,
     ];
     public static $see_man = [
         self::type_two,
         self::type_three,
-        self::type_eight,
     ];
     public static $man = [
         self::type_two,
         self::type_three,
-        self::type_eight,
         self::type_nine,
     ];
     public static $man2 = [

+ 2 - 0
app/Model/InvoiceOrder.php

@@ -24,12 +24,14 @@ class InvoiceOrder extends Model
     public static $user = [];
     public static $search = [];
     public static $is_search = false;
+    const range_function = 'invoiceRange';
 
     public function __construct(array $attributes = [])
     {
         if(! empty($attributes['userData'])) {
             self::$user = $attributes['userData'];
             self::$search = $attributes['search'] ?? [];
+            self::$user['range_function'] = self::range_function;
             self::$is_search = true;
         }
         parent::__construct($attributes);

+ 2 - 0
app/Model/PurchaseOrder.php

@@ -34,12 +34,14 @@ class PurchaseOrder extends Model
     public static $user = [];
     public static $search = [];
     public static $is_search = false;
+    const range_function = 'purchaseRange';
 
     public function __construct(array $attributes = [])
     {
         if(! empty($attributes['userData'])) {
             self::$user = $attributes['userData'];
             self::$search = $attributes['search'] ?? [];
+            self::$user['range_function'] = self::range_function;
             self::$is_search = true;
         }
         parent::__construct($attributes);

+ 42 - 0
app/Model/SeeRange.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class SeeRange extends Model
+{
+    protected $table = "see_range"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const type_one = 1; // 客户
+    const type_two = 2; // 施工单
+    const type_three = 3; // 发货单
+    const type_four = 4; // 产品
+    const type_five = 5; // 采购单
+    const type_six = 6; // 退换货
+    const type_seven = 7; // 合同
+    const type_eight = 8; // 活动包
+    const type_nine = 9; //供应商
+    public static $type = [
+        self::type_one,
+        self::type_two,
+        self::type_three,
+        self::type_four,
+        self::type_five,
+        self::type_six,
+        self::type_seven,
+        self::type_eight,
+        self::type_nine,
+    ];
+
+    const data_one = 1; // 部门
+    const data_two = 2; // 人
+    const data_three = 3; // 公司
+    public static $data_type = [
+        self::type_one,
+        self::type_two,
+        self::data_three,
+    ];
+}

+ 7 - 1
app/Service/ConstructionService.php

@@ -9,8 +9,8 @@ use App\Model\ConstructionProductInfo;
 use App\Model\Customer;
 use App\Model\Employee;
 use App\Model\SalesOrder;
-use App\Model\SalesOrderInfo;
 use App\Model\SalesOrderProductInfo;
+use App\Model\SeeRange;
 use App\Model\Storehouse;
 use Illuminate\Support\Facades\DB;
 
@@ -242,6 +242,7 @@ class ConstructionService extends Service
             ConstructionProductInfo::where('del_time',0)
                 ->where('construction_id',$data['id'])
                 ->update(['del_time' => time()]);
+            (new RangeService())->RangeDelete($data['id'],SeeRange::type_two);
 
             //锁定库存释放
             ProductInventoryService::changeLockNumber($user,[],$product_save);
@@ -344,6 +345,11 @@ class ConstructionService extends Service
         $construction['crt_name'] = $emp_map[$construction['crt_id']] ?? '';
         $construction['crt_time'] = $construction['crt_time'] ? date("Y-m-d H:i:s",$construction['crt_time']): '';
 
+        //可见范围
+        $return = (new RangeService())->RangeDetail($data['id'],SeeRange::type_two);
+        $construction['depart'] = $return[0] ?? [];
+        $construction['employee'] = $return[1] ?? [];
+
         return [true, $construction];
     }
 

+ 9 - 75
app/Service/CustomerService.php

@@ -8,6 +8,7 @@ use App\Model\CustomerInfo;
 use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\Product;
+use App\Model\SeeRange;
 use Illuminate\Support\Facades\DB;
 
 /**
@@ -44,8 +45,6 @@ class CustomerService extends Service
             $model->importance = $data['importance'] ?? '';
             $model->company = $data['company'] ?? '';
             $model->company_short_name = $data['company_short_name'] ?? '';
-//            $model->depart_id = $data['depart_id'] ?? 0;
-//            $model->top_depart_id = $data['top_depart_id'] ?? 0;
             $model->state_type = $data['state_type'] ?? 0;
             $model->customer_state = $data['customer_state'] ?? 0;
             $model->customer_grade = $data['customer_grade'] ?? 0;
@@ -137,32 +136,6 @@ class CustomerService extends Service
                 CustomerInfo::insert($insert);
             }
 
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'customer_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => CustomerInfo::type_eight,
-                        'crt_time' => $time,
-                    ];
-                }
-                CustomerInfo::insert($insert);
-            }
-
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'customer_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => CustomerInfo::type_seven,
-                        'crt_time' => $time,
-                    ];
-                }
-                CustomerInfo::insert($insert);
-            }
-
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -291,32 +264,6 @@ class CustomerService extends Service
                 CustomerInfo::insert($insert);
             }
 
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'customer_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => CustomerInfo::type_eight,
-                        'crt_time' => $time,
-                    ];
-                }
-                CustomerInfo::insert($insert);
-            }
-
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'customer_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => CustomerInfo::type_seven,
-                        'crt_time' => $time,
-                    ];
-                }
-                CustomerInfo::insert($insert);
-            }
-
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -344,6 +291,8 @@ class CustomerService extends Service
                 ->where('customer_id',$data['id'])
                 ->update(['del_time' => time()]);
 
+            (new RangeService())->RangeDelete($data['id'],SeeRange::type_one);
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -377,7 +326,7 @@ class CustomerService extends Service
             $address = $tmp;
         }
         $customer['address'] = $address;
-        $customer['customer_contact'] = $customer['employee_one'] = $customer['employee_two'] = $customer['employee_three'] = $customer['img'] = $customer['file'] = $customer['employee'] = $customer['depart'] = $customer['old_employee_one'] = [];
+        $customer['customer_contact'] = $customer['employee_one'] = $customer['employee_two'] = $customer['employee_three'] = $customer['img'] = $customer['file'] = $customer['old_employee_one'] = [];
         $array = [
             $customer['customer_intention'],
             $customer['customer_from'],
@@ -412,14 +361,9 @@ class CustomerService extends Service
             ->get()->toArray();
         $emp_id = [];
         $emp_id[] = $customer['crt_id'];
-        $depart = [];
         foreach ($customer_info as $value){
             if(in_array($value['type'], CustomerInfo::$man)){
                 $emp_id[] = $value['data_id'];
-            }else{
-                if($value['type'] == CustomerInfo::type_seven){
-                    $depart[] = $value['data_id'];
-                }
             }
         }
         $emp_map = Employee::whereIn('id',array_unique($emp_id))
@@ -428,9 +372,6 @@ class CustomerService extends Service
         $basic_map2 = BasicType::whereIn('id',array_unique(array_column($customer_info,'contact_type')))
             ->pluck('title','id')
             ->toArray();
-        $depart_map = Depart::whereIn('id',array_unique($depart))
-            ->pluck('title','id')
-            ->toArray();
         foreach ($customer_info as $value){
             if($value['type'] == CustomerInfo::type_one){
                 $tmp = [
@@ -469,18 +410,6 @@ class CustomerService extends Service
                     'name' => $value['name'],
                 ];
                 $customer['file'][] = $tmp;
-            }elseif ($value['type'] == CustomerInfo::type_seven){
-                $tmp = [
-                    'id' => $value['data_id'],
-                    'name' => $depart_map[$value['data_id']],
-                ];
-                $customer['depart'][] = $tmp;
-            }elseif ($value['type'] == CustomerInfo::type_eight){
-                $tmp = [
-                    'id' => $value['data_id'],
-                    'name' => $emp_map[$value['data_id']] ?? '',
-                ];
-                $customer['employee'][] = $tmp;
             }elseif ($value['type'] == CustomerInfo::type_nine){
                 $tmp = [
                     'id' => $value['data_id'],
@@ -492,6 +421,11 @@ class CustomerService extends Service
         $customer['crt_name'] = $emp_map[$customer['crt_id']] ?? '';
         $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
 
+        //可见范围
+        $return = (new RangeService())->RangeDetail($data['id'],SeeRange::type_one);
+        $customer['depart'] = $return[0] ?? [];
+        $customer['employee'] = $return[1] ?? [];
+
         return [true, $customer];
     }
 

+ 11 - 4
app/Service/InvoiceOrderService.php

@@ -2,12 +2,12 @@
 
 namespace App\Service;
 
-use App\Model\BasicType;
 use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\InvoiceOrder;
 use App\Model\InvoiceOrderInfo;
 use App\Model\SalesOrder;
+use App\Model\SeeRange;
 use App\Model\Storehouse;
 use Illuminate\Support\Facades\DB;
 
@@ -165,6 +165,10 @@ class InvoiceOrderService extends Service
         $order['send_name'] = $emp_map[$order['send']] ?? '';
         $order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
         $order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
+        //可见范围
+        $return = (new RangeService())->RangeDetail($order['id'],SeeRange::type_three);
+        $order['depart'] = $return[0] ?? [];
+        $order['employee'] = $return[1] ?? [];
 
         return [true, $order];
     }
@@ -177,9 +181,11 @@ class InvoiceOrderService extends Service
     public function del($data, $user){
         if($this->isEmpty($data,'order_number')) return [false,'请选择数据!'];
 
-        $bool = InvoiceOrder::where('order_number',$data['order_number'])
-            ->where('state','>',InvoiceOrder::STATE_ZERO)->exists();
-        if($bool) return [false,'发货订单已确认,删除失败!'];
+        $order = InvoiceOrder::where('order_number',$data['order_number'])
+            ->first();
+        if(empty($order)) return [false,'发货单不存在或已被删除'];
+        $order = $order->toArray();
+        if($order['state'] > InvoiceOrder::STATE_ZERO) return [false,'发货订单已确认,删除失败!'];
 
         $product_save = $this->getSaveDetail($data['order_number']);
         try{
@@ -190,6 +196,7 @@ class InvoiceOrderService extends Service
             InvoiceOrderInfo::where('order_number',$data['order_number'])->update([
                 'del_time'=>time()
             ]);
+            (new RangeService())->RangeDelete($order['id'],SeeRange::type_three);
             //锁定库存释放
             ProductInventoryService::changeLockNumber($user,[],$product_save);
 

+ 8 - 89
app/Service/ProductService.php

@@ -3,16 +3,14 @@
 namespace App\Service;
 
 use App\Model\BasicType;
-use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\Product;
 use App\Model\ProductActivityPrice;
 use App\Model\ProductCategory;
 use App\Model\ProductInfo;
 use App\Model\ProductIntroduction;
-use App\Model\ProductInventory;
 use App\Model\ProductPriceDetail;
-use App\Model\ProductRange;
+use App\Model\SeeRange;
 use Illuminate\Support\Facades\DB;
 
 /**
@@ -233,36 +231,6 @@ class ProductService extends Service
                 ProductInfo::insert($insert);
             }
 
-            ProductRange::where('del_time',0)
-                ->where('product_id',$data['id'])
-                ->update(['del_time' => $time]);
-
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'product_id' => $model->id,
-                        'depart_id' => $value,
-                        'type' => ProductRange::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                ProductRange::insert($insert);
-            }
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'product_id' => $model->id,
-                        'employee_id' => $value,
-                        'type' => ProductRange::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                ProductRange::insert($insert);
-            }
-
             ProductPriceDetail::where('del_time',0)
                 ->where('product_id',$data['id'])
                 ->update(['del_time' => $time]);
@@ -355,32 +323,6 @@ class ProductService extends Service
                 ProductInfo::insert($insert);
             }
 
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'product_id' => $model->id,
-                        'depart_id' => $value,
-                        'type' => ProductRange::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                ProductRange::insert($insert);
-            }
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'product_id' => $model->id,
-                        'employee_id' => $value,
-                        'type' => ProductRange::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                ProductRange::insert($insert);
-            }
-
             if(! empty($data['product_price'])){
                 $insert = [];
                 foreach ($data['product_price'] as $value){
@@ -425,14 +367,12 @@ class ProductService extends Service
                 ->where('product_id',$data['id'])
                 ->update(['del_time' => $time]);
 
-            ProductRange::where('del_time',0)
-                ->where('product_id',$data['id'])
-                ->update(['del_time' => $time]);
-
             ProductPriceDetail::where('del_time',0)
                 ->where('product_id',$data['id'])
                 ->update(['del_time' => $time]);
 
+            (new RangeService())->RangeDelete($data['id'],SeeRange::type_four);
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -512,33 +452,12 @@ class ProductService extends Service
             }
         }
 
-        $customer_range = ProductRange::where('del_time',0)
-            ->where('product_id',$customer['id'])
-            ->select('id','product_id','depart_id','type','employee_id')
-            ->get()->toArray();
-        $emp_map = Employee::whereIn('id',array_unique(array_merge_recursive([$customer['crt_id']],array_column($customer_range,'employee_id'))))
-            ->pluck('emp_name','id')
-            ->toArray();
-        $depart_map = Depart::whereIn('id',array_unique(array_column($customer_range,'depart_id')))
-            ->pluck('title','id')
-            ->toArray();
-        foreach ($customer_range as $value){
-            if($value['type'] == ProductRange::type_one){
-                $tmp = [
-                    'id' => $value['depart_id'],
-                    'name' => $depart_map[$value['depart_id']],
-                ];
-                $customer['depart'][] = $tmp;
-            }elseif ($value['type'] == ProductRange::type_two){
-                $tmp = [
-                    'id' => $value['employee_id'],
-                    'name' => $emp_map[$value['employee_id']] ?? '',
-                ];
-                $customer['employee'][] = $tmp;
-            }
-        }
-        $customer['crt_name'] = $emp_map[$customer['crt_id']] ?? '';
+        $customer['crt_name'] = Employee::where('id',$customer['crt_id'])->value('emp_name');
         $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
+        //可见范围
+        $return = (new RangeService())->RangeDetail($data['id'],SeeRange::type_four);
+        $customer['depart'] = $return[0] ?? [];
+        $customer['employee'] = $return[1] ?? [];
 
         return [true, $customer];
     }

+ 7 - 0
app/Service/PurchaseOrderService.php

@@ -9,6 +9,7 @@ use App\Model\PurchaseOrder;
 use App\Model\PurchaseOrderFile;
 use App\Model\PurchaseOrderInfo;
 use App\Model\SalesOrder;
+use App\Model\SeeRange;
 use App\Model\Storehouse;
 use App\Model\Supplier;
 use Illuminate\Support\Facades\DB;
@@ -221,6 +222,10 @@ class PurchaseOrderService extends Service
         }
         $order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
         $order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
+        //可见范围
+        $return = (new RangeService())->RangeDetail($order['id'],SeeRange::type_three);
+        $order['depart'] = $return[0] ?? [];
+        $order['employee'] = $return[1] ?? [];
 
         return [true, $order];
     }
@@ -248,6 +253,8 @@ class PurchaseOrderService extends Service
             PurchaseOrderFile::where('order_number',$data['order_number'])
                 ->where('del_time',0)
                 ->update(['del_time' => time()]);
+            (new RangeService())->RangeDelete($order['id'],SeeRange::type_five);
+
             DB::commit();
         }catch (\Throwable $e){
             DB::rollBack();

+ 194 - 88
app/Service/RangeService.php

@@ -4,32 +4,133 @@ namespace App\Service;
 
 use App\Model\ConstructionInfo;
 use App\Model\CustomerInfo;
-use App\Model\ProductRange;
-use App\Model\ReturnExchangeOrderRange;
+use App\Model\Depart;
+use App\Model\Employee;
 use App\Model\SalesOrderInfo;
-use App\Model\SalesOrderRange;
-use App\Model\SportsBagRange;
-use App\Model\SupplierInfo;
+use App\Model\SeeRange;
 use Illuminate\Support\Facades\DB;
 
 class RangeService extends Service
 {
-    //获取客户可见数据
-    public static function customerRange($user,$search){
+    //设置可见范围 除了合同
+    public function seeRange($data,$user){
+        if(empty($data['data_type'])) return [false, "可见范围数据类型不能为空"];
+        if(! isset(SeeRange::$type[$data['data_type']])) return [false, "可见范围数据类型错误"];
+        if(empty($data['data_id'])) return [false,'可见范围数据ID不能为空'];
+
+        $time = time();
+        SeeRange::where('del_time',0)
+            ->where('data_type',$data['data_type'])
+            ->where('data_id',$data['data_id'])
+            ->update(['del_time' => $time]);
+
+        if(! empty($data['depart'])){
+            $insert = [];
+            foreach ($data['depart'] as $value){
+                $insert[] = [
+                    'data_id' => $data['data_id'],
+                    'param_id' => $value,
+                    'type' => SeeRange::data_one,
+                    'crt_time' => $time,
+                ];
+            }
+            SeeRange::insert($insert);
+        }
+
+        if(! empty($data['employee'])){
+            $insert = [];
+            foreach ($data['employee'] as $value){
+                $insert[] = [
+                    'data_id' => $data['data_id'],
+                    'param_id' => $value,
+                    'type' => SeeRange::data_two,
+                    'crt_time' => $time,
+                ];
+            }
+            SeeRange::insert($insert);
+        }
+
+        return [true,''];
+    }
+
+    //可见范围删除
+    public function RangeDelete($data_id = 0, $data_type = 0){
+        if(empty($data_id) || empty($data_type)) return;
+
+        SeeRange::where('del_time',0)
+            ->where('data_id',$data_id)
+            ->where('data_type',$data_type)
+            ->update(['del_time'=> time()]);
+    }
+
+    //获取可见范围详情
+    public function RangeDetail($data_id = 0, $data_type = 0){
+        if(empty($data_id) || empty($data_type)) return [];
+
+        $see = SeeRange::where('del_time',0)
+            ->where('data_id',$data_id)
+            ->where('data_type',$data_type)
+            ->get()->toArray();
+        $depart_map = Depart::where('del_time',0)->pluck('title','id')->toArray();
+        $emp_map = Employee::where('del_time',0)->pluck('emp_name','id')->toArray();
+
+        $depart = $employee = $depart2 = [];
+        foreach ($see as $value){
+            if ($value['type'] == SeeRange::data_one){
+                $tmp = [
+                    'id' => $value['param_id'],
+                    'name' => $depart_map[$value['param_id']],
+                ];
+                $depart[] = $tmp;
+            }elseif ($value['type'] == SeeRange::data_two){
+                $tmp = [
+                    'id' => $value['param_id'],
+                    'name' => $emp_map[$value['param_id']] ?? '',
+                ];
+                $employee[] = $tmp;
+            }elseif ($value['type'] == SeeRange::data_three){
+                $tmp = [
+                    'id' => $value['param_id'],
+                    'name' => $depart_map[$value['param_id']] ?? '',
+                ];
+                $depart2[] = $tmp;
+            }
+        }
+
+        return [$depart, $employee, $depart2];
+    }
+
+    //获取可见范围数据id
+    public static function getRangeDataId($user,$data_type){
         $user_id = $user['id'];
         $depart_id = $user['depart_range'];
-        $type = implode(',',CustomerInfo::$see_man);
-        $type2 = CustomerInfo::type_eight;
+        $type = SeeRange::data_two;
+        $type2 = [SeeRange::data_one,SeeRange::data_three];
         $depart_str = implode(',',$depart_id);
-        $str = "(data_id = $user_id AND type IN({$type})) OR (data_id IN({$depart_str}) AND type = {$type2})";
+        $str = "(param_id = $user_id AND type = $type) OR (data_id IN({$depart_str}) AND type = {$type2})";
 
-        // 销售人员/负责人 3协同人  可见部门 可见人 可以看见
-        $customer_id = CustomerInfo::where('del_time',0)
+        // 可见部门 可见人 可以看见
+        $data_id = SeeRange::where('del_time',0)
+            ->where('data_type', $data_type)
             ->where(function ($query) use($str) {
                 $query->whereRaw($str);
-            })->select('customer_id')->get()->toArray();
+            })->select('data_id')->get()->toArray();
+        return array_unique(array_column($data_id,'data_id'));
+    }
 
+    //获取客户可见数据
+    public static function customerRange($user,$search){
+        // 销售人员/负责人 3协同人  可以看见
+        $customer_id = CustomerInfo::where('del_time',0)
+           ->where('data_id',$user['id'])
+           ->whereIn('type',CustomerInfo::$see_man)
+           ->select('customer_id')->get()->toArray();
         $return_id = array_unique(array_column($customer_id,'customer_id'));
+        //可见范围id
+        $rang_id = Self::getRangeDataId($user,SeeRange::type_one);
+        //并和
+        $return_id = array_unique(array_merge_recursive($return_id,$rang_id));
+
         if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
             $id = DB::table('customer')
                 ->where('del_time',0)
@@ -44,24 +145,40 @@ class RangeService extends Service
         return $return_id;
     }
 
-    //获取供应商可见数据
-    public static function supplierRange($user,$search){
-        $user_id = $user['id'];
-        $depart_id = $user['depart_range'];
-        $type = SupplierInfo::type_two;
-        $type2 = SupplierInfo::type_one;
-        $depart_str = implode(',',$depart_id);
-        $str = "(data_id = $user_id AND type IN({$type})) OR (data_id IN({$depart_str}) AND type = {$type2})";
+    //获取施工单可见数据
+    public static function constructionRange($user,$search){
+        //单据中选择的签订负责协同人
+        $construction_id = ConstructionInfo::where('del_time',0)
+            ->where('employee_id',$user['id'])
+            ->select('construction_id')
+            ->get()->toArray();
+        $return_id = array_unique(array_column($construction_id,'construction_id'));
 
-        // 可见部门 可见人 可以看见
-        $supplier_id = SupplierInfo::where('del_time',0)
-            ->where(function ($query) use($str) {
-                $query->whereRaw($str);
-            })->select('supplier_id')->get()->toArray();
+        //可见范围id
+        $return = Self::getRangeDataId($user,SeeRange::type_two);
+        $return_id = array_unique(array_merge_recursive($return_id,$return));
 
-        $return_id = array_unique(array_column($supplier_id,'supplier_id'));
         if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
-            $id = DB::table('supplier')
+            $id = DB::table('construction')
+                ->where('del_time',0)
+                ->where('top_depart_id',$search['top_depart_id'])
+                ->select('id')->get()->toArray();
+            $id = array_column($id,'id');
+            foreach ($return_id as $key => $value){
+                if(! in_array($value,$id)) unset($return_id[$key]);
+            }
+        }
+
+        return $return_id;
+    }
+
+    //获取发货单可见数据
+    public static function invoiceRange($user,$search){
+        //可见范围id
+        $return_id = Self::getRangeDataId($user,SeeRange::type_three);
+
+        if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
+            $id = DB::table('invoice_order')
                 ->where('del_time',0)
                 ->where('top_depart_id',$search['top_depart_id'])
                 ->select('id')->get()->toArray();
@@ -76,16 +193,9 @@ class RangeService extends Service
 
     //获取产品可见数据
     public static function productRange($user,$search){
-        $user_id = $user['id'];
-        $depart_id = $user['depart_range'];
-        $product_id = ProductRange::where('del_time',0)
-            ->where(function ($query) use($user_id, $depart_id) {
-                $query->where('employee_id',$user_id)
-                    ->orWhereIn('depart_id', $depart_id);
-            })->select('product_id')->get()
-            ->toArray();
-
-        $return_id = array_unique(array_column($product_id,'product_id'));
+        //可见范围id
+        $return_id = Self::getRangeDataId($user,SeeRange::type_four);
+
         if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
             $id = DB::table('product')
                 ->where('del_time',0)
@@ -100,27 +210,13 @@ class RangeService extends Service
         return $return_id;
     }
 
-    //获取合同可见数据
-    public static function salesOrderRange($user,$search){
-        //单据中选择的签订负责协同人
-        $sales_order_id = SalesOrderInfo::where('del_time',0)
-            ->whereIn('type',SalesOrderInfo::$man)
-            ->where('data_id',$user['id'])
-            ->select('sales_order_id')
-            ->get()->toArray();
-        $sales_order_id = array_unique(array_column($sales_order_id,'sales_order_id'));
-        //指派后
-        $user_id = $user['id'];
-        $depart_id = $user['depart_range'];
-        $sales_order_id2 = SalesOrderRange::where('del_time',0)
-            ->where(function ($query) use($user_id, $depart_id) {
-                $query->where('employee_id',$user_id)
-                    ->orWhereIn('depart_id', $depart_id);
-            })->select('sales_order_id')->get()
-            ->toArray();
-        $return_id = array_unique(array_merge_recursive($sales_order_id,array_column($sales_order_id2,'sales_order_id')));
+    //获取采购单可见数据
+    public static function purchaseRange($user,$search){
+        //可见范围id
+        $return_id = Self::getRangeDataId($user,SeeRange::type_five);
+
         if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
-            $id = DB::table('sales_order')
+            $id = DB::table('purchase_order')
                 ->where('del_time',0)
                 ->where('top_depart_id',$search['top_depart_id'])
                 ->select('id')->get()->toArray();
@@ -133,16 +229,40 @@ class RangeService extends Service
         return $return_id;
     }
 
-    //获取施工单可见数据
-    public static function constructionRange($user,$search){
+    //获取退换货单可见数据
+    public static function returnExchangeOrderRange($user,$search){
+        //可见范围id
+        $return_id = Self::getRangeDataId($user,SeeRange::type_six);
+        if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
+            $id = DB::table('return_exchange_order')
+                ->where('del_time',0)
+                ->where('top_depart_id',$search['top_depart_id'])
+                ->select('id')->get()->toArray();
+            $id = array_column($id,'id');
+            foreach ($return_id as $key => $value){
+                if(! in_array($value,$id)) unset($return_id[$key]);
+            }
+        }
+
+        return $return_id;
+    }
+
+    //获取合同可见数据
+    public static function salesOrderRange($user,$search){
         //单据中选择的签订负责协同人
-        $construction_id = ConstructionInfo::where('del_time',0)
-            ->where('employee_id',$user['id'])
-            ->select('construction_id')
+        $sales_order_id = SalesOrderInfo::where('del_time',0)
+            ->whereIn('type',SalesOrderInfo::$man)
+            ->where('data_id',$user['id'])
+            ->select('sales_order_id')
             ->get()->toArray();
-        $return_id = array_unique(array_column($construction_id,'construction_id'));
+        $sales_order_id = array_unique(array_column($sales_order_id,'sales_order_id'));
+
+        //指派后 可见范围id
+        $return = Self::getRangeDataId($user,SeeRange::type_seven);
+
+        $return_id = array_unique(array_merge_recursive($sales_order_id,$return));
         if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
-            $id = DB::table('construction')
+            $id = DB::table('sales_order')
                 ->where('del_time',0)
                 ->where('top_depart_id',$search['top_depart_id'])
                 ->select('id')->get()->toArray();
@@ -155,20 +275,13 @@ class RangeService extends Service
         return $return_id;
     }
 
-    //获取退换货单可见数据
-    public static function returnExchangeOrderRange($user,$search){
-        $user_id = $user['id'];
-        $depart_id = $user['depart_range'];
-        $return_exchange_id = ReturnExchangeOrderRange::where('del_time',0)
-            ->where(function ($query) use($user_id, $depart_id) {
-                $query->where('employee_id',$user_id)
-                    ->orWhereIn('depart_id', $depart_id);
-            })->select('return_exchange_id')->get()
-            ->toArray();
-
-        $return_id = array_unique(array_column($return_exchange_id,'return_exchange_id'));
+    //获取供应商可见数据
+    public static function supplierRange($user,$search){
+        //可见范围id
+        $return_id = Self::getRangeDataId($user,SeeRange::type_nine);
+
         if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
-            $id = DB::table('return_exchange_order')
+            $id = DB::table('supplier')
                 ->where('del_time',0)
                 ->where('top_depart_id',$search['top_depart_id'])
                 ->select('id')->get()->toArray();
@@ -183,16 +296,9 @@ class RangeService extends Service
 
     //获取活动包可见数据
     public static function sportsBagRange($user,$search){
-        $user_id = $user['id'];
-        $depart_id = $user['depart_range'];
-        $return_exchange_id = SportsBagRange::where('del_time',0)
-            ->where(function ($query) use($user_id, $depart_id) {
-                $query->where('employee_id',$user_id)
-                    ->orWhereIn('depart_id', $depart_id);
-            })->select('sports_bag_id')->get()
-            ->toArray();
-
-        $return_id = array_unique(array_column($return_exchange_id,'sports_bag_id'));
+        //可见范围id
+        $return_id = Self::getRangeDataId($user,SeeRange::type_eight);
+
         if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
             $id = DB::table('sports_bag')
                 ->where('del_time',0)

+ 10 - 90
app/Service/ReturnExchangeOrderService.php

@@ -3,15 +3,14 @@
 namespace App\Service;
 
 use App\Model\BasicType;
-use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\PurchaseOrder;
 use App\Model\PurchaseOrderInfo;
 use App\Model\ReturnExchangeOrder;
 use App\Model\ReturnExchangeOrderProductInfo;
-use App\Model\ReturnExchangeOrderRange;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderProductInfo;
+use App\Model\SeeRange;
 use App\Model\Storehouse;
 use Illuminate\Support\Facades\DB;
 
@@ -77,36 +76,6 @@ class ReturnExchangeOrderService extends Service
                 ReturnExchangeOrderProductInfo::insert($sub);
             }
 
-            ReturnExchangeOrderRange::where('del_time',0)
-                ->where('return_exchange_id',$data['id'])
-                ->update(['del_time' => $time]);
-
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'return_exchange_id' => $material_model->id,
-                        'depart_id' => $value,
-                        'type' => ReturnExchangeOrderRange::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                ReturnExchangeOrderRange::insert($insert);
-            }
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'return_exchange_id' => $material_model->id,
-                        'employee_id' => $value,
-                        'type' => ReturnExchangeOrderRange::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                ReturnExchangeOrderRange::insert($insert);
-            }
-
             //锁定库存
             ProductInventoryService::changeLockNumber($user, $msg[0],$msg[1]);
 
@@ -181,32 +150,6 @@ class ReturnExchangeOrderService extends Service
                 ReturnExchangeOrderProductInfo::insert($sub);
             }
 
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'return_exchange_id' => $material_model->id,
-                        'depart_id' => $value,
-                        'type' => ReturnExchangeOrderRange::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                ReturnExchangeOrderRange::insert($insert);
-            }
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'return_exchange_id' => $material_model->id,
-                        'employee_id' => $value,
-                        'type' => ReturnExchangeOrderRange::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                ReturnExchangeOrderRange::insert($insert);
-            }
-
             //锁定库存
             ProductInventoryService::changeLockNumber($user, $msg[0],[]);
 
@@ -229,10 +172,10 @@ class ReturnExchangeOrderService extends Service
         if(empty($order)) return [false, '退换货订单不存在或已被删除'];
         $order = $order->toArray();
         $order['storehouse_title'] = Storehouse::where('id',$order['storehouse_id'])->value('title');
-        if($data['type'] == ReturnExchangeOrder::Order_type){
+        if($order['type'] == ReturnExchangeOrder::Order_type){
             $sales = SalesOrder::where('id',$order['data_id'])->value('order_number');
             $order['data_title'] = $sales;
-        }elseif($data['type'] == ReturnExchangeOrder::Order_type2){
+        }elseif($order['type'] == ReturnExchangeOrder::Order_type2){
             $sales = PurchaseOrder::where('id',$order['data_id'])->value('order_number');
             $order['data_title'] = $sales;
         }
@@ -261,33 +204,12 @@ class ReturnExchangeOrderService extends Service
             }
         }
 
-        $range = ReturnExchangeOrderRange::where('del_time',0)
-            ->where('return_exchange_id',$order['id'])
-            ->select('id','return_exchange_id','depart_id','type','employee_id')
-            ->get()->toArray();
-        $emp_map = Employee::whereIn('id',array_unique(array_merge_recursive([$order['crt_id']],array_column($range,'employee_id'))))
-            ->pluck('emp_name','id')
-            ->toArray();
-        $depart_map = Depart::whereIn('id',array_unique(array_column($range,'depart_id')))
-            ->pluck('title','id')
-            ->toArray();
-        foreach ($range as $value){
-            if($value['type'] == ReturnExchangeOrderRange::type_one){
-                $tmp = [
-                    'id' => $value['depart_id'],
-                    'name' => $depart_map[$value['depart_id']],
-                ];
-                $order['depart'][] = $tmp;
-            }elseif ($value['type'] == ReturnExchangeOrderRange::type_two){
-                $tmp = [
-                    'id' => $value['employee_id'],
-                    'name' => $emp_map[$value['employee_id']] ?? '',
-                ];
-                $order['employee'][] = $tmp;
-            }
-        }
-        $order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
+        $order['crt_name'] = Employee::where('id',$order['crt_id'])->value('emp_name');
         $order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
+        //可见范围
+        $return = (new RangeService())->RangeDetail($data['id'],SeeRange::type_six);
+        $order['depart'] = $return[0] ?? [];
+        $order['employee'] = $return[1] ?? [];
 
         return [true, $order];
     }
@@ -308,13 +230,11 @@ class ReturnExchangeOrderService extends Service
             ReturnExchangeOrderProductInfo::where('return_exchange_id',$data['id'])->update([
                 'del_time'=>time()
             ]);
-            ReturnExchangeOrderRange::where('return_exchange_id',$data['id'])->update([
-                'del_time'=>time()
-            ]);
-
             //锁定库存
             ProductInventoryService::changeLockNumber($user, [], $product_save_minus);
 
+            (new RangeService())->RangeDelete($data['id'],SeeRange::type_six);
+
             DB::commit();
         }catch (\Throwable $e){
             DB::rollBack();

+ 27 - 55
app/Service/SalesOrderService.php

@@ -5,13 +5,12 @@ namespace App\Service;
 use App\Model\BasicType;
 use App\Model\Construction;
 use App\Model\Customer;
-use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderInfo;
 use App\Model\SalesOrderOtherFee;
 use App\Model\SalesOrderProductInfo;
-use App\Model\SalesOrderRange;
+use App\Model\SeeRange;
 use App\Model\SportsBag;
 use App\Model\SportsBagProductInfo;
 use Illuminate\Support\Facades\DB;
@@ -66,8 +65,6 @@ class SalesOrderService extends Service
             $model->color = $data['color'] ?? '';
             $model->original_set = $data['original_set'] ?? '';
             $model->processing = $data['processing'] ?? '';
-//            $model->depart_id = $data['depart_id'] ?? 0;
-//            $model->top_depart_id = $data['top_depart_id'] ?? 0;
             $model->save();
             $time = time();
 
@@ -322,12 +319,10 @@ class SalesOrderService extends Service
             SalesOrderProductInfo::where('del_time',0)
                 ->where('sales_order_id',$data['id'])
                 ->update(['del_time' => time()]);
-            SalesOrderRange::where('del_time',0)
-                ->where('sales_order_id',$data['id'])
-                ->update(['del_time' => time()]);
             SalesOrderOtherFee::where('del_time',0)
                 ->where('sales_order_id',$data['id'])
                 ->update(['del_time' => time()]);
+            (new RangeService())->RangeDelete($data['id'],SeeRange::type_seven);
 
             DB::commit();
         }catch (\Exception $exception){
@@ -468,37 +463,11 @@ class SalesOrderService extends Service
         $sales['crt_name'] = $emp_map[$sales['crt_id']] ?? '';
         $sales['crt_time'] = $sales['crt_time'] ? date("Y-m-d H:i:s",$sales['crt_time']): '';
 
-        //派单后数据
-        $range = SalesOrderRange::where('del_time',0)
-            ->where('sales_order_id',$data['id'])
-            ->get()->toArray();
-        $emp_map = Employee::whereIn('id',array_unique(array_column($range,'employee_id')))
-            ->pluck('emp_name','id')
-            ->toArray();
-        $depart_map = Depart::whereIn('id',array_unique(array_column($range,'depart_id')))
-            ->pluck('title','id')
-            ->toArray();
-        foreach ($range as $value){
-            if($value['type'] == SalesOrderRange::type_one){
-                $tmp = [
-                    'id' => $value['depart_id'],
-                    'name' => $depart_map[$value['depart_id']],
-                ];
-                $sales['dispatch_depart_one'][] = $tmp;
-            }elseif ($value['type'] == SalesOrderRange::type_two){
-                $tmp = [
-                    'id' => $value['employee_id'],
-                    'name' => $emp_map[$value['employee_id']] ?? '',
-                ];
-                $sales['dispatch_employee'][] = $tmp;
-            }elseif ($value['type'] == SalesOrderRange::type_three){
-                $tmp = [
-                    'id' => $value['employee_id'],
-                    'name' => $depart_map[$value['depart_id']],
-                ];
-                $sales['dispatch_depart_two'][] = $tmp;
-            }
-        }
+        //派单后数据 也就是可见范围
+        $return = (new RangeService())->RangeDetail($data['id'],SeeRange::type_seven);
+        $sales['dispatch_depart_one'] = $return[0] ?? [];
+        $sales['dispatch_employee'] = $return[1] ?? [];
+        $sales['dispatch_depart_two'] = $return[2] ?? [];
 
         return [true, $sales];
     }
@@ -718,34 +687,36 @@ class SalesOrderService extends Service
             ]);
 
             $time = time();
-            SalesOrderRange::where('del_time',0)
-                ->where('sales_order_id',$msg['id'])
+            SeeRange::where('del_time',0)
+                ->where('data_id',$msg['id'])
+                ->where('data_type',SeeRange::type_seven)
+                ->whereIn('type',[SeeRange::data_one, SeeRange::data_two])
                 ->update(['del_time' => $time]);
 
             if(! empty($data['dispatch_depart_one'])){
                 $insert = [];
                 foreach ($data['dispatch_depart_one'] as $value){
                     $insert[] = [
-                        'sales_order_id' => $msg['id'],
-                        'depart_id' => $value,
-                        'type' => SalesOrderRange::type_one,
+                        'data_id' => $msg['id'],
+                        'param_id' => $value,
+                        'type' => SeeRange::data_one,
                         'crt_time' => $time,
                     ];
                 }
-                SalesOrderRange::insert($insert);
+                SeeRange::insert($insert);
             }
 
             if(! empty($data['dispatch_employee'])){
                 $insert = [];
                 foreach ($data['dispatch_employee'] as $value){
                     $insert[] = [
-                        'sales_order_id' => $msg['id'],
-                        'employee_id' => $value,
-                        'type' => SalesOrderRange::type_two,
+                        'data_id' => $msg['id'],
+                        'param_id' => $value,
+                        'type' => SeeRange::data_two,
                         'crt_time' => $time,
                     ];
                 }
-                SalesOrderRange::insert($insert);
+                SeeRange::insert($insert);
             }
 
             DB::commit();
@@ -796,9 +767,10 @@ class SalesOrderService extends Service
             ]);
 
             $time = time();
-            SalesOrderRange::where('del_time',0)
-                ->where('sales_order_id',$msg['id'])
-                ->where('type',SalesOrderRange::type_three)
+            SeeRange::where('del_time',0)
+                ->where('data_id',$msg['id'])
+                ->where('data_type',SeeRange::type_seven)
+                ->where('type',SeeRange::data_three)
                 ->update(['del_time' => $time]);
             SalesOrderOtherFee::where('del_time',0)
                 ->where('sales_order_id',$msg['id'])
@@ -807,13 +779,13 @@ class SalesOrderService extends Service
                 $insert = [];
                 foreach ($data['dispatch_depart_two'] as $value){
                     $insert[] = [
-                        'sales_order_id' => $msg['id'],
-                        'depart_id' => $value,
-                        'type' => SalesOrderRange::type_three,
+                        'data_id' => $msg['id'],
+                        'param_id' => $value,
+                        'type' => SeeRange::data_three,
                         'crt_time' => $time,
                     ];
                 }
-                SalesOrderRange::insert($insert);
+                SeeRange::insert($insert);
             }
 
             if(! empty($data['other_fee_1'])){

+ 7 - 87
app/Service/SportsBagService.php

@@ -2,11 +2,10 @@
 
 namespace App\Service;
 
-use App\Model\Depart;
 use App\Model\Employee;
+use App\Model\SeeRange;
 use App\Model\SportsBag;
 use App\Model\SportsBagProductInfo;
-use App\Model\SportsBagRange;
 use Illuminate\Support\Facades\DB;
 
 class SportsBagService extends Service
@@ -50,36 +49,6 @@ class SportsBagService extends Service
                 SportsBagProductInfo::insert($sub);
             }
 
-            SportsBagRange::where('del_time',0)
-                ->where('sports_bag_id',$data['id'])
-                ->update(['del_time' => $time]);
-
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'sports_bag_id' => $material_model->id,
-                        'depart_id' => $value,
-                        'type' => SportsBagRange::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                SportsBagRange::insert($insert);
-            }
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'sports_bag_id' => $material_model->id,
-                        'employee_id' => $value,
-                        'type' => SportsBagRange::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                SportsBagRange::insert($insert);
-            }
-
             DB::commit();
         }catch (\Throwable $e){
             DB::rollBack();
@@ -128,32 +97,6 @@ class SportsBagService extends Service
                 SportsBagProductInfo::insert($sub);
             }
 
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'sports_bag_id' => $material_model->id,
-                        'depart_id' => $value,
-                        'type' => SportsBagRange::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                SportsBagRange::insert($insert);
-            }
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'sports_bag_id' => $material_model->id,
-                        'employee_id' => $value,
-                        'type' => SportsBagRange::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                SportsBagRange::insert($insert);
-            }
-
             DB::commit();
         }catch (\Throwable $e){
             DB::rollBack();
@@ -190,33 +133,12 @@ class SportsBagService extends Service
             $order['product'][] = $value;
         }
 
-        $range = SportsBagRange::where('del_time',0)
-            ->where('sports_bag_id',$order['id'])
-            ->select('id','sports_bag_id','depart_id','type','employee_id')
-            ->get()->toArray();
-        $emp_map = Employee::whereIn('id',array_unique(array_merge_recursive([$order['crt_id']],array_column($range,'employee_id'))))
-            ->pluck('emp_name','id')
-            ->toArray();
-        $depart_map = Depart::whereIn('id',array_unique(array_column($range,'depart_id')))
-            ->pluck('title','id')
-            ->toArray();
-        foreach ($range as $value){
-            if($value['type'] == SportsBagRange::type_one){
-                $tmp = [
-                    'id' => $value['depart_id'],
-                    'name' => $depart_map[$value['depart_id']],
-                ];
-                $order['depart'][] = $tmp;
-            }elseif ($value['type'] == SportsBagRange::type_two){
-                $tmp = [
-                    'id' => $value['employee_id'],
-                    'name' => $emp_map[$value['employee_id']] ?? '',
-                ];
-                $order['employee'][] = $tmp;
-            }
-        }
-        $order['crt_name'] = $emp_map[$order['crt_id']] ?? '';
+        $order['crt_name'] = Employee::where('id',$order['crt_id'])->value('emp_name');
         $order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
+        //可见范围
+        $return = (new RangeService())->RangeDetail($order['id'],SeeRange::type_eight);
+        $order['depart'] = $return[0] ?? [];
+        $order['employee'] = $return[1] ?? [];
 
         return [true, $order];
     }
@@ -234,9 +156,7 @@ class SportsBagService extends Service
             SportsBagProductInfo::where('sports_bag_id',$data['id'])->update([
                 'del_time'=>time()
             ]);
-            SportsBagRange::where('sports_bag_id',$data['id'])->update([
-                'del_time'=>time()
-            ]);
+            (new RangeService())->RangeDelete($data['id'],SeeRange::type_eight);
 
             DB::commit();
         }catch (\Throwable $e){

+ 7 - 99
app/Service/SupplierService.php

@@ -2,9 +2,8 @@
 
 namespace App\Service;
 
+use App\Model\SeeRange;
 use App\Model\Supplier;
-use App\Model\SupplierInfo;
-use App\Model\Depart;
 use App\Model\Employee;
 use Illuminate\Support\Facades\DB;
 
@@ -30,37 +29,6 @@ class SupplierService extends Service
             $model->mark = $data['mark'] ?? '';
             $model->is_main = $data['is_main'] ?? 0;
             $model->save();
-            $time = time();
-
-            SupplierInfo::where('del_time',0)
-                ->where('supplier_id',$data['id'])
-                ->update(['del_time' => $time]);
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'supplier_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => SupplierInfo::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                SupplierInfo::insert($insert);
-            }
-
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'supplier_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => SupplierInfo::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                SupplierInfo::insert($insert);
-            }
 
             DB::commit();
         }catch (\Exception $exception){
@@ -95,33 +63,6 @@ class SupplierService extends Service
             $model->top_depart_id = $data['top_depart_id'] ?? 0;
             $model->is_main = $data['is_main'] ?? 0;
             $model->save();
-            $time = time();
-
-            if(! empty($data['employee'])){
-                $insert = [];
-                foreach ($data['employee'] as $value){
-                    $insert[] = [
-                        'supplier_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => SupplierInfo::type_two,
-                        'crt_time' => $time,
-                    ];
-                }
-                SupplierInfo::insert($insert);
-            }
-
-            if(! empty($data['depart'])){
-                $insert = [];
-                foreach ($data['depart'] as $value){
-                    $insert[] = [
-                        'supplier_id' => $model->id,
-                        'data_id' => $value,
-                        'type' => SupplierInfo::type_one,
-                        'crt_time' => $time,
-                    ];
-                }
-                SupplierInfo::insert($insert);
-            }
 
             DB::commit();
         }catch (\Exception $exception){
@@ -146,9 +87,7 @@ class SupplierService extends Service
             Supplier::where('id',$data['id'])->update([
                 'del_time'=> time()
             ]);
-            SupplierInfo::where('del_time',0)
-                ->where('supplier_id',$data['id'])
-                ->update(['del_time' => time()]);
+            (new RangeService())->RangeDelete($data['id'],SeeRange::type_nine);
 
             DB::commit();
         }catch (\Exception $exception){
@@ -182,43 +121,12 @@ class SupplierService extends Service
         }
         $customer['address'] = $address;
 
-        $customer_info = SupplierInfo::where('del_time',0)
-            ->where('supplier_id',$customer['id'])
-            ->get()->toArray();
-        $emp_id = [];
-        $emp_id[] = $customer['crt_id'];
-        $depart = [];
-        foreach ($customer_info as $value){
-            if($value['type'] == SupplierInfo::type_two){
-                $emp_id[] = $value['data_id'];
-            }else{
-                $depart[] = $value['data_id'];
-            }
-        }
-        $emp_map = Employee::whereIn('id',array_unique($emp_id))
-            ->pluck('emp_name','id')
-            ->toArray();
-        $depart_map = Depart::whereIn('id',array_unique($depart))
-            ->pluck('title','id')
-            ->toArray();
-        $customer['depart'] = $customer['employee'] = [];
-        foreach ($customer_info as $value){
-            if($value['type'] == SupplierInfo::type_one){
-                $tmp = [
-                    'id' => $value['data_id'],
-                    'name' => $depart_map[$value['data_id']],
-                ];
-                $customer['depart'][] = $tmp;
-            }elseif ($value['type'] == SupplierInfo::type_two){
-                $tmp = [
-                    'id' => $value['data_id'],
-                    'name' => $emp_map[$value['data_id']] ?? '',
-                ];
-                $customer['employee'][] = $tmp;
-            }
-        }
-        $customer['crt_name'] = $emp_map[$customer['crt_id']] ?? '';
+        $customer['crt_name'] = Employee::where('id',$customer['crt_id'])->value('emp_name');
         $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
+        //可见范围
+        $return = (new RangeService())->RangeDetail($customer['id'],SeeRange::type_nine);
+        $order['depart'] = $return[0] ?? [];
+        $order['employee'] = $return[1] ?? [];
 
         return [true, $customer];
     }

+ 2 - 0
routes/api.php

@@ -195,4 +195,6 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('productInventorySetList', 'Api\ProductInventoryController@productInventorySetList');
     //设置开关
     $route->any('productInventorySet', 'Api\ProductInventoryController@productInventorySet');
+    //可见范围
+    $route->any('seeRange', 'Api\RangeseeRangeController@seeRange');
 });