From 88197952a54bee75e4fb181253d34992063ea9e8 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 28 四月 2026 17:34:13 +0800
Subject: [PATCH] p0功能 小程序

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index d7a0b75..5fc0df7 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -442,6 +442,22 @@
         appUserClient.updateAppUser(appUser);
     }
 
+
+    private void recordBalanceConsume(TChargingOrder chargingOrder, BigDecimal consumeAmount) {
+        if (chargingOrder == null || chargingOrder.getAppUserId() == null || chargingOrder.getId() == null
+                || consumeAmount == null || consumeAmount.compareTo(BigDecimal.ZERO) <= 0) {
+            return;
+        }
+        ExchangeCodeConsumeDTO consumeDTO = new ExchangeCodeConsumeDTO();
+        consumeDTO.setUserId(chargingOrder.getAppUserId());
+        consumeDTO.setOrderId(chargingOrder.getId());
+        consumeDTO.setAmount(consumeAmount);
+        R<ExchangeCodeConsumeResultVO> result = otherClient.consumeExchangeCodeBalance(consumeDTO);
+        if (result == null || result.getCode() != 200) {
+            throw new RuntimeException("??????????");
+        }
+    }
+
     private void recordBalanceRefund(TChargingOrder chargingOrder, BigDecimal refundAmount, String refundNo) {
         if (chargingOrder == null || chargingOrder.getAppUserId() == null || chargingOrder.getId() == null
                 || refundAmount == null || refundAmount.compareTo(BigDecimal.ZERO) <= 0) {
@@ -658,6 +674,7 @@
 		
 		if (thirdPayAmount.compareTo(BigDecimal.ZERO) == 0 && balancePayAmount.compareTo(BigDecimal.ZERO) > 0) {
 			changeUserBalance(userId, balancePayAmount.negate());
+			recordBalanceConsume(chargingOrder, balancePayAmount);
 		}
 		if (thirdPayAmount.compareTo(BigDecimal.ZERO) == 0) {
 			return chargingOrderCallback(addChargingOrder.getPaymentType(), chargingOrder.getCode(), "BALANCE", null);
@@ -729,6 +746,7 @@
 				throw new RuntimeException("余额不足,支付回调处理失败");
 			}
 			changeUserBalance(chargingOrder.getAppUserId(), money(chargingOrder.getBalancePayAmount()).negate());
+			recordBalanceConsume(chargingOrder, money(chargingOrder.getBalancePayAmount()));
 		}
 		chargingOrder.setRechargePaymentStatus(2);
 		chargingOrder.setRechargeSerialNumber(transaction_id);
@@ -2799,14 +2817,6 @@
                 BigDecimal actualBalancePayAmount = money(chargingOrder.getBalancePayAmount()).subtract(balanceRefundAmount);
                 if (actualBalancePayAmount.compareTo(BigDecimal.ZERO) < 0) {
                     actualBalancePayAmount = BigDecimal.ZERO;
-                }
-                if (isBalancePayMode(chargingOrder.getPayMethod()) && chargingOrder.getAppUserId() != null
-                        && actualBalancePayAmount.compareTo(BigDecimal.ZERO) > 0) {
-                    ExchangeCodeConsumeDTO exchangeCodeConsumeDTO = new ExchangeCodeConsumeDTO();
-                    exchangeCodeConsumeDTO.setUserId(chargingOrder.getAppUserId());
-                    exchangeCodeConsumeDTO.setOrderId(chargingOrder.getId());
-                    exchangeCodeConsumeDTO.setAmount(actualBalancePayAmount);
-                    otherClient.consumeExchangeCodeBalance(exchangeCodeConsumeDTO);
                 }
                 refundAmount = thirdRefundAmount.add(balanceRefundAmount);
                 chargingOrder.setBalanceRefundAmount(balanceRefundAmount.setScale(2, RoundingMode.HALF_UP));

--
Gitblit v1.7.1