diff --git a/app/Http/Controllers/Admin/PlatformOrderController.php b/app/Http/Controllers/Admin/PlatformOrderController.php index 7dc1adc..97c7412 100644 --- a/app/Http/Controllers/Admin/PlatformOrderController.php +++ b/app/Http/Controllers/Admin/PlatformOrderController.php @@ -134,8 +134,11 @@ class PlatformOrderController extends Controller 'syncable_only' => (string) $request->query('syncable_only', ''), // 只看最近 24 小时批量同步过的订单(可治理追踪) 'batch_synced_24h' => (string) $request->query('batch_synced_24h', ''), + // 只看最近 24 小时批量“仅标记为已生效”过的订单(可治理追踪) + 'batch_mark_activated_24h' => (string) $request->query('batch_mark_activated_24h', ''), ]; + $orders = $this->applyFilters(PlatformOrder::query()->with(['merchant', 'plan', 'siteSubscription']), $filters) ->latest('id') ->paginate(10) @@ -224,6 +227,21 @@ class PlatformOrderController extends Controller $q->whereRaw("JSON_UNQUOTE(JSON_EXTRACT(meta, '$.batch_activation.at')) >= ?", [$since]); } + return $q->count(); + })(), + 'batch_mark_activated_24h_orders' => (function () use ($baseQuery) { + $since = now()->subHours(24)->format('Y-m-d H:i:s'); + + $q = (clone $baseQuery) + ->whereRaw("JSON_EXTRACT(meta, '$.batch_mark_activated.at') IS NOT NULL"); + + $driver = $q->getQuery()->getConnection()->getDriverName(); + if ($driver === 'sqlite') { + $q->whereRaw("JSON_EXTRACT(meta, '$.batch_mark_activated.at') >= ?", [$since]); + } else { + $q->whereRaw("JSON_UNQUOTE(JSON_EXTRACT(meta, '$.batch_mark_activated.at')) >= ?", [$since]); + } + return $q->count(); })(), ], @@ -363,8 +381,11 @@ class PlatformOrderController extends Controller 'syncable_only' => (string) $request->query('syncable_only', ''), // 只看最近 24 小时批量同步过的订单(可治理追踪) 'batch_synced_24h' => (string) $request->query('batch_synced_24h', ''), + // 只看最近 24 小时批量“仅标记为已生效”过的订单(可治理追踪) + 'batch_mark_activated_24h' => (string) $request->query('batch_mark_activated_24h', ''), ]; + $includeMeta = (string) $request->query('include_meta', '') === '1'; $query = $this->applyFilters( @@ -817,6 +838,19 @@ class PlatformOrderController extends Controller } else { $builder->whereRaw("JSON_UNQUOTE(JSON_EXTRACT(meta, '$.batch_activation.at')) >= ?", [$since]); } + }) + ->when(($filters['batch_mark_activated_24h'] ?? '') !== '', function (Builder $builder) { + // 只看最近 24 小时批量“仅标记为已生效”过的订单(基于 meta.batch_mark_activated.at) + $since = now()->subHours(24)->format('Y-m-d H:i:s'); + + $builder->whereRaw("JSON_EXTRACT(meta, '$.batch_mark_activated.at') IS NOT NULL"); + + $driver = $builder->getQuery()->getConnection()->getDriverName(); + if ($driver === 'sqlite') { + $builder->whereRaw("JSON_EXTRACT(meta, '$.batch_mark_activated.at') >= ?", [$since]); + } else { + $builder->whereRaw("JSON_UNQUOTE(JSON_EXTRACT(meta, '$.batch_mark_activated.at')) >= ?", [$since]); + } }); } diff --git a/resources/views/admin/platform_orders/index.blade.php b/resources/views/admin/platform_orders/index.blade.php index 5c38712..a743191 100644 --- a/resources/views/admin/platform_orders/index.blade.php +++ b/resources/views/admin/platform_orders/index.blade.php @@ -74,6 +74,10 @@ 最近24小时批量同步过 +