AccountManager.java 2 KB
Newer Older
licc's avatar
licc committed
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 58 59 60 61 62 63 64 65 66 67
package cn.wisenergy.service.common;

import cn.wisenergy.mapper.AccountMapper;
import cn.wisenergy.mapper.OrderMapper;
import cn.wisenergy.mapper.TradeRecordMapper;
import cn.wisenergy.model.app.AccountInfo;
import cn.wisenergy.model.app.OrderInfo;
import cn.wisenergy.model.app.Rebate;
import cn.wisenergy.model.app.TradeRecord;
import io.undertow.security.idm.Account;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;

/**
 * @author 86187
 * @ Description: 账户管理公共类
 * @ Author     : 86187
 * @ Date       : 2021/2/23 10:43
 */
@Component
@Slf4j
public class AccountManager {

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private AccountMapper accountMapper;

    @Autowired
    private TradeRecordMapper recordMapper;

    @Transactional(rollbackFor = Exception.class)
    public Boolean updateOrderAddMoney(OrderInfo orderInfo, AccountInfo accountInfo, Rebate rebate) {
        //1、计算返佣金额
        BigDecimal bigDecimal = orderInfo.getPayment().multiply(rebate.getPercent());
        BigDecimal extractMoney = accountInfo.getExtractMoney().add(bigDecimal);
        accountInfo.setExtractMoney(extractMoney);

        //2、修改订单返佣状态:已返佣 1
        orderInfo.setRebateStatus(1);

        int count = orderMapper.updateById(orderInfo);
        if (count == 0) {
            return false;
        }

        //3、增加账户可用金额
        int sum = accountMapper.updateById(accountInfo);

        //4、添加交易流水记录
        TradeRecord tradeRecord = new TradeRecord();
        tradeRecord.setUserId(orderInfo.getBuyerId());
        tradeRecord.setTradeType(2);
        tradeRecord.setTradeNo(orderInfo.getTid());
        int number = recordMapper.add(tradeRecord);
        if (number == 0) {
            return false;
        }

        return true;
    }
}