package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.mall.entity.MallMemberWallet; import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.math.BigDecimal; /** * @author wzy * @date 2021-09-22 **/ @Slf4j @Service @RequiredArgsConstructor public class ApiMallMemberWalletServiceImpl extends ServiceImpl implements IApiMallMemberWalletService { @Override public void addBalance(BigDecimal amount, Long memberId) { } @Override public void reduceBalance(BigDecimal amount, Long memberId) { int i = 0; boolean flag = true; while (flag) { i++; MallMemberWallet wallet = this.baseMapper.selectWalletByMemberId(memberId); if (amount.compareTo(wallet.getBalance()) < 0) { throw new FebsException("余额不足"); } wallet.setBalance(wallet.getBalance().subtract(amount)); int result = this.baseMapper.updateBalanceWithVersion(wallet); if (result > 0) { flag = false; } else { if (i > 2) { throw new FebsException("余额支付失败"); } } } } }