From 3053584b8b76e096d0ec865ccf8a877df9b43a8b Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 19 八月 2026 11:38:49 +0800
Subject: [PATCH] fix:平台收入分账接收二级商户

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java   |    4 ++--
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/PlatformRevenueAnalysisTest.java |   20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 2 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 49fca93..b5966f9 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
@@ -8699,7 +8699,7 @@
         BigDecimal shareElectricityAmount = getChargingOrderShareElectricityAmount(chargingOrder);
         BigDecimal shareServiceAmount = getChargingOrderShareServiceAmount(chargingOrder);
         BigDecimal shareBaseAmount = shareElectricityAmount.add(shareServiceAmount).setScale(2, RoundingMode.HALF_UP);
-        if (actualTotalPay.compareTo(BigDecimal.ZERO) <= 0 && isWhitelistOrder(chargingOrder)) {
+        if (actualTotalPay.compareTo(BigDecimal.ZERO) <= 0 && isWhitelistAllFreeOrder(chargingOrder)) {
             actualTotalPay = shareBaseAmount;
         }
         if (actualTotalPay.compareTo(BigDecimal.ZERO) <= 0) {
@@ -8719,7 +8719,7 @@
             records.add(buildChargingOrderShareRecord(chargingOrder, site, partner, resolveThirdPayChannel(chargingOrder), actualThirdPay,
                     BigDecimal.ZERO, actualTotalPay, shareElectricityAmount, shareServiceAmount));
         }
-        if (records.isEmpty() && isWhitelistOrder(chargingOrder)) {
+        if (records.isEmpty() && isWhitelistAllFreeOrder(chargingOrder)) {
             records.add(buildChargingOrderShareRecord(chargingOrder, site, partner, "WHITELIST", actualTotalPay,
                     BigDecimal.ZERO, actualTotalPay, shareElectricityAmount, shareServiceAmount));
         }
diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/PlatformRevenueAnalysisTest.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/PlatformRevenueAnalysisTest.java
index c1430be..e1391a1 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/PlatformRevenueAnalysisTest.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/PlatformRevenueAnalysisTest.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.service.impl;
 
 import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TChargingOrderShareRecord;
 import com.ruoyi.order.dto.SixCircleDto;
 import com.ruoyi.order.mapper.TChargingOrderMapper;
 import com.ruoyi.order.dto.SixChargingDto;
@@ -19,6 +20,7 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
@@ -143,4 +145,22 @@
         assertEquals(new BigDecimal("18.60"), amount);
     }
 
+    @Test
+    void partialWhitelistOrderDoesNotCreateVirtualIncomeAfterManualFullRefund() {
+        TChargingOrder order = new TChargingOrder();
+        order.setId(1L);
+        order.setIsWhitelist(1);
+        order.setWhitelistBenefitType(3);
+        order.setThirdPayAmount(new BigDecimal("2.50"));
+        order.setThirdRefundAmount(new BigDecimal("2.50"));
+        order.setElectrovalence(BigDecimal.ZERO);
+        order.setServiceCharge(BigDecimal.ZERO);
+        order.setWhitelistServiceRefundAmount(new BigDecimal("2.50"));
+
+        List<TChargingOrderShareRecord> records = ReflectionTestUtils.invokeMethod(
+                service, "buildChargingOrderShareRecords", order, null, null);
+
+        assertTrue(records.isEmpty());
+    }
+
 }

--
Gitblit v1.7.1