cqp 4 mesiacov pred
rodič
commit
b0476bd425

+ 13 - 0
app/Http/Controllers/Api/SportsBagController.php

@@ -71,4 +71,17 @@ class SportsBagController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function sportsBagSendWx(Request $request)
+    {
+        $service = new SportsBagService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->sportsBagSendWx($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 15 - 0
app/Http/Controllers/Api/TestController.php

@@ -26,6 +26,21 @@ class TestController extends BaseController
     }
 
     public function aa(){
+        $send_data[] = [
+            'employee_id' => 1,
+            'type' => 2,
+            'state' => 0,
+            'menu_id' => 34,
+            'order_number' => "T9RMO.202408071529012839",
+            'tmp_data' => [
+                "T9RMO.202408071529012839",
+                "施工单",
+                '已完结',
+                "ee",
+                date('Y-m-d H:i:s'),
+            ],
+        ];
+        (new OaService())->sendWxOaCheckMessage($send_data);dd(11)
                (new OaService())->sendWxMsg(1,2,0,34,["T9RMO.202408071529012839","施工单","待确认","陈庆鹏","2024-08-07 15:29:44"]);dd(1);
 //       (new OaService())->sendWxMsg(1,3,2,48,["T9RMO.202408071529012839","拒绝","2024-08-07 15:29:44","(未填写原因)"],"/pages/ReturnExchangeOrder/detail/detail?order_number=55");
 

+ 28 - 20
app/Service/CheckService.php

@@ -5,6 +5,7 @@ namespace App\Service;
 use App\Model\Construction;
 use App\Model\ConstructionProductInfo;
 use App\Model\Customer;
+use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\InOutRecord;
 use App\Model\Inventory;
@@ -119,7 +120,7 @@ class CheckService extends Service
         self::four => 'settleSalesOrder', // 合同 安装件 合同公司完结
         self::nine => 'settleSalesOrderCustomer', // 合同 安装件 合同客户完结
         self::eve => 'settleSalesOrderConfirm', // 合同 安装件 合同接收
-        self::fifteen => 'settleSalesOrderConfirmBack', // 合同 安装件 合同接收
+        self::fifteen => 'settleSalesOrderConfirmBack', // 合同 安装件 合同接收后放弃
     ];
 
     //单据操作
@@ -1250,26 +1251,33 @@ class CheckService extends Service
         $model->is_confirm = 1;
         $model->save();
 
-        $emp_name = Employee::where('id',$user['id'])->value('emp_name');
-        $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'),
-                ],
-            ];
+        $depart = SeeRange::where('del_time',0)
+            ->where('data_id', $model->id)
+            ->where('data_type',SeeRange::type_seven)
+            ->where('type',SeeRange::data_three)
+            ->first();
+        if(! empty($depart)){
+            $depart = $depart->toArray();
+            $channel_id = Depart::where('id',$depart->param_id)->value('channel_id');
+            if(! empty($channel_id)){
+                $emp_name = Employee::where('id',$channel_id)->value('emp_name');
+                $send_data[] = [
+                    'employee_id' => $channel_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);
+                (new OaService())->sendWxOaCheckMessage($send_data);
+            }
         }
 
         return [true, $model->toArray()];

+ 54 - 20
app/Service/CustomerService.php

@@ -10,6 +10,7 @@ use App\Model\Employee;
 use App\Model\FollowUpRecord;
 use App\Model\Product;
 use App\Model\SeeRange;
+use App\Model\WxEmployeeOfficial;
 use Carbon\Carbon;
 use Illuminate\Support\Facades\DB;
 
@@ -534,6 +535,10 @@ class CustomerService extends Service
                 ->orWhereIn('id', $id);
         }
         if(! empty($data['id'])) $model->where('id', $data['id']);
+        if(! empty($data['customer_id'])){
+            $customer_id = explode(',',$data['customer_id']);
+            $model->whereIn('id', $customer_id);
+        }
         if(! empty($data['my_fz']) || ! empty($data['my_xt'])){
             $id = $this->getCustomerId($data,$user);
             $model->whereIn('id',$id);
@@ -673,6 +678,10 @@ class CustomerService extends Service
             ->select('title','id','model_type','customer_intention','customer_from','customer_type','car_type','consulting_product','intention_product','progress_stage','address1','address2','crt_id','crt_time','mark','importance','company','company_short_name','depart_id','state_type','customer_state','pond_state','top_depart_id','fp_time','fp_top_depart_id','enter_time')
             ->orderby('fp_time', 'desc');
 
+        if(! empty($data['customer_id'])){
+            $customer_id = explode(',',$data['customer_id']);
+            $model->whereIn('id', $customer_id);
+        }
         if(! empty($data['my_fz']) || ! empty($data['my_xt'])){
             $id = $this->getCustomerId($data,$user);
             $model->whereIn('id',$id);
@@ -1215,23 +1224,9 @@ class CustomerService extends Service
         list($status,$msg) = $this->customerSendWxRule($data);
         if(! $status) return [false,$msg];
 
-        try {
-            DB::beginTransaction();
-            $time = time();
-
-            $insert = [];
-
-            //负责人获取 改为前负责人
-            $man = CustomerInfo::where('del_time',0)
-                ->where('customer_id',$data['customer_id'])
-                ->where('type', CustomerInfo::type_two)
-                ->get()->toArray();
-
-            DB::commit();
-        }catch (\Exception $exception){
-            DB::rollBack();
-            return [false,$exception->getMessage()];
-        }
+        //发送消息
+        $send_data = $msg;
+        (new OaService())->sendWxOaCheckMessage($send_data);
 
         return [true, ''];
     }
@@ -1243,13 +1238,52 @@ class CustomerService extends Service
             ->whereIn('id',$data['id'])
             ->get()->toArray();
         if(empty($customer)) return [false,'客户不存在或已被删除'];
-        $map = array_column($customer,'title', 'id');
 
         $man = CustomerInfo::where('del_time',0)
-            ->where('customer_id',$data['customer_id'])
+            ->whereIn('customer_id',$data['id'])
             ->where('type', CustomerInfo::type_two)
             ->get()->toArray();
+        if(empty($man)) return [true, '客户暂无负责人信息,公众号消息发送结束'];
+        $customer_map = [];
+        foreach ($man as $value){
+            $customer_map[$value['data_id']][] = $value['customer_id'];
+        }
+        $employee_id = array_unique(array_column($man,'data_id'));
 
-        return [true,''];
+        $wx_map = WxEmployeeOfficial::whereIn('employee_id', $employee_id)
+            ->pluck('openid','employee_id')
+            ->toArray();
+        $emp = Employee::whereIn('id', $employee_id)
+            ->pluck('emp_name','id')
+            ->toArray();
+        $send_data = [];
+        foreach ($employee_id as $value){
+            $tmp = $emp[$value] ?? "";
+            $open_id = $wx_map[$value] ?? "";
+//            if(empty($open_id)) return [false, $tmp . "暂未关注微信公众号,公众号消息发送失败"];
+            if(empty($open_id)) continue;
+
+            $customer_id = $customer_map[$value] ?? [];
+            $customer_id = implode(',', $customer_id);
+
+            //提醒创建人
+            $send_data[] = [
+                'employee_id' => $value,
+                'type' => 2,
+                'state' => 0,
+                'menu_id' => "16|list",
+                'openid' => $open_id,
+                'order_number' => $customer_id,
+                'tmp_data' => [
+                    time(),
+                    "客户消息提醒",
+                    "已发送",
+                    $tmp,
+                    date('Y-m-d H:i:s'),
+                ],
+            ];
+        }
+
+        return [true, $send_data];
     }
 }

+ 20 - 3
app/Service/OaService.php

@@ -863,11 +863,28 @@ class OaService extends Service
             //小程序详情页路径
             $tmp_path = $path[$value['menu_id']] ?? "";
             if(! empty($tmp_path)) $tmp_path .= $value['order_number'];
+            $openid = $value['openid'] ?? "";
+            $menu_id = $this->getSubstringBeforePipe($value['menu_id']);
+
             //发送
-            $this->sendWxMsg($value['employee_id'],$value['type'],$value['state'],$value['menu_id'],$value['tmp_data'],$tmp_path);
+            $this->sendWxMsg($value['employee_id'],$value['type'],$value['state'],$menu_id,$value['tmp_data'],$tmp_path,$openid);
+        }
+    }
+
+    function getSubstringBeforePipe($str) {
+        // 检查字符串中是否存在竖线 '|'
+        $pos = strpos($str, '|');
+
+        // 如果存在竖线,则返回竖线之前的部分
+        if ($pos !== false) {
+            return substr($str, 0, $pos);
+        } else {
+            // 如果不存在竖线,则返回原始字符串
+            return $str;
         }
     }
 
+
     public function report($oaOrder, $oa_sub_id,$user_id,$sys_menu)
     {
         $return = [];
@@ -1163,10 +1180,10 @@ class OaService extends Service
         return [true,['time'=>'20小时10分钟']];
     }
 
-    public function sendWxMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath = ""){
+    public function sendWxMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath = "", $openid = ""){
         $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,$pagepath]). PHP_EOL,8);
-        list($status, $msg) = $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath);
+        list($status, $msg) = $service->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath,$openid);
         file_put_contents('msg_result.txt',date('Y-m-d H:i:s') . "结果:" .  $msg . PHP_EOL,8);
     }
 

+ 65 - 0
app/Service/SportsBagService.php

@@ -5,11 +5,13 @@ namespace App\Service;
 use App\Model\BasicType;
 use App\Model\Construction;
 use App\Model\Employee;
+use App\Model\EmployeeDepartPermission;
 use App\Model\PurchaseOrder;
 use App\Model\SalesOrder;
 use App\Model\SeeRange;
 use App\Model\SportsBag;
 use App\Model\SportsBagProductInfo;
+use App\Model\WxEmployeeOfficial;
 use Illuminate\Support\Facades\DB;
 
 class SportsBagService extends Service
@@ -425,4 +427,67 @@ class SportsBagService extends Service
 
         return [true, ''];
     }
+
+    //发送消息
+    public function sportsBagSendWx($data, $user){
+        list($status,$msg) = $this->sportsBagSendWxRule($data);
+        if(! $status) return [false,$msg];
+
+        //发送消息
+        $send_data = $msg;
+        (new OaService())->sendWxOaCheckMessage($send_data);
+
+        return [true, ''];
+    }
+
+    public function sportsBagSendWxRule($data){
+        if(empty($data['id'])) return [false,'请选择活动包'];
+        if(empty($data['depart_id'])) return [false, '请选择门店'];
+
+        $customer = SportsBag::where('del_time',0)
+            ->where('state','>=',SportsBag::STATE_TWO)
+            ->whereIn('id',$data['id'])
+            ->get()->toArray();
+        if(empty($customer)) return [false,'活动包未审核通过、不存在或已被删除'];
+
+        $employee_id = EmployeeDepartPermission::whereIn('depart_id',$data['depart_id'])
+            ->select('employee_id')
+            ->get()->toArray();
+        if(empty($employee_id)) return [true, '门店下无人员信息,公众号消息发送结束'];
+        $employee_id = array_unique(array_column($employee_id,'employee_id'));
+        $wx_map = WxEmployeeOfficial::whereIn('employee_id', $employee_id)
+            ->pluck('openid','employee_id')
+            ->toArray();
+        $emp = Employee::whereIn('id', $employee_id)
+            ->pluck('emp_name','id')
+            ->toArray();
+        $send_data = [];
+        foreach ($employee_id as $value){
+            $tmp = $emp[$value] ?? "";
+            $open_id = $wx_map[$value] ?? "";
+//            if(empty($open_id)) return [false, $tmp . "暂未关注微信公众号,公众号消息发送失败"];
+            if(empty($open_id)) continue;
+
+            foreach ($customer as $sport){
+                //提醒
+                $send_data[] = [
+                    'employee_id' => $value,
+                    'type' => 2,
+                    'state' => 0,
+                    'menu_id' => "30",
+                    'openid' => $open_id,
+                    'order_number' => $sport['order_number'],
+                    'tmp_data' => [
+                        $sport['order_number'],
+                        "活动包消息提醒",
+                        "已发送",
+                        $tmp,
+                        date('Y-m-d H:i:s'),
+                    ],
+                ];
+            }
+        }
+
+        return [true, $send_data];
+    }
 }

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

@@ -18,8 +18,9 @@ class WxSendMessageService extends WeixinService
      * @param $order_data
      * @return array
      */
-    public function wx_sendMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath = ""){
-        $openid = WxEmployeeOfficial::where('employee_id',$user_id)->value('openid');
+    public function wx_sendMsg($user_id,$type,$state,$menu_id,$order_data,$pagepath = "",$openid = ""){
+        //如果没提供openid 则查询
+        if(empty($openid)) $openid = WxEmployeeOfficial::where('employee_id',$user_id)->value('openid');
         if(empty($openid)) return [false,'not invaild openid'];
         $config = config('wx.msg');
         switch ($type){

+ 9 - 8
config/morequery.php

@@ -69,14 +69,15 @@ return [
 
     //34 施工单 35 退换货单 37 订单合同  38 T9采购单  44 虚拟采购单 45 分社采购单 48 收付款单
     "detail_message" => [
-        16 => '/pages/CustomerManage/detail/detail?id=',
-        34 => '/pages/ConstructionOrder/add/detail/detail?order_number=',
-        35 => '/pages/ReturnExchangeOrder/detail/detail?order_number=',
-        37 => '/pageA/pages/SalesOrder/detail/detail?order_number=',
-        38 => '',
-        44 => '',
-        45 => '/pageA/pages/ProcureOrder/ProcureDetail/ProcureDetail?order_number=',
-        48 => '/pages/PayOrder/detail/detail?order_number=',
+        "16|list" => 'pages/CustomerManage/index/index?id=',//客户列表页
+        "16" => '/pages/CustomerManage/detail/detail?id=', //客户详情页
+        "34" => '/pages/ConstructionOrder/add/detail/detail?order_number=',
+        "35" => '/pages/ReturnExchangeOrder/detail/detail?order_number=',
+        "37" => '/pageA/pages/SalesOrder/detail/detail?order_number=',
+        "38" => '',
+        "44" => '',
+        "45" => '/pageA/pages/ProcureOrder/ProcureDetail/ProcureDetail?order_number=',
+        "48" => '/pages/PayOrder/detail/detail?order_number=',
     ],
 ];
 

+ 3 - 0
config/wx/msg.php

@@ -26,6 +26,9 @@ return [
         '16_1' => 1,
         '16_2' => 2,
         '16_3_2' => 3,
+        '30_1' => 1,
+        '30_2' => 2,
+        '30_3_2' => 3,
     ],
 
     'wx_tmp_id' => [

+ 1 - 0
routes/api.php

@@ -247,6 +247,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('sportsBagDetail', 'Api\SportsBagController@detail');
     $route->any('sportsBagAdd', 'Api\SportsBagController@add');
     $route->any('sportsBagDel', 'Api\SportsBagController@del');
+    $route->any('sportsBagSendWx', 'Api\SportsBagController@sportsBagSendWx');
 
     //活动价列表 单品活动包
     $route->any('productActivityList', 'Api\ProductActivityController@productList');