admin
2021-07-10 29918ba877731850d001fb2d1a3f3774698241c1
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.ks.lijin.service.manager;
 
import com.ks.lijin.dao.TaoBaoOrderRecordDao;
import com.ks.lijin.mapper.LiJinExpendRecordMapper;
import com.ks.lijin.mapper.LiJinProviderAccountMapper;
import com.ks.lijin.pojo.DO.LiJinExpendRecord;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import com.ks.lijin.pojo.DO.TaoBaoOrderRecord;
import com.ks.lijin.pojo.DTO.taobao.TaoKeAppInfo;
import com.ks.lijin.pojo.DTO.taobao.TaoLiJinReportDTO;
import com.ks.lijin.utils.taobao.TaoKeApiUtil;
import com.ks.vip.exception.LijinBalanceException;
import com.ks.vip.pojo.DO.UserLijinRecord;
import com.ks.vip.service.LijinBalanceService;
import com.ks.vip.service.LijinRecordService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;
import org.yeshi.utils.TimeUtil;
 
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
 
/**
 * 礼金订单管理
 */
@Component
public class LijinOrderManager {
 
    @Resource
    private TaoBaoOrderRecordDao taoBaoOrderRecordDao;
 
    @Resource
    private LijinDangerGoodsManager lijinDangerGoodsManager;
 
    @Resource
    private LiJinExpendRecordMapper liJinExpendRecordMapper;
 
    @Resource
    private LiJinProviderAccountMapper liJinProviderAccountMapper;
 
    @Resource
    private LijinDangerSellerManager lijinDangerSellerManager;
 
    @Reference(version = "1.0", check = false)
    private LijinBalanceService lijinBalanceService;
 
    @Reference(version = "1.0", check = false)
    private LijinRecordService lijinRecordService;
 
    /**
     * 保存淘宝订单
     *
     * @param taoBaoOrderRecord
     */
    public void saveTaoBaoOrder(TaoBaoOrderRecord taoBaoOrderRecord) {
        if (taoBaoOrderRecord == null) {
            return;
        }
        //不保存非淘礼金的订单数据
        if (taoBaoOrderRecord.getMarketing_type() == null || !taoBaoOrderRecord.getMarketing_type().contains("淘礼金")) {
            return;
        }
        taoBaoOrderRecord.setUpdateTime(new Date());
        taoBaoOrderRecord.setId(taoBaoOrderRecord.getTrade_id());
        taoBaoOrderRecordDao.save(taoBaoOrderRecord);
 
        try {
            lijinDangerGoodsManager.processOrder(taoBaoOrderRecord);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        try {
            lijinDangerSellerManager.processOrder(taoBaoOrderRecord);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 
    public void syncOnGoingLijin() {
        long now = System.currentTimeMillis();
        Date maxCreateTime = new Date(now - 1000 * 60 * 2);
        Date minCreateTime = new Date(maxCreateTime.getTime() - 1000 * 60 * 60 * 24L);
        long count = liJinExpendRecordMapper.countOnGoingLijin(minCreateTime, maxCreateTime);
        int page = (int) (count % 100 == 0 ? count / 100 : count / 100 + 1);
        for (int i = 0; i < page; i++) {
            List<LiJinExpendRecord> recordList = liJinExpendRecordMapper.listOnGoingLijin(minCreateTime, maxCreateTime, 100 * i, 100);
            if (recordList != null) {
                for (LiJinExpendRecord record : recordList) {
                    LiJinProviderTaoKeAccount account = liJinProviderAccountMapper.selectByPrimaryKey(record.getAccountId());
                    TaoLiJinReportDTO reportDTO = TaoKeApiUtil.taolijinReport(record.getRightsId(), new TaoKeAppInfo(account.getAppKey(), account.getAppSecret(), account.getPid()));
                    if (reportDTO != null) {
                        //有数据
                        if (reportDTO.getFp_refund_num() != null || reportDTO.getRefund_num() != null || reportDTO.getUnfreeze_num() != null || reportDTO.getUse_num() != null || reportDTO.getWin_num() != null) {
                            LiJinExpendRecord update = new LiJinExpendRecord(record.getId());
                            update.setRefundAmount(reportDTO.getRefund_amount());
                            update.setRefundNum(reportDTO.getRefund_num());
                            update.setUnfreezeAmount(reportDTO.getUnfreeze_amount());
                            update.setUnfreezeNum(reportDTO.getUnfreeze_num());
                            update.setUseAmount(reportDTO.getUse_amount());
                            update.setUseNum(reportDTO.getUse_num());
                            update.setWinAmount(reportDTO.getUse_amount());
                            update.setWinNum(reportDTO.getWin_num());
                            update.setUpdateTime(new Date());
                            update.setPreCommissionAmount(reportDTO.getPre_commission_amount());
                            liJinExpendRecordMapper.updateByPrimaryKeySelective(update);
                        }
                        //判断是否为当天创建
                        if (!TimeUtil.getGernalTime(now, "yyyyMMdd").equalsIgnoreCase(TimeUtil.getGernalTime(record.getCreateTime().getTime(), "yyyyMMdd"))) {
                            //不是当天创建的,而且没有使用
                            if (reportDTO.getUse_num() == null || reportDTO.getUse_num() == 0) {
                                UserLijinRecord record1 = lijinRecordService.getRecord(record.getUid(), UserLijinRecord.TYPE_ADD, UserLijinRecord.Category.createGoodsLijin.name(), record.getId() + "");
                                if (record1 != null) {
                                    continue;
                                }
 
                                try {
                                    lijinBalanceService.addLijin(record.getUid(), record.getMoney(), "未抵退回", UserLijinRecord.Category.createGoodsLijin.name(), record.getId() + "");
                                } catch (LijinBalanceException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
 
                    }
                }
            }
        }
 
 
    }
 
 
}