store_id = $store_id; $this->type = $type; $this->paramsArr = $paramsArr; $this->userId = $userId; $this->messageArr = [ 'PAY_SUCCESS' => [ // 订单支付成功 'user' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '订单支付成功', 'content' => '您的订单已成功支付,订单号:${orderNo}', 'order_id' => '', ], 'duanxin' => [ // 短信通知,通过发送短信的方式通知 'temp_id' => 'SMS_185823291', 'content' => '您在应用${storeName}的订单已成功支付,订单号:${orderNo}。' ] ], 'seller' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '订单支付成功', 'content' => '${userName}支付订单成功,请及时发货!订单号:${orderNo}。', 'order_id' => '', ], 'duanxin' => [ // 短信通知,通过发送短信的方式通知 'temp_id' => 'SMS_186395860', 'content' => '${userName}支付订单成功,请及时发货!订单号:${orderNo}。' ] ] ], 'REFUND_APPLY' => [ // 用户发起退款申请 'seller' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '用户发起退款申请', 'content' => '${userName}发起退款申请,订单号:${orderNo},请及时处理!', 'order_id' => '', ], 'duanxin' => [ // 短信通知,通过发送短信的方式通知 'temp_id' => 'SMS_186400875', 'content' => '${userName}发起退款申请,订单号:${orderNo},请及时处理!' ] ] ], 'REFUND_SUCCESS' => [ // 订单退款成功 'user' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '订单退款成功', 'content' => '商家${storeName},已同意你的退款申请,退款单号:${orderNo}!', 'order_id' => '', ], 'duanxin' => [ // 短信通知,通过发送短信的方式通知 'temp_id' => 'SMS_186360964', 'content' => '您在应用${storeName}的退款申请,商家已同意,请注意查收!订单号:${orderNo}。' ] ] ], 'REFUSE_REFUND' => [ // 商家拒绝退款 'user' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '商家拒绝退款', 'content' => '您在应用${storeName}申请的退款商家已拒绝,订单号:${orderNo}!', 'order_id' => '', ] ], 'seller' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '商家拒绝退款', 'content' => '已拒绝${userName}的退款申请,订单号:${orderNo}。请妥善处理售后问题,避免引起客诉!', 'order_id' => '', ] ] ], // 订单确认收货 'RECEIPT_SUCCESS' => [ 'seller' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '订单确认收货', 'content' => '${userName}已确认收货,订单号:${orderNo}!', 'order_id' => '', ] ] ], // 系统自动确认收货 'SYS_RECEIPT_SUCCESS' => [ 'user' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '系统自动确认收货', 'content' => '您的订单逾期,已默认收货,订单号:${orderNo}!', 'order_id' => '', ] ], 'seller' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '系统自动确认收货', 'content' => '${userName}已确认收货,订单号:${orderNo}!', 'order_id' => '', ] ] ], // 商家发货 'DELIVER_GOOD' => [ 'user' => [ 'msg' => [ // 消息通知,商家后台的消息里面显示 'type' => 1, 'title' => '系统自动确认收货', 'content' => '尊敬的客户,您在应用${storeName}的订单${orderNo}已出库发货,正在配送中,请您耐心等待。', 'order_id' => '', ], 'duanxin' => [ // 短信通知,通过发送短信的方式通知 'temp_id' => 'SMS_185823328', 'content' => '尊敬的客户,您在应用${storeName}的订单${orderNo}已出库发货,正在配送中,请您耐心等待。' ] ] ], // 商家接单,预约产品 ]; } public function handle() { // 获取店铺信息 $materialService = new MaterialService(new EavSetService('store')); $storeInfo = $materialService->elasticClientService()->docGet($this->store_id); $this->paramsArr['storeName'] = $storeInfo['name'] ?? ''; // 店铺名称 // 获取信息 if (isset($this->messageArr[$this->type])) { $msgArr = $this->messageArr[$this->type]; // 买家信息 $materialUserService = new MaterialService(new EavSetService('member_store')); // 客户信息发送 $userArr = $msgArr['user'] ?? []; if ($userArr) { $info = $materialUserService->elasticClientService()->getInfo($this->userId); $this->paramsArr['userName'] = hidestr($info['mobile'], 3, 4); // 用户名称 手机号 $this->send(1, $userArr, $info['mobile']); } // 商家信息发送 $sellerArr = $msgArr['seller'] ?? []; if ($sellerArr) { if ($this->userId) { // 买家信息 $info = $materialUserService->elasticClientService()->getInfo($this->userId); $this->paramsArr['userName'] = hidestr($info['mobile'], 3, 4); // 用户名称 手机号 } $mobile = ''; if (isset($userArr['duanxin']) && $userArr['duanxin']) { $materialSellerService = new MaterialService(new EavSetService('user')); $info = $materialSellerService->elasticClientService()->getInfo($storeInfo['creator_id']); $mobile = $info['mobile'] ?? ''; } $this->send(2, $sellerArr, $mobile); } } } private function send($type, $userArr, $mobile = '') { $msgSend = $userArr['msg'] ?? []; $duanxinSend = $userArr['duanxin'] ?? []; if ($msgSend) { $content = $msgSend['content']; foreach ($this->paramsArr as $column => $value) { $content = preg_replace('/\$\s*{\s*' . $column . '\s*}/i', $value, $content); } $data = $msgSend; $data['store_id'] = $this->store_id; $data['content'] = $content; $data['is_read'] = 0; // 是否已读 0 未读 1 已读 if ($type == 1) { $data['member_id'] = $this->userId; }else{ $data['member_id'] = 0; } $materialService = new MaterialService(new EavSetService($this->setAlias)); $is_success = $materialService->addProduct($data); if ($is_success) { } else { Log::error('消息数据保存失败,请尽快处理!', $data); } } if ($duanxinSend && $duanxinSend['temp_id']) { $result = (new SmsService())->sendToUser($mobile, $duanxinSend['temp_id'], $this->paramsArr); Log::info('短信发送', ['result' => $result, 'content' => $duanxinSend['content'] ?? '']); } } }