feat(admin-dashboard): add rank coverage meta for merchant revenue top5

This commit is contained in:
萝卜
2026-03-16 22:01:06 +08:00
parent 6aa58d5369
commit 3f7ab0ed94
3 changed files with 62 additions and 1 deletions

View File

@@ -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' => [