ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -8697,7 +8697,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) { @@ -8717,7 +8717,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)); } 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()); } }