From d4bde58ab669a434bb0c96f391153ec66eedd5b7 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 28 九月 2026 18:43:46 +0800
Subject: [PATCH] 修改余额字段及相关代码修改

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TChargingCardServiceImpl.java |   22 +++++++++++++---------
 1 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TChargingCardServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TChargingCardServiceImpl.java
index d8c61bd..88d88ee 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TChargingCardServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TChargingCardServiceImpl.java
@@ -106,7 +106,7 @@
     public boolean saveCard(ChargingCardSaveDTO dto) {
         validateCard(dto, false);
         String cardNo = dto.getCardNo().trim();
-        BigDecimal quota = normalizeQuota(dto.getInitQuota());
+        BigDecimal quota = normalizeQuota(dto.getBalance());
         // 同卡号并发新增串行化,卡号重复校验与额度扣减在同一临界区内
         RLock lock = redissonClient.getLock(QUOTA_LOCK_PREFIX + "CARD_NO:" + cardNo);
         boolean locked = tryQuotaLock(lock, "该卡号正在处理中,请稍后重试");
@@ -114,7 +114,7 @@
         try {
             TChargingCard card = new TChargingCard();
             card.setCardNo(cardNo);
-            card.setBalance(dto.getBalance() == null ? BigDecimal.ZERO : dto.getBalance());
+            card.setBalance(quota.signum() > 0 ? quota : BigDecimal.ZERO);
             card.setStatus(dto.getStatus() == null ? ENABLED : dto.getStatus());
             card.setPassword(encodePasswordIfPresent(dto.getPassword()));
             card.setChargingFlag(0);
@@ -128,7 +128,6 @@
                 deductBalance(card.getCompanyId(), quota);
                 compensations.add(() -> refundQuietly(card.getCompanyId(), quota));
             }
-            card.setInitQuota(quota.signum() > 0 ? quota : null);
             if (!save(card)) {
                 throw new ServiceException("新增卡片失败");
             }
@@ -166,12 +165,12 @@
             card.setUpdateTime(LocalDateTime.now());
             card.setUpdateBy(SecurityUtils.getUserId());
             applyRelation(card, dto);
-            BigDecimal newQuota = normalizeQuota(dto.getInitQuota());
+            BigDecimal newQuota = normalizeQuota(dto.getBalance());
             if (newQuota.signum() > 0) {
                 requireAllocationCompany(card.getCompanyId());
             }
             Integer oldCompanyId = latest.getCompanyId();
-            BigDecimal oldQuota = normalizeQuota(latest.getInitQuota());
+            BigDecimal oldQuota = normalizeQuota(latest.getBalance());
             if (Objects.equals(oldCompanyId, card.getCompanyId())) {
                 // 同一公司按差额调整:调增扣差额,调减退差额
                 BigDecimal diff = newQuota.subtract(oldQuota);
@@ -197,7 +196,7 @@
                     compensations.add(() -> refundQuietly(card.getCompanyId(), newQuota));
                 }
             }
-            card.setInitQuota(newQuota.signum() > 0 ? newQuota : null);
+            card.setBalance(newQuota.signum() > 0 ? newQuota : null);
             String encodedPassword = encodePasswordIfPresent(dto.getPassword());
             if (!updateCardRecord(card, encodedPassword, latest)) {
                 throw new ServiceException("修改卡片失败");
@@ -783,17 +782,22 @@
         if (!updateById(update)) {
             return false;
         }
+        BigDecimal newBalance = card.getBalance();
+        boolean balanceChanged = newBalance != null && newBalance.signum() > 0
+                && !quotaEquals(existing.getBalance(), newBalance);
         boolean relationChanged = !Objects.equals(existing.getCompanyId(), card.getCompanyId())
                 || !Objects.equals(existing.getFleetId(), card.getFleetId())
-                || !quotaEquals(existing.getInitQuota(), card.getInitQuota());
+                || balanceChanged;
         if (!relationChanged) {
             return true;
         }
         UpdateWrapper<TChargingCard> relationUpdate = new UpdateWrapper<>();
         relationUpdate.eq("id", card.getId())
                 .set("company_id", card.getCompanyId())
-                .set("fleet_id", card.getFleetId())
-                .set("init_quota", card.getInitQuota());
+                .set("fleet_id", card.getFleetId());
+        if (balanceChanged) {
+            relationUpdate.set("balance", newBalance);
+        }
         return update(null, relationUpdate);
     }
 

--
Gitblit v1.7.1