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