feat(admin-dashboard): add rank coverage meta for merchant revenue top5
This commit is contained in:
@@ -227,10 +227,12 @@ class DashboardController extends Controller
|
||||
$planIdToName = Plan::query()->pluck('name', 'id')->all();
|
||||
|
||||
// 排行卡(最小可用):近 7 天站点收入排行 Top5(按已付金额)
|
||||
// 说明:只统计 payment_status=paid,避免“未支付订单=0金额”混入排行造成噪音。
|
||||
$merchantRevenueRank7d = PlatformOrder::query()
|
||||
->selectRaw('merchant_id, COUNT(*) as cnt')
|
||||
->selectRaw("SUM(CASE WHEN payment_status = 'paid' THEN paid_amount ELSE 0 END) as paid_sum")
|
||||
->selectRaw('SUM(paid_amount) as paid_sum')
|
||||
->whereBetween('created_at', [$trendStart, $trendEnd])
|
||||
->where('payment_status', 'paid')
|
||||
->groupBy('merchant_id')
|
||||
->orderByDesc('paid_sum')
|
||||
->limit(5)
|
||||
@@ -245,6 +247,17 @@ class DashboardController extends Controller
|
||||
->values()
|
||||
->all();
|
||||
|
||||
// 用于计算“Top5覆盖率/其它”的全量分母(近 7 天全站点已付总额/总订单数)
|
||||
$merchantRevenueTotalPaid7d = (float) PlatformOrder::query()
|
||||
->whereBetween('created_at', [$trendStart, $trendEnd])
|
||||
->where('payment_status', 'paid')
|
||||
->sum('paid_amount');
|
||||
|
||||
$merchantRevenueTotalOrders7d = (int) PlatformOrder::query()
|
||||
->whereBetween('created_at', [$trendStart, $trendEnd])
|
||||
->where('payment_status', 'paid')
|
||||
->count();
|
||||
|
||||
$merchantIdToName = Merchant::query()->pluck('name', 'id')->all();
|
||||
|
||||
return view('admin.dashboard', [
|
||||
@@ -256,6 +269,8 @@ class DashboardController extends Controller
|
||||
'planOrderShareTotal' => (int) $planOrderShareTotal,
|
||||
'planIdToName' => $planIdToName,
|
||||
'merchantRevenueRank7d' => $merchantRevenueRank7d,
|
||||
'merchantRevenueTotalPaid7d' => (float) $merchantRevenueTotalPaid7d,
|
||||
'merchantRevenueTotalOrders7d' => (int) $merchantRevenueTotalOrders7d,
|
||||
'merchantIdToName' => $merchantIdToName,
|
||||
'platformAdmin' => $admin,
|
||||
'cacheMeta' => [
|
||||
|
||||
Reference in New Issue
Block a user