fix(admin-dashboard): paid_pending count aligns with unsynced scope
This commit is contained in:
@@ -55,7 +55,8 @@ class DashboardController extends Controller
|
|||||||
'platform_orders_paid_pending' => PlatformOrder::query()
|
'platform_orders_paid_pending' => PlatformOrder::query()
|
||||||
->where('payment_status', 'paid')
|
->where('payment_status', 'paid')
|
||||||
->where('status', 'pending')
|
->where('status', 'pending')
|
||||||
// 口径对齐“待生效”语义:排除明确的同步失败(失败单应该去同步失败治理)
|
// 口径对齐“待生效”语义(sync_status=unsynced):未同步 + 非失败
|
||||||
|
->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NULL")
|
||||||
->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NULL")
|
->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NULL")
|
||||||
->count(),
|
->count(),
|
||||||
// 可同步:沿用平台订单列表口径(paid+activated+未同步+无失败),且排除续费缺订阅脏数据
|
// 可同步:沿用平台订单列表口径(paid+activated+未同步+无失败),且排除续费缺订阅脏数据
|
||||||
|
|||||||
@@ -59,6 +59,25 @@ class AdminDashboardBillingWorkbenchQuickLinksShouldShowCountsTest extends TestC
|
|||||||
'paid_amount' => 9,
|
'paid_amount' => 9,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// 脏数据兜底:即使 status=pending + paid,但若 meta 已写入 subscription_activation(视为已同步),不应计入“待生效(unsynced)”集合。
|
||||||
|
PlatformOrder::query()->create([
|
||||||
|
'merchant_id' => $merchantId,
|
||||||
|
'plan_id' => null,
|
||||||
|
'site_subscription_id' => null,
|
||||||
|
'created_by_admin_id' => $platformAdminId ?: null,
|
||||||
|
'order_no' => 'PO_DASHBOARD_PAID_PENDING_BUT_ALREADY_SYNCED',
|
||||||
|
'order_type' => 'new_purchase',
|
||||||
|
'status' => 'pending',
|
||||||
|
'payment_status' => 'paid',
|
||||||
|
'payable_amount' => 9,
|
||||||
|
'paid_amount' => 9,
|
||||||
|
'meta' => [
|
||||||
|
'subscription_activation' => [
|
||||||
|
'subscription_id' => 123,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
PlatformOrder::query()->create([
|
PlatformOrder::query()->create([
|
||||||
'merchant_id' => $merchantId,
|
'merchant_id' => $merchantId,
|
||||||
'plan_id' => null,
|
'plan_id' => null,
|
||||||
@@ -81,7 +100,7 @@ class AdminDashboardBillingWorkbenchQuickLinksShouldShowCountsTest extends TestC
|
|||||||
|
|
||||||
// Debug:确保我们构造的数据在 DB 里
|
// Debug:确保我们构造的数据在 DB 里
|
||||||
$this->assertSame(1, PlatformOrder::query()->where('payment_status', 'unpaid')->where('status', 'pending')->count());
|
$this->assertSame(1, PlatformOrder::query()->where('payment_status', 'unpaid')->where('status', 'pending')->count());
|
||||||
$this->assertSame(2, PlatformOrder::query()->where('payment_status', 'paid')->where('status', 'pending')->count());
|
$this->assertSame(3, PlatformOrder::query()->where('payment_status', 'paid')->where('status', 'pending')->count());
|
||||||
|
|
||||||
$res = $this->get('/admin');
|
$res = $this->get('/admin');
|
||||||
$res->assertOk();
|
$res->assertOk();
|
||||||
|
|||||||
Reference in New Issue
Block a user