|
|
@@ -1,6 +1,8 @@
|
|
|
<?php
|
|
|
namespace common\components\delivery\platform\shunfeng;
|
|
|
|
|
|
+use biz\common\classes\GhsNotifyClass;
|
|
|
+use biz\common\classes\HdNotifyClass;
|
|
|
use bizGhs\express\classes\DeliveryAuthTokenClass;
|
|
|
use bizGhs\express\classes\GhsDeliveryOrderClass;
|
|
|
use bizHd\express\classes\HdDeliveryOrderClass;
|
|
|
@@ -126,7 +128,7 @@ class CallBackHandler
|
|
|
$order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendType,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
if ($order) {
|
|
|
if ($extraHandler) {
|
|
|
- call_user_func($extraHandler, $order, $sendStatus, true);
|
|
|
+ call_user_func($extraHandler, $order, $sendStatus, true, $data);
|
|
|
}
|
|
|
|
|
|
$cg = PurchaseClass::getById($order->purchaseId, true, 'id,sendStatus');
|
|
|
@@ -142,7 +144,7 @@ class CallBackHandler
|
|
|
$order = HdOrderClass::getById($deliveryOrder->hdOrderId, true, 'id,sendType,sendStatus,deliveryId,customId,status');
|
|
|
if ($order) {
|
|
|
if ($extraHandler) {
|
|
|
- call_user_func($extraHandler, $order, $sendStatus, false);
|
|
|
+ call_user_func($extraHandler, $order, $sendStatus, false, $data);
|
|
|
}
|
|
|
|
|
|
$order->sendStatus = $sendStatus;
|
|
|
@@ -175,7 +177,7 @@ class CallBackHandler
|
|
|
*/
|
|
|
private function handleOrderComplete($data)
|
|
|
{
|
|
|
- return $this->processOrderCallback($data, '顺丰订单完成回调', 'sf_order_id', function($order, $sendStatus, $isGhs) {
|
|
|
+ return $this->processOrderCallback($data, '顺丰订单完成回调', 'sf_order_id', function($order, $sendStatus, $isGhs, $data) {
|
|
|
if ($isGhs && $sendStatus == 5) {
|
|
|
OrderClass::confirmReach($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
}
|
|
|
@@ -191,9 +193,13 @@ class CallBackHandler
|
|
|
*/
|
|
|
private function handleSfCancel($data)
|
|
|
{
|
|
|
- return $this->processOrderCallback($data, '顺丰取消订单回调', 'sf_order_id', function($order, $sendStatus, $isGhs) {
|
|
|
- if ($isGhs && !in_array($order->sendStatus, [-2, -1]) && $sendStatus == -1) {
|
|
|
+ return $this->processOrderCallback($data, '顺丰取消订单回调', 'sf_order_id', function($order, $sendStatus, $isGhs, $data) {
|
|
|
+ if ($isGhs && !in_array($order->sendStatus, [-1]) && $sendStatus == -1) {
|
|
|
OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
+
|
|
|
+ $cancelCode = $data['cancel_code'];
|
|
|
+ $event = $this->cancelFrom($sendStatus, $cancelCode);
|
|
|
+ GhsNotifyClass::ptErrorNotify($order->id, $event);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -207,9 +213,13 @@ class CallBackHandler
|
|
|
*/
|
|
|
private function handleRiderException($data)
|
|
|
{
|
|
|
- return $this->processOrderCallback($data, '顺丰订单异常回调', 'sf_order_id', function($order, $sendStatus, $isGhs) {
|
|
|
- if ($isGhs && !in_array($order->sendStatus, [-2, -1]) && $sendStatus == -2) {
|
|
|
+ return $this->processOrderCallback($data, '顺丰订单异常回调', 'sf_order_id', function($order, $sendStatus, $isGhs, $data) {
|
|
|
+ if ($isGhs && !in_array($order->sendStatus, [-1]) && $sendStatus == -2) {
|
|
|
OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
+
|
|
|
+ $exId = $data['ex_id'];
|
|
|
+ $event = $this->cancelFrom($sendStatus, $exId);
|
|
|
+ HdNotifyClass::ptErrorNotify($order->id, $event);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -407,4 +417,48 @@ class CallBackHandler
|
|
|
'orderId' => $orderId
|
|
|
], true);
|
|
|
}
|
|
|
+
|
|
|
+ private function cancelFrom($sendStatus, $cancelCode = 0)
|
|
|
+ {
|
|
|
+ if($sendStatus == -1){
|
|
|
+ $reasons = [
|
|
|
+ 100 => '误操作,抢错订单',
|
|
|
+ 101 => '订单距离太远',
|
|
|
+ 102 => '餐箱已满,无法配送',
|
|
|
+ 103 => '物品过大无法配送',
|
|
|
+ 104 => '联系不上寄件人',
|
|
|
+ 105 => '寄方无法提供待配送物品(缺货/出餐慢/已配送等)',
|
|
|
+ 106 => '寄方要求取消(暂时不需要寄件了/重复发单/信息有误)',
|
|
|
+ 107 => '配送车辆故障',
|
|
|
+ 108 => '其他,请注明原因',
|
|
|
+ 303 => '骑士要求取消',
|
|
|
+ 310 => '超出配送范围',
|
|
|
+ 500 => '15分钟无人接单',
|
|
|
+ 501 => '不兜底订单自动取消',
|
|
|
+ 502 => '超期望送达8小时未完成',
|
|
|
+ ];
|
|
|
+ return $reasons[$cancelCode] ?? '未知';
|
|
|
+ }
|
|
|
+
|
|
|
+ if($sendStatus == -2){
|
|
|
+ $exIds = [
|
|
|
+ 1001 => '商家出货慢',
|
|
|
+ 1007 => '更改取货地址',
|
|
|
+ 2001 => '顾客电话无法接通',
|
|
|
+ 2004 => '更改期望送达时间',
|
|
|
+ 2005 => '顾客拒收',
|
|
|
+ 2008 => '顾客不在家',
|
|
|
+ 2009 => '更改送货地址',
|
|
|
+ 2010 => '顾客拒绝实名认证',
|
|
|
+ 2013 => '无法联系用户,退回寄件人',
|
|
|
+ 3004 => '实名认证校验失败',
|
|
|
+ 4001 => '配送地址错误',
|
|
|
+ 4002 => '其他',
|
|
|
+ 4003 => '托寄物丢失或损坏',
|
|
|
+ ];
|
|
|
+ return $exIds[$cancelCode] ?? '未知';
|
|
|
+ }
|
|
|
+
|
|
|
+ return '未知';
|
|
|
+ }
|
|
|
}
|