Admin subscriptions: add expiring 7d merchant top10 reminder list

This commit is contained in:
萝卜
2026-03-17 00:39:50 +08:00
parent 7ce6a65aab
commit 03d30f0c7d
3 changed files with 185 additions and 0 deletions

View File

@@ -332,6 +332,30 @@ class SiteSubscriptionController extends Controller
$baseQuery = $this->applyFilters(SiteSubscription::query(), $filters);
$expiryMerchantRows = [];
if ((string) ($filters['expiry'] ?? '') === 'expiring_7d') {
// 到期提醒清单:站点维度 Top10用于运营快速触达/续费跟进)
$expiryMerchantRows = $this->applyFilters(SiteSubscription::query(), $filters)
->leftJoin('merchants', 'site_subscriptions.merchant_id', '=', 'merchants.id')
->whereNotNull('site_subscriptions.ends_at')
->selectRaw('site_subscriptions.merchant_id as merchant_id, merchants.name as merchant_name, count(*) as cnt, min(site_subscriptions.ends_at) as min_ends_at')
->groupBy('site_subscriptions.merchant_id', 'merchants.name')
->orderByDesc('cnt')
->orderBy('min_ends_at')
->limit(10)
->get()
->map(function ($row) {
return [
'merchant_id' => (int) ($row->merchant_id ?? 0),
'merchant_name' => (string) ($row->merchant_name ?? ''),
'count' => (int) ($row->cnt ?? 0),
'min_ends_at' => (string) ($row->min_ends_at ?? ''),
];
})
->values()
->all();
}
return view('admin.site_subscriptions.index', [
'subscriptions' => $subscriptions,
'filters' => $filters,
@@ -357,6 +381,7 @@ class SiteSubscriptionController extends Controller
->where('ends_at', '<', now()->addDays(7))
->count(),
],
'expiryMerchantRows' => $expiryMerchantRows,
]);
}