From 804162083bef07b73684412ee15a9d9c6a354fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=B8=96=E7=95=8C?= <642747453@qq.com> Date: Thu, 11 Aug 2022 05:11:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#10000=20=E5=A6=99=E9=80=89=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=8E=A8=E9=80=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Listeners/UpdateBusinessGoodsStock.php | 3 +++ app/Services/Business/BusinessClient.php | 17 +++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Listeners/UpdateBusinessGoodsStock.php b/app/Listeners/UpdateBusinessGoodsStock.php index 8f99cbf..9c54e2b 100644 --- a/app/Listeners/UpdateBusinessGoodsStock.php +++ b/app/Listeners/UpdateBusinessGoodsStock.php @@ -36,6 +36,9 @@ class UpdateBusinessGoodsStock implements ShouldQueue public function handle(Registered $event) { $shops = Shop::query()->where('id', '<>', $this->businessOrderItem->shop_id)->where('status', 1)->get(['id', 'plat_id']); + if (empty($shops)) { + return; + } [$goodsCode, $skuCode] = explode('_', $this->businessOrderItem->external_sku_id); $goodsSku = GoodsSku::query()->where('sku_code', $skuCode) ->with(['goods' => function ($query) use ($goodsCode) { diff --git a/app/Services/Business/BusinessClient.php b/app/Services/Business/BusinessClient.php index be66a2a..d1392ed 100644 --- a/app/Services/Business/BusinessClient.php +++ b/app/Services/Business/BusinessClient.php @@ -5,6 +5,7 @@ namespace App\Services\Business; use App\Listeners\UpdateBusinessGoodsStock; use App\Models\BusinessGoodsSku; use App\Models\BusinessOrder; +use App\Models\BusinessOrderItem; use App\Models\GoodsSku; use App\Models\Log; use App\Models\Shop; @@ -35,21 +36,17 @@ abstract class BusinessClient foreach ($orders as $order) { unset($order['custom_item_list'], $order['logistics_list'], $order['gift_order_list']); $order['shop_id'] = $shopId; - $orderRecord = BusinessOrder::query()->where('shop_id', $shopId)->where('order_sn', $order['order_sn'])->first(); - if (empty($orderRecord)) { - $orderRecord->create($order); + $orderRecord = BusinessOrder::firstOrNew(['shop_id' => $shopId, 'order_sn' => $order['order_sn']], $order); + if (empty($orderRecord->id)) { + $orderRecord->save(); } else { $orderRecord->update($order); } foreach ($order['sub_order_list'] as $item) { $item['shop_id'] = $shopId; - $orderItem = BusinessOrder::query()->where('shop_id', $shopId) - ->where('business_order_id', $orderRecord->id) - ->where('goods_id', $item['goods_id']) - ->where('sku_id', $item['sku_id']) - ->first(); + $orderItem = BusinessOrderItem::firstOrNew(['shop_id' => $shopId, 'business_order_id' => $orderRecord->id, 'goods_id' => $item['goods_id'], 'sku_id' => $item['sku_id']], $item); $num = 0; - if (empty($orderItem)) { + if (empty($orderItem->id)) { if ($item['cancel_status']) { if ($num = $item['goods_number'] - $item['already_cancel_number']) { // 扣库存 $reduceNum @@ -59,7 +56,7 @@ abstract class BusinessClient // 扣库存 $num = 0 - $item['goods_number']; } - $orderItem->create($item); + $orderItem->save(); } else { if ($item['cancel_status'] !== $orderItem->cancel_status) { if ($item['cancel_status']) {