mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-29 05:50:50 +00:00
feat: 添加小程序订单推送事件
This commit is contained in:
parent
6668d26567
commit
37e3344262
@ -977,4 +977,9 @@ class StoreOrderDao extends BaseDao
|
||||
$query->page($page, $limit);
|
||||
})->field(['uid', 'order_id', 'real_name', 'status', 'pay_price', 'total_num', 'add_time', 'pay_time', 'paid'])->order('add_time desc')->select()->toArray();
|
||||
}
|
||||
|
||||
public function getSubOrderNotSend(int $pid, int $order_id)
|
||||
{
|
||||
return $this->getModel()->where('id', $pid)->where('status', '0')->where('id', '<>', $order_id)->count();
|
||||
}
|
||||
}
|
||||
|
||||
69
crmeb/app/listener/order/OrderShippingListener.php
Normal file
69
crmeb/app/listener/order/OrderShippingListener.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace app\listener\order;
|
||||
|
||||
use app\model\order\StoreOrder;
|
||||
use app\services\order\StoreOrderCartInfoServices;
|
||||
use app\services\order\StoreOrderServices;
|
||||
use app\services\wechat\WechatUserServices;
|
||||
use crmeb\exceptions\AdminException;
|
||||
use crmeb\interfaces\ListenerInterface;
|
||||
use crmeb\services\easywechat\orderShipping\MiniOrderService;
|
||||
|
||||
class OrderShippingListener implements ListenerInterface
|
||||
{
|
||||
public function handle($event): void
|
||||
{
|
||||
/** @var StoreOrder $order */
|
||||
[$order, $delivery_type, $delivery_id, $delivery_name] = $event;
|
||||
$order_shipping_open = sys_config('order_shipping_open', 0); // 小程序发货信息管理服务开关
|
||||
if ($order && $order_shipping_open) {
|
||||
if ($order['channel_type'] = 'routine') {
|
||||
$out_trade_no = $order['order_id'];
|
||||
//判断订单是否拆单
|
||||
$delivery_mode = 1;
|
||||
$is_all_delivered = true;
|
||||
if ($order['pid'] > 0) {
|
||||
$order = '';
|
||||
$delivery_mode = 2;
|
||||
// 判断订单是否全部发货
|
||||
/** @var StoreOrderServices $orderServices */
|
||||
$orderServices = app()->make(StoreOrderServices::class);
|
||||
$is_all_delivered = $orderServices->checkSubOrderNotSend((int)$order['pid'], (int)$order['id']);
|
||||
}
|
||||
|
||||
// 整理商品信息
|
||||
/** @var StoreOrderCartInfoServices $orderInfoServices */
|
||||
$orderInfoServices = app()->make(StoreOrderCartInfoServices::class);
|
||||
$item_desc = $orderInfoServices->getCarIdByProductTitle((int)$order['id'], true);
|
||||
$shipping_list = [
|
||||
'item_desc' => $item_desc
|
||||
];
|
||||
//判断订单物流模式
|
||||
if ($order['shipping_type'] == 1) {
|
||||
if ($delivery_type == 1) {
|
||||
$shipping_list = [
|
||||
'tracking_no' => $delivery_id ?? '',
|
||||
'express_company' => $delivery_name ?? '',
|
||||
'item_desc' => $item_desc,
|
||||
'contact' => [
|
||||
'receiver_contact' => $order['user_phone']
|
||||
]
|
||||
];
|
||||
}
|
||||
$logistics_type = $delivery_type;
|
||||
} else {
|
||||
$logistics_type = 4;
|
||||
}
|
||||
//查找支付者openid
|
||||
/** @var WechatUserServices $wechatUserService */
|
||||
$wechatUserService = app()->make(WechatUserServices::class);
|
||||
$payer_openid = $wechatUserService->uidToOpenid($order['pay_uid'], 'routine');
|
||||
if (empty($payer_openid)) {
|
||||
throw new AdminException('订单支付人异常');
|
||||
}
|
||||
MiniOrderService::shippingByTradeNo($out_trade_no, $logistics_type, $shipping_list, $payer_openid, $delivery_mode, $is_all_delivered);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2697,4 +2697,14 @@ HTML;
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function checkSubOrderNotSend(int $pid, int $order_id)
|
||||
{
|
||||
$order_count = $this->dao->getSubOrderNotSend($pid, $order_id);
|
||||
if ($order_count > 0) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user