From a3657cc4e9fd9f13e4838db8eebaf914c529beee Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 15 七月 2026 14:34:44 +0800
Subject: [PATCH] 结算的已支付订单

---
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingSimulationSupportTest.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingSimulationSupportTest.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingSimulationSupportTest.java
index 13d2754..f6a7bfb 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingSimulationSupportTest.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingSimulationSupportTest.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.service.impl;
 
 import com.ruoyi.order.api.model.AccountingStrategyDetailOrder;
+import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
 import org.junit.jupiter.api.Test;
 
@@ -13,6 +14,57 @@
 class ChargingSimulationSupportTest {
 
     @Test
+    void supportsBalanceAndMixedPaymentAmounts() {
+        TChargingOrder balance = new TChargingOrder();
+        balance.setPayMethod(1);
+        balance.setRechargeAmount(new BigDecimal("10.00"));
+        balance.setChargeAmount(new BigDecimal("10.00"));
+        balance.setBalancePayAmount(new BigDecimal("10.00"));
+        balance.setThirdPayAmount(BigDecimal.ZERO);
+
+        assertEquals(new BigDecimal("10.00"), ChargingSimulationSupport.availableAmount(balance));
+        assertEquals("余额支付", ChargingSimulationSupport.paymentMode(balance));
+
+        TChargingOrder mixed = new TChargingOrder();
+        mixed.setPayMethod(2);
+        mixed.setRechargePaymentType(1);
+        mixed.setSourceName("ICBC");
+        mixed.setRechargeAmount(new BigDecimal("10.00"));
+        mixed.setBalancePayAmount(new BigDecimal("4.00"));
+        mixed.setThirdPayAmount(new BigDecimal("6.00"));
+
+        assertEquals(new BigDecimal("10.00"), ChargingSimulationSupport.availableAmount(mixed));
+        assertEquals("余额+工行支付", ChargingSimulationSupport.paymentMode(mixed));
+
+        TChargingOrder alipay = new TChargingOrder();
+        alipay.setPayMethod(3);
+        alipay.setRechargePaymentType(2);
+        alipay.setRechargeAmount(new BigDecimal("10.00"));
+        alipay.setBalancePayAmount(BigDecimal.ZERO);
+        alipay.setThirdPayAmount(new BigDecimal("10.00"));
+
+        assertEquals("支付宝支付", ChargingSimulationSupport.paymentMode(alipay));
+
+        TChargingOrder legacyAlipay = new TChargingOrder();
+        legacyAlipay.setPayMethod(3);
+        legacyAlipay.setRechargePaymentType(2);
+        legacyAlipay.setRechargeAmount(new BigDecimal("10.00"));
+
+        assertEquals("支付宝支付", ChargingSimulationSupport.paymentMode(legacyAlipay));
+        assertEquals(new BigDecimal("10.00"), ChargingSimulationSupport.thirdPayAmount(legacyAlipay));
+
+        TChargingOrder legacyMixed = new TChargingOrder();
+        legacyMixed.setPayMethod(2);
+        legacyMixed.setRechargePaymentType(1);
+        legacyMixed.setSourceName("ICBC");
+        legacyMixed.setRechargeAmount(new BigDecimal("10.00"));
+        legacyMixed.setBalancePayAmount(new BigDecimal("4.00"));
+
+        assertEquals("余额+工行支付", ChargingSimulationSupport.paymentMode(legacyMixed));
+        assertEquals(new BigDecimal("6.00"), ChargingSimulationSupport.thirdPayAmount(legacyMixed));
+    }
+
+    @Test
     void buildsOneKwhRecordForSelectedTariffPeriod() {
         AccountingStrategyDetailOrder first = detail(1, 1, "00:00", "12:00");
         AccountingStrategyDetailOrder second = detail(2, 3, "12:00", "23:59");

--
Gitblit v1.7.1