Jelajahi Sumber

取消订单时库存回收

林海涛 1 tahun lalu
induk
melakukan
a483de3e07
1 mengubah file dengan 13 tambahan dan 1 penghapusan
  1. 13 1
      app/workerapi/logic/shops/ShopOrderLogic.php

+ 13 - 1
app/workerapi/logic/shops/ShopOrderLogic.php

@@ -157,7 +157,7 @@ class ShopOrderLogic extends BaseLogic
     {
         Db::startTrans();
         try {
-            $orderModel =  ShopOrders::where([
+            $orderModel =  ShopOrders::with('orderGoods.goodsSpecsInventory')->where([
                 'shop_order_type' => 1,
                 'worker_id' => $params['worker_id'],
                 'sn'=>$params['sn']
@@ -165,6 +165,18 @@ class ShopOrderLogic extends BaseLogic
             if($orderModel->isEmpty()){
                 throw new \Exception('订单不存在或不是待支付状态');
             }
+            if($orderModel->orderGoods()->count() === 0){
+                throw new \Exception('订单商品不存在');
+            }
+            $updateData = [];
+            foreach($orderModel->orderGoods as $goods){
+               if(isset($goods->goodsSpecsInventory->remaining_inventory)){
+                   $updateData[$goods->goodsSpecsInventory->id] = ['remaining_inventory'=> $goods->goodsSpecsInventory->remaining_inventory+= $goods['number']];
+               }
+            }
+            if(!empty($updateData)){
+                ShopGoodSpecsInventory::updateWhenCase($updateData);
+            }
             $orderModel->shop_order_type = 0;
             $orderModel->save();
             Db::commit();