package com.taoke.autopay.manager;
|
|
import com.taoke.autopay.entity.credit.UserCreditBalance;
|
import com.taoke.autopay.entity.credit.UserCreditRecord;
|
import com.taoke.autopay.service.credit.UserCreditBalanceService;
|
import com.taoke.autopay.service.credit.UserCreditRecordService;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
|
@Component
|
public class UserCreditManager {
|
|
@Resource
|
private UserCreditBalanceService userCreditBalanceService;
|
|
@Resource
|
private UserCreditRecordService userCreditRecordService;
|
|
|
/**
|
* 增加积分(事务性)
|
*
|
* @param creditRecord 积分记录实体
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
public void increaseCredit(UserCreditRecord creditRecord) {
|
int amount = creditRecord.getCreditAmount();
|
// 增加积分
|
userCreditBalanceService.increaseCreditBalance(creditRecord.getUid(), amount);
|
// 增加记录
|
userCreditRecordService.addCreditRecord(creditRecord);
|
}
|
|
/**
|
* 扣除积分(事务性)
|
*
|
* @param creditRecord 积分记录实体
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
public void decreaseCredit(UserCreditRecord creditRecord) {
|
Long userId = creditRecord.getUid();
|
int amount = creditRecord.getCreditAmount();
|
|
// 判断用户积分余额是否足够
|
UserCreditBalance balance = userCreditBalanceService.getCreditBalanceByUserId(userId);
|
if (balance == null || balance.getCreditBalance() < amount) {
|
throw new RuntimeException("用户积分不足");
|
}
|
// 减少积分
|
userCreditBalanceService.decreaseCreditBalance(userId, amount);
|
// 增加积分记录
|
userCreditRecordService.addCreditRecord(creditRecord);
|
}
|
}
|