From efc7b82028bcc97a3ba5bfdb7f91a8e50ca2b2ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Tue, 10 Mar 2026 20:45:40 +0000 Subject: [PATCH] =?UTF-8?q?feat(platform-orders):=20=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=91=98=E8=A6=81=E5=A2=9E=E5=8A=A0=E5=AF=B9=E8=B4=A6=E5=B7=AE?= =?UTF-8?q?=E9=A2=9D=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/PlatformOrderController.php | 21 +++++++++++++++++++ .../admin/platform_orders/index.blade.php | 9 ++++++++ tests/Feature/AdminPlatformOrderTest.php | 1 + 3 files changed, 31 insertions(+) diff --git a/app/Http/Controllers/Admin/PlatformOrderController.php b/app/Http/Controllers/Admin/PlatformOrderController.php index e485d42..c1cc85e 100644 --- a/app/Http/Controllers/Admin/PlatformOrderController.php +++ b/app/Http/Controllers/Admin/PlatformOrderController.php @@ -275,6 +275,9 @@ class PlatformOrderController extends Controller } return $sum; }), + // 对账差额:回执总额 - 订单已付总额(当前筛选范围) + 'reconciliation_delta' => (float) ($this->sumReceiptAmount((clone $baseQuery)->get()) - (float) ((clone $baseQuery)->sum('paid_amount') ?: 0)), + 'reconciliation_delta_note' => '回执总额 - 订单已付总额', ], 'failedReasonStats' => $failedReasonStats, ]); @@ -1066,6 +1069,24 @@ class PlatformOrderController extends Controller }); } + protected function sumReceiptAmount($orders): float + { + $total = 0.0; + foreach ($orders as $o) { + $t = (float) (data_get($o->meta, 'payment_summary.total_amount') ?? 0); + if ($t > 0) { + $total += $t; + continue; + } + + $receipts = (array) (data_get($o->meta, 'payment_receipts', []) ?? []); + foreach ($receipts as $r) { + $total += (float) (data_get($r, 'amount') ?? 0); + } + } + return $total; + } + protected function statusLabels(): array { return [ diff --git a/resources/views/admin/platform_orders/index.blade.php b/resources/views/admin/platform_orders/index.blade.php index ede68a0..52152a2 100644 --- a/resources/views/admin/platform_orders/index.blade.php +++ b/resources/views/admin/platform_orders/index.blade.php @@ -135,6 +135,15 @@
{{ $summaryStats['receipt_orders'] ?? 0 }} / ¥{{ number_format((float) ($summaryStats['total_receipt_amount'] ?? 0), 2) }}
基于 meta.payment_summary.total_amount(缺省回退汇总)
+
+

对账差额

+ @php $delta = (float) ($summaryStats['reconciliation_delta'] ?? 0); @endphp +
¥{{ number_format($delta, 2) }}
+
{{ $summaryStats['reconciliation_delta_note'] ?? '回执总额 - 订单已付总额' }}(当前筛选范围)
+ @if(abs($delta) >= 0.01) +
提示:差额非 0,可能存在回执金额与订单金额不一致的订单。
+ @endif +

同步失败原因 TOP5

@php $failedReasonStats = $failedReasonStats ?? []; @endphp diff --git a/tests/Feature/AdminPlatformOrderTest.php b/tests/Feature/AdminPlatformOrderTest.php index e25d7c2..d4e9bdf 100644 --- a/tests/Feature/AdminPlatformOrderTest.php +++ b/tests/Feature/AdminPlatformOrderTest.php @@ -40,6 +40,7 @@ class AdminPlatformOrderTest extends TestCase ->assertSee('部分退款 / 已退款') ->assertSee('退款总额') ->assertSee('有回执订单 / 回执总额') + ->assertSee('对账差额') ->assertSee('快捷筛选') ->assertSee('待支付') ->assertSee('待生效')