Kaynağa Gözat

取消订单

shish 3 yıl önce
ebeveyn
işleme
29b0c80be8

+ 38 - 13
app-hd/controllers/MtController.php

@@ -3,6 +3,7 @@
 namespace hd\controllers;
 
 use biz\shop\classes\ShopExtClass;
+use biz\stock\classes\GoodsStockRecordClass;
 use bizHd\custom\classes\CustomClass;
 use bizHd\goods\classes\CategoryClass;
 use bizHd\goods\classes\GoodsCategoryClass;
@@ -526,18 +527,6 @@ class MtController extends PublicController
             return Json::encode(['data' => 'ok']);
         }
 
-        //只要制作单没有完成,则走取消订单流程。如果有制作单完成,则订单状态和制作单暂时先不管,后面要兼容。
-        $orderId = $order->id ?? 0;
-        $workList = WorkClass::getAllByCondition(['orderId' => $orderId], null, '*', null, true);
-        if (!empty($workList)) {
-            foreach ($workList as $work) {
-                if ($work->status == 0) {
-                    $work->status = 2;
-                    $work->save();
-                }
-            }
-        }
-
         //订单取消,金额全部退还
         $shop = ShopClass::getById($shopId, true);
         if (empty($shop)) {
@@ -554,7 +543,43 @@ class MtController extends PublicController
         $post['shopAdminId'] = 0;
         $post['mainId'] = $mainId;
         $post['shopAdminName'] = '美团APP';
-        HdRefundService::addRefund($post, $order);
+        $refund = HdRefundService::addRefund($post, $order);
+        $refundOrderSn = $refund->orderSn ?? '';
+
+        //没有完成的制作单取消
+        $orderId = $order->id ?? 0;
+        $workList = WorkClass::getAllByCondition(['orderId' => $orderId], null, '*', null, true);
+        if (!empty($workList)) {
+            foreach ($workList as $work) {
+                if ($work->status == 0) {
+                    $work->status = 2;
+                    $work->save();
+
+
+                    $num = $work->num ?? 0;
+                    $goodsId = $work->goodsId ?? 0;
+                    $mainId = $work->mainId ?? 0;
+                    $respond = GoodsClass::addStock($goodsId, $mainId, $num);
+                    $oldStock = $respond['oldStock'] ?? 0;
+                    $newStock = $respond['newStock'] ?? 0;
+
+                    $data = [];
+                    $data['sjId'] = $sjId;
+                    $data['shopId'] = $shopId;
+                    $data['mainId'] = $mainId;
+                    $data['orderSn'] = $refundOrderSn;
+                    $data['goodsId'] = $goodsId;
+                    $data['goodsNum'] = $num;
+                    $data['oldStock'] = $oldStock;
+                    $data['newStock'] = $newStock;
+                    $data['relateName'] = '美团APP';
+
+
+                    GoodsStockRecordClass::cancelOrderGoods($data);
+
+                }
+            }
+        }
 
         //制作单取消通知
         $shopExt = ShopExtClass::getByCondition(['shopId' => $shopId], true);

+ 9 - 0
biz/stock/classes/GoodsStockRecordClass.php

@@ -22,6 +22,7 @@ class GoodsStockRecordClass extends BaseClass
     const STOCK_RECORD_TYPE_REFUND = 10;// 退款退货
     const STOCK_RECORD_TYPE_PURCHASE_CANCEL = 11; //取消退回采购(制作商品)
     const STOCK_RECORD_TYPE_CG = 12;//采购
+    const STOCK_RECORD_TYPE_CANCEL_ORDER = 13;//取消订单
 
     public static $typeMap = [
         self::STOCK_RECORD_TYPE_PURCHASE => '制作',
@@ -36,6 +37,7 @@ class GoodsStockRecordClass extends BaseClass
         self::STOCK_RECORD_TYPE_REFUND => '退货',
         self::STOCK_RECORD_TYPE_PURCHASE_CANCEL => '取消制作',
         self::STOCK_RECORD_TYPE_CG => '采购',
+        self::STOCK_RECORD_TYPE_CANCEL_ORDER => '取消订单',
     ];
 
     //取消订单 ssh 20220516
@@ -86,6 +88,13 @@ class GoodsStockRecordClass extends BaseClass
         return self::addRecord($data);
     }
 
+    //取消订单,制作单取消,库存要求回滚
+    public static function cancelOrderGoods($data)
+    {
+        $data['recordType'] = self::STOCK_RECORD_TYPE_CANCEL_ORDER;
+        return self::addRecord($data);
+    }
+
     //新增库存变更记录
     public static function addRecord($data)
     {