| | |
| | | |
| | | @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); |
| | |
| | | |
| | | @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); |
| | |
| | | public void increaseCreditBalance(Long userId, int amount) { |
| | | UserCreditBalance 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) { |
| | | 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()); |
| | | } |
| | | } |
| | | } |