Przeglądaj źródła

发送消息方法

cqpCow 1 rok temu
rodzic
commit
ca0f2a4491

+ 30 - 4
app/Service/CheckService.php

@@ -42,6 +42,7 @@ class CheckService extends Service
     const eight = 8; //合同确认
     const nine = 9; //合同客户完结
     const ten  = 10; //收付款确认
+    const eve  = 11; //接受派单
 
     //中文对照
     public $map = [
@@ -55,6 +56,7 @@ class CheckService extends Service
         self::eight => '合同确认',
         self::nine => '合同客户完结',
         self::ten => '收付款确认',
+        self::eve => '接受门店派单',
     ];
 
     //入库操作
@@ -92,6 +94,7 @@ class CheckService extends Service
         self::three => 'confirmPurchaseOrder',//采购单 入库
         self::four => 'settleSalesOrder', // 合同 安装件 合同公司完结
         self::nine => 'settleSalesOrderCustomer', // 合同 安装件 合同客户完结
+        self::eve => 'settleSalesOrderConfirm', // 合同 安装件 合同接收
     ];
 
     //单据操作
@@ -590,7 +593,7 @@ class CheckService extends Service
         return [true, $model->toArray()];
     }
 
-    public function confirmPurchaseOrder($data){
+    public function confirmPurchaseOrder($data,$user){
         $model = PurchaseOrder::where('order_number',$data['order_number'])
             ->where('del_time',0)
             ->first();
@@ -768,7 +771,7 @@ class CheckService extends Service
         return [true,''];
     }
 
-    public function settleSalesOrder($data){
+    public function settleSalesOrder($data,$user){
         $model = SalesOrder::where('order_number', $data['order_number'])
             ->where('del_time',0)
             ->first();
@@ -782,7 +785,7 @@ class CheckService extends Service
         return [true, $model->toArray()];
     }
 
-    public function settleSalesOrderCustomer($data){
+    public function settleSalesOrderCustomer($data,$user){
         $model = SalesOrder::where('order_number', $data['order_number'])
             ->where('del_time',0)
             ->first();
@@ -803,6 +806,29 @@ class CheckService extends Service
         return [true, $model->toArray()];
     }
 
+    public function settleSalesOrderConfirm($data,$user){
+        $model = SalesOrder::where('order_number', $data['order_number'])
+            ->where('del_time',0)
+            ->first();
+        if(empty($model)) return [false, '合同不存在或已被删除'];
+        //安装件
+        if($model->state != SalesOrder::State_four) return [false, '请确认合同状态,操作失败'];
+        $model->is_confirm = 1;
+        $model->save();
+
+        $emp_name = Employee::where('id',$user['id'])->value('emp_name');
+        $tmp_data = [
+            $model->order_number,
+            "合同",
+            "接收派单",
+            $emp_name,
+            date('Y-m-d H:i:s'),
+        ];
+        if(! empty($model->dispatch_time_second_id)) (new OaService())->sendWxMsg($model->dispatch_time_second_id,2,0,37,$tmp_data);
+
+        return [true, $model->toArray()];
+    }
+
     public function confirmSales($data){
         $model = SalesOrder::where('order_number', $data['order_number'])
             ->where('del_time',0)
@@ -1087,7 +1113,7 @@ class CheckService extends Service
 
             //不走审批流,更新完直接返回
             if($function2) {
-                list($bool,$msg) = $this->$function2($data);
+                list($bool,$msg) = $this->$function2($data,$user);
                 if($bool) {
                     $order = $msg;
 

+ 6 - 1
app/Service/EmployeeService.php

@@ -587,6 +587,7 @@ class EmployeeService extends Service
                 $model->is_main = $value['is_main'];
                 $model->basic_type_id = $value['basic_type_id'] ?? 0;
                 $model->rate = $value['rate'] ?? 0;
+                $model->notify_id = $value['notify_id'] ?? 0;
                 $model->save();
                 $depart_id = $model->id;
                 if(empty($depart_id)) {
@@ -702,7 +703,7 @@ class EmployeeService extends Service
      */
     public function departList($data,$user){
         $model = Depart::where('del_time',0)
-            ->select('title','id','code','parent_id','is_main','basic_type_id','rate')
+            ->select('title','id','code','parent_id','is_main','basic_type_id','rate','notify_id')
             ->orderby('code', 'asc');
 
         if(! empty($data['get_top']) && $data['get_top'] == 1){
@@ -736,10 +737,14 @@ class EmployeeService extends Service
         $basic = BasicType::where('del_time',0)
             ->whereIn('id', array_unique(array_column($list,'basic_type_id')))
             ->pluck('title','id')->toArray();
+        $emp_map = Employee::whereIn('id',array_unique(array_column($list,'notify_id')))
+            ->pluck('emp_name','id')
+            ->toArray();
 
         foreach ($list as $key => $value){
             $list[$key]['basic_type_title'] = $basic[$value['basic_type_id']] ?? '';
             $list[$key]['is_show_basic_type'] = $user['is_all_depart'];
+            $list[$key]['notify_name'] = $emp_map[$value['notify_id']] ?? '';
         }
 
         return $list;

+ 2 - 1
app/Service/OaService.php

@@ -923,6 +923,7 @@ class OaService extends Service
 
     public function sendWxMsg($user_id,$type,$state,$menu_id,$order_data){
         $service = new WxSendMessageService();
-        $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data);
+        list($status, $msg) = $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data);
+        file_put_contents('msssss.txt',date('YmdHis') . $msg . PHP_EOL,8);
     }
 }

+ 25 - 2
app/Service/SalesOrderService.php

@@ -23,6 +23,7 @@ use App\Model\SeeRange;
 use App\Model\SportsBag;
 use App\Model\SportsBagProductInfo;
 use App\Model\WxEmployee;
+use App\Service\Weixin\WxSendMessageService;
 use Illuminate\Support\Facades\DB;
 
 /**
@@ -686,7 +687,7 @@ class SalesOrderService extends Service
     public function salesOrderList($data,$user){
         $model = SalesOrder::Clear($user,$data);
         $model = $model->where('del_time',0)
-            ->select('id','sales_order_type','model_type','order_number','selling_price','vin_no','car_type','order_type','customer_id','sign_time','crt_id','crt_time','mark','product_total','rate','construction_time','handover_time','other_fee','discount_fee','contract_fee','pay_way','car_type','year','mileage','color','original_set','processing','state','invoice_state','plat_type','plat_order','install_method','install_position','customer_contact')
+            ->select('id','sales_order_type','model_type','order_number','selling_price','vin_no','car_type','order_type','customer_id','sign_time','crt_id','crt_time','mark','product_total','rate','construction_time','handover_time','other_fee','discount_fee','contract_fee','pay_way','car_type','year','mileage','color','original_set','processing','state','invoice_state','plat_type','plat_order','install_method','install_position','customer_contact','is_confirm')
             ->orderby('id', 'desc');
 
         if(! empty($data['order_number'])) $model->where('order_number','LIKE', '%'.$data['order_number'].'%');
@@ -948,6 +949,7 @@ class SalesOrderService extends Service
                 $data['data'][$key]['state_title'] = SalesOrder::$state2[$value['state']] ?? '';
             }
             $data['data'][$key]['invoice_state_name'] = SalesOrder::$invoice_state[$value['invoice_state']] ?? '';
+            $data['data'][$key]['is_confirm_title'] = $value['is_confirm'] ? "已接收" : "未接收" ;
             $tmp = $invoiceData[$value['id']] ?? [];
             $data['data'][$key]['invoice_arr'] = implode(',', $tmp);
             $data['data'][$key]['dispatch_company'] = $dispatch[$value['id']] ?? '';
@@ -1134,6 +1136,27 @@ class SalesOrderService extends Service
             return [false,$exception->getMessage()];
         }
 
+        $depart_id = $data['dispatch_depart_two'][0] ?? 0;
+        if(! empty($depart_id) && $depart_id != $msg['top_depart_id']){
+           //发送消息
+           $notify_id = Depart::where('id',$depart_id)->value('notify_id');
+           if(! empty($notify_id)){
+               $emp_name = Employee::whereIn('id',[$msg['crt_id'], $notify_id])->pluck('emp_name','id')->toArray();
+               $tmp_data = [
+                   $msg['order_number'],
+                   $emp_name[$msg['crt_id']] ?? "",
+                   $emp_name[$notify_id] ?? "",
+                   date('Y-m-d H:i:s'),
+               ];
+               (new OaService())->sendWxMsg($notify_id,1,1,37,$tmp_data);
+           }
+        }else{
+             //直接确认
+            SalesOrder::where('del_time',0)->where('id',$msg['id'])->update([
+                'is_confirm' => 1,
+            ]);
+        }
+
         return [true,''];
     }
 
@@ -1185,7 +1208,7 @@ class SalesOrderService extends Service
 
     public function salesOrderListsalesOrderWxList($data,$user){
         $model = SalesOrder::where('del_time',0)
-            ->select('id','sales_order_type','model_type','order_number','selling_price','vin_no','car_type','order_type','customer_id','sign_time','crt_id','crt_time','mark','product_total','rate','construction_time','handover_time','other_fee','discount_fee','contract_fee','pay_way','car_type','year','mileage','color','original_set','processing','state','invoice_state','plat_type','plat_order','install_method','install_position','customer_contact')
+            ->select('id','sales_order_type','model_type','order_number','selling_price','vin_no','car_type','order_type','customer_id','sign_time','crt_id','crt_time','mark','product_total','rate','construction_time','handover_time','other_fee','discount_fee','contract_fee','pay_way','car_type','year','mileage','color','original_set','processing','state','invoice_state','plat_type','plat_order','install_method','install_position','customer_contact','is_confirm')
             ->orderby('id', 'desc');
 
         if(! empty($data['openid'])){

+ 2 - 1
app/Service/Weixin/WxSendMessageService.php

@@ -42,7 +42,8 @@ class WxSendMessageService extends WeixinService
         foreach ($detail as $k=>$v){
             $data[$v] = $order_data[$k];
         }
-        $this->sendTmpMsg($openid,$tmp_id,['detail'=>$data]);
+        list($status,$msg) = $this->sendTmpMsg($openid,$tmp_id,['detail'=>$data]);
+        if(! $status) return [false, $msg];
 
         return [true,''];
     }