diff --git a/app/Http/Controllers/Admin/SiteSubscriptionController.php b/app/Http/Controllers/Admin/SiteSubscriptionController.php index 6a8c422..9dc3297 100644 --- a/app/Http/Controllers/Admin/SiteSubscriptionController.php +++ b/app/Http/Controllers/Admin/SiteSubscriptionController.php @@ -21,12 +21,34 @@ class SiteSubscriptionController extends Controller $subscription->loadMissing(['merchant', 'plan']); - $platformOrders = PlatformOrder::query() - ->where('site_subscription_id', $subscription->id) + $platformOrdersQuery = PlatformOrder::query() + ->where('site_subscription_id', $subscription->id); + + $platformOrders = (clone $platformOrdersQuery) ->latest('id') ->paginate(10) ->withQueryString(); + // 可治理摘要:订阅下的订单同步情况 + $summaryStats = [ + 'total_orders' => (clone $platformOrdersQuery)->count(), + 'synced_orders' => (clone $platformOrdersQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NOT NULL") + ->count(), + 'failed_orders' => (clone $platformOrdersQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NOT NULL") + ->count(), + 'unsynced_orders' => (clone $platformOrdersQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NULL") + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NULL") + ->count(), + 'syncable_orders' => (clone $platformOrdersQuery) + ->where('payment_status', 'paid') + ->where('status', 'activated') + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NULL") + ->count(), + ]; + $endsAt = $subscription->ends_at; $expiryLabel = '无到期'; if ($endsAt) { @@ -42,6 +64,7 @@ class SiteSubscriptionController extends Controller return view('admin.site_subscriptions.show', [ 'subscription' => $subscription, 'platformOrders' => $platformOrders, + 'summaryStats' => $summaryStats, 'statusLabels' => $this->statusLabels(), 'expiryLabel' => $expiryLabel, ]); diff --git a/resources/views/admin/site_subscriptions/show.blade.php b/resources/views/admin/site_subscriptions/show.blade.php index e13ea13..722be19 100644 --- a/resources/views/admin/site_subscriptions/show.blade.php +++ b/resources/views/admin/site_subscriptions/show.blade.php @@ -75,6 +75,25 @@ +
+
+

关联订单总数

+
{{ $summaryStats['total_orders'] ?? 0 }}
+
+
+

已同步

+
{{ $summaryStats['synced_orders'] ?? 0 }}
+
+
+

同步失败

+
{{ $summaryStats['failed_orders'] ?? 0 }}
+
+
+

可同步(已支付+已生效+未同步)

+
{{ $summaryStats['syncable_orders'] ?? 0 }}
+
+
+

关联平台订单({{ $platformOrders->total() }})

diff --git a/tests/Feature/AdminSiteSubscriptionShowTest.php b/tests/Feature/AdminSiteSubscriptionShowTest.php index 3ed3136..75ec048 100644 --- a/tests/Feature/AdminSiteSubscriptionShowTest.php +++ b/tests/Feature/AdminSiteSubscriptionShowTest.php @@ -87,6 +87,8 @@ class AdminSiteSubscriptionShowTest extends TestCase ->assertOk() ->assertSee('订阅详情') ->assertSee('SUB_SHOW_0001') + ->assertSee('关联订单总数') + ->assertSee('可同步(已支付+已生效+未同步)') ->assertSee('关联平台订单') ->assertSee('PO_SUB_SHOW_0001'); }