admin
2021-06-23 b47f8a03db79bb1f6356479cd8a5cf190d7d9694
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
package com.ks.lijin.service.manager;
 
import com.ks.lijin.dao.LijinDangerGoodsDao;
import com.ks.lijin.mapper.LiJinExpendRecordMapper;
import com.ks.lijin.pojo.DO.LiJinDangerGoods;
import com.ks.lijin.pojo.DO.LiJinExpendRecord;
import com.ks.lijin.pojo.DO.TaoBaoOrderRecord;
import com.ks.lijin.utils.taobao.TaoBaoOrderUtil;
import org.springframework.stereotype.Component;
import org.yeshi.utils.TimeUtil;
 
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
 
@Component
public class LijinDangerGoodsManager {
 
    @Resource
    private LijinDangerGoodsDao lijinDangerGoodsDao;
 
    @Resource
    private LiJinExpendRecordMapper liJinExpendRecordMapper;
 
    /**
     * 处理订单
     *
     * @param record
     * @throws Exception
     */
    public void processOrder(TaoBaoOrderRecord record) throws Exception {
        if (record == null) {
            throw new Exception("订单为空");
        }
 
        if (record.getTb_paid_time() == null) {
            throw new Exception("订单未付款");
        }
 
        //查询是否在危险订单中
        LijinDangerGoodsDao.DaoQuery daoQuery = new LijinDangerGoodsDao.DaoQuery();
        daoQuery.tradeId = record.getTrade_id();
        daoQuery.count = 1;
        List<LiJinDangerGoods> list = lijinDangerGoodsDao.list(daoQuery);
        if (list != null && list.size() > 0) {
            throw new Exception("已加入危险订单记录");
        }
        //判断是否
        Date maxCreateTime = record.getTb_paid_time();
        Date minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(maxCreateTime.getTime(), "yyyyMMdd"), "yyyyMMdd"));
        LiJinExpendRecord expendRecord = liJinExpendRecordMapper.getMaxMoneyRecord(record.getItem_id() + "", minCreateTime, maxCreateTime);
        //判断是否触发机制
        if (expendRecord == null) {
            throw new Exception("礼金创建记录不存在");
        }
        BigDecimal money = expendRecord.getMoney();
        BigDecimal commission = TaoBaoOrderUtil.getCommission(record);
        if (commission == null) {
            throw new Exception("订单未处于付款/结算状态");
        }
 
        //礼金大于佣金的87%表示出错
        if (money.compareTo(commission.multiply(new BigDecimal("0.87"))) >= 0) {
            //危险报警
            LiJinDangerGoods dangerGoods = new LiJinDangerGoods();
            dangerGoods.setCreateTime(new Date());
            dangerGoods.setGoodsId(record.getItem_id() + "");
            dangerGoods.setGoodsType(1);
            dangerGoods.setMaxLijinMoney(money.multiply(new BigDecimal(100)).intValue());
            dangerGoods.setMinCommission(commission.multiply(new BigDecimal(100)).intValue());
            dangerGoods.setId(dangerGoods.getGoodsType() + "-" + dangerGoods.getGoodsId());
            lijinDangerGoodsDao.save(dangerGoods);
        }
    }
 
 
    /**
     * 是否是危险商品
     * @param goodsId
     * @param goodsType
     * @return
     */
    public boolean isDangerous(String goodsId, int goodsType) {
        String id = goodsType + "-" + goodsId;
        return lijinDangerGoodsDao.get(id) != null;
    }
 
 
}