From f318c9c7c127b00f353bf45f273096d1dc4b424f Mon Sep 17 00:00:00 2001 From: admin <1101184511@qq.com> Date: 星期三, 20 八月 2025 01:10:48 +0800 Subject: [PATCH] 功能完善 --- src/main/java/com/taoke/autopay/service/impl/credit/UserCreditBalanceServiceImpl.java | 35 ++++++++++++++++++++++++++--------- 1 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/taoke/autopay/service/impl/credit/UserCreditBalanceServiceImpl.java b/src/main/java/com/taoke/autopay/service/impl/credit/UserCreditBalanceServiceImpl.java index d464cab..02b2870 100644 --- a/src/main/java/com/taoke/autopay/service/impl/credit/UserCreditBalanceServiceImpl.java +++ b/src/main/java/com/taoke/autopay/service/impl/credit/UserCreditBalanceServiceImpl.java @@ -22,12 +22,15 @@ @Override public void initializeCreditBalance(Long userId) { + if (getCreditBalanceByUserId(userId) != null) { + return; + } UserCreditBalance userCreditBalance = new UserCreditBalance(); userCreditBalance.setId(userId); - userCreditBalance.setCreditBalance(BigDecimal.ZERO); + userCreditBalance.setCreditBalance(0); userCreditBalance.setCreateTime(new Date()); userCreditBalance.setUpdateTime(new Date()); - userCreditBalanceMapper.insert(userCreditBalance); + userCreditBalanceMapper.insertSelective(userCreditBalance); } @Override @@ -37,7 +40,7 @@ @Override public Map<Long, UserCreditBalance> getCreditBalancesByUserIds(List<Long> userIds) { - List<UserCreditBalance> userCreditBalances = userCreditBalanceMapper.selectByIds(userIds); + List<UserCreditBalance> userCreditBalances = userCreditBalanceMapper.listByIds(userIds); Map<Long, UserCreditBalance> balanceMap = new HashMap<>(); for (UserCreditBalance balance : userCreditBalances) { balanceMap.put(balance.getId(), balance); @@ -49,20 +52,34 @@ @Override public void increaseCreditBalance(Long userId, int amount) { UserCreditBalance userCreditBalance = userCreditBalanceMapper.selectByPrimaryKeyForUpdate(userId); + if (userCreditBalance == null) { + initializeCreditBalance(userId); + userCreditBalance = userCreditBalanceMapper.selectByPrimaryKeyForUpdate(userId); + } if (userCreditBalance != null) { - userCreditBalance.setCreditBalance(userCreditBalance.getCreditBalance().add(amount)); - userCreditBalance.setUpdateTime(new Date()); - userCreditBalanceMapper.updateByPrimaryKeySelective(userCreditBalance); + userCreditBalanceMapper.updateByPrimaryKeySelective(UserCreditBalance.builder() + .id(userCreditBalance.getId()) + .creditBalance(userCreditBalance.getCreditBalance() + amount) + .updateTime(new Date()) + .build()); } } + @Transactional(rollbackFor = Exception.class) @Override public void decreaseCreditBalance(Long userId, int amount) { UserCreditBalance userCreditBalance = userCreditBalanceMapper.selectByPrimaryKeyForUpdate(userId); + if (userCreditBalance == null) { + initializeCreditBalance(userId); + userCreditBalance = userCreditBalanceMapper.selectByPrimaryKeyForUpdate(userId); + } + if (userCreditBalance != null) { - userCreditBalance.setCreditBalance(userCreditBalance.getCreditBalance().subtract(amount)); - userCreditBalance.setUpdateTime(new Date()); - userCreditBalanceMapper.updateByPrimaryKeySelective(userCreditBalance); + userCreditBalanceMapper.updateByPrimaryKeySelective(UserCreditBalance.builder() + .id(userCreditBalance.getId()) + .creditBalance(userCreditBalance.getCreditBalance() - amount) + .updateTime(new Date()) + .build()); } } } -- Gitblit v1.8.0