cqp vor 2 Monaten
Ursprung
Commit
01e3e39d52
2 geänderte Dateien mit 80 neuen und 44 gelöschten Zeilen
  1. 19 15
      app/Console/Commands/CustomerRemain.php
  2. 61 29
      app/Service/ImportService.php

+ 19 - 15
app/Console/Commands/CustomerRemain.php

@@ -50,19 +50,21 @@ class CustomerRemain extends Command
             ->select('id','customer_id','fp','fz')
             ->get()->toArray();
         if(! empty($data)){
-            $fp_id = array_unique(array_column($data,'fp'));
-            $depart = Depart::where("del_time",0)
-                ->whereIn("id", $fp_id)
-                ->select('id','notify_id')
-                ->get()->toArray();
-            $depart_map = array_column($depart,'notify_id','id');
-            $fp_man_id = array_filter(array_unique(array_column($depart,'notify_id')));
+//            $fp_id = array_unique(array_column($data,'fp'));
+//            $depart = Depart::where("del_time",0)
+//                ->whereIn("id", $fp_id)
+//                ->select('id','notify_id')
+//                ->get()->toArray();
+//            $depart_map = array_column($depart,'notify_id','id');
+//            $fp_man_id = array_filter(array_unique(array_column($depart,'notify_id')));
             $fz_id = array_unique(array_column($data,'fz'));
-            $employee_id = array_unique(array_merge($fp_man_id, $fz_id));
+//            $employee_id = array_unique(array_merge($fp_man_id, $fz_id));
+            $employee_id = array_unique($fz_id);
             $wx_map = WxEmployeeOfficial::whereIn('employee_id', $employee_id)
                 ->pluck('openid','employee_id')
                 ->toArray();
             $send_data = $insert = [];
+            $customer_id = [];
             foreach ($data as $value){
                 if(! empty($value['fp'])) {
                     $insert[] = [
@@ -72,16 +74,18 @@ class CustomerRemain extends Command
                         'type' => SeeRange::data_three,
                         'crt_time' => $time,
                     ];
+                    $customer_id[] = $value['customer_id'];
                 }
 
                 $open_id_fz = $wx_map[$value['fz']] ?? "";
-                $fp_man_t = $depart_map[$value['fp']] ?? 0;
-                $open_id_fp = $wx_map[$fp_man_t] ?? "";
+//                $fp_man_t = $depart_map[$value['fp']] ?? 0;
+//                $open_id_fp = $wx_map[$fp_man_t] ?? "";
                 //负责人 和 门店负责人都为空跳过
-                if(empty($open_id_fz) && empty($open_id_fp)) continue;
+//                if(empty($open_id_fz) && empty($open_id_fp)) continue;
+                if(empty($open_id_fz)) continue;
                 //组织发送
                 $this->makeData($send_data, $open_id_fz, $value);
-                $this->makeData($send_data, $open_id_fp, $value);
+//                $this->makeData($send_data, $open_id_fp, $value);
             }
             if(! empty($send_data)){
                 echo "发送中\n";
@@ -89,10 +93,10 @@ class CustomerRemain extends Command
                 (new OaService())->sendWxOaCheckMessage($send_data, 1);
             }
 
-            $customer_id = array_column($data,'customer_id');
+            $c_id = array_column($data,'customer_id');
             //清空分配门店
             SeeRange::where('del_time',0)
-                ->whereIn('data_id', $customer_id)
+                ->whereIn('data_id', $c_id)
                 ->where('data_type',SeeRange::type_one)
                 ->where('type',SeeRange::data_three)
                 ->update(['del_time' => $time]);
@@ -101,7 +105,7 @@ class CustomerRemain extends Command
             //更新单据
             CrModel::whereIn('id',array_column($data,'id'))
                 ->update(['del_time' => $time]);
-            Customer::whereIn('id', $customer_id)->update(['fp_time' => $time]);
+            if(! empty($customer_id)) Customer::whereIn('id', $customer_id)->update(['fp_time' => $time]);
         }else{
             echo "暂无\n";
         }

+ 61 - 29
app/Service/ImportService.php

@@ -374,11 +374,12 @@ class ImportService extends Service
             $emp_map1[$value['number']] = $value['id'];
         }
 
-        $depart = Depart::where('del_time',0)
+        $departList = Depart::where('del_time',0)
             ->where('parent_id', 0)
             ->whereIn('title', $fp)
-            ->pluck('title','id')
-            ->toArray();
+            ->select('title','id','notify_id')
+            ->get()->toArray();
+        $depart = array_column($departList,null,'title');
 
         $top_depart_id = $user['depart_top'][0] ?? [];
         $top_depart_id = $top_depart_id['depart_id'] ?? 0;
@@ -393,7 +394,7 @@ class ImportService extends Service
 
         list($status, $msg) = $this->customerFilterSecond($array,$time,$head,$user,$contact_info_array,$customer,$basic_list,$emp_map,$emp_map1,$basic_use,$depart);
         if(! $status) return [0, $msg];
-        list($insert, $insert_detail, $insert_detail2,$insert_detail3) = $msg;
+        list($insert, $insert_detail, $insert_detail2, $insert_detail3) = $msg;
 
         try{
             DB::beginTransaction();
@@ -481,12 +482,6 @@ class ImportService extends Service
                     }
                 }
 
-                if(empty($value[13])) {
-                    $error[] = $line . '负责人名或负责人工号必须填写';
-                }else{
-                    if(! in_array($value[13], $fz)) $fz[] = $value[13];
-                }
-
                 if(! empty($value[14])){
                     list($status, $msg) = $this->convertExcelCellToDate($value[14]);
                     if(! $status) {
@@ -499,7 +494,11 @@ class ImportService extends Service
                 }
 
                 if(empty($value[15])) {
-                    $error[] = $line . '分配门店必须填写';
+                    if(empty($value[13])) {
+                        $error[] = $line . '(分配门店为空时)负责人名或负责人工号必须填写';
+                    }else{
+                        if(! in_array($value[13], $fz)) $fz[] = $value[13];
+                    }
                 }else{
                     if(! in_array($value[15], $fp)) $fp[] = $value[15];
                 }
@@ -621,29 +620,34 @@ class ImportService extends Service
                 $repeat = 1;
                 $error[] = $line . '联系方式内容:' . $value['12'] . '已存在';
             }
-            $man = 0;
-            if(! empty($emp_name[$value['13']])){
-                $name = $emp_name[$value['13']];
-                if(count($name) > 1) {
-                    $error[] = $line . '负责人名:' . $value['13'] . '在系统中多次出现,请填写工号精准定位负责人';
-                }else{
-                    $man = $name[0];
-                }
+
+            $fp = $man =  0;
+            if(empty($value['15'])){
+                //分配门店为空 负责人必填
+                list($return_man, $return_error) = $this->returnMan($emp_name, $emp_number, $value['13'], $line);
+                if(! empty($return_error)) $error[] = $return_error;
+                if(! empty($return_man)) $man = $return_man;
             }else{
-                if(! empty($emp_number[$value['13']])){
-                    $man = $emp_number[$value['13']];
+                if(empty($depart[$value['15']])) {
+                    $error[] = $line . '分配门店:' . $value['15'] . '不存在';
                 }else{
-                    $error[] = $line . '负责人工号:' . $value['13'] . '不存在';
+                    $d_t = $depart[$value['15']];
+                    $fp = $d_t['id']; //门店id
+                    $fp_man = $d_t['notify_id']; //门店负责人
+                    if(empty($fp_man)) {
+                        $error[] = $line . '分配门店:' . $value['15'] . '门店负责人暂未设置';
+                    }else{
+                        if(! empty($value['13'])){
+                            list($return_man, $return_error) = $this->returnMan($emp_name, $emp_number, $value['13'], $line);
+                            if(! empty($return_error)) $error[] = $return_error;
+                            if(! empty($return_man)) $man = $return_man;
+                            if($fp_man != $man) $error[] = $line . '分配门店:' . $value['15'] . '门店负责人与用户填写的负责人不一致';
+                        }
+                    }
+                    $man = $fp_man;
                 }
             }
 
-            $fp = 0;
-            if(empty($depart[$value['15']])) {
-                $error[] = $line . '分配门店:' . $value['15'] . '不存在';
-            }else{
-                $fp = $depart[$value['15']];
-            }
-
             $insert[] = $tmp;
             $insert_detail[] = [
                 'customer_id' => 0,
@@ -683,6 +687,34 @@ class ImportService extends Service
         return [true, [$insert, $insert_detail, $insert_detail2, $insert_detail3]];
     }
 
+    function returnMan($emp_name, $emp_number, $value, $line){
+        $return = [];
+        $type = 0;
+        if(! empty($emp_name[$value])){
+            $return = $emp_name[$value];
+            $type = 1;
+        }else{
+            if(! empty($emp_number[$value])) $return = $emp_number[$value];
+        }
+
+        $man = 0;$error = "";
+        if($type){
+            if(count($return) > 1) {
+                $error = $line . '负责人名:' . $value . '在系统中多次出现,请填写工号精准定位负责人';
+            }else{
+                $man = $return[0];
+            }
+        }else{
+            if(! empty($return)){
+                $man = $return;
+            }else{
+                $error = $line . '负责人工号:' . $value . '不存在';
+            }
+        }
+
+        return [$man, $error];
+    }
+
     function convertExcelCellToDate($cellValue) {
         // 尝试将单元格值转换为浮点数(Excel 日期序列号)
         $excelTimestamp = filter_var($cellValue, FILTER_VALIDATE_FLOAT);