feat(platform-orders): 列表展示最近批量生效信息

This commit is contained in:
萝卜
2026-03-10 15:27:44 +00:00
parent 852a6dbf3e
commit 1792d0bffd
2 changed files with 39 additions and 0 deletions

View File

@@ -301,6 +301,7 @@
<th>同步时间</th>
<th>失败原因</th>
<th>最近批量同步</th>
<th>最近批量生效</th>
<th>操作</th>
</tr>
</thead>
@@ -390,6 +391,37 @@
<span class="muted">-</span>
@endif
</td>
<td>
@php
// 优先使用扁平字段 meta.batch_mark_activated便于筛选/统计,也避免遍历 audit
$batchMarkActivated = (array) (data_get($order->meta, 'batch_mark_activated', []) ?? []);
$batchMarkAt = (string) (data_get($batchMarkActivated, 'at') ?? '');
$batchMarkAdminId = data_get($batchMarkActivated, 'admin_id');
// 兼容旧数据:若尚未写入 batch_mark_activated则回退从 meta.audit[] 中取最近一次批量生效记录
$audit2 = (array) (data_get($order->meta, 'audit', []) ?? []);
$lastBatchMark = null;
if ($batchMarkAt === '' && count($audit2) > 0) {
foreach (array_reverse($audit2) as $item) {
if ((string) data_get($item, 'action') === 'batch_mark_activated') {
$lastBatchMark = $item;
break;
}
}
}
if ($batchMarkAt === '' && $lastBatchMark) {
$batchMarkAt = (string) (data_get($lastBatchMark, 'at') ?? '');
$batchMarkAdminId = data_get($lastBatchMark, 'admin_id');
}
@endphp
@if($batchMarkAt !== '')
<div>{{ $batchMarkAt }}</div>
<div class="muted">管理员:{{ $batchMarkAdminId ?: '-' }}</div>
@else
<span class="muted">-</span>
@endif
</td>
<td>
@php
$canActivate = ($order->payment_status === 'paid') && ($order->status === 'activated');

View File

@@ -33,6 +33,7 @@ class AdminPlatformOrderTest extends TestCase
->assertSee('平台订单列表')
->assertSee('失败原因')
->assertSee('最近批量同步')
->assertSee('最近批量生效')
->assertSee('最近24小时批量同步过')
->assertSee('可同步订单')
->assertSee('近24小时批量同步')
@@ -230,6 +231,11 @@ class AdminPlatformOrderTest extends TestCase
'synced_at' => now()->toDateTimeString(),
'admin_id' => 1,
],
'batch_mark_activated' => [
'at' => '2026-03-10 00:00:01',
'admin_id' => 1,
'scope' => 'filtered',
],
'audit' => [
[
'action' => 'batch_activate_subscription',
@@ -244,6 +250,7 @@ class AdminPlatformOrderTest extends TestCase
$this->get('/admin/platform-orders')
->assertOk()
->assertSee('2026-03-10 00:00:00')
->assertSee('2026-03-10 00:00:01')
->assertSee('管理员1');
// 最近24小时批量同步筛选构造一条近24h一条超过24h