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