|
|
@@ -3,7 +3,9 @@ namespace common\components\delivery\services;
|
|
|
|
|
|
use biz\shop\classes\ShopClass;
|
|
|
use bizGhs\express\classes\DeliveryAuthTokenClass;
|
|
|
+use bizGhs\express\classes\GhsDeliveryOrderClass;
|
|
|
use bizGhs\order\classes\OrderItemClass;
|
|
|
+use bizHd\express\classes\HdDeliveryOrderClass;
|
|
|
use common\components\delivery\helpers\HttpClient;
|
|
|
use common\components\delivery\services\adapter\{DadaAdapter,
|
|
|
Functions,
|
|
|
@@ -11,6 +13,7 @@ use common\components\delivery\services\adapter\{DadaAdapter,
|
|
|
HuolalaAdapter,
|
|
|
FengniaoAdapter,
|
|
|
ShunfengAdapter}; // MeituanAdapter, DadaAdapter, UUAdapter,
|
|
|
+use common\components\util;
|
|
|
use Yii;
|
|
|
|
|
|
/**
|
|
|
@@ -120,12 +123,64 @@ class DispatchService
|
|
|
public function selectOrder($orderId, $thirdOrderNo='')
|
|
|
{
|
|
|
$adapter = $this->getAdapter();
|
|
|
+
|
|
|
if ($adapter instanceof ShansongAdapter) {
|
|
|
- return $adapter->selectOrder($orderId, $thirdOrderNo);
|
|
|
+ $deliveryOrder = $this->getDeliveryOrder($orderId, 'shansong');
|
|
|
+ return $adapter->selectOrder($deliveryOrder['orderId'], $thirdOrderNo);
|
|
|
+ }
|
|
|
+ if ($adapter instanceof HuolalaAdapter) {
|
|
|
+ $deliveryOrder = $this->getDeliveryOrder($orderId, 'huolala');
|
|
|
+ // if(isset($deliveryOrder->ghsOrderId)){ // 批发
|
|
|
+ // $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendType,sendStatus,deliveryId,purchaseId,customId,status');
|
|
|
+ // }elseif(isset($deliveryOrder->hdOrderId)){ // 零售
|
|
|
+ // $order = HdOrderClass::getById($deliveryOrder->hdOrderId, true, 'id,sendType,sendStatus,deliveryId,customId,status');
|
|
|
+ // }
|
|
|
+ return $adapter->selectOrder($deliveryOrder['orderId']);
|
|
|
}
|
|
|
+
|
|
|
+ if ($adapter instanceof FengniaoAdapter) {
|
|
|
+ //order_id 和 partner_order_code 必填一个
|
|
|
+ return $adapter->selectOrder(['order_id'=>$thirdOrderNo]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($adapter instanceof ShunfengAdapter) {
|
|
|
+ return $adapter->selectOrder($orderId);
|
|
|
+ }
|
|
|
+
|
|
|
return $adapter->selectOrder($orderId);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据订单号查找配送订单
|
|
|
+ *
|
|
|
+ * @param string $orderId
|
|
|
+ * @return object|null
|
|
|
+ */
|
|
|
+ private function getDeliveryOrder($orderId, $deliveryId)
|
|
|
+ {
|
|
|
+ // 查找批发配送订单
|
|
|
+ $deliveryOrder = GhsDeliveryOrderClass::getByCondition([
|
|
|
+ 'deliveryId' => $deliveryId,
|
|
|
+ 'ghsOrderId' => $orderId
|
|
|
+ ], false, null, 'id,orderId');
|
|
|
+
|
|
|
+ if ($deliveryOrder) {
|
|
|
+ return $deliveryOrder;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查找零售配送订单
|
|
|
+ $deliveryOrder = HdDeliveryOrderClass::getByCondition([
|
|
|
+ 'deliveryId' => $deliveryId,
|
|
|
+ 'hdOrderId' => $orderId
|
|
|
+ ], false, null, 'id,orderId');
|
|
|
+
|
|
|
+ if ($deliveryOrder) {
|
|
|
+ return $deliveryOrder;
|
|
|
+ }
|
|
|
+
|
|
|
+ util::fail('未找到对应的配送订单: ' . $orderId);
|
|
|
+ }
|
|
|
+
|
|
|
public function cancelOrder($orderId, $reason)
|
|
|
{
|
|
|
$adapter = $this->getAdapter();
|