From 79139c44f7d96f754e826fbc668e9967dcbed439 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期二, 11 八月 2026 15:35:03 +0800
Subject: [PATCH] fix: restrict whitelist charging benefits

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 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 e6fd2b8..49fca93 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
@@ -835,6 +835,12 @@
         AppUserWhitelistMatchVO whitelist = appUserWhitelistClient.matchWhitelist(userId, tChargingGun.getSiteId()).getData();
         boolean whitelistMatched = whitelist != null && Boolean.TRUE.equals(whitelist.getMatched());
         if (whitelistMatched) {
+            if (isBalancePayMode(payMethod)) {
+                return AjaxResult.error("白名单用户不支持余额支付");
+            }
+            if (addChargingOrder.getAppUserCouponId() != null) {
+                return AjaxResult.error("白名单用户不支持使用优惠券");
+            }
             addChargingOrder.setAppUserCouponId(null);
         }
         boolean whitelistAllFree = whitelistMatched
@@ -3077,6 +3083,7 @@
                 platformIncomeTotal = platformIncomeTotal.add(getSummaryDecimal(batchMap, "platformIncomeTotal"));
                 partnerIncomeTotal = partnerIncomeTotal.add(getSummaryDecimal(batchMap, "partnerIncomeTotal"));
             }
+            platformIncomeTotal = platformIncomeTotal.add(nullToZero(this.baseMapper.sumWhitelistRefundByOrderIds(batchIds)));
         }
         totalMap.put("platformIncomeTotal", platformIncomeTotal);
         totalMap.put("partnerIncomeTotal", partnerIncomeTotal);
@@ -4601,7 +4608,8 @@
         if (item == null) {
             return;
         }
-        item.setPlatformIncome(getSummaryDecimal(row, "platformIncome"));
+        item.setPlatformIncome(getSummaryDecimal(row, "platformIncome")
+                .add(getSummaryDecimal(row, "whitelistRefund")));
         item.setPartnerIncome(getSummaryDecimal(row, "partnerIncome"));
     }
 
@@ -4653,7 +4661,8 @@
         }
         for (ChargingOrderVO item : list) {
             Map<String, Object> row = incomeMap.get(item.getId());
-            item.setPlatformIncome(getSummaryDecimal(row, "platformIncome"));
+            item.setPlatformIncome(getSummaryDecimal(row, "platformIncome")
+                    .add(getSummaryDecimal(row, "whitelistRefund")));
             item.setPartnerIncome(getSummaryDecimal(row, "partnerIncome"));
         }
     }
@@ -5048,7 +5057,7 @@
                     BigDecimal serviceCharge = originalServicePrice;
                     BigDecimal vipDiscountAmount = BigDecimal.ZERO;
                     //计算优惠金额
-                    if (null != chargingOrder.getVipDiscount()) {
+                    if (!isWhitelistOrder(chargingOrder) && null != chargingOrder.getVipDiscount()) {
                         //0.58折
                         vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
                         serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount());
@@ -8199,7 +8208,7 @@
                     BigDecimal serviceCharge = originalServicePrice;
                     BigDecimal vipDiscountAmount = BigDecimal.ZERO;
                     //计算优惠金额
-                    if (null != chargingOrder.getVipDiscount()) {
+                    if (!isWhitelistOrder(chargingOrder) && null != chargingOrder.getVipDiscount()) {
                         //0.58折
                         vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
                         serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount());
@@ -8387,7 +8396,7 @@
                                 BigDecimal serviceCharge = originalServicePrice;
                                 BigDecimal vipDiscountAmount = BigDecimal.ZERO;
                                 //计算优惠金额
-                                if (null != chargingOrder.getVipDiscount()) {
+                                if (!isWhitelistOrder(chargingOrder) && null != chargingOrder.getVipDiscount()) {
                                     //0.58折
                                     vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount()));
                                     serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount());

--
Gitblit v1.7.1