Переглянути джерело

fix bug: 配送完成或配送取消时,要更新 xhCg 的 sendStatus 字段

shizhongqi 8 місяців тому
батько
коміт
cd96f4dab3

+ 2 - 0
biz-hd/purchase/classes/PurchaseClass.php

@@ -102,6 +102,7 @@ class PurchaseClass extends BaseClass
     public static function cancelFh($cg, $params)
     {
         $cg->status = 2;
+        $cg->sendStatus = -1;
         $cg->save();
         $orderSn = $cg->orderSn ?? '';
         $itemList = PurchaseItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
@@ -329,6 +330,7 @@ class PurchaseClass extends BaseClass
             }
         }
         $cg->status = 4;
+        $cg->sendStatus = 5;
         $cg->stockChange = 1;
         $cg->save();
     }

+ 19 - 13
common/components/delivery/platform/shansong/OrderStatusCallBack.php

@@ -60,29 +60,35 @@ class OrderStatusCallBack
             
             // 区分类别,然后更新主订单状态
             if(isset($deliveryOrder->ghsOrderId)){ // 批发
+                $type = '批发';
                 util::checkRepeatCommit('ghs_'.$deliveryOrder->ghsOrderId.'_'.$sendStatus, 2);// 防止重复回调
                 $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendType,sendStatus,deliveryId,purchaseId,customId,status');
+
+                if ($order) {
+                    $order->sendStatus = $sendStatus;
+                    $order->save();
+
+                    // 确认送达或取消订单,更新主订单状态
+                    if ($sendStatus == 5) {
+                        OrderClass::confirmReach($order, ['staffId' => 0, 'staffName' => '']);
+                    }
+                    if ($sendStatus == -1 || $sendStatus == -2) {
+                        OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
+                    }
+                }
             }elseif(isset($deliveryOrder->hdOrderId)){ // 零售
+                $type = '零售';
                 util::checkRepeatCommit('hd_'.$deliveryOrder->hdOrderId.'_'.$sendStatus, 2);// 防止重复回调
                 $order = HdOrderClass::getById($deliveryOrder->hdOrderId, true, 'id,sendType,sendStatus,deliveryId,customId,status');
                 $order->status = $orderStatus;
-            }
-            if ($order) {
-                $order->sendStatus = $sendStatus;
-                $order->save();
 
-                // 确认送达或取消订单,更新主订单状态
-                if ($sendStatus == 5) {
-                    OrderClass::confirmReach($order, ['staffId' => 0, 'staffName' => '']);
-                }
-                if ($sendStatus == -1 || $sendStatus == -2) {
-                    OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']);
+                if ($order) {
+                    $order->sendStatus = $sendStatus;
+                    $order->save();
                 }
             }
             
-            Yii::info('闪送订单状态更新成功: issOrderNo=' . $data['issOrderNo'] . 
-                     ', status=' . $data['status'] . 
-                     ', sendStatus=' . $sendStatus, 'shansong-callback');
+            Yii::info("闪送({$type})订单状态更新成功: issOrderNo={$data['issOrderNo']}, status={$data['status']} , sendStatus={$sendStatus}", 'shansong-callback');
             return true;
         } catch (\Exception $e) {
             Yii::error('闪送回调处理异常: ' . $e->getMessage() .