Helius
2021-06-28 1f2deeadddd52a23271c8df479912051c44f8f2d
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.xzx.gc.order.service;
 
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.NumberUtil;
import com.xzx.gc.common.constant.CommonEnum;
import com.xzx.gc.common.constant.Constants;
import com.xzx.gc.common.constant.OrderEnum;
import com.xzx.gc.common.exception.RestException;
import com.xzx.gc.common.utils.BusinessUtil;
import com.xzx.gc.entity.CityPartner;
import com.xzx.gc.entity.PartnerAccount;
import com.xzx.gc.entity.PartnerAccountLog;
import com.xzx.gc.model.admin.PartnerAccountLogModel;
import com.xzx.gc.model.admin.PartnerAccountModel;
import com.xzx.gc.order.mapper.PartnerAccountMapper;
import com.xzx.gc.util.DoubleUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
 
import java.math.BigDecimal;
import java.util.List;
 
@Service
@Transactional
@Slf4j
public class PartnerAccountService {
 
    @Autowired
    private PartnerAccountMapper partnerAccountMapper;
 
    @Autowired
    private PartnerAccountLogService partnerAccountLogService;
 
 
    public PartnerAccount findByPartnerId(String partnerId){
        PartnerAccount partnerAccount=new PartnerAccount();
        partnerAccount.setPartnerId(partnerId);
        partnerAccount.setDelFlag(Constants.DEL_NOT_FLAG);
        PartnerAccount partnerAccount1 = partnerAccountMapper.selectOne(partnerAccount);
        return partnerAccount1;
    }
 
 
 
    public PartnerAccount findByAccount(String accountId){
        PartnerAccount partnerAccount=new PartnerAccount();
        partnerAccount.setAccount(accountId);
        partnerAccount.setDelFlag(0);
        return partnerAccountMapper.selectOne(partnerAccount);
    }
 
    public List<PartnerAccount> findByType(String type){
        PartnerAccount partnerAccount=new PartnerAccount();
        partnerAccount.setDelFlag(Constants.DEL_NOT_FLAG);
        partnerAccount.setType(type);
        return partnerAccountMapper.select(partnerAccount);
    }
 
 
 
 
    public void updateReduceMoneyByPartnerId(String partnerId,BigDecimal money){
        //判断合伙人账户的钱是否足够
        PartnerAccount byPartnerId = findByPartnerId(partnerId);
        BigDecimal bigDecimal = Convert.toBigDecimal(byPartnerId.getHbb(),Constants.MONEY_INIT);
        if(bigDecimal.compareTo(money)<0){
            throw new RestException(-1,"合伙人账户余额不足,支付失败");
        }
        partnerAccountMapper.updateReduceMoneyByPartnerId(partnerId,money);
    }
 
    public void updateAddMoneyByPartnerId(String partnerId,BigDecimal money){
        partnerAccountMapper.updateAddMoneyByPartnerId(partnerId,money);
    }
 
    public void addPartnerAccountLog(String money, CityPartner partner, String settleId){
        PartnerAccountLog partnerAccountLog = new PartnerAccountLog();
        partnerAccountLog.setPartnerId(partner.getId().toString());
        partnerAccountLog.setFlowNo(settleId);
        partnerAccountLog.setType(OrderEnum.结算提成.getValue());
        partnerAccountLog.setMoney("-" + money);
        partnerAccountLog.setAccountId(partner.getAccountNo());
        partnerAccountLog.setUserName(partner.getPartnerName());
        partnerAccountLog.setUserPhone(partner.getMobilePhone());
        partnerAccountLog.setRoleName("城市合伙人");
        partnerAccountLogService.add(partnerAccountLog);
 
        //扣除
        updateReduceMoneyByPartnerId(partner.getId().toString(),Convert.toBigDecimal(money));
 
    }
}