From c5a4bbfbe2e7858446cc54c7b474af0d1380944b Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 08 五月 2026 17:01:41 +0800
Subject: [PATCH] Merge branch '2.0' into 2.0.1

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java |   40 +++++++++++++++++++++++++---------------
 1 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
index 4ac4e4a..401c549 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -685,8 +685,17 @@
                         refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN);
                         if (refundAmount.compareTo(BigDecimal.ZERO) > 0) {
                             Integer rechargePaymentType = order.getRechargePaymentType();
-                            BigDecimal thirdRefundAmount = refundAmount.min(money(order.getThirdPayAmount())).setScale(2, RoundingMode.HALF_UP);
-                            BigDecimal balanceRefundAmount = refundAmount.subtract(thirdRefundAmount).min(money(order.getBalancePayAmount())).setScale(2, RoundingMode.HALF_UP);
+                            Integer payMethod = order.getPayMethod();
+                            BigDecimal thirdRefundAmount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+                            BigDecimal balanceRefundAmount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
+                            if (Integer.valueOf(1).equals(payMethod)) {
+                                balanceRefundAmount = refundAmount.min(money(order.getBalancePayAmount())).setScale(2, RoundingMode.HALF_UP);
+                            } else if (Integer.valueOf(2).equals(payMethod)) {
+                                thirdRefundAmount = refundAmount.min(money(order.getThirdPayAmount())).setScale(2, RoundingMode.HALF_UP);
+                                balanceRefundAmount = refundAmount.subtract(thirdRefundAmount).min(money(order.getBalancePayAmount())).setScale(2, RoundingMode.HALF_UP);
+                            } else {
+                                thirdRefundAmount = refundAmount;
+                            }
                             refundAmount = thirdRefundAmount.add(balanceRefundAmount).setScale(2, RoundingMode.HALF_UP);
                             order.setThirdRefundAmount(thirdRefundAmount);
                             order.setBalanceRefundAmount(balanceRefundAmount);
@@ -708,7 +717,18 @@
                             chargingOrderRefund.setRefundRemark("实际充电消费金额:" + order.getPaymentAmount());
                             chargingOrderRefund.setRefundTotalAmount(refundAmount);
                             chargingOrderRefund.setPayAmount(rechargeAmount);
-                            if (thirdRefundAmount.compareTo(BigDecimal.ZERO) > 0 && 1 == rechargePaymentType) {
+                            if (thirdRefundAmount.compareTo(BigDecimal.ZERO) == 0) {
+                                chargingOrderRefund.setRefundStatus(2);
+                                chargingOrderRefund.setRefundSerialNumber("BALANCE");
+                                chargingOrderRefund.setRefundTime(LocalDateTime.now());
+                                chargingOrderRefundService.save(chargingOrderRefund);
+                                if (balanceRefundAmount.compareTo(BigDecimal.ZERO) > 0) {
+                                    recordBalanceRefund(order, balanceRefundAmount, chargingOrderRefund.getRefundCode());
+                                }
+                                order.setRefundStatus(2);
+                                order.setRefundTime(LocalDateTime.now());
+                                chargingOrderService.updateById(order);
+                            } else if (1 == rechargePaymentType) {
                                 WxPaymentRefundModel model = new WxPaymentRefundModel();
                                 model.setOut_trade_no(order.getCode());
                                 model.setOut_refund_no(chargingOrderRefund.getRefundCode());
@@ -730,7 +750,7 @@
                                     chargingOrderRefundService.updateById(chargingOrderRefund);
                                 }
                             }
-                            if (thirdRefundAmount.compareTo(BigDecimal.ZERO) > 0 && 2 == rechargePaymentType) {
+                            else if (2 == rechargePaymentType) {
                                 RefundReq dto = new RefundReq();
                                 dto.setOutTradeNo(order.getCode());
                                 dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
@@ -742,7 +762,7 @@
                                     chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
                                 }
                             }
-                            if (thirdRefundAmount.compareTo(BigDecimal.ZERO) > 0 && 3 == rechargePaymentType) {
+                            else if (3 == rechargePaymentType) {
                                 RefundReq dto = new RefundReq();
                                 dto.setOutTradeNo(order.getRechargeSerialNumber());
                                 dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
@@ -753,16 +773,6 @@
                                     chargingOrderRefundService.save(chargingOrderRefund);
                                     chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
                                 }
-                            }
-                            if (thirdRefundAmount.compareTo(BigDecimal.ZERO) == 0 && balanceRefundAmount.compareTo(BigDecimal.ZERO) > 0) {
-                                chargingOrderRefund.setRefundStatus(2);
-                                chargingOrderRefund.setRefundSerialNumber("BALANCE");
-                                chargingOrderRefund.setRefundTime(LocalDateTime.now());
-                                chargingOrderRefundService.save(chargingOrderRefund);
-                                recordBalanceRefund(order, balanceRefundAmount, chargingOrderRefund.getRefundCode());
-                                order.setRefundStatus(2);
-                                order.setRefundTime(LocalDateTime.now());
-                                chargingOrderService.updateById(order);
                             }
                         }
                     }

--
Gitblit v1.7.1