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