From 24757518fc4e446f866359141534e4aa7b6e4741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BB=BA=E7=82=8A?= <924182103@qq.com> Date: Thu, 31 Oct 2024 17:12:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=94=80=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Goods/GoodsSkusController.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index 2995433..cf4f5f0 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -66,7 +66,8 @@ class GoodsSkusController extends Controller ->select(DB::raw($fields)) ->with([ 'shop:id,name', - 'goodsSku:id,external_sku_id' + 'goodsSku:id,external_sku_id,is_combination', + 'goodsSku.combinationGoods:id,goods_sku_id,item_id,item_num' ]) ->where('created_at', '>', $orderRestTime) ->where('external_sku_id', '<>', '') @@ -80,13 +81,20 @@ class GoodsSkusController extends Controller continue; } $id = $businessOrderItem['goods_sku']['id']; + if ($businessOrderItem['goods_sku']['is_combination']) { + foreach ($businessOrderItem['goods_sku']['combination_goods'] ?? [] as $combinationGoods) { + $ids[$combinationGoods['item_id']] = $ids[$combinationGoods['item_id']] ?? 0 + + ((int)$businessOrderItem['number']) * $combinationGoods['item_num']; + $externals[$combinationGoods['item_id']][] = $businessOrderItem; + } + } if (isset($ids[$id])) { $ids[$id] += (int)$businessOrderItem['number']; } else { $ids[$id] = (int)$businessOrderItem['number']; } - $externals[$businessOrderItem['external_sku_id']][] = $businessOrderItem; + $externals[$id][] = $businessOrderItem; } arsort($ids); @@ -123,9 +131,9 @@ class GoodsSkusController extends Controller $rolesName = $request->user()->getRoleNames()->toArray(); foreach ($goodsSkus as &$sku) { $lastInventoryTime = !empty($sku['daily']['inventory_time']) ? $sku['daily']['inventory_time'] : date('Y-m-d 07:00:00'); - if (isset($externals[$sku['external_sku_id']])) { - $sku['order_detail'] = $externals[$sku['external_sku_id']]; - $sku['order_goods_num'] = array_sum(array_column($externals[$sku['external_sku_id']], 'number')); + if (isset($externals[$sku['id']])) { + $sku['order_detail'] = $externals[$sku['id']]; + $sku['order_goods_num'] = $ids[$sku['id']]; } else { $sku['order_detail'] = []; $sku['order_goods_num'] = 0;