diff --git a/app/Http/Controllers/Admin/PlatformOrderController.php b/app/Http/Controllers/Admin/PlatformOrderController.php index 1355f92..a61d7d1 100644 --- a/app/Http/Controllers/Admin/PlatformOrderController.php +++ b/app/Http/Controllers/Admin/PlatformOrderController.php @@ -537,6 +537,7 @@ class PlatformOrderController extends Controller '最近退款时间', '最近退款金额', '最近退款渠道', + '退款总额', ]; if ($includeMeta) { @@ -596,6 +597,13 @@ class PlatformOrderController extends Controller (string) (data_get($latestRefund, 'refunded_at') ?? ''), (float) (data_get($latestRefund, 'amount') ?? 0), (string) (data_get($latestRefund, 'channel') ?? ''), + (function () use ($refunds) { + $total = 0.0; + foreach ($refunds as $r) { + $total += (float) (data_get($r, 'amount') ?? 0); + } + return $total; + })(), ]; if ($includeMeta) { diff --git a/resources/views/admin/platform_orders/show.blade.php b/resources/views/admin/platform_orders/show.blade.php index 570d2f9..81bd78f 100644 --- a/resources/views/admin/platform_orders/show.blade.php +++ b/resources/views/admin/platform_orders/show.blade.php @@ -24,6 +24,13 @@ 支付时间{{ optional($order->paid_at)->format('Y-m-d H:i:s') ?: '-' }} 生效时间{{ optional($order->activated_at)->format('Y-m-d H:i:s') ?: '-' }} 退款时间{{ optional($order->refunded_at)->format('Y-m-d H:i:s') ?: '-' }} + @php + $refundTotal = 0.0; + foreach ((array) (data_get($order->meta, 'refund_receipts', []) ?? []) as $r) { + $refundTotal += (float) (data_get($r, 'amount') ?? 0); + } + @endphp + 退款总额¥{{ number_format($refundTotal, 2) }} diff --git a/tests/Feature/AdminPlatformOrderExportTest.php b/tests/Feature/AdminPlatformOrderExportTest.php index 9ea02fb..273e4e4 100644 --- a/tests/Feature/AdminPlatformOrderExportTest.php +++ b/tests/Feature/AdminPlatformOrderExportTest.php @@ -125,6 +125,7 @@ class AdminPlatformOrderExportTest extends TestCase $this->assertStringContainsString('订阅ID', $content); $this->assertStringContainsString('最近批量生效时间', $content); $this->assertStringContainsString('最近批量生效管理员', $content); + $this->assertStringContainsString('退款总额', $content); // include_meta=1 时应包含 meta(JSON) 列 $res2 = $this->get('/admin/platform-orders/export?include_meta=1'); diff --git a/tests/Feature/AdminPlatformOrderRefundReceiptTest.php b/tests/Feature/AdminPlatformOrderRefundReceiptTest.php index 9a70a35..db593e8 100644 --- a/tests/Feature/AdminPlatformOrderRefundReceiptTest.php +++ b/tests/Feature/AdminPlatformOrderRefundReceiptTest.php @@ -74,6 +74,13 @@ class AdminPlatformOrderRefundReceiptTest extends TestCase $this->assertSame('partially_refunded', $order->payment_status); $this->assertNotNull($order->refunded_at); + + // 确保退款轨迹可用于对账统计 + $totalRefunded = 0.0; + foreach ($refunds as $r) { + $totalRefunded += (float) (data_get($r, 'amount') ?? 0); + } + $this->assertSame(10.0, $totalRefunded); } public function test_platform_admin_can_add_refund_receipt_and_mark_fully_refunded_when_total_refund_reaches_paid_amount(): void