diff --git a/app/Http/Controllers/Admin/PlatformOrderController.php b/app/Http/Controllers/Admin/PlatformOrderController.php index 6175e8d..3a792bd 100644 --- a/app/Http/Controllers/Admin/PlatformOrderController.php +++ b/app/Http/Controllers/Admin/PlatformOrderController.php @@ -458,23 +458,14 @@ class PlatformOrderController extends Controller fputcsv($out, ['payable_amount', number_format((float) ($order->payable_amount ?? 0), 2, '.', '')]); fputcsv($out, ['paid_amount', number_format((float) ($order->paid_amount ?? 0), 2, '.', '')]); - // 汇总字段:对账/退款快速口径 - $receiptTotal = 0.0; - foreach ($paymentReceipts as $r) { - $receiptTotal += (float) (data_get($r, 'amount') ?? 0); - } - $refundTotal = 0.0; - foreach ($refundReceipts as $r) { - $refundTotal += (float) (data_get($r, 'amount') ?? 0); - } + // 汇总字段:对账/退款快速口径(复用模型统一口径,避免控制器内重复计算导致不一致) + $receiptTotal = (float) $order->receiptTotal(); + $refundTotal = (float) $order->refundTotal(); $delta = $receiptTotal - (float) ($order->paid_amount ?? 0); $tol = (float) config('saasshop.amounts.tolerance', 0.01); - $tolCents = (int) round($tol * 100); - $tolCents = max(1, $tolCents); - $deltaCents = (int) round($delta * 100); - $reconcileMismatch = $receiptTotal > 0 && abs($deltaCents) >= $tolCents; + $reconcileMismatch = (bool) $order->isReconcileMismatch(); fputcsv($out, ['receipt_total', number_format($receiptTotal, 2, '.', '')]); fputcsv($out, ['refund_total', number_format($refundTotal, 2, '.', '')]);