diff --git a/app/Http/Controllers/Admin/SiteSubscriptionController.php b/app/Http/Controllers/Admin/SiteSubscriptionController.php index 9dc3297..006028c 100644 --- a/app/Http/Controllers/Admin/SiteSubscriptionController.php +++ b/app/Http/Controllers/Admin/SiteSubscriptionController.php @@ -21,32 +21,60 @@ class SiteSubscriptionController extends Controller $subscription->loadMissing(['merchant', 'plan']); - $platformOrdersQuery = PlatformOrder::query() + $baseOrdersQuery = PlatformOrder::query() ->where('site_subscription_id', $subscription->id); - $platformOrders = (clone $platformOrdersQuery) + // 可治理摘要:订阅下的订单同步情况(基于全量关联订单,不受页面筛选影响) + $summaryStats = [ + 'total_orders' => (clone $baseOrdersQuery)->count(), + 'synced_orders' => (clone $baseOrdersQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NOT NULL") + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NULL") + ->count(), + 'failed_orders' => (clone $baseOrdersQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NOT NULL") + ->count(), + 'unsynced_orders' => (clone $baseOrdersQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NULL") + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NULL") + ->count(), + 'syncable_orders' => (clone $baseOrdersQuery) + ->where('payment_status', 'paid') + ->where('status', 'activated') + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NULL") + ->count(), + ]; + + // 页面列表筛选:仅影响“关联平台订单”列表展示,不影响摘要统计 + $orderSyncStatus = trim((string) $request->query('order_sync_status', '')); + + $displayOrdersQuery = (clone $baseOrdersQuery); + if ($orderSyncStatus === 'synced') { + $displayOrdersQuery + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NOT NULL") + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NULL"); + } elseif ($orderSyncStatus === 'failed') { + $displayOrdersQuery + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NOT NULL"); + } elseif ($orderSyncStatus === 'unsynced') { + $displayOrdersQuery + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NULL") + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation_error.message') IS NULL"); + } elseif ($orderSyncStatus === 'syncable') { + $displayOrdersQuery + ->where('payment_status', 'paid') + ->where('status', 'activated') + ->whereRaw("JSON_EXTRACT(meta, '$.subscription_activation.subscription_id') IS NULL"); + } + + $platformOrders = $displayOrdersQuery ->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(), + $summaryStats = $summaryStats + [ + 'current_order_sync_status' => $orderSyncStatus, ]; $endsAt = $subscription->ends_at; diff --git a/resources/views/admin/site_subscriptions/show.blade.php b/resources/views/admin/site_subscriptions/show.blade.php index 72e3bbd..c30bcc0 100644 --- a/resources/views/admin/site_subscriptions/show.blade.php +++ b/resources/views/admin/site_subscriptions/show.blade.php @@ -101,6 +101,24 @@

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

+ +
+ 同步状态筛选: + @php $cur = $summaryStats['current_order_sync_status'] ?? ''; @endphp + 全部 + + 已同步 + + 同步失败 + + 未同步 + + 可同步 + @if($cur) + (当前:{{ $cur }}) + @endif +
+