Pārlūkot izejas kodu

取消订单时库存回收

林海涛 1 gadu atpakaļ
vecāks
revīzija
a483de3e07
1 mainītis faili ar 13 papildinājumiem un 1 dzēšanām
  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();
         Db::startTrans();
         try {
         try {
-            $orderModel =  ShopOrders::where([
+            $orderModel =  ShopOrders::with('orderGoods.goodsSpecsInventory')->where([
                 'shop_order_type' => 1,
                 'shop_order_type' => 1,
                 'worker_id' => $params['worker_id'],
                 'worker_id' => $params['worker_id'],
                 'sn'=>$params['sn']
                 'sn'=>$params['sn']
@@ -165,6 +165,18 @@ class ShopOrderLogic extends BaseLogic
             if($orderModel->isEmpty()){
             if($orderModel->isEmpty()){
                 throw new \Exception('订单不存在或不是待支付状态');
                 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->shop_order_type = 0;
             $orderModel->save();
             $orderModel->save();
             Db::commit();
             Db::commit();