From 1efd29cb0f2f511bcc7277be89b23f1eacc49334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=B8=96=E7=95=8C?= <642747453@qq.com> Date: Tue, 23 Aug 2022 17:18:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#10000=20=E5=BA=97=E9=93=BA=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Goods/GoodsSkusController.php | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index 92cbfc7..c1d47a5 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -66,20 +66,30 @@ class GoodsSkusController extends Controller foreach ($goodsSkus as &$sku) { $externalSkuId = $sku['goods']['goods_code'] . '_' . $sku['sku_code']; $lastInventoryTime = $sku['daily']['inventory_time']; - $addOrderGoodsNum = BusinessOrderItem::query() + $fields = implode(',', [ + 'shop_id', + 'external_sku_id', + 'sum(goods_number) as number', + 'sum(already_cancel_number) as cancel_number', + ]); + $orderDetail = BusinessOrderItem::query() + ->select(DB::raw($fields)) ->where('external_sku_id', $externalSkuId) ->when($lastInventoryTime, function ($query) use ($lastInventoryTime) { $query->where('updated_at', '>', $lastInventoryTime); }) - ->sum('goods_number'); - $reduceOrderGoodsNum = BusinessOrderItem::query() - ->where('external_sku_id', $externalSkuId) - ->when($lastInventoryTime, function ($query) use ($lastInventoryTime) { - $query->where('updated_at', '>', $lastInventoryTime); - }) - ->sum('already_cancel_number'); + ->groupBy(['shop_id', 'external_sku_id']) + ->with(['shop:id,name']) + ->get(); + $addOrderGoodsNum = $reduceOrderGoodsNum = 0; + if ($orderDetail) { + $orderDetail = $orderDetail->toArray(); + $addOrderGoodsNum = array_sum(array_column($orderDetail, 'number')); + $reduceOrderGoodsNum = array_sum(array_column($orderDetail, 'cancel_number')); + } $sku['inventory_time'] = $lastInventoryTime; $sku['order_goods_num'] = $addOrderGoodsNum - $reduceOrderGoodsNum; + $sku['order_detail'] = $orderDetail; } return GoodsSkuResource::collection($goodsSkus);