feat: #10000 店铺订单显示优化

This commit is contained in:
赵世界 2022-08-23 17:18:28 +08:00
parent 8400465210
commit 1efd29cb0f

View File

@ -66,20 +66,30 @@ class GoodsSkusController extends Controller
foreach ($goodsSkus as &$sku) { foreach ($goodsSkus as &$sku) {
$externalSkuId = $sku['goods']['goods_code'] . '_' . $sku['sku_code']; $externalSkuId = $sku['goods']['goods_code'] . '_' . $sku['sku_code'];
$lastInventoryTime = $sku['daily']['inventory_time']; $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) ->where('external_sku_id', $externalSkuId)
->when($lastInventoryTime, function ($query) use ($lastInventoryTime) { ->when($lastInventoryTime, function ($query) use ($lastInventoryTime) {
$query->where('updated_at', '>', $lastInventoryTime); $query->where('updated_at', '>', $lastInventoryTime);
}) })
->sum('goods_number'); ->groupBy(['shop_id', 'external_sku_id'])
$reduceOrderGoodsNum = BusinessOrderItem::query() ->with(['shop:id,name'])
->where('external_sku_id', $externalSkuId) ->get();
->when($lastInventoryTime, function ($query) use ($lastInventoryTime) { $addOrderGoodsNum = $reduceOrderGoodsNum = 0;
$query->where('updated_at', '>', $lastInventoryTime); if ($orderDetail) {
}) $orderDetail = $orderDetail->toArray();
->sum('already_cancel_number'); $addOrderGoodsNum = array_sum(array_column($orderDetail, 'number'));
$reduceOrderGoodsNum = array_sum(array_column($orderDetail, 'cancel_number'));
}
$sku['inventory_time'] = $lastInventoryTime; $sku['inventory_time'] = $lastInventoryTime;
$sku['order_goods_num'] = $addOrderGoodsNum - $reduceOrderGoodsNum; $sku['order_goods_num'] = $addOrderGoodsNum - $reduceOrderGoodsNum;
$sku['order_detail'] = $orderDetail;
} }
return GoodsSkuResource::collection($goodsSkus); return GoodsSkuResource::collection($goodsSkus);