From 2221760c84914d8d91bcfd9fcf820aa03926102c Mon Sep 17 00:00:00 2001 From: liapples Date: Wed, 1 Sep 2021 11:54:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=A2=E5=8D=95=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E5=AD=97=E6=AE=B5=E5=92=8C=E5=BA=93=E5=AD=98=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E5=A2=9E=E5=8A=A0=E4=B9=90=E8=A7=82=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/OrderController.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/OrderController.php b/app/Http/Controllers/Api/OrderController.php index 88ec533..b4c5f0c 100644 --- a/app/Http/Controllers/Api/OrderController.php +++ b/app/Http/Controllers/Api/OrderController.php @@ -52,7 +52,7 @@ class OrderController extends Controller } } - $order_list = $order_list->select('id', 'agent_product_id', 'product_id', 'title', 'picture', 'price', 'num', 'status', 'created_at') + $order_list = $order_list->select('id', 'agent_product_id', 'product_id', 'title', 'picture', 'price', 'num', 'status', 'timeout', 'created_at') ->orderBy('id', 'DESC') ->simplePaginate(15) ->toArray(); @@ -154,10 +154,23 @@ class OrderController extends Controller $title = $ap->title; //产品标题 //供应商产品表减库存 - $ap->product->decrement('stock', $formData['num']); + $product_ids = explode(',', $ap->product_ids); + $affect_row = Product::query() + ->where('stock', '>=', $formData['num']) //乐观锁 + ->whereIn('id', $product_ids) + ->decrement('stock', $formData['num']); + if ($affect_row != count($product_ids)) { + throw new \Exception('供应产品库存不足'); + } //代理商产品表减库存 - $ap->decrement('stock', $formData['num']); + $affect_row = AgentProduct::query() + ->where('stock', '>=', $formData['num']) //乐观锁 + ->where('id', $ap->id) + ->decrement('stock', $formData['num']); + if (!$affect_row) { + throw new \Exception('商户产品库存不足'); + } if ($formData['pay_type'] == PayType::DEPOSIT_PAY && $ap->deposit_timeout > 0) { $timeout = date('Y-m-d H:i:s', time() + $ap->deposit_timeout * 60); @@ -190,7 +203,6 @@ class OrderController extends Controller ]); //存入订单产品表 - $product_ids = explode(',', $ap->product_ids); $supplier_product_info = Product::whereIn('id', $product_ids) ->orderBy('id')->get(['id AS product_id', 'supplier_id'])->toArray();