diff --git a/app/Http/Controllers/Admin/SiteSubscriptionController.php b/app/Http/Controllers/Admin/SiteSubscriptionController.php index 4b27f5b..edfe032 100644 --- a/app/Http/Controllers/Admin/SiteSubscriptionController.php +++ b/app/Http/Controllers/Admin/SiteSubscriptionController.php @@ -94,11 +94,18 @@ class SiteSubscriptionController extends Controller } } - // 订阅维度:BMPA(批量标记支付并生效)失败订单数(与平台订单列表 bmpa_failed_only 口径一致) + // 订阅维度:BMPA(批量标记支付并生效)成功/失败订单数 + // - 失败口径与平台订单列表 bmpa_failed_only 一致:error.message 存在 + // - 成功口径与 bmpa_success_only 一致:存在 run_id 且 error.message 为空 $bmpaFailedOrders = (clone $baseOrdersQuery) ->whereRaw("JSON_EXTRACT(meta, '$.batch_mark_paid_and_activate_error.message') IS NOT NULL") ->count(); + $bmpaSuccessOrders = (clone $baseOrdersQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.batch_mark_paid_and_activate.run_id') IS NOT NULL") + ->whereRaw("JSON_EXTRACT(meta, '$.batch_mark_paid_and_activate_error.message') IS NULL") + ->count(); + $summaryStats = $summaryStats + [ 'receipt_orders' => $receiptOrders, 'no_receipt_orders' => $noReceiptOrders, @@ -110,7 +117,8 @@ class SiteSubscriptionController extends Controller 'refund_inconsistent_orders' => (int) $refundInconsistentOrders, // 对账不一致订单(订阅维度) 'reconcile_mismatch_orders' => (int) $reconcileMismatchOrders, - // BMPA 失败订单(订阅维度) + // BMPA 成功/失败订单(订阅维度) + 'bmpa_success_orders' => (int) $bmpaSuccessOrders, 'bmpa_failed_orders' => (int) $bmpaFailedOrders, // 对账差额:回执总额 - 已付总额(订阅维度) 'reconciliation_delta' => (float) ($totalReceiptAmount - (float) $metaOrders->sum('paid_amount')), diff --git a/resources/views/admin/site_subscriptions/show.blade.php b/resources/views/admin/site_subscriptions/show.blade.php index dd8d0f7..5f13031 100644 --- a/resources/views/admin/site_subscriptions/show.blade.php +++ b/resources/views/admin/site_subscriptions/show.blade.php @@ -328,11 +328,13 @@
-

BMPA 失败数

+

BMPA 成功 / 失败

+ {{ $summaryStats['bmpa_success_orders'] ?? 0 }} + / {{ $summaryStats['bmpa_failed_orders'] ?? 0 }}
-
点击跳转:该订阅下「批量标记支付并生效失败」订单
+
点击跳转:该订阅下「BMPA成功 / BMPA失败」订单集合
diff --git a/tests/Feature/AdminSiteSubscriptionBmpaFailedSummaryCardTest.php b/tests/Feature/AdminSiteSubscriptionBmpaFailedSummaryCardTest.php index 5c51ab7..8a5b96a 100644 --- a/tests/Feature/AdminSiteSubscriptionBmpaFailedSummaryCardTest.php +++ b/tests/Feature/AdminSiteSubscriptionBmpaFailedSummaryCardTest.php @@ -23,7 +23,7 @@ class AdminSiteSubscriptionBmpaFailedSummaryCardTest extends TestCase ])->assertRedirect('/admin'); } - public function test_subscription_show_page_has_bmpa_failed_summary_card_and_link(): void + public function test_subscription_show_page_has_bmpa_summary_card_and_links(): void { $this->loginAsPlatformAdmin(); @@ -81,8 +81,9 @@ class AdminSiteSubscriptionBmpaFailedSummaryCardTest extends TestCase $this->get('/admin/site-subscriptions/' . $sub->id) ->assertOk() - ->assertSee('BMPA 失败数') + ->assertSee('BMPA 成功 / 失败') ->assertSee('/admin/platform-orders?site_subscription_id=' . $sub->id . '&bmpa_failed_only=1', false) + ->assertSee('/admin/platform-orders?site_subscription_id=' . $sub->id . '&bmpa_success_only=1', false) ->assertSee('1'); } }