From 7dc7031afa57a2c06fc0040f95a2c877014f3542 Mon Sep 17 00:00:00 2001 From: weigang Date: Mon, 2 Nov 2020 11:59:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E9=80=81=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Constants/v3/Employee.php | 19 ++++ app/Controller/v3/HomeController.php | 11 +++ app/JsonRpc/OrdersService.php | 27 ++++++ app/Model/v3/Employees.php | 34 +++++++ app/Model/v3/OrderMain.php | 1 + .../v3/Implementations/MiniprogramService.php | 88 ++++++++++++++++++- .../v3/Implementations/OrderOnlineService.php | 2 + .../MiniprogramServiceInterface.php | 7 ++ 8 files changed, 186 insertions(+), 3 deletions(-) create mode 100644 app/Constants/v3/Employee.php diff --git a/app/Constants/v3/Employee.php b/app/Constants/v3/Employee.php new file mode 100644 index 0000000..959f11f --- /dev/null +++ b/app/Constants/v3/Employee.php @@ -0,0 +1,19 @@ +miniprogramService->subscribeMsgForDeliveryStart(180633468956848128); + return; + $marketId = $this->request->input('market_id', -1); $version = $this->request->input('version', -1); $banners = $this->bannerService->all(Banner::TYPE_APPLET_INDEX, $marketId); diff --git a/app/JsonRpc/OrdersService.php b/app/JsonRpc/OrdersService.php index d5cef5d..a5a0322 100644 --- a/app/JsonRpc/OrdersService.php +++ b/app/JsonRpc/OrdersService.php @@ -355,4 +355,31 @@ class OrdersService implements OrdersServiceInterface } } + + /** + * 配送开始的时候,管理后台点击配送并分配配送员 + * 做一些处理: + * 1、发送订阅消息给用户 + * 2、发送订阅消息给骑手 + * @param $global_order_id + */ + public function onlineDeliveryStart($global_order_id) + { + try { + $this->miniprogramService->subscribeMsgForDeliveryStart($global_order_id); + return [ + "status" => 200, + "code" => 0, + "result" => [], + "message" => '处理成功' + ]; + } catch (\Exception $e) { + return [ + "status" => 200, + "code" => $e->getCode(), + "result" => [], + "message" => $e->getMessage() + ]; + } + } } \ No newline at end of file diff --git a/app/Model/v3/Employees.php b/app/Model/v3/Employees.php index feae515..5302485 100644 --- a/app/Model/v3/Employees.php +++ b/app/Model/v3/Employees.php @@ -6,6 +6,40 @@ use App\Model\Model; use Hyperf\Database\Model\Builder; class Employees extends Model { + + protected $positions = [ + 1=>'董事长', + 2=>'总经理', + 3=>'人力资源总监', + 4=>'CTO', + 5=>'财务经理', + 6=>'运营总监', + 7=>'招商总监', + 8=>'PHP研发主管', + 9=>'迁江智慧商城主管', + 10=>'拓展部主管', + 11=>'拓展部副主管', + 12=>'拓展部经理', + 13=>'运维部经理', + 14=>'产品主管', + 15=>'策划经理', + 16=>'运维部副经理', + 17=>'新媒体运营', + 18=>'平面设计师', + 19=>'UI设计师', + 20=>'前端开发工程师', + 21=>'PHP研发工程师', + 22=>'测试工程师', + 23=>'招商经理', + 24=>'服务站管理员', + 25=>'运维专员', + 26=>'拓展经理', + 27=>'行政助理', + 28=>'出纳', + 29=>'骑手', + 30=>'服务专员', + ]; + protected $table = 'lanzu_employees'; protected $casts = [ diff --git a/app/Model/v3/OrderMain.php b/app/Model/v3/OrderMain.php index d08009a..1e76dac 100644 --- a/app/Model/v3/OrderMain.php +++ b/app/Model/v3/OrderMain.php @@ -53,6 +53,7 @@ class OrderMain extends Model protected $appends = [ 'created_at_text', + 'updated_at_text', 'state_text', 'pay_time_text', 'pay_type_text', diff --git a/app/Service/v3/Implementations/MiniprogramService.php b/app/Service/v3/Implementations/MiniprogramService.php index 56ebcd4..b3a4e1c 100644 --- a/app/Service/v3/Implementations/MiniprogramService.php +++ b/app/Service/v3/Implementations/MiniprogramService.php @@ -2,7 +2,10 @@ namespace App\Service\v3\Implementations; +use App\Commons\Log; +use App\Constants\v3\Employee; use App\Constants\v3\Payment; +use App\Model\v3\Employees; use App\Model\v3\Order; use App\Model\v3\OrderGoods; use App\Model\v3\OrderMain; @@ -12,10 +15,17 @@ use App\Model\v3\User; use App\Service\v3\Interfaces\MiniprogramServiceInterface; use EasyWeChat\Factory; use Hyperf\Guzzle\CoroutineHandler; +use Hyperf\Di\Annotation\Inject; class MiniprogramService implements MiniprogramServiceInterface { + /** + * @Inject + * @var Log + */ + protected $log; + /** * @inheritDoc */ @@ -152,7 +162,7 @@ class MiniprogramService implements MiniprogramServiceInterface // 付款金额:{{amount1.DATA}}\n商户名称:{{thing2.DATA}}\n支付方式:{{thing3.DATA}}\n交易单号:{{character_string4.DATA}}\n交易时间:{{time5.DATA}}\n $tmplId = 'PCRNmKGb7t98xsz_GPux3rhXjsu68TPI3nXR7749dC0'; $page = 'pages/faceOrderList/faceOrderList?store_id='.$store['id']; - $this->sendSubscribeMessage( + $res = $this->sendSubscribeMessage( $store['openid'], $tmplId, [ @@ -223,6 +233,62 @@ class MiniprogramService implements MiniprogramServiceInterface ); } + /** + * @inheritDoc + */ + public function subscribeMsgForDeliveryStart($globalOrderId) + { + // 主订单信息 + $orderMain = OrderMain::query()->where(['global_order_id' => $globalOrderId])->first(); + if (!$orderMain) { + return false; + } + + // 订单商品 + $orderIds = Order::query()->where(['order_main_id' => $globalOrderId])->pluck('id'); + $goodsInfo = OrderGoods::query()->whereIn('order_id', $orderIds)->pluck('name'); + + // 骑手信息 + $horseman = Employees::query()->where(['id' => $orderMain->horseman_id, 'type' => Employee::TYPE_HORSEMAN])->first(); + + // 发送给用户的 + // 订单编号:{{character_string6.DATA}}\n商品名称:{{thing8.DATA}}\n骑手信息:{{thing7.DATA}}\n送出时间:{{date3.DATA}}\n温馨提示:{{thing4.DATA}}\n + $userTmplId = 'jZMTjlflXrAO7bPk5Lq_rFjol9Yuq5i4czwwrJbteqk'; + $userPage = 'pages/orderDetail/orderDetail?global_order_id=' . $globalOrderId; + $userOpenid = User::query()->where(['id' => $orderMain->user_id])->value('openid'); + $this->sendSubscribeMessage( + $userOpenid, + $userTmplId, + [ + 'character_string6' => $orderMain->global_order_id, + 'thing8' => implode(';', $goodsInfo), + 'thing7' => $horseman->name.'(电话:'.$horseman->tel.')', + 'date3' => $orderMain->updated_at_text ?? '', + 'thing4' => '懒族骑手已经拿到您订单货品,马上开始配送,请您耐心等待,您可以点击订单详情查看,感谢使用!', + ], + $userPage + ); + + // 发送给骑手的 + // 订单编号:{{character_string1.DATA}}\n商品信息:{{thing8.DATA}}\n收货地址:{{thing9.DATA}}\n预约时间:{{time17.DATA}}\n温馨提示:{{thing11.DATA}}\n + $horsemanTmplId = '6gxjnBZ4bLnaMC0g8wRaP46jGUZU7YqfYb1FPpJVr50'; + $horsemanPage = 'pages/deliverymanOrdersDetail/deliverymanOrdersDetail?global_order_id=' . $globalOrderId . '&employees_id=' . $horseman->id; + $horsemanOpenid = User::query()->where(['id' => $horseman->user_id])->value('openid'); + $this->sendSubscribeMessage( + $horsemanOpenid, + $horsemanTmplId, + [ + 'character_string1' => $orderMain->global_order_id, + 'thing8' => implode(';', $goodsInfo), + 'thing9' => $orderMain->name . ' - ' . $orderMain->address . '(电话:'.$orderMain->tel.')', + 'time17' => $orderMain->delivery_time_note ?? '尽快送达', + 'thing4' => '后台已经派发此订单给您,请注意及时取货配送,您可以点击订单详情查看,辛苦了!', + ], + $horsemanPage + ); + + } + /** * @inheritDoc */ @@ -280,7 +346,15 @@ class MiniprogramService implements MiniprogramServiceInterface $app = Factory::miniProgram(config('wechat.applet')); $app['guzzle_handler'] = CoroutineHandler::class; - $app->uniform_message->send($template); + $res = $app->uniform_message->send($template); + + if (!isset($res['errcode']) || $res['errcode'] != '0') { + + $backtrace = debug_backtrace(); + array_shift($backtrace); + + $this->log->event('template_message_error', ['from' => json_encode($backtrace), 'res' => json_encode($res), 'msg' => json_encode($template)]); + } } public function sendSubscribeMessage($openid, $template_id, $data, $page = '') @@ -300,7 +374,15 @@ class MiniprogramService implements MiniprogramServiceInterface 'data' => $data ]; - return $app->subscribe_message->send($msgData); + $res = $app->subscribe_message->send($msgData); + if (!isset($res['errcode']) || $res['errcode'] != '0') { + + $backtrace = debug_backtrace(); + array_shift($backtrace); + + $this->log->event('subscribe_message_error', ['from' => json_encode($backtrace), 'res' => json_encode($res), 'msg' => json_encode($msgData)]); + } + return $res; } public function getSubscribeMessageTempList($forUserType) diff --git a/app/Service/v3/Implementations/OrderOnlineService.php b/app/Service/v3/Implementations/OrderOnlineService.php index 158d501..0a36d2b 100644 --- a/app/Service/v3/Implementations/OrderOnlineService.php +++ b/app/Service/v3/Implementations/OrderOnlineService.php @@ -753,6 +753,8 @@ class OrderOnlineService implements OrderOnlineServiceInterface $orderChildIds = Order::query()->where(['order_main_id' => $orderMain->global_order_id])->pluck('store_id'); $this->badgeService->doByOrder($orderMain->user_id, $orderChildIds, $orderMain->global_order_id, OrderState::COMPLETED); + // 发送小程序订阅消息给用户提示用户订单完成 + return true; } diff --git a/app/Service/v3/Interfaces/MiniprogramServiceInterface.php b/app/Service/v3/Interfaces/MiniprogramServiceInterface.php index d9073ef..aa5c90c 100644 --- a/app/Service/v3/Interfaces/MiniprogramServiceInterface.php +++ b/app/Service/v3/Interfaces/MiniprogramServiceInterface.php @@ -37,6 +37,13 @@ interface MiniprogramServiceInterface */ public function subscribeMsgForSingleRefund($orderId, $refundStoreAmount, $orderGoodsId = ''); + /** + * 订单开始配送订阅消息通知用户和骑手 + * @param $globalOrderId + * @return mixed + */ + public function subscribeMsgForDeliveryStart($globalOrderId); + /** * 发送模板消息 * @param $openid