Browse Source

Merge branch 'feature/subscribe_message' into master

# Conflicts:
#	config/routes.php
master
weigang 5 years ago
parent
commit
bfe7d4e526
  1. 19
      app/Constants/v3/Employee.php
  2. 26
      app/Controller/v3/MiniSubscribeMsgController.php
  3. 40
      app/JsonRpc/OrdersService.php
  4. 34
      app/Model/v3/Employees.php
  5. 6
      app/Model/v3/Order.php
  6. 14
      app/Model/v3/OrderMain.php
  7. 22
      app/Model/v3/SubscribeMessageTemplate.php
  8. 270
      app/Service/v3/Implementations/MiniprogramService.php
  9. 19
      app/Service/v3/Implementations/OrderOnlineService.php
  10. 43
      app/Service/v3/Interfaces/MiniprogramServiceInterface.php
  11. 1
      config/routes.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;
}

26
app/Controller/v3/MiniSubscribeMsgController.php

@ -0,0 +1,26 @@
<?php
namespace App\Controller\v3;
use App\Service\v3\Interfaces\MiniprogramServiceInterface;
use Hyperf\Di\Annotation\Inject;
use Hyperf\Validation\ValidationException;
class MiniSubscribeMsgController extends \App\Controller\BaseController
{
/**
* @Inject
* @var MiniprogramServiceInterface
*/
protected $miniprogramService;
public function getTemplates()
{
$forUserType = $this->request->input('for_user_type');
$templates = $this->miniprogramService->getSubscribeMessageTempList($forUserType);
return $this->success(['templates' => $templates]);
}
}

40
app/JsonRpc/OrdersService.php

@ -10,7 +10,9 @@ use App\Exception\ErrorCodeException;
use App\Model\v3\Order;
use App\Model\v3\OrderGoods;
use App\Model\v3\OrderMain;
use App\Model\v3\User;
use App\Service\v3\Interfaces\FinancialRecordServiceInterface;
use App\Service\v3\Interfaces\MiniprogramServiceInterface;
use App\Service\v3\Interfaces\OrderOnlineServiceInterface;
use App\Service\v3\Interfaces\SeparateAccountsServiceInterface;
use EasyWeChat\Factory;
@ -56,6 +58,12 @@ class OrdersService implements OrdersServiceInterface
*/
protected $badgeService;
/**
* @Inject
* @var MiniprogramServiceInterface
*/
protected $miniprogramService;
/**
* 订单完成
* @param $global_order_id
@ -309,11 +317,16 @@ class OrdersService implements OrdersServiceInterface
// 计算本次退款实际退款金额
$refundStoreAmount = bcsub($order->money, $couponMoney, 2);
$this->financialRecordService->storeRefundDirect($order->store->user_id, $order->id, $refundStoreAmount);
$this->miniprogramService->subscribeMsgForSingleRefund($order->id, $refundStoreAmount, '', $note);
}
} elseif ($refundType == 'sub'||$refundType == 'goods') { # 退子订单或者退单品的话,商户只有一个
$orderChildren = Order::query()->with('store:user_id')->where(['id' => $order_child_id])->get();
$this->financialRecordService->storeRefundDirect($orderChild->store->user_id, $orderChild->id, $refundAmount);
$orderGoodsId = $order_goods_id ?: '';
$this->miniprogramService->subscribeMsgForSingleRefund($order_child_id, $refundAmount, $orderGoodsId, $note);
}
$this->financialRecordService->userRefundDirect($orderMain->user_id, $orderMain->global_order_id, $refundAmount);
@ -342,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 = [

6
app/Model/v3/Order.php

@ -10,6 +10,7 @@ class Order extends Model
protected $appends = [
'created_at_text',
'updated_at_text',
];
protected $fillable = [
@ -34,6 +35,11 @@ class Order extends Model
return date('Y-m-d H:i:s', $this->attributes['created_at']);
}
public function getUpdatedAtTextAttribute()
{
return date('Y-m-d H:i:s', $this->attributes['updated_at']);
}
public function orderGoods()
{
return $this->hasMany(OrderGoods::class, 'order_id', 'id');

14
app/Model/v3/OrderMain.php

@ -53,11 +53,13 @@ class OrderMain extends Model
protected $appends = [
'created_at_text',
'updated_at_text',
'state_text',
'pay_time_text',
'pay_type_text',
'shipping_type_text',
'complete_time_text'
'complete_time_text',
'delivery_time_text',
];
protected $casts = [
@ -69,6 +71,11 @@ class OrderMain extends Model
return date('Y-m-d H:i:s', $this->attributes['created_at']);
}
public function getUpdatedAtTextAttribute()
{
return date('Y-m-d H:i:s', $this->attributes['updated_at']);
}
public function getPayTimeTextAttribute()
{
return date('Y-m-d H:i:s', $this->attributes['pay_time']);
@ -79,6 +86,11 @@ class OrderMain extends Model
return date('Y-m-d H:i:s', $this->attributes['complete_time']);
}
public function getDeliveryTimeTextAttribute()
{
return date('Y-m-d H:i:s', $this->attributes['delivery_time']);
}
public function getStateTextAttribute()
{
if ($this->attributes['state'] == OrderState::DELIVERY) {

22
app/Model/v3/SubscribeMessageTemplate.php

@ -0,0 +1,22 @@
<?php
namespace App\Model\v3;
use App\Model\Model;
use Hyperf\Database\Model\Builder;
use Hyperf\Database\Model\SoftDeletes;
class SubscribeMessageTemplate extends Model
{
use SoftDeletes;
protected $table = 'lanzu_subscribe_message_template';
protected function boot(): void
{
parent::boot();
self::addGlobalScope('normal', function (Builder $builder) {
$builder->where([$this->getTable().'.is_active' => 1]);
});
}
}

270
app/Service/v3/Implementations/MiniprogramService.php

@ -2,18 +2,30 @@
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;
use App\Model\v3\Store;
use App\Model\v3\SubscribeMessageTemplate;
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
*/
@ -24,7 +36,7 @@ class MiniprogramService implements MiniprogramServiceInterface
$order = OrderMain::query()->where(['global_order_id' => $globalOrderId])->first()->toArray();
$payTypes = ['1' => '微信支付', '2' => '余额支付', '3' => '积分支付', '4' => '货到付款'];
$address_store = $order['address'] . ';' .$order['name']. ';'. substr_replace($order['tel'],'****',3,4);
$address_store = $order['address'] . ';' .$order['name']. ';'. mb_substr_replace($order['tel'],'****',3,4);
$address = $order['address'] . ';' .$order['name']. ';'. $order['tel'];
// 查询子订单,用于发消息给商户
@ -44,8 +56,8 @@ class MiniprogramService implements MiniprogramServiceInterface
$goods_temp = [];
foreach ($order_goods as $k => &$goods) {
array_push($goods_temp, $goods['name']."*".$goods['number']."/".($goods['goods_unit']));
array_push($goods_temp_all, $goods['name']."*".$goods['number']."/".($goods['goods_unit']));
array_push($goods_temp, $goods['name']."*".$goods['number']);
array_push($goods_temp_all, $goods['name']."*".$goods['number']);
}
// 商户/门店的openid
@ -70,6 +82,23 @@ class MiniprogramService implements MiniprogramServiceInterface
];
$ret_store = $this->sendTempMsg($store['openid'], '-M7DG_ACwJxqdAvyvJuAnPpx4xaLf3VkkN0fckno71c',$data_store);
// // 小程序订阅消息发给商户
// // 支付金额:{{amount1.DATA}}\n订单编号:{{character_string2.DATA}}\n支付时间:{{date3.DATA}}\n商品详情:{{thing4.DATA}}\n备注:{{thing7.DATA}}\n
// $tmplId = 'UfCON4Dj_7aH_Q5k_HvDgzUb3gu67TokPITsJuvCMxc';
// $page = 'pages/shopOrders/shopOrders?status=paid&store_id='.$store['id'];
// $this->sendSubscribeMessage(
// $store['openid'],
// $tmplId,
// [
// 'amount1' => $item->money,
// 'character_string2' => $item->order_num,
// 'date3' => $item->created_at_text?:date('Y-m-d H:i:s'),
// 'thing4' => mb_substr(implode(";", $goods_temp_all),0,18).'..',
// 'thing7' => mb_substr(($item->note?:'无备注'), 0, 18).'..',
// ],
// $page
// );
}
// 模板数据发送消息给用户
@ -97,6 +126,9 @@ class MiniprogramService implements MiniprogramServiceInterface
public function sendTemMsgForOfflineOrder($globalOrderId)
{
// 主订单信息
$orderMain = OrderMain::query()->where(['global_order_id' => $globalOrderId])->first();
// 查询子订单,用于发消息给商户
$order_children = Order::query()
->where(['order_main_id' => $globalOrderId])
@ -125,6 +157,23 @@ class MiniprogramService implements MiniprogramServiceInterface
];
$ret_store = $this->sendTempMsg($store['openid'], 'lxVbC6PVpKbiO44bYqLmacl-BaME70D47Q0jn2Link0',$data_store);
// // 小程序订阅消息发给商户
// // 付款金额:{{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'];
// $res = $this->sendSubscribeMessage(
// $store['openid'],
// $tmplId,
// [
// 'amount1' => $item['money'],
// 'thing2' => mb_substr($store['name'], 0, 18).'..',
// 'thing3' => mb_substr(Payment::getMessage($orderMain->pay_type), 0, 18).'..',
// 'character_string4' => $item['order_num'],
// 'time5' => $item['created_at_text']??date('Y-m-d H:i:s'),
// ],
// $page
// );
}
}
@ -149,6 +198,153 @@ class MiniprogramService implements MiniprogramServiceInterface
$ret_user = $this->sendTempMsg($openid,'ypZ7xdHUjWrRG8P-MD42dhpp6kUlh4Unoh7eTSrLZEg', $data_user);
}
/**
* @inheritDoc
*/
public function subscribeMsgForSingleRefund($orderId, $refundStoreAmount, $orderGoodsId = '', $note = '')
{
// TODO 暂时不发
return;
$order = Order::query()->where(['id' => $orderId])->first();
$store = Store::query()->where(['id' => $order->store_id])->first();
$storeOpenid = User::query()->where(['id' => $store->user_id])->value('openid');
$goodsInfo = [];
if ($orderGoodsId) {
$goodsInfo = OrderGoods::query()->where(['id' => $orderGoodsId])->pluck('name')->toArray();
} else {
$goodsInfo = OrderGoods::query()->where(['order_id' => $orderId])->pluck('name')->toArray();
}
// 小程序订阅消息发给商户
// 订单编号:{{character_string7.DATA}}\n商品名称:{{thing10.DATA}}\n退款金额:{{amount3.DATA}}\n处理时间:{{date4.DATA}}\n退款说明:{{thing5.DATA}}\n
$tmplId = 'OaWeg0q40NVW2WeO5BY1TFdWi4GsgIY1rFBwo2wDa0g';
$page = 'pages/shopOrders/shopOrders?status=refund&store_id='.$store->id;
$this->sendSubscribeMessage(
$storeOpenid,
$tmplId,
[
'character_string7' => $order->order_num,
'thing10' => mb_substr(implode(';', $goodsInfo),0,18).'..',
'amount3' => $refundStoreAmount,
'date4' => $order->updated_at_text ?? date('Y-m-d H:i:s'),
'thing5' => mb_substr($note ?: '退款', 0, 18).'..',
],
$page
);
}
/**
* @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')->toArray();
$goodsInfo = OrderGoods::query()->whereIn('order_id', $orderIds)->pluck('name')->toArray();
// 骑手信息
$horseman = Employees::query()->where(['id' => $orderMain->horseman_id])->whereJsonContains('position', [(string)Employee::TYPE_HORSEMAN])->first();
// 发送给用户的
// 订单编号:{{character_string6.DATA}}\n商品名称:{{thing8.DATA}}\n骑手信息:{{thing7.DATA}}\n送出时间:{{date3.DATA}}\n温馨提示:{{thing4.DATA}}\n
$userTmplId = env('APP_ENV') == 'prod' ? '6E09Od5Ofy08C3qx3eJrOQiWT75uUwIxgG7ta2W75BQ' : 'jZMTjlflXrAO7bPk5Lq_rFjol9Yuq5i4czwwrJbteqk';
$userPage = 'pages/orderDetail/orderDetail?global_order_id=' . $globalOrderId;
$userOpenid = User::query()->where(['id' => $orderMain->user_id])->value('openid');
$sendHorsemanInfo = $horseman->name.'|电话'.$horseman->tel;
$sendNote = '预计'.$orderMain->delivery_time_note.'送达,点击看订单详细信息哦!';
$sendGoodsInfo = implode(';', $goodsInfo);
$this->sendSubscribeMessage(
$userOpenid,
$userTmplId,
[
'character_string6' => $orderMain->global_order_id,
'thing8' => mb_strlen($sendGoodsInfo)>18 ? mb_substr($sendGoodsInfo, 0, 18).'..' : $sendGoodsInfo,
'thing7' => mb_strlen($sendHorsemanInfo)>18 ? mb_substr($sendHorsemanInfo, 0, 18).'..' : $sendHorsemanInfo,
'date3' => $orderMain->updated_at_text ?? '',
'thing4' => mb_strlen($sendNote)>18 ? mb_substr($sendNote, 0, 18).'..' : $sendNote,
],
$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');
// $deliveryNote = $orderMain->delivery_start_time ? date('Y-m-d H:i:s', $orderMain->delivery_start_time+1800) : date('Y-m-d H:i:s', time()+1800);
//
// if (strpos($orderMain->delivery_time_note, ' - ') !== false) {
// $arr = explode(' - ', $orderMain->delivery_time_note);
// if (is_array($arr) && isset($arr[0]) && $arr[0]) {
// $deliveryNote = date('Y-m-d').' '.$orderMain->delivery_time_note.':00';
// }
// }
//
// $this->sendSubscribeMessage(
// $horsemanOpenid,
// $horsemanTmplId,
// [
// 'character_string1' => $orderMain->global_order_id,
// 'thing8' => mb_substr(implode(';', $goodsInfo),0,18).'..',
// 'thing9' => mb_substr(($orderMain->name.'|'.$orderMain->tel.'|'.$orderMain->address), 0, 18).'..',
// 'time17' => $deliveryNote,
// 'thing11' => '有新配送订单,请注意及时取货,辛苦了!',
// ],
// $horsemanPage
// );
}
/**
* @inheritDoc
*/
public function subscribeMsgForOrderComplete($orderMain)
{
// 主订单信息
if (!($orderMain instanceof OrderMain)) {
$orderMain = OrderMain::query()->where(['global_order_id' => $orderMain])->first();
}
if (!$orderMain) {
return false;
}
// 骑手信息
$horseman = Employees::query()->where(['id' => $orderMain->horseman_id])->whereJsonContains('position', [(string)Employee::TYPE_HORSEMAN])->first();
// 发送小程序订阅消息给用户提示用户订单完成
// 订单编号:{{character_string2.DATA}}\n订单金额:{{amount5.DATA}}\n配送地址:{{thing3.DATA}}\n配送人员:{{thing4.DATA}}\n送达时间:{{time6.DATA}}\n
$userTmplId = env('APP_ENV') == 'prod' ? 'r7NktOF1-DZwB-KXLcCI_PgFKmVi1onsClFmL6zQtLY' : 'slYHfLTzKDGWRxnNLyJBr7sb__PEhh9OCrSBpMW_pdE';
$userPage = 'pages/orderDetail/orderDetail?global_order_id=' . $orderMain->global_order_id;
$userOpenid = User::query()->where(['id' => $orderMain->user_id])->value('openid');
$sendAddress = $orderMain->name.'|'.$orderMain->address.'|'.$orderMain->tel;
$sendHorseman = $horseman->name.'|'.$horseman->tel;
$this->sendSubscribeMessage(
$userOpenid,
$userTmplId,
[
'character_string2' => $orderMain->global_order_id,
'amount5' => $orderMain->money,
'thing3' => mb_strlen($sendAddress)>18 ? mb_substr($sendAddress,0,18).'..' : $sendAddress,
'thing4' => mb_strlen($sendHorseman)>18 ? mb_substr($sendHorseman,0,18).'..' : $sendHorseman,
'time6' => $orderMain->delivery_time_text?:date('Y-m-d H:i:s'),
],
$userPage
);
}
/**
* @inheritDoc
*/
@ -206,7 +402,73 @@ 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 = '')
{
if (empty($openid) || empty($template_id) || empty($data)) {
return ;
}
$app = Factory::miniProgram(config('wechat.applet'));
$app['guzzle_handler'] = CoroutineHandler::class;
$msgData = [
'touser' => $openid,
'template_id' => $template_id,
'page' => $page,
'miniprogram_state' => env('APP_ENV') == 'prod' ? 'formal' : 'developer',
'data' => $data
];
$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)
{
if ($forUserType == '') {
$app = Factory::miniProgram(config('wechat.applet'));
$app['guzzle_handler'] = CoroutineHandler::class;
$result = $app->subscribe_message->getTemplates()['data'];
$res = [];
foreach ($result as $key => &$tmpl) {
$res[] = [
'template_id' => $tmpl['priTmplId'] ?? '',
'title' => $tmpl['title'] ?? '',
];
}
return $res;
} else {
$builder = SubscribeMessageTemplate::query()->select('pri_tmpl_id as template_id', 'title');
if ($forUserType != 'all') {
$builder = $builder->where(['for_user_type' => $forUserType]);
}
return $builder->get()->toArray();
}
}
}

19
app/Service/v3/Implementations/OrderOnlineService.php

@ -3,6 +3,7 @@
namespace App\Service\v3\Implementations;
use App\Commons\Log;
use App\Constants\v3\Employee;
use App\Constants\v3\ErrorCode;
use App\Constants\v3\LogLabel;
use App\Constants\v3\OrderState;
@ -31,6 +32,7 @@ use App\Service\v3\Interfaces\GoodsActivityServiceInterface;
use App\Service\v3\Interfaces\GoodsInventoryServiceInterface;
use App\Service\v3\Interfaces\GoodsServiceInterface;
use App\Service\v3\Interfaces\InitialDeliveryServiceInterface;
use App\Service\v3\Interfaces\MiniprogramServiceInterface;
use App\Service\v3\Interfaces\PaymentServiceInterface;
use App\Service\v3\Interfaces\ShopCartUpdateServiceInterface;
use App\Service\v3\Interfaces\UserAddressServiceInterface;
@ -113,6 +115,12 @@ class OrderOnlineService implements OrderOnlineServiceInterface
*/
protected $goodsInventoryService;
/**
* @Inject
* @var MiniprogramServiceInterface
*/
protected $miniprogramService;
/**
* 下单
* @param $marketId
@ -749,9 +757,14 @@ class OrderOnlineService implements OrderOnlineServiceInterface
throw new ErrorCodeException(ErrorCode::ORDER_COMPLETE_FAIL);
}
// 记录badge
$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);
co(function () use ($orderMain) {
// 记录badge
$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);
// 发送订阅消息
$this->miniprogramService->subscribeMsgForOrderComplete($orderMain);
});
return true;
}

43
app/Service/v3/Interfaces/MiniprogramServiceInterface.php

@ -2,6 +2,8 @@
namespace App\Service\v3\Interfaces;
use App\Model\v3\OrderMain;
interface MiniprogramServiceInterface
{
/**
@ -28,6 +30,29 @@ interface MiniprogramServiceInterface
*/
public function sendTemMsgForAward($money, $note, $openid, $time);
/**
* 直接退款时订阅消息通知商户
* @param $orderId
* @param $refundStoreAmount
* @param $orderGoodsId
* @return mixed
*/
public function subscribeMsgForSingleRefund($orderId, $refundStoreAmount, $orderGoodsId = '');
/**
* 订单开始配送订阅消息通知用户和骑手
* @param $globalOrderId
* @return mixed
*/
public function subscribeMsgForDeliveryStart($globalOrderId);
/**
* 订单完成发送订阅消息给用户
* @param OrderMain|int|string $orderMain 模型实例或者globalOrderId
* @return mixed
*/
public function subscribeMsgForOrderComplete($orderMain);
/**
* 发送模板消息
* @param $openid
@ -38,4 +63,22 @@ interface MiniprogramServiceInterface
* @return mixed
*/
public function sendTempMsg($openid, $template_id, $data, $redirect_url = '', $applet_config = ['appid' => '', 'pagepath' => '']);
/**
* 发送小程序订阅消息
* @param $openid
* @param $template_id
* @param $data
* @param string $page
* @return mixed
*/
public function sendSubscribeMessage($openid, $template_id, $data, $page = '');
/**
* 获取订阅消息模板
* 为空时,从微信服务器获取全部,否则从本地服务器获取
* @param $forUserType
* @return mixed
*/
public function getSubscribeMessageTempList($forUserType);
}

1
config/routes.php

@ -101,6 +101,7 @@ Router::addGroup('/v3/', function () {
Router::post('location/addrSuggestion', 'App\Controller\v3\LocationController@addrSuggestion');
Router::post('userAddress/deliveryDistance', 'App\Controller\v3\UserAddressController@deliveryDistance');
Router::post('goods/getList', 'App\Controller\v3\GoodsController@getList');
Router::post('subscribeMsg/getTemplates', 'App\Controller\v3\MiniSubscribeMsgController@getTemplates');
},['middleware' => [\App\Middleware\Auth\ApiMiddleware::class]]);
// 需要登录的路由

Loading…
Cancel
Save