From 682a105b91cbc9a59d035b048a55417e134255e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Wed, 29 Dec 2021 09:50:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AE=A2=E5=8D=95=E5=90=8E?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=95=86=E5=93=81=E9=94=80=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/Order.php | 16 ++++++++-------- app/Services/OrderService.php | 5 ++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/Models/Order.php b/app/Models/Order.php index f04cac61..d174d27e 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -173,6 +173,14 @@ class Order extends Model return $this->morphMany(PayLog::class, 'payable'); } + /** + * 属于此订单的售后单 + */ + public function afterSales() + { + return $this->hasMany(AfterSale::class, 'order_id'); + } + /** * 此订单是否待付款 * @@ -253,14 +261,6 @@ class Order extends Model */ public function markAsCompleted() { - // 加载订单商品 - $this->loadMissing('products'); - - foreach ($this->products->loadMissing(['spu', 'sku']) as $product) { - $product->spu?->increment('sales', $product->quantity); - $product->sku?->increment('sales', $product->quantity); - } - $this->update([ 'status' => static::STATUS_COMPLETED, 'completed_at' => now(), diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php index 08e96f5a..aa33db24 100644 --- a/app/Services/OrderService.php +++ b/app/Services/OrderService.php @@ -302,9 +302,12 @@ class OrderService { // 扣商品库存 $sku->update([ + 'sales' => DB::Raw("sales + {$qty}"), 'stock' => DB::raw("stock - {$qty}"), // 库存 ]); + $sku->spu?->increment('sales', $qty); + // 如果是因为赠品库存不足引起的异常,则需重试 do { try { @@ -705,7 +708,7 @@ class OrderService throw new BizException('购物车商品已丢失'); } - $shoppingCartItems->load('sku'); + $shoppingCartItems->load('sku.spu'); $lostShoppingCartItems = $shoppingCartItems->filter(function ($item) { return $item->sku === null;