From 4ef6cf2382c025ba944f12edb71ebe175f982358 Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Fri, 20 May 2022 10:52:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E4=B8=8B=E8=AE=A2=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F=EF=BC=8C=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8F=91=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Listeners/OrderPackage.php | 44 ++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/app/Listeners/OrderPackage.php b/app/Listeners/OrderPackage.php index ad2218b4..58110210 100644 --- a/app/Listeners/OrderPackage.php +++ b/app/Listeners/OrderPackage.php @@ -52,32 +52,34 @@ class OrderPackage $sku_id = $item['sku_id']; $send = $item['send']; $order_product = $order_products->firstWhere('sku_id', $sku_id); - if ($order_product) { + $product = $store->productSkus()->findOrFail($sku_id); + + // 订单商品, 需要发货, 店铺库存足够 + if ($order_product && $send > 0 && $product->pivot->amount > $send) { array_push($package_params, [ 'order_product_id' => $order_product->id, 'quantity' => $send ]); - } - // 添加发货记录 - $sku_id = $order_product->sku_id; - $product = $store->productSkus()->findOrFail($sku_id); - if ($product->pivot->amount - $send < 0) { - throw new BizException('店铺的 ' . $product->name .' 库存不足'); - } - $store->productSkus()->updateExistingPivot($product->id, [ - 'amount' => $product->pivot->amount - $send - ]); - $store->stockLogs()->create([ - 'operator_type' => $inviter ? get_class($inviter) : '', - 'operator_id' => $inviter ? $inviter->id : '', - 'source_type' => Order::class, - 'source_id' => $order->id, - 'amount' => 0-$send, - 'product_sku_id' => $product->id, - 'remarks' => '店铺提货', - 'tag_id' => $tag->id - ]); + if ($product->pivot->amount - $send < 0) { + throw new BizException('店铺的 ' . $product->name .' 库存不足'); + } + // 更新店铺商品库存 + $store->productSkus()->updateExistingPivot($product->id, [ + 'amount' => $product->pivot->amount - $send + ]); + // 添加发货记录 + $store->stockLogs()->create([ + 'operator_type' => $inviter ? get_class($inviter) : '', + 'operator_id' => $inviter ? $inviter->id : '', + 'source_type' => Order::class, + 'source_id' => $order->id, + 'amount' => 0-$send, + 'product_sku_id' => $product->id, + 'remarks' => '店铺提货', + 'tag_id' => $tag->id + ]); + } } // 发货 if (count($package_params) > 0) {