123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- <?php
- namespace App\Jobs;
- use App\Services\SmsService;
- use App\Services\Eav\EavSetService;
- use App\Services\Eav\MaterialService;
- use Illuminate\Bus\Queueable;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Queue\SerializesModels;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Support\Facades\Log;
- /**
- * 发送消息
- * 集合 message
- *
- *
- * Class SendMessage
- * @package App\Jobs
- */
- class SendMessage implements ShouldQueue
- {
- use InteractsWithQueue, Queueable, SerializesModels;
- private $setAlias = 'message';
- private $store_id = '';
- private $type = '';
- private $messageArr = [];
- private $paramsArr = [];
- private $userId = '';
- /**
- * SendMessage constructor.
- *
- * @param $store_id
- * @param $type
- * @param $paramsArr
- * @param string $userId
- */
- public function __construct($store_id, $type, $paramsArr, $userId = '')
- {
- $this->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'] ?? '']);
- }
- }
- }
|