diff --git a/app/Http/Controllers/Admin/PlatformOrderController.php b/app/Http/Controllers/Admin/PlatformOrderController.php index cce4411..17d98a6 100644 --- a/app/Http/Controllers/Admin/PlatformOrderController.php +++ b/app/Http/Controllers/Admin/PlatformOrderController.php @@ -858,9 +858,18 @@ class PlatformOrderController extends Controller $failed = 0; $failedReasonCounts = []; + // 筛选摘要:用于审计记录(避免每条订单都手写拼接,且便于追溯本次批量处理口径) + $filterSummaryParts = []; + foreach ($filters as $k => $v) { + if ((string) $v !== '') { + $filterSummaryParts[] = $k . '=' . (string) $v; + } + } + $filterSummary = implode('&', $filterSummaryParts); + foreach ($orders as $orderRow) { try { - $service->activateOrder($orderRow->id, $admin->id); + $subscription = $service->activateOrder($orderRow->id, $admin->id); // 轻量审计:记录批量同步动作(方便追溯) $order = PlatformOrder::query()->find($orderRow->id); @@ -873,6 +882,9 @@ class PlatformOrderController extends Controller 'scope' => $scope, 'at' => $nowStr, 'admin_id' => $admin->id, + 'subscription_id' => $subscription->id, + 'filters' => $filterSummary, + 'note' => '批量同步订阅(limit=' . $limit . ', matched=' . $matchedTotal . ', processed=' . $processed . ')', ]; data_set($meta, 'audit', $audit); diff --git a/tests/Feature/AdminPlatformOrderBatchActivateSubscriptionsTest.php b/tests/Feature/AdminPlatformOrderBatchActivateSubscriptionsTest.php index e583cbd..47ccc67 100644 --- a/tests/Feature/AdminPlatformOrderBatchActivateSubscriptionsTest.php +++ b/tests/Feature/AdminPlatformOrderBatchActivateSubscriptionsTest.php @@ -85,6 +85,9 @@ class AdminPlatformOrderBatchActivateSubscriptionsTest extends TestCase $this->assertNotNull($syncable->site_subscription_id); $this->assertNotEmpty(data_get($syncable->meta, 'subscription_activation.subscription_id')); $this->assertSame('batch_activate_subscription', data_get($syncable->meta, 'audit.0.action')); + $this->assertNotEmpty(data_get($syncable->meta, 'audit.0.subscription_id')); + $this->assertNotEmpty(data_get($syncable->meta, 'audit.0.filters')); + $this->assertNotEmpty(data_get($syncable->meta, 'audit.0.note')); } public function test_platform_admin_batch_activate_records_failure_reason_and_summary(): void