Administrator
2025-04-23 595b7935a30e84fba1bc3561d05f9d19d3e32e1f
src/main/java/com/taoke/autopay/service/impl/credit/UserCreditBalanceServiceImpl.java
@@ -22,9 +22,12 @@
    @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);
@@ -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);
@@ -50,19 +53,23 @@
    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());
        }
    }
}