|
|
@@ -3,7 +3,9 @@ namespace common\components\delivery\platform\shunfeng;
|
|
|
|
|
|
use bizGhs\express\classes\DeliveryAuthTokenClass;
|
|
|
use bizGhs\express\classes\GhsDeliveryOrderClass;
|
|
|
+use bizHd\express\classes\HdDeliveryOrderClass;
|
|
|
use bizGhs\order\classes\OrderClass;
|
|
|
+use bizHd\order\classes\OrderClass as HdOrderClass;
|
|
|
use Yii;
|
|
|
|
|
|
/**
|
|
|
@@ -97,11 +99,7 @@ class CallBackHandler
|
|
|
$orderId = $data['sf_order_id'];
|
|
|
|
|
|
// 查找配送订单
|
|
|
- $deliveryOrder = GhsDeliveryOrderClass::getByCondition([
|
|
|
- 'deliveryId' => 'shunfeng',
|
|
|
- 'orderId' => $orderId
|
|
|
- ], true);
|
|
|
-
|
|
|
+ $deliveryOrder = $this->getDeliveryOrder($orderId);
|
|
|
if (!$deliveryOrder) {
|
|
|
Yii::error('顺丰配送订单不存在: sf_order_id=' . $orderId, 'shunfeng-callback');
|
|
|
return false;
|
|
|
@@ -126,10 +124,18 @@ class CallBackHandler
|
|
|
$deliveryOrder->save();
|
|
|
|
|
|
// 更新主订单的配送状态
|
|
|
- $order = OrderClass::getById($deliveryOrder->ghsOrderId, true);
|
|
|
- if ($order) {
|
|
|
- $order->sendStatus = $sendStatus;
|
|
|
- $order->save();
|
|
|
+ if(property_exists($deliveryOrder, 'ghsOrderId')){ // 批发
|
|
|
+ $order = OrderClass::getById($deliveryOrder->ghsOrderId, true);
|
|
|
+ if ($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
+ }
|
|
|
+ }elseif(property_exists($deliveryOrder, 'hdOrderId')){ // 零售
|
|
|
+ $order = HdOrderClass::getById($deliveryOrder->hdOrderId, true);
|
|
|
+ if ($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
return false;
|
|
|
@@ -156,13 +162,8 @@ class CallBackHandler
|
|
|
}
|
|
|
|
|
|
$orderId = $data['sf_order_id'];
|
|
|
-
|
|
|
// 查找配送订单
|
|
|
- $deliveryOrder = GhsDeliveryOrderClass::getByCondition([
|
|
|
- 'deliveryId' => 'shunfeng',
|
|
|
- 'orderId' => $orderId
|
|
|
- ], true);
|
|
|
-
|
|
|
+ $deliveryOrder = $this->getDeliveryOrder($orderId);
|
|
|
if (!$deliveryOrder) {
|
|
|
Yii::error('顺丰配送订单不存在: sf_order_id=' . $orderId, 'shunfeng-callback');
|
|
|
return false;
|
|
|
@@ -177,15 +178,24 @@ class CallBackHandler
|
|
|
$deliveryOrder->save();
|
|
|
|
|
|
// 更新主订单状态为已送达
|
|
|
- $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
- if ($order) {
|
|
|
- $order->sendStatus = $sendStatus;
|
|
|
- $order->save();
|
|
|
+ if(property_exists($deliveryOrder, 'ghsOrderId')){ // 批发
|
|
|
+ $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
+ if ($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
|
|
|
- // 确认送达,更新主订单状态
|
|
|
- if ($sendStatus == 5) {
|
|
|
- OrderClass::confirmReach($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
+ // 确认送达,更新主订单状态
|
|
|
+ if ($sendStatus == 5) {
|
|
|
+ OrderClass::confirmReach($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
+ }
|
|
|
}
|
|
|
+ }elseif(property_exists($deliveryOrder, 'hdOrderId')){ // 零售
|
|
|
+ $order = HdOrderClass::getById($deliveryOrder->hdOrderId, true);
|
|
|
+ if ($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
+ }
|
|
|
+ // TODO
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
@@ -209,13 +219,8 @@ class CallBackHandler
|
|
|
}
|
|
|
|
|
|
$orderId = $data['sf_order_id'];
|
|
|
-
|
|
|
// 查找配送订单
|
|
|
- $deliveryOrder = GhsDeliveryOrderClass::getByCondition([
|
|
|
- 'deliveryId' => 'shunfeng',
|
|
|
- 'orderId' => $orderId
|
|
|
- ], true);
|
|
|
-
|
|
|
+ $deliveryOrder = $this->getDeliveryOrder($orderId);
|
|
|
if (!$deliveryOrder) {
|
|
|
Yii::error('顺丰配送订单不存在: sf_order_id=' . $orderId, 'shunfeng-callback');
|
|
|
return false;
|
|
|
@@ -230,15 +235,24 @@ class CallBackHandler
|
|
|
$deliveryOrder->save();
|
|
|
|
|
|
// 更新主订单状态为取消
|
|
|
- $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
- if ($order) {
|
|
|
+ if(property_exists($deliveryOrder, 'ghsOrderId')) { // 批发
|
|
|
+ $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
+ if($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
+
|
|
|
+ // 更新主订单状态为取消
|
|
|
+ if($sendStatus == -1) {
|
|
|
+ OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }elseif(property_exists($deliveryOrder, 'hdOrderId')){ // 零售
|
|
|
+ $order = HdOrderClass::getById($deliveryOrder->hdOrderId, true);
|
|
|
+ if ($order) {
|
|
|
$order->sendStatus = $sendStatus;
|
|
|
$order->save();
|
|
|
-
|
|
|
- // 更新主订单状态为取消
|
|
|
- if ($sendStatus == -1) {
|
|
|
- OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
}
|
|
|
+ // TODO
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
@@ -262,13 +276,8 @@ class CallBackHandler
|
|
|
}
|
|
|
|
|
|
$orderId = $data['sf_order_id'];
|
|
|
-
|
|
|
// 查找配送订单
|
|
|
- $deliveryOrder = GhsDeliveryOrderClass::getByCondition([
|
|
|
- 'deliveryId' => 'shunfeng',
|
|
|
- 'orderId' => $orderId
|
|
|
- ], true);
|
|
|
-
|
|
|
+ $deliveryOrder = $this->getDeliveryOrder($orderId);
|
|
|
if (!$deliveryOrder) {
|
|
|
Yii::error('顺丰配送订单不存在: sf_order_id=' . $orderId, 'shunfeng-callback');
|
|
|
return false;
|
|
|
@@ -283,15 +292,24 @@ class CallBackHandler
|
|
|
$deliveryOrder->save();
|
|
|
|
|
|
// 更新主订单状态为异常
|
|
|
- $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
- if ($order) {
|
|
|
- $order->sendStatus = $sendStatus;
|
|
|
- $order->save();
|
|
|
+ if(property_exists($deliveryOrder, 'ghsOrderId')) { // 批发
|
|
|
+ $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
+ if($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
|
|
|
- // 更新主订单状态为异常
|
|
|
- if ($sendStatus == -2) {
|
|
|
- OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
+ // 更新主订单状态为异常
|
|
|
+ if($sendStatus == -2) {
|
|
|
+ OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
|
|
|
+ }
|
|
|
}
|
|
|
+ }elseif(property_exists($deliveryOrder, 'hdOrderId')){ // 零售
|
|
|
+ $order = HdOrderClass::getById($deliveryOrder->hdOrderId, true);
|
|
|
+ if ($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
+ }
|
|
|
+ // TODO
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
@@ -315,13 +333,8 @@ class CallBackHandler
|
|
|
}
|
|
|
|
|
|
$shopOrderId = $data['shop_order_id'];
|
|
|
-
|
|
|
// 查找配送订单
|
|
|
- $deliveryOrder = GhsDeliveryOrderClass::getByCondition([
|
|
|
- 'deliveryId' => 'shunfeng',
|
|
|
- 'orderId' => $shopOrderId
|
|
|
- ], true);
|
|
|
-
|
|
|
+ $deliveryOrder = $this->getDeliveryOrder($shopOrderId);
|
|
|
if (!$deliveryOrder) {
|
|
|
Yii::error('顺丰配送订单不存在: shop_order_id=' . $shopOrderId, 'shunfeng-callback');
|
|
|
return false;
|
|
|
@@ -336,10 +349,19 @@ class CallBackHandler
|
|
|
$deliveryOrder->save();
|
|
|
|
|
|
// 更新主订单状态为派单中
|
|
|
- $order = OrderClass::getById($deliveryOrder->ghsOrderId, true);
|
|
|
- if ($order) {
|
|
|
- $order->sendStatus = $sendStatus;
|
|
|
- $order->save();
|
|
|
+ if(property_exists($deliveryOrder, 'ghsOrderId')) { // 批发
|
|
|
+ $order = OrderClass::getById($deliveryOrder->ghsOrderId, true);
|
|
|
+ if($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
+ }
|
|
|
+ }elseif(property_exists($deliveryOrder, 'hdOrderId')){ // 零售
|
|
|
+ $order = HdOrderClass::getById($deliveryOrder->hdOrderId, true);
|
|
|
+ if ($order) {
|
|
|
+ $order->sendStatus = $sendStatus;
|
|
|
+ $order->save();
|
|
|
+ }
|
|
|
+ // TODO
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
@@ -478,4 +500,29 @@ class CallBackHandler
|
|
|
|
|
|
return $statusMap[$sfOrderStatus] ?? null;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据顺丰订单号查找配送订单
|
|
|
+ *
|
|
|
+ * @param string $orderId
|
|
|
+ * @return object|null
|
|
|
+ */
|
|
|
+ private function getDeliveryOrder($orderId)
|
|
|
+ {
|
|
|
+ // 查找批发配送订单
|
|
|
+ $deliveryOrder = GhsDeliveryOrderClass::getByCondition([
|
|
|
+ 'deliveryId' => 'shunfeng',
|
|
|
+ 'orderId' => $orderId
|
|
|
+ ], true);
|
|
|
+
|
|
|
+ if ($deliveryOrder) {
|
|
|
+ return $deliveryOrder;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查找零售配送订单
|
|
|
+ return HdDeliveryOrderClass::getByCondition([
|
|
|
+ 'deliveryId' => 'shunfeng',
|
|
|
+ 'orderId' => $orderId
|
|
|
+ ], true);
|
|
|
+ }
|
|
|
}
|