|
|
@@ -722,14 +722,15 @@ public class ChargingReceptionServiceImpl implements ChargingReceptionService {
|
|
|
// 获取当前实时消费金额
|
|
|
BigDecimal realCost = chargeOrderInfo.getRealCost() != null ? chargeOrderInfo.getRealCost() : BigDecimal.ZERO;
|
|
|
|
|
|
- // 剩余可用余额 = 账户余额 - 实时消费 - 安全阈值
|
|
|
- BigDecimal remainingBalance = balance.subtract(realCost).subtract(safetyThreshold);
|
|
|
+ // 剩余余额 = 账户余额 - 实时消费
|
|
|
+ BigDecimal remainingBalance = balance.subtract(realCost);
|
|
|
|
|
|
- log.info("熔断检查 - startChargeSeq: {}, 用户余额: {}, 实时消费: {}, 安全阈值: {}, 剩余可用: {}",
|
|
|
+ log.info("熔断检查 - startChargeSeq: {}, 用户余额: {}, 实时消费: {}, 安全阈值: {}, 剩余余额: {}",
|
|
|
chargeStatus.getStartChargeSeq(), balance, realCost, safetyThreshold, remainingBalance);
|
|
|
|
|
|
- // 如果剩余可用余额小于0,触发熔断
|
|
|
- if (remainingBalance.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ // 熔断条件:剩余余额 < 安全阈值 且 已产生实际消费(实时消费 > 0)
|
|
|
+ // 这样可以避免刚开始充电(消费为0)时因余额小于阈值而被误熔断
|
|
|
+ if (remainingBalance.compareTo(safetyThreshold) < 0 && realCost.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
log.warn("余额不足,触发熔断停止充电 - startChargeSeq: {}, 用户余额: {}, 实时消费: {}",
|
|
|
chargeStatus.getStartChargeSeq(), balance, realCost);
|
|
|
|