From 305b30ac8e80e547562586a9f71df06245ec76fb Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 19 八月 2026 11:35:56 +0800
Subject: [PATCH] fix: whitelist refund split by benefit type 1/2/3, align realtime & compensation settlement

---
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingCouponSupportTest.java |   28 +++++++++++++++++++++++-----
 1 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingCouponSupportTest.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingCouponSupportTest.java
index c7b2cce..ef3c42d 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingCouponSupportTest.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/ChargingCouponSupportTest.java
@@ -66,9 +66,18 @@
     }
 
     @Test
-    void nonFullWhitelistOnlyWaivesServiceCharge() {
-        BigDecimal[] split = ChargingCouponSupport.calculateWhitelistRefundSplit(
-                true, false, new BigDecimal("10"), new BigDecimal("5"));
+    void electricFreeWhitelistOnlyWaivesElectricity() {
+        BigDecimal[] split = ChargingCouponSupport.calculateWhitelistRefundSplitByBenefitType(
+                true, 2, new BigDecimal("10"), new BigDecimal("5"));
+
+        assertEquals(new BigDecimal("10"), split[0]);
+        assertEquals(BigDecimal.ZERO, split[1]);
+    }
+
+    @Test
+    void serviceFreeWhitelistOnlyWaivesServiceCharge() {
+        BigDecimal[] split = ChargingCouponSupport.calculateWhitelistRefundSplitByBenefitType(
+                true, 3, new BigDecimal("10"), new BigDecimal("5"));
 
         assertEquals(BigDecimal.ZERO, split[0]);
         assertEquals(new BigDecimal("5"), split[1]);
@@ -76,13 +85,22 @@
 
     @Test
     void fullWhitelistWaivesElectricityAndServiceCharge() {
-        BigDecimal[] split = ChargingCouponSupport.calculateWhitelistRefundSplit(
-                true, true, new BigDecimal("10"), new BigDecimal("5"));
+        BigDecimal[] split = ChargingCouponSupport.calculateWhitelistRefundSplitByBenefitType(
+                true, 1, new BigDecimal("10"), new BigDecimal("5"));
 
         assertEquals(new BigDecimal("10"), split[0]);
         assertEquals(new BigDecimal("5"), split[1]);
     }
 
+    @Test
+    void nonWhitelistDoesNotReceiveWhitelistRefund() {
+        BigDecimal[] split = ChargingCouponSupport.calculateWhitelistRefundSplitByBenefitType(
+                false, 2, new BigDecimal("10"), new BigDecimal("5"));
+
+        assertEquals(BigDecimal.ZERO, split[0]);
+        assertEquals(BigDecimal.ZERO, split[1]);
+    }
+
     private TCoupon chargingCoupon(int preferentialMode) {
         TCoupon coupon = new TCoupon();
         coupon.setType(1);

--
Gitblit v1.7.1