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

更新: 把订单的状态从取消状态变成待付款状态,并重新占用库存

shizhongqi 1 год назад
Родитель
Сommit
4dc10ee482
1 измененных файлов с 56 добавлено и 1 удалено
  1. 56 1
      biz-hd/order/classes/OrderClass.php

+ 56 - 1
biz-hd/order/classes/OrderClass.php

@@ -20,6 +20,7 @@ use bizGhs\stock\classes\StockRecordClass;
 use bizGhs\ws\services\WsService;
 use bizHd\custom\classes\CustomClass;
 use bizHd\merchant\classes\SjClass;
+use bizHd\order\classes\OrderItemClass;
 use bizHd\refund\classes\HdRefundClass;
 use bizHd\shop\classes\MainClass;
 use bizHd\shop\classes\ShopMoneyChangeClass;
@@ -265,7 +266,12 @@ class OrderClass extends BaseClass
             $shopId = $order->shopId;
             $shop = ShopClass::getById($shopId, true);
             if (!empty($shop)) {
-                HdRefundClass::onlyRefundAmount($shop, $order);
+                // HdRefundClass::onlyRefundAmount($shop, $order);
+                // 恢复取消的订单,即:把订单的状态从取消状态变成待付款状态
+                $res = self::revoverOrderToPay($order);
+                if ($res == false) {
+                    noticeUtil::push('恢复取消的订单失败,订单号:' . $orderSn, '15280215347');
+                }
             }
             util::stop("SUCCESS");
         }
@@ -531,6 +537,55 @@ class OrderClass extends BaseClass
         }
     }
 
+    // 恢复订单 -- 即:把订单的状态从取消状态变成待付款状态
+    public static function revoverOrderToPay($order)
+    {
+        if ($order->status != 5) {
+            return false;
+        }
+        $order->status = 1;
+        $order->deadline = date("Y-m-d H:i:s", strtotime("+1 day"));
+        $order->save();
+
+        // 重新占用库存(与取消订单时的库存回滚相反)
+        $item = OrderItemClass::getByCondition(['orderSn' => $order->orderSn], true);
+        if (!empty($item)) {
+            $ptItemId = $item->ptItemId ?? 0;
+            $sjId = $item->sjId ?? 0;
+            $shopId = $item->shopId ?? 0;
+            $mainId = $item->mainId ?? 0;
+            $ratio = $item->ratio ?? 20;
+            $unitType = $item->unitType ?? 0;
+            if ($unitType == 0) {
+                $bigNum = $item->num;
+                $smallNum = 0;
+            } else {
+                $bigNum = 0;
+                $smallNum = $item->num;
+            }
+            $itemId = $item->itemId ?? 0;
+            
+            // 重新扣减库存(占用库存)
+            $stockInfo = ProductClass::decreaseStock($itemId, $bigNum, $smallNum, true);
+            $recordData = [];
+            $recordData['sjId'] = $sjId;
+            $recordData['shopId'] = $shopId;
+            $recordData['mainId'] = $mainId;
+            $recordData['itemId'] = $ptItemId;
+            $recordData['itemNum'] = ProductClass::mergeItemNum($bigNum, $smallNum, $ratio);
+            $recordData['oldStock'] = $stockInfo['oldStock'];
+            $recordData['newStock'] = $stockInfo['newStock'];
+            $recordData['productId'] = $itemId;
+            $recordData['orderSn'] = $order->orderSn;
+            $recordData['relateName'] = '系统恢复订单';
+            StockRecordClass::hdKdAddRecord($recordData);
+        } else {
+            return false;
+        }
+        
+        return true;
+    }
+
     // 扣库存
     protected static function decGoodsStock($orderGoods)
     {