Просмотр исходного кода

滴滴跑腿的第三方订单号(即订单表的订单号)统一要经过 Didi::generateUniOroder() -- 修改成可用方案

shizhongqi 7 месяцев назад
Родитель
Сommit
859ee7f142

+ 8 - 2
app-ghs/controllers/DeliveryController.php

@@ -297,6 +297,11 @@ class DeliveryController extends BaseController
                     'fee' => $ret['data']['fee'],
                     'orderStatus' => 0
                 ];
+
+                if($platform == 'didi'){
+                    $data['createdAt'] = date('Y-m-d H:i:s', $ret['data']['timeStamp']);
+                }
+
                 GhsDeliveryOrderClass::add($data);
             } else {
                 Yii::info('重复创建订单');
@@ -409,8 +414,9 @@ class DeliveryController extends BaseController
             $orderId = $order['orderSn'];
         }
         if ($platform == 'didi') {
-            $order = OrderClass::getById($gdo->ghsOrderId, false, 'id,orderSn');
-            $post['outOrderNo'] = \common\components\delivery\platform\didi\Didi::generateUniOroder($order['orderSn']);
+            $order = OrderClass::getById($gdo->ghsOrderId, false, 'id,orderSn,createdAt');
+            $timeStamp = strtoTime($order['createdAt']);
+            $post['outOrderNo'] = \common\components\delivery\platform\didi\Didi::generateUniOroder($order['orderSn'], $timeStamp);
             $post['cancelSource'] = 1; // TODO 要增加取消码判断
         }
 

+ 2 - 2
common/components/delivery/platform/didi/Didi.php

@@ -108,9 +108,9 @@ class Didi
      * @param $orderId
      * @return string
      */
-    public static function generateUniOroder($orderId)
+    public static function generateUniOroder($orderId, $timeStamp)
     {
-        return $orderId . '-' . ((int)microtime(true) * 1000);
+        return $orderId . '-' . $timeStamp;
     }
 
     /**

+ 2 - 1
common/components/delivery/services/DispatchService.php

@@ -168,7 +168,8 @@ class DispatchService
 
         if ($adapter instanceof DidiAdapter) {
             $deliveryOrder = $this->getDeliveryOrder($orderId, 'didi');
-            return $adapter->selectOrder($deliveryOrder['orderId'], $thirdOrderNo);
+            $timeStamp = strtoTime($deliveryOrder->createdAt);
+            return $adapter->selectOrder($deliveryOrder['orderId'], $thirdOrderNo, $timeStamp);
         }
 
         return $adapter->selectOrder($orderId);

+ 5 - 3
common/components/delivery/services/adapter/DidiAdapter.php

@@ -267,9 +267,10 @@ class DidiAdapter extends Didi implements Adapter
         $goodsType = self::GOODS_TYPE_MAP[$goodTypeInt] ?? 'OTHER';
 
         // ------------------ 入参构建 ------------------
+        $timeStamp = time();
         $businessParams = [
             'estimateIdList' => [$estimateId], // 预估ID
-            'outOrderNo' => self::generateUniOroder($order['issOrderNo']), // 接入方订单号
+            'outOrderNo' => self::generateUniOroder($order['issOrderNo'], $timeStamp), // 接入方订单号
             'fromAddress' => $fromAddress,
             'toAddress' => $toAddress,
             'goodsType' => $goodsType,
@@ -295,6 +296,7 @@ class DidiAdapter extends Didi implements Adapter
                     'distance' => 0,
                     'fee' => 0,
                     // 可以附带其他信息
+                    'timeStamp' => $timeStamp,
                 ]
             ];
         }
@@ -401,9 +403,9 @@ class DidiAdapter extends Didi implements Adapter
     /**
      * 查询订单详情
      */
-    public function selectOrder($orderId, $thirdOrderNo = '')
+    public function selectOrder($orderId, $thirdOrderNo = '', $timeStamp)
     {
-        $thirdOrderNo = Didi::generateUniOroder($thirdOrderNo);
+        $thirdOrderNo = Didi::generateUniOroder($thirdOrderNo, $timeStamp);
         $businessParams = [
             'didiOrderNo' => (int)$orderId,
             'outOrderNo' => $thirdOrderNo,