feat(admin): 仪表盘 KPI 聚焦收费主链(套餐/订阅/平台订单)

This commit is contained in:
萝卜
2026-03-15 19:23:31 +08:00
parent daa0c19f7b
commit 2f0c3ca11b
3 changed files with 46 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ use App\Models\Product;
use App\Models\Merchant;
use App\Models\Plan;
use App\Models\PlatformOrder;
use App\Models\SiteSubscription;
use App\Models\User;
use App\Support\CacheKeys;
use Illuminate\Http\Request;
@@ -35,6 +36,8 @@ class DashboardController extends Controller
'orders' => Order::count(),
// 收费中心(平台侧)
'plans' => Plan::count(),
'site_subscriptions' => SiteSubscription::count(),
'platform_orders' => PlatformOrder::count(),
'platform_orders_unpaid_pending' => PlatformOrder::query()
->where('payment_status', 'unpaid')

View File

@@ -53,19 +53,19 @@
<div class="stat-card-footnote">全站点数量(总台视角)</div>
</div>
<div class="card">
<div class="stat-card-title">管理员</div>
<div class="stat-card-value">{{ $stats['admins'] }}</div>
<div class="stat-card-footnote">平台/站点后台账号</div>
<div class="stat-card-title">套餐</div>
<div class="stat-card-value">{{ (int) ($stats['plans'] ?? 0) }}</div>
<div class="stat-card-footnote">可售套餐目录</div>
</div>
<div class="card">
<div class="stat-card-title">用户</div>
<div class="stat-card-value">{{ $stats['users'] }}</div>
<div class="stat-card-footnote">买家端用户累计</div>
<div class="stat-card-title">订阅</div>
<div class="stat-card-value">{{ (int) ($stats['site_subscriptions'] ?? 0) }}</div>
<div class="stat-card-footnote">站点订阅总量(收费主链)</div>
</div>
<div class="card">
<div class="stat-card-title">订单</div>
<div class="stat-card-value">{{ $stats['orders'] }}</div>
<div class="stat-card-footnote">站点订单累计(非平台订单)</div>
<div class="stat-card-title">平台订单</div>
<div class="stat-card-value">{{ (int) ($stats['platform_orders'] ?? 0) }}</div>
<div class="stat-card-footnote">平台收费订单总量</div>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class AdminDashboardKpiShouldIncludeBillingChainStatsTest extends TestCase
{
use RefreshDatabase;
protected function loginAsPlatformAdmin(): void
{
$this->seed();
$this->post('/admin/login', [
'email' => 'platform.admin@demo.local',
'password' => 'Platform@123456',
])->assertRedirect('/admin');
}
public function test_dashboard_kpi_should_include_billing_chain_stats(): void
{
$this->loginAsPlatformAdmin();
$res = $this->get('/admin');
$res->assertOk();
// 收费主链 KPI套餐/订阅/平台订单
$res->assertSee('套餐');
$res->assertSee('订阅');
$res->assertSee('平台订单');
}
}