cqp преди 6 месеца
родител
ревизия
6a6b8fd048
променени са 5 файла, в които са добавени 163 реда и са изтрити 64 реда
  1. 1 7
      app/Service/CheckService.php
  2. 36 4
      app/Service/CustomerService.php
  3. 109 42
      app/Service/DeleteService.php
  4. 17 10
      app/Service/StatisticsService.php
  5. 0 1
      routes/wx.php

+ 1 - 7
app/Service/CheckService.php

@@ -444,16 +444,10 @@ class CheckService extends Service
             PurchaseOrderSpecialInfo::insert($insert);
             PurchaseOrderSpecial::where('id',$purchase_order_id)->update(['total' => $product_total]);
 
-            $company = SeeRange::where('del_time',0)
-                ->where('data_id',$order['id'])
-                ->where('data_type',SeeRange::type_seven)
-                ->where('type',SeeRange::data_three)
-                ->first();
-            if(! empty($company)) $company = $company->toArray();
             $insert_see[] = [
                 'data_id' => $purchase_order_id, // 虚拟采购单
                 'data_type' => SeeRange::type_ten,
-                'param_id' => $company['param_id'] ?? 0, //门店id
+                'param_id' => $depart_id, //门店id
                 'type' => SeeRange::data_three,
                 'crt_time' => time(),
             ];

+ 36 - 4
app/Service/CustomerService.php

@@ -807,11 +807,13 @@ class CustomerService extends Service
             ->pluck('title','id')
             ->toArray();
 
+        $customer_id = array_column($data['data'],'id');
+
         //跟进记录
-        $record_array = (new FollowUpRecordService())->getVisitDataOfTime(array_column($data['data'],'id'), FollowUpRecord::type_one);
+        $record_array = (new FollowUpRecordService())->getVisitDataOfTime($customer_id, FollowUpRecord::type_one);
 
         $customer_info = CustomerInfo::where('del_time',0)
-            ->whereIn('customer_id',array_column($data['data'],'id'))
+            ->whereIn('customer_id',$customer_id)
             ->whereIn('type',[CustomerInfo::type_one,CustomerInfo::type_two,CustomerInfo::type_three])
             ->select('type','contact_type','contact_info','customer_id','data_id')
             ->get()->toArray();
@@ -848,9 +850,11 @@ class CustomerService extends Service
             }
         }
 
-        $array2 = array_unique(array_merge_recursive(array_column($data['data'],'top_depart_id'),array_column($data['data'],'fp_top_depart_id')));
+        $array2 = array_unique(array_column($data['data'],'top_depart_id'));
         $depart = Depart::whereIn('id',$array2)->pluck('title','id')->toArray();
 
+        $depart2_map = $this->getCustomerDepart($customer_id);
+
         $address_map = config('address');
         foreach ($data['data'] as $key => $value){
             $address_str = [];
@@ -885,13 +889,41 @@ class CustomerService extends Service
             $data['data'][$key]['follow_record'] = $record_array[$value['id']] ?? "";
             $data['data'][$key]['order_number'] = Customer::$order_number . "|" . $value['id'] . "|" . $value['title'];
             $data['data'][$key]['top_depart_title'] = $depart[$value['top_depart_id']] ?? "";
-            $data['data'][$key]['fp_top_depart_title'] = $depart[$value['fp_top_depart_id']] ?? "";
+            $data['data'][$key]['fp_top_depart_title'] = $depart2_map[$value['id']] ?? "";
             $data['data'][$key]['xt'] = $xt[$value['id']] ?? "";
         }
 
         return $data;
     }
 
+    //获取客资门店
+    public function getCustomerDepart($customer_id = []){
+        if(empty($customer_id)) return [];
+
+        $result = SeeRange::where('del_time',0)
+            ->whereIn('data_id', $customer_id)
+            ->where('data_type',SeeRange::type_one)
+            ->where('type',SeeRange::data_three)
+            ->select('data_id as customer_id','param_id as top_depart_id')
+            ->get()->toArray();
+
+        $depart_map = Depart::whereIn('id',array_unique(array_column($result,'top_depart_id')))->pluck('title','id')->toArray();
+
+        $return = [];
+        foreach ($result as $value){
+            $tmp = $depart_map[$value['top_depart_id']] ?? "";
+            if(! $tmp) continue;
+            if(isset($return[$value['customer_id']])){
+                $return[$value['customer_id']] .= ',' . $tmp;
+
+            }else{
+                $return[$value['customer_id']] = $tmp;
+            }
+        }
+
+        return $return;
+    }
+
     //抢客户
     public function customerGrabbing($data, $user){
         $key = Customer::$limitKey . $data['customer_id'];

+ 109 - 42
app/Service/DeleteService.php

@@ -11,6 +11,7 @@ use App\Model\OrderOperation;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderInfo;
 use App\Model\ScheduleInfo;
+use App\Model\SeeRange;
 use Illuminate\Support\Facades\DB;
 
 class DeleteService extends Service
@@ -88,18 +89,21 @@ class DeleteService extends Service
     public function fp($data,$user){
         if(empty($data['id']) || empty($data['type']) || empty($data['man'])) return [false, '必填参数不能为空!'];
 
-//        $key = "fpyj".$data['id'].$data['type'];
-//        list($status,$msg) = $this->limitingSendRequestBackgExpire($key);
-//        if(! $status) return [false,$msg];
-
         try {
             DB::beginTransaction();
             if($data['type'] == 1){
-                $this->fpSaleOrderMan($data,$user);
+                list($status, $msg) = $this->fpSaleOrderMan($data,$user);
             }elseif ($data['type'] == 2){
-                $this->fpCustomerMan($data,$user);
+                list($status, $msg) = $this->fpCustomerMan($data,$user);
             }elseif($data['type'] == 3){
-                $this->fpConstructionMan($data,$user);
+                list($status, $msg) = $this->fpConstructionMan($data,$user);
+            }else{
+                return [false, '非法操作'];
+            }
+
+            if(! $status) {
+                DB::rollBack();
+                return [false, $msg];
             }
 
             DB::commit();
@@ -133,22 +137,27 @@ class DeleteService extends Service
                 'type' => OrderOperation::eighteen
             ],$user);
         }
+
+        return [true, ''];
     }
 
     public function fpCustomerMan($data,$user){
+        if(! is_array($data['id'])) $data_id = [$data['id']];
+        else $data_id = $data['id'];
+
         $time = time();
         if(! empty($data['man'])){
             $insert = [];
 
             //协同人
             $xt = CustomerInfo::where('del_time',0)
-                ->whereIn('customer_id',$data['id'])
+                ->whereIn('customer_id',$data_id)
                 ->where('type',CustomerInfo::type_three)
                 ->where('data_id',$user['id'])
                 ->select('customer_id')->get()->toArray();
             $xt = array_column($xt,'customer_id');
 
-            $customer_map = Customer::whereIn('id',$data['id'])
+            $customer_map = Customer::whereIn('id', $data_id)
                 ->pluck('title','id')
                 ->toArray();
             $emp_map = Employee::whereIn('id',$data['man'])
@@ -156,31 +165,31 @@ class DeleteService extends Service
                 ->toArray();
             //负责人清除
             CustomerInfo::where('del_time',0)
-                ->whereIn('customer_id',$data['id'])
+                ->whereIn('customer_id',$data_id)
                 ->where('type', CustomerInfo::type_two)
                 ->update(['del_time' => $time]);
             $send_data = [];
             foreach ($data['man'] as $value){
                 $emp_tmp = $emp_map[$value] ?? "";
-                foreach ($data['id'] as $data_id){
+                foreach ($data_id as $c){
                     //负责人累加
                     $insert[] = [
-                        'customer_id' => $data_id,
+                        'customer_id' => $c,
                         'data_id' => $value,
                         'type' => CustomerInfo::type_two,
                         'crt_time' => $time,
                     ];
-                    if(! in_array($data_id, $xt)){
+                    if(! in_array($c, $xt)){
                         //协同人累加
                         $insert[] = [
-                            'customer_id' =>$data_id,
+                            'customer_id' => $c,
                             'data_id' => $user['id'],
                             'type' => CustomerInfo::type_three,
                             'crt_time' => $time,
                         ];
                     }
 
-                    $customer_tmp = $customer_map[$data_id] ?? "";
+                    $customer_tmp = $customer_map[$c] ?? "";
                     $send_data[] = [
                         'employee_id' => $value,
                         'type' => 2,
@@ -198,7 +207,6 @@ class DeleteService extends Service
 
             CustomerInfo::insert($insert);
 
-            $fp_top_depart_id = $data['fp_top_depart_id'] ?? 0;
             if(! is_array($data['id'])){
                 $title = Customer::where('id',$data['id'])->value('title') ?? "";
                 (new OrderOperationService())->add([
@@ -206,7 +214,7 @@ class DeleteService extends Service
                     'msg' => OrderOperation::$type[OrderOperation::twenty_three] ?? "",
                     'type' => OrderOperation::twenty_three
                 ],$user);
-                Customer::where('id',$data['id'])->update(['fp_time' => $time, 'fp_top_depart_id' => $fp_top_depart_id]);
+                Customer::where('id',$data['id'])->update(['fp_time' => $time]);
             }else{
                 $title = Customer::whereIn('id',$data['id'])->pluck('title','id')->toArray();
                 foreach($data['id'] as $value){
@@ -217,11 +225,39 @@ class DeleteService extends Service
                         'type' => OrderOperation::twenty_three
                     ],$user);
                 }
-                Customer::whereIn('id',$data['id'])->update(['fp_time' => $time,'fp_top_depart_id' => $fp_top_depart_id]);
+                Customer::whereIn('id',$data['id'])->update(['fp_time' => $time]);
             }
 
             (new OaService())->sendWxOaCheckMessage($send_data);
         }
+
+        //客户被指派的门店 先清空
+        SeeRange::where('del_time',0)
+            ->whereIn('data_id', $data_id)
+            ->where('data_type',SeeRange::type_one)
+            ->where('type',SeeRange::data_three)
+            ->update(['del_time' => $time]);
+
+        if(! empty($data['fp_top_depart_id'])){
+            if(! is_array($data['fp_top_depart_id'])) $fp_top_depart_id = [$data['fp_top_depart_id']];
+            else $fp_top_depart_id = $data['fp_top_depart_id'];
+
+            $insert = [];
+            foreach ($data_id as $id){
+                foreach ($fp_top_depart_id as $value){
+                    $insert[] = [
+                        'data_id' => $id, //客户id
+                        'data_type' => SeeRange::type_one,
+                        'param_id' => $value, //门店id
+                        'type' => SeeRange::data_three,
+                        'crt_time' => $time,
+                    ];
+                }
+            }
+            if(! empty($insert)) SeeRange::insert($insert);
+        }
+
+        return [true, ''];
     }
 
     public function fpConstructionMan($data,$user){
@@ -254,6 +290,8 @@ class DeleteService extends Service
                 'type' => OrderOperation::twenty_six
             ],$user);
         }
+
+        return [true, ''];
     }
 
     public function yj($data,$user){
@@ -266,9 +304,16 @@ class DeleteService extends Service
         try {
             DB::beginTransaction();
             if($data['type'] == 1){
-                $this->yjSaleOrderMan($data,$user);
+                list($status, $msg) = $this->yjSaleOrderMan($data,$user);
             }elseif ($data['type'] == 2){
-                $this->yjCustomerMan($data,$user);
+                list($status, $msg) = $this->yjCustomerMan($data,$user);
+            }else{
+                return [false, '非法操作'];
+            }
+
+            if(! $status) {
+                DB::rollBack();
+                return [false, $msg];
             }
 
             DB::commit();
@@ -308,40 +353,34 @@ class DeleteService extends Service
                 'type' => OrderOperation::nineteen
             ],$user);
         }
+
+        return [true, ''];
     }
 
     public function yjCustomerMan($data,$user){
         $time = time();
 
-        if(! is_array($data['id'])) $data['id'] = [$data['id']];
+        if(! is_array($data['id'])) $data_id = [$data['id']];
+        else $data_id = $data['id'];
+
         CustomerInfo::where('del_time',0)
-            ->whereIn('customer_id',$data['id'])
+            ->whereIn('customer_id', $data_id)
             ->where('type', CustomerInfo::type_two)
             ->update(['del_time' => $time]);
         if(! empty($data['man'])){
             $insert = [];
             foreach ($data['man'] as $value){
-               if(! is_array($data['id'])){
-                   $insert[] = [
-                       'customer_id' => $data['id'],
-                       'data_id' => $value,
-                       'type' => CustomerInfo::type_two,
-                       'crt_time' => $time,
-                   ];
-               }else{
-                   foreach ($data['id'] as $data_id){
-                       $insert[] = [
-                           'customer_id' => $data_id,
-                           'data_id' => $value,
-                           'type' => CustomerInfo::type_two,
-                           'crt_time' => $time,
-                       ];
-                   }
-               }
+                foreach ($data_id as $c){
+                    $insert[] = [
+                        'customer_id' => $c,
+                        'data_id' => $value,
+                        'type' => CustomerInfo::type_two,
+                        'crt_time' => $time,
+                    ];
+                }
             }
             CustomerInfo::insert($insert);
 
-            $fp_top_depart_id = $data['fp_top_depart_id'] ?? 0;
             if(! is_array($data['id'])){
                 $title = Customer::where('id',$data['id'])->value('title') ?? "";
                 (new OrderOperationService())->add([
@@ -349,7 +388,7 @@ class DeleteService extends Service
                     'msg' => OrderOperation::$type[OrderOperation::twenty_four] ?? "",
                     'type' => OrderOperation::twenty_four
                 ],$user);
-                Customer::where('id',$data['id'])->update(['fp_time' => $time, 'fp_top_depart_id' => $fp_top_depart_id]);
+                Customer::where('id',$data['id'])->update(['fp_time' => $time]);
             }else{
                 $title = Customer::whereIn('id',$data['id'])->pluck('title','id')->toArray();
                 foreach($data['id'] as $value){
@@ -360,9 +399,37 @@ class DeleteService extends Service
                         'type' => OrderOperation::twenty_four
                     ],$user);
                 }
-                Customer::whereIn('id',$data['id'])->update(['fp_time' => $time,'fp_top_depart_id' => $fp_top_depart_id]);
+                Customer::whereIn('id',$data['id'])->update(['fp_time' => $time]);
+            }
+        }
+
+        //客户被移交的门店 先清空
+        SeeRange::where('del_time',0)
+            ->whereIn('data_id', $data_id)
+            ->where('data_type',SeeRange::type_one)
+            ->where('type',SeeRange::data_three)
+            ->update(['del_time' => $time]);
+
+        if(! empty($data['fp_top_depart_id'])){
+            if(! is_array($data['fp_top_depart_id'])) $fp_top_depart_id = [$data['fp_top_depart_id']];
+            else $fp_top_depart_id = $data['fp_top_depart_id'];
+
+            $insert = [];
+            foreach ($data_id as $id){
+                foreach ($fp_top_depart_id as $value){
+                    $insert[] = [
+                        'data_id' => $id, //客户id
+                        'data_type' => SeeRange::type_one,
+                        'param_id' => $value, //门店id
+                        'type' => SeeRange::data_three,
+                        'crt_time' => $time,
+                    ];
+                }
             }
+            if(! empty($insert)) SeeRange::insert($insert);
         }
+
+        return [true, ''];
     }
 
     public function pq($data,$user){

+ 17 - 10
app/Service/StatisticsService.php

@@ -18,6 +18,7 @@ use App\Model\ReturnExchangeOrder;
 use App\Model\ReturnExchangeOrderProductInfo;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderProductInfo;
+use App\Model\SeeRange;
 use App\Model\Setting;
 use Illuminate\Support\Facades\DB;
 
@@ -28,7 +29,7 @@ class StatisticsService extends Service
 
         $model = Customer::Clear($user,$data);
         $model = $model->where('del_time',0)
-            ->select('id','model_type','customer_from','top_depart_id','fp_top_depart_id')
+            ->select('id','model_type','customer_from','top_depart_id')
             ->orderby('id', 'desc');
 
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
@@ -87,19 +88,25 @@ class StatisticsService extends Service
             ];
         }
 
-        foreach ($data as $value){
-            if($value['top_depart_id'] == $value['fp_top_depart_id']){
-                if(isset($return[$value['fp_top_depart_id']])) $return[$value['fp_top_depart_id']]['total'] += 1;
+        $top_depart_id = SeeRange::where('del_time',0)
+            ->where('data_type',SeeRange::type_one)
+            ->where('type',SeeRange::data_three)
+            ->whereIn('data_id', array_column($data,'id'))
+            ->select('data_id as fp_top_depart_id')
+            ->get()->toArray();
+        $top_depart_map = [];
+        foreach ($top_depart_id as $value){
+            if(isset($top_depart_map[$value['fp_top_depart_id']])){
+                $top_depart_map[$value['fp_top_depart_id']] += 1;
             }else{
-                if($value['fp_top_depart_id'] > 0){
-                    if(isset($return[$value['fp_top_depart_id']])) $return[$value['fp_top_depart_id']]['total'] += 1;
-                }
-                if($value['top_depart_id'] > 0){
-                    if(isset($return[$value['top_depart_id']])) $return[$value['top_depart_id']]['total'] += 1;
-                }
+                $top_depart_map[$value['fp_top_depart_id']] = 1;
             }
         }
 
+        foreach ($return as $key => $value){
+            if(isset($top_depart_map[$key])) $return[$key]['total'] = $top_depart_map[$key];
+        }
+
         $return = array_values($return);
         usort($return, function($a, $b) {
             return $b['total'] - $a['total'];

+ 0 - 1
routes/wx.php

@@ -69,7 +69,6 @@ Route::group(['middleware'=> ['checkWx']],function ($route){
     $route->any('basicTypeCustomerList', 'Api\BasicTypeController@basicTypeCustomerList');
     $route->any('productList', 'Api\ProductController@productList');
     $route->any('supplierList', 'Api\SupplierController@customerList');
-    $route->any('customerList', 'Api\CustomerController@customerList');
     $route->any('customerCapitalList', 'Api\CustomerController@customerList2');
     $route->any('sportsBagOrderList', 'Api\SportsBagController@orderList');
     $route->any('productAdd', 'Api\ProductController@productAdd')->middleware('OssFileDeal');