显示销量

This commit is contained in:
杨建炊 2024-10-31 17:12:24 +08:00
parent a9e542f89b
commit 24757518fc

View File

@ -66,7 +66,8 @@ class GoodsSkusController extends Controller
->select(DB::raw($fields)) ->select(DB::raw($fields))
->with([ ->with([
'shop:id,name', '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('created_at', '>', $orderRestTime)
->where('external_sku_id', '<>', '') ->where('external_sku_id', '<>', '')
@ -80,13 +81,20 @@ class GoodsSkusController extends Controller
continue; continue;
} }
$id = $businessOrderItem['goods_sku']['id']; $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])) { if (isset($ids[$id])) {
$ids[$id] += (int)$businessOrderItem['number']; $ids[$id] += (int)$businessOrderItem['number'];
} else { } else {
$ids[$id] = (int)$businessOrderItem['number']; $ids[$id] = (int)$businessOrderItem['number'];
} }
$externals[$businessOrderItem['external_sku_id']][] = $businessOrderItem; $externals[$id][] = $businessOrderItem;
} }
arsort($ids); arsort($ids);
@ -123,9 +131,9 @@ class GoodsSkusController extends Controller
$rolesName = $request->user()->getRoleNames()->toArray(); $rolesName = $request->user()->getRoleNames()->toArray();
foreach ($goodsSkus as &$sku) { foreach ($goodsSkus as &$sku) {
$lastInventoryTime = !empty($sku['daily']['inventory_time']) ? $sku['daily']['inventory_time'] : date('Y-m-d 07:00:00'); $lastInventoryTime = !empty($sku['daily']['inventory_time']) ? $sku['daily']['inventory_time'] : date('Y-m-d 07:00:00');
if (isset($externals[$sku['external_sku_id']])) { if (isset($externals[$sku['id']])) {
$sku['order_detail'] = $externals[$sku['external_sku_id']]; $sku['order_detail'] = $externals[$sku['id']];
$sku['order_goods_num'] = array_sum(array_column($externals[$sku['external_sku_id']], 'number')); $sku['order_goods_num'] = $ids[$sku['id']];
} else { } else {
$sku['order_detail'] = []; $sku['order_detail'] = [];
$sku['order_goods_num'] = 0; $sku['order_goods_num'] = 0;