cqpCow 1 жил өмнө
parent
commit
fcc6556daa

+ 20 - 8
app/Service/CheckService.php

@@ -843,14 +843,26 @@ class CheckService extends Service
         $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);
+        $take_id = $model->dispatch_time_second_id ?? 0;
+        $send_data = [];
+        if(! empty($take_id)){
+            $send_data[] = [
+                'employee_id' => $take_id,
+                'type' => 2,
+                'state' => 0,
+                'menu_id' => 37,
+                'order_number' => $model->order_number,
+                'tmp_data' => [
+                    $model->order_number,
+                    "派单合同",
+                    "接收派单成功",
+                    $emp_name,
+                    date('Y-m-d H:i:s'),
+                ],
+            ];
+
+            (new OaService())->sendWxOaCheckMessage($send_data);
+        }
 
         return [true, $model->toArray()];
     }

+ 24 - 10
app/Service/DeleteService.php

@@ -148,12 +148,20 @@ class DeleteService extends Service
                 ->select('customer_id')->get()->toArray();
             $xt = array_column($xt,'customer_id');
 
+            $customer_map = Customer::whereIn('id',$data['id'])
+                ->pluck('title','id')
+                ->toArray();
+            $emp_map = Employee::whereIn('id',$data['man'])
+                ->pluck('emp_name','id')
+                ->toArray();
             //负责人清除
             CustomerInfo::where('del_time',0)
                 ->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){
                     //负责人累加
                     $insert[] = [
@@ -171,6 +179,20 @@ class DeleteService extends Service
                             'crt_time' => $time,
                         ];
                     }
+
+                    $customer_tmp = $customer_map[$data_id] ?? "";
+                    $send_data[] = [
+                        'employee_id' => $value,
+                        'type' => 2,
+                        'state' => 0,
+                        'menu_id' => 16,
+                        'order_number' => $customer_tmp,
+                        'tmp_data' => [
+                            $customer_tmp,
+                            $emp_tmp,
+                            date('Y-m-d H:i:s'),
+                        ],
+                    ];
                 }
             }
 
@@ -198,16 +220,7 @@ class DeleteService extends Service
                 Customer::whereIn('id',$data['id'])->update(['fp_time' => $time,'fp_top_depart_id' => $fp_top_depart_id]);
             }
 
-//            foreach ($data['man'] as $value){
-//                $tmp_data = [
-//                    "测试",
-//                    '测试',
-//                    '审核通过',
-//                    '测试',
-//                    date('Y-m-d H:i:s'),
-//                ];
-//                (new OaService())->sendWxMsg($value,2,0,16,$tmp_data);
-//            }
+            (new OaService())->sendWxOaCheckMessage($send_data);
         }
     }
 
@@ -228,6 +241,7 @@ class DeleteService extends Service
                     'employee_id' => $value,
                     'type' => ConstructionInfo::type_three,
                     'crt_time' => $time,
+                    'opt_id' => $user['id'],
                 ];
             }
             ConstructionInfo::insert($insert);

+ 124 - 54
app/Service/OaService.php

@@ -461,8 +461,8 @@ class OaService extends Service
                     DB::commit();
                     return [true, '审核成功'];
                 }
-
             }
+
             $order = new OaOrder();
             $order->menu_id = $menu_id;
             $order->order_no = $order_no;
@@ -480,33 +480,43 @@ class OaService extends Service
             $oa_order_sub->save();
             $oa_order_sub_id = $oa_order_sub->id;
 
-            $insert = [];
-
-            //处理数据发送通知消息
+            //组织数据
+            $insert = $send_data = [];
+            $emp_map = Employee::whereIn('id',$employee_ids)->pluck('emp_name','id')->toArray();
+            $sys_menu = SysMenu::where('id', $menu_id)->value('title') ?? "";
             foreach ($employee_ids as $employee_id) {
+                $emp_tmp = $emp_map[$employee_id] ?? "";
+                $send_data[] = [
+                    'employee_id' => $employee_id,
+                    'type' => 1,
+                    'state' => 0,
+                    'menu_id' => $menu_id,
+                    'order_number' => $order_detail['order_number'],
+                    'tmp_data' => [
+                        $order_detail['order_number'],
+                        $order_detail['crt_name'].'('.$sys_menu.')',
+                        $emp_tmp,
+                        date('Y-m-d H:i:s'),
+                    ],
+                ];
                 $insert[] = [
                     'oa_order_id' => $id,
                     'oa_order_sub_id' => $oa_order_sub_id,
                     'employee_id' => $employee_id,
                 ];
-                $tmp_data = [
-                    $orderObject,
-                    $order_detail['crt_name'].'('.SysMenu::where('id',$menu_id)->value('title').')',
-                    Employee::where('id',$employee_id)->value('emp_name'),
-                    date('Y-m-d H:i:s'),
-                ];
-                $this->sendWxMsg($employee_id,1,0,$menu_id,$tmp_data);
             }
             OaOrderSubEmployee::insert($insert);
             DB::commit();
+
+            //发送消息
+            $this->sendWxOaCheckMessage($send_data);
+
             return [true, '']; //success
         } catch (\Exception $e) {
             DB::rollBack();
             $this->returnOa($order_no, 2, $type);
             return [false, $e->getLine() . ':' . $e->getMessage()];
         }
-
-
     }
 
     public function oaCommon($menu_id, $param, $sort = 1, $parent_id = 0,$user='')
@@ -517,7 +527,6 @@ class OaService extends Service
         }
         $all = $request->all();
         if (!isset($all['order_number'])) $request->merge($param);
-//        $request->merge($param);
         $detail = $this->oaGetData($menu_id, $request,$user);
         //特殊的审批
         $oa_id = Oa::where('menu_id',$menu_id)->where('del_time', 0)->where('sub_type',2)->value('id');
@@ -552,7 +561,6 @@ class OaService extends Service
         $oa_sub_id = 0;
 
         foreach ($rule_key_list as $k => $v) {
-
             $status = $this->formulaRule($v, $detail);
             if ($status) {
                 if ($oa_sub_key[$k]['type'] == 2 && $oa_sub_key[$k]['sub_id'] > 0) {
@@ -566,6 +574,7 @@ class OaService extends Service
                 continue;
             }
         }
+
         return [$employee_ids, $oa_sub_id,$detail];
     }
 
@@ -592,7 +601,6 @@ class OaService extends Service
     public function oaCheck($data, $user)
     {
         $user_id = $user['id'];
-//        $user_id = '482';
         $id = $data['id'];
         $state = $data['state'];
         if ($state == 0) $state = 2;
@@ -607,12 +615,14 @@ class OaService extends Service
         $oaOrder = OaOrder::where('id', $detail['oa_order_id'])->first();
         try {
             DB::beginTransaction();
+
+            $sys_menu = SysMenu::where('id', $oaOrder->menu_id)->value('title') ?? "";
+            $send_data = [];
             switch ($state) {
+                //审核通过
                 case 1:
                     $sort = $detail['sort'] + 1;
                     list($employee_ids, $oa_sub_id,$order_detail) = $this->oaCommon($oaOrder->menu_id, ['order_number' => $oaOrder->order_no], $sort, $detail['oa_sub_id'],$user);
-//                    var_dump($employee_ids);
-//                    var_dump($oa_sub_id);die;
                     if (empty($employee_ids)) {
                         $oaOrder->state = 2;
                         $oaOrder->save();
@@ -622,17 +632,23 @@ class OaService extends Service
                             DB::rollBack();
                             return [false,$parent_msg];
                         }
-                        //审核通过 发送消息
-                        $tmp_data = [
-                            $order_detail['order_number'],
-                            SysMenu::where('id',$oaOrder->menu_id)->value('title'),
-                            '通过',
-                            Employee::where('id',$user_id)->value('emp_name'),
-                            date('Y-m-d H:i:s'),
-
 
+                        //审核通过 发送消息
+                        $send_data[] = [
+                            'employee_id' => $order_detail['crt_id'],
+                            'type' => 2,
+                            'state' => 0,
+                            'menu_id' => $oaOrder->menu_id,
+                            'order_number' => $order_detail['order_number'],
+                            'tmp_data' => [
+                                $order_detail['order_number'],
+                                $sys_menu,
+                                '通过',
+                                Employee::where('id',$user_id)->value('emp_name'),
+                                date('Y-m-d H:i:s'),
+                            ],
                         ];
-                        $this->sendWxMsg($order_detail['crt_id'],2,0,$oaOrder->menu_id,$tmp_data);
+                        $this->sendWxOaCheckMessage($send_data);
                     } else {
                         $oaOrder->state = 1;
                         $oaOrder->save();
@@ -646,36 +662,45 @@ class OaService extends Service
                         $oa_order_sub_id = $oa_order_sub->id;
 
                         $insert = [];
-
-
+                        $emp_map = Employee::whereIn('id',$employee_ids)->pluck('emp_name','id')->toArray();
                         foreach ($employee_ids as $employee_id) {
+                            $emp_tmp = $emp_map[$employee_id] ?? "";
                             $insert[] = [
                                 'oa_order_id' => $oaOrder->id,
                                 'oa_order_sub_id' => $oa_order_sub_id,
                                 'employee_id' => $employee_id,
                             ];
-                            $tmp_data = [
-                                $order_detail['order_number'],
-                                $order_detail['crt_name'].'('.SysMenu::where('id',$oaOrder->menu_id)->value('title').')',
-                                Employee::where('id',$employee_id)->value('emp_name'),
-                                date('Y-m-d H:i:s'),
+                            $send_data[] = [
+                                'employee_id' => $employee_id,
+                                'type' => 1,
+                                'state' => 0,
+                                'menu_id' => $oaOrder->menu_id,
+                                'order_number' => $order_detail['order_number'],
+                                'tmp_data' =>  [
+                                    $order_detail['order_number'],
+                                    $order_detail['crt_name'].'('.$sys_menu.')',
+                                    $emp_tmp,
+                                    date('Y-m-d H:i:s'),
+                                ],
                             ];
-                            $this->sendWxMsg($employee_id,1,0,$oaOrder->menu_id,$tmp_data);
                         }
-
                         OaOrderSubEmployee::insert($insert);
+
+                        //发送消息
+                        $this->sendWxOaCheckMessage($send_data);
                     }
                     break;
+
+                //审核驳回
                 case 2:
                     list($employee_ids, $oa_sub_id,$order_detail) = $this->oaCommon($oaOrder->menu_id, ['order_number' => $oaOrder->order_no], 1, $detail['oa_sub_id'],$user);
                     $tmp_data = [
                         $oaOrder['order_no'],
                         '拒绝',
                         $order_detail['crt_time'],
-                        $remark,
-
+                        $remark ?? "(未填写原因)",
                     ];
-                    if ($detail['sort'] == 1||true) {
+                    if ($detail['sort'] == 1 || true) {
                         $oaOrder->state = 3;
                         $oaOrder->save();
                         list($parent_status,$parent_msg) = $this->returnOa($oaOrder->order_no, 2, $oaOrder->opt_case);
@@ -683,27 +708,48 @@ class OaService extends Service
                             DB::rollBack();
                             return [false,$parent_msg];
                         }
-                        //发送消息
-                        $this->sendWxMsg($order_detail['crt_id'],3,2,$oaOrder->menu_id,$tmp_data);
+                        $send_data[] = [
+                            'employee_id' => $order_detail['crt_id'],
+                            'type' => 3,
+                            'state' => 2,
+                            'menu_id' => $oaOrder->menu_id,
+                            'order_number' => $oaOrder['order_no'],
+                            'tmp_data' => $tmp_data,
+                        ];
                     }else{
                         $id = OaOrderSub::where('sort', ($detail['sort'] - 1))->where('oa_order_id', $oaOrder->id)->value('id');
                         $employee_ids = OaOrderSubEmployee::where('oa_order_sub_id',$id)->pluck('employee_id')->toArray();
                         foreach ($employee_ids as $v){
-                            $this->sendWxMsg($v,3,2,$oaOrder->menu_id,$tmp_data);
+                            $send_data[] = [
+                                'employee_id' => $v,
+                                'type' => 3,
+                                'state' => 2,
+                                'menu_id' => $oaOrder->menu_id,
+                                'order_number' => $oaOrder['order_no'],
+                                'tmp_data' => $tmp_data,
+                            ];
                         }
-
                     }
                     OaOrderSub::where('sort', ($detail['sort'] - 1))->where('oa_order_id', $oaOrder->id)->update([
                         'state' => 0,
-                        'remark' => $remark,
+                        'remark' => $remark ?? "",
                     ]);
+
+                    //发送消息
+                    $this->sendWxOaCheckMessage($send_data);
                     break;
             }
+
+            //更新状态
             OaOrderSub::where('id', $id)->update([
                 'state' => $state,
                 'remark' => $remark,
             ]);
-            $this->report($oaOrder, $detail['oa_sub_id'],$user_id);
+
+            //抄送 以及 组织发送数据
+            $send_data = $this->report($oaOrder, $detail['oa_sub_id'],$user_id,$sys_menu);
+            //发送数据
+            $this->sendWxOaCheckMessage($send_data);
             DB::commit();
             return [true, '操作成功!'];
         } catch (\Exception $e) {
@@ -712,10 +758,26 @@ class OaService extends Service
         }
     }
 
-    public function report($oaOrder, $oa_sub_id,$user_id)
+    //发送公众号消息
+    public function sendWxOaCheckMessage($send_data){
+        if(empty($send_data)) return ;
+        $config = config('morequery');
+        $path = $config['detail_message'] ?? [];
+
+        foreach ($send_data as $value) {
+            //小程序详情页路径
+            $tmp_path = $path[$value['menu_id']] ?? "";
+            if(! empty($tmp_path)) $tmp_path .= $value['order_number'];
+            //发送
+            $this->sendWxMsg($value['employee_id'],$value['type'],$value['state'],$value['menu_id'],$value['tmp_data'],$tmp_path);
+        }
+    }
+
+    public function report($oaOrder, $oa_sub_id,$user_id,$sys_menu)
     {
+        $return = [];
         $oa_sub_report_employee = OaSubReportEmployee::where('oa_sub_id', $oa_sub_id)->select('*')->get()->toArray();
-        if (!empty($oa_sub_report_employee)) {
+        if (! empty($oa_sub_report_employee)) {
             $list = [];
             $report = new OaReportOrder();
             $report->menu_id = $oaOrder->menu_id;
@@ -725,24 +787,33 @@ class OaService extends Service
             $report->channel = $this->user['depart_top'][0]['depart_id'];
             $report->save();
 
+            //公共发送参数
             $tmp_data = [
                 $oaOrder->order_no,
-                SysMenu::where('id',$oaOrder->menu_id)->value('title'),
+                $sys_menu,
                 '审核通过',
                 Employee::where('id',$user_id)->value('emp_name'),
                 date('Y-m-d H:i:s'),
-
             ];
-
             foreach ($oa_sub_report_employee as $v) {
                 $list[] = [
                     'employee_id' => $v['employee_id'],
                     'oa_report_order_id' => $report->id,
                 ];
-                $this->sendWxMsg($v['employee_id'],2,0,$oaOrder->menu_id,$tmp_data);
+                $return[] = [
+                    'employee_id' => $v['employee_id'],
+                    'type' => 2,
+                    'state' => 0,
+                    'menu_id' => $oaOrder->menu_id,
+                    'order_number' => $oaOrder->order_no,
+                    'tmp_data' => $tmp_data,
+                ];
+//                $this->sendWxMsg($v['employee_id'],2,0,$oaOrder->menu_id,$tmp_data);
             }
             OaReportOrderEmployee::insert($list);
         }
+
+        return $return;
     }
 
     public function returnOa($order_no, $type, $opt_case)
@@ -759,7 +830,6 @@ class OaService extends Service
 
     public function oaGetData($menu_id, $request,$user='')
     {
-
         $api = SysMenu::where('id', $menu_id)->value('api');
         $param =  SysMenu::where('id', $menu_id)->value('api_params');
         $param =  json_decode($param,true);
@@ -974,13 +1044,12 @@ class OaService extends Service
     }
 
     public function reportTime($data){
-
         return [true,['time'=>'20小时10分钟']];
     }
 
     public function sendWxMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath = ""){
         $service = new WxSendMessageService();
-        file_put_contents('msg_result.txt',date('Y-m-d H:i:s') . "入参:" . json_encode([$user_id,$type,$state,$menu_id,$order_data]). PHP_EOL,8);
+        file_put_contents('msg_result.txt',date('Y-m-d H:i:s') . "入参:" . json_encode([$user_id,$type,$state,$menu_id,$order_data,$pagepath]). PHP_EOL,8);
         list($status, $msg) = $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath);
         file_put_contents('msg_result.txt',date('Y-m-d H:i:s') . "结果:" .  $msg . PHP_EOL,8);
     }
@@ -1038,6 +1107,7 @@ class OaService extends Service
         return $return;
     }
 
+    //获取订单审核人员名称
     public function getOaTeamDetailList($order_no)
     {
         if(empty($order_no)) return [];

+ 13 - 6
app/Service/SalesOrderService.php

@@ -1280,13 +1280,20 @@ class SalesOrderService extends Service
            $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'),
+               $send_data[] = [
+                   'employee_id' => $notify_id,
+                   'type' => 1,
+                   'state' => 1,
+                   'menu_id' => 37,
+                   'order_number' => $msg['order_number'],
+                   '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);
+               (new OaService())->sendWxOaCheckMessage($send_data);
            }
         }else{
              //直接确认