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<MallMemberWalletMapper, MallMemberWallet> 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("余额支付失败");
|
}
|
}
|
}
|
}
|
}
|