From 38e265af32e4abc48d4625d0b3676543e6618736 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 13 十月 2026 17:21:55 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
index 9457b9c..5429658 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
@@ -740,7 +740,7 @@
      * 1) 企业状态校验(未归属/不存在/停用 -> 失败码2),账户模式取企业配置(默认共享);
      * 2) 企业充电授权校验:站点范围(超范围 -> 失败码2)、可用时段(不在时段 -> 失败码2),未配置授权按放行处理;
      * 3) 可用余额校验(共享=企业可用余额,分配=卡可用余额,<=0 -> 失败码3);
-     * 4) 下发金额 = min(授权下发额, 可用余额),锁定额度与下发金额一致;授权截止时间用于监控提前停充。
+     * 4) 下发金额:共享模式=min(授权下发额, 可用余额),分配模式=卡账户余额;锁定额度与下发金额一致;授权截止时间用于监控提前停充。
      */
     private ChargeAccountSupport.ChargeContext resolveCardChargeContext(Integer siteId, Integer strategyId,
                                                                        TChargingCard card) {
@@ -796,11 +796,16 @@
             return ChargeAccountSupport.ChargeContext.fail(3, "账户可用余额不足");
         }
 
-        // 4. 下发金额 = min(授权下发额, 可用余额),锁定金额与下发金额一致
-        BigDecimal dispatchAmount = authorization == null || authorization.getDispatchAmount() == null
-                ? ChargeAccountSupport.DEFAULT_DISPATCH_AMOUNT : authorization.getDispatchAmount();
-        if (dispatchAmount.compareTo(usable) > 0) {
+        // 4. 下发金额:共享模式=min(授权下发额, 可用余额),分配模式=卡账户余额;锁定金额与下发金额一致
+        BigDecimal dispatchAmount;
+        if (Integer.valueOf(ChargeAccountSupport.ACCOUNT_MODE_ALLOCATED).equals(accountMode)) {
             dispatchAmount = usable;
+        } else {
+            dispatchAmount = authorization == null || authorization.getDispatchAmount() == null
+                    ? ChargeAccountSupport.DEFAULT_DISPATCH_AMOUNT : authorization.getDispatchAmount();
+            if (dispatchAmount.compareTo(usable) > 0) {
+                dispatchAmount = usable;
+            }
         }
         if (dispatchAmount.compareTo(BigDecimal.ZERO) <= 0) {
             return ChargeAccountSupport.ChargeContext.fail(3, "账户可用余额不足");

--
Gitblit v1.7.1