Browse Source

配送通知

master
weigang 5 years ago
parent
commit
7dc7031afa
  1. 19
      app/Constants/v3/Employee.php
  2. 11
      app/Controller/v3/HomeController.php
  3. 27
      app/JsonRpc/OrdersService.php
  4. 34
      app/Model/v3/Employees.php
  5. 1
      app/Model/v3/OrderMain.php
  6. 88
      app/Service/v3/Implementations/MiniprogramService.php
  7. 2
      app/Service/v3/Implementations/OrderOnlineService.php
  8. 7
      app/Service/v3/Interfaces/MiniprogramServiceInterface.php

19
app/Constants/v3/Employee.php

@ -0,0 +1,19 @@
<?php
namespace App\Constants\v3;
use Hyperf\Constants\AbstractConstants;
use Hyperf\Constants\Annotation\Constants;
/**
* @Constants
*/
class Employee extends AbstractConstants
{
/**
* @Message("骑手")
*/
const TYPE_HORSEMAN = 29;
}

11
app/Controller/v3/HomeController.php

@ -22,6 +22,7 @@ use App\Service\v3\Interfaces\CategoryServiceInterface;
use App\Service\v3\Interfaces\CollectStoreServiceInterface;
use App\Service\v3\Interfaces\CouponRecServiceInterface;
use App\Service\v3\Interfaces\FinancialRecordServiceInterface;
use App\Service\v3\Interfaces\MiniprogramServiceInterface;
use App\Service\v3\Interfaces\OrderOnlineServiceInterface;
use App\Service\v3\Interfaces\OrderStatisticsServiceInterface;
use App\Service\v3\Interfaces\RevenueListServiceInterface;
@ -121,6 +122,12 @@ class HomeController extends BaseController
*/
protected $financialRecordService;
/**
* @Inject
* @var MiniprogramServiceInterface
*/
protected $miniprogramService;
/**
* 小程序首页,根据market_id
* 1.banner数据
@ -130,6 +137,10 @@ class HomeController extends BaseController
*/
public function appletIndex()
{
$this->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);

27
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()
];
}
}
}

34
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 = [

1
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',

88
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)

2
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;
}

7
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

Loading…
Cancel
Save