admin
2025-04-20 24b1d8e38de30063e2fc8008265455da32e959b2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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);
    }
}