Sunshine
2024-11-05 8f7985d7764a0aad24bd593ac5ea47b7fc290961
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
package com.nova.sankuai.infra.utils.zcy;
 
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.nova.sankuai.domain.api.zcy.ZcyResponse;
import com.nova.sankuai.domain.dto.zcy.CustomerZcyDto;
import com.nova.sankuai.domain.entity.Customer;
import com.nova.sankuai.domain.entity.CustomerZcy;
import com.nova.sankuai.infra.utils.eshidai.EsdUtil;
import com.nova.sankuai.infra.utils.hht.HhtUtil;
import com.nova.sankuai.infra.utils.hjqb.HjqbUtil;
import com.nova.sankuai.infra.utils.ryh.RyhUtil;
import com.nova.sankuai.infra.utils.syh.SyhUtil;
import com.nova.sankuai.infra.utils.zhd.ZhdUtil;
import com.nova.sankuai.service.ICustomerZcyService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
 
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
@Component
@RequiredArgsConstructor
public class ZcyUtil {
 
    private static final Logger log = LoggerFactory.getLogger("capitalLogger");
    private final ICustomerZcyService customerZcyService;
    private final SyhUtil syhUtil;
    private final HhtUtil hhtUtil;
    private final ZhdUtil zhdUtil;
    private final RyhUtil ryhUtil;
    private final HjqbUtil hjqbUtil;
    private final EsdUtil esdUtil;
 
    public ZcyResponse callback(CustomerZcyDto body) {
        String logNumber = IdUtil.randomUUID();
        try {
            if (Objects.isNull(body)) {
                ZcyResponse resp = getZcyResponse(400, "请求体为空");
                log.error("日志编号:{} 中诚易数据入库失败,错误原因:随易花资方回调请求体为空!", logNumber);
                return resp;
            }
            // 获取电话
            String phone = body.getPhone();
 
            // 判断数据库是否有数据,有数据,则说明以前有推送过来过
            CustomerZcy customer = customerZcyService.getOne(new LambdaQueryWrapper<CustomerZcy>().eq(CustomerZcy::getPhone, phone));
            if (!Objects.isNull(customer)) {
                ZcyResponse resp = getZcyResponse(400, "电话号码为" + phone + " 已推送过数据!");
                log.error("日志编号:{} 手机号为:{} 中诚易数据入库失败,传入参数:{} 错误原因:已推送过数据!", logNumber, phone, body);
                return resp;
            }
 
            // 开始录入数据
            CustomerZcy customerZcy = new CustomerZcy();
            BeanUtils.copyProperties(body, customerZcy);
            customerZcyService.save(customerZcy);
 
            // 异步进行推送和进件操作
            ExecutorService executor = Executors.newFixedThreadPool(1);
            CompletableFuture.supplyAsync(() -> {
                Customer cust = new Customer();
                BeanUtils.copyProperties(body, cust);
 
                // 推送和进件数据到随易花
                boolean succ = syhUtil.zcyPushToSyh(cust, logNumber);
                if (succ) {// 推送成功,开始进件
                    syhUtil.zcyIncomeToSyh(cust, logNumber);
                }
 
                // 推送和进件数据到好汇推
                boolean succHht =  hhtUtil.zcyPushToHht(cust, logNumber);
                if (succHht) {
                    hhtUtil.zcyIncomeToHht(cust, logNumber);
                }
 
                // 推送和进件数据到助贷
                boolean succZhd = zhdUtil.zcyPushToZhd(cust, logNumber);
                if (succZhd) {
                    zhdUtil.zcyIncomeToZhd(cust, logNumber);
                }
 
                // 推送和进件数据到任意花
                boolean succRyh = ryhUtil.zcyPushToRyh(cust, logNumber);
                if (succRyh){
                    ryhUtil.zcyIncomeToRyh(cust, logNumber);
                }
 
                // 推送和进件数据到慧借钱包
                boolean succHjqb = hjqbUtil.zcyPushToHjqb(cust, logNumber);
                if (succHjqb){
                    hjqbUtil.zcyIncomeToHjqb(cust, logNumber);
                }
                // 推送和进件数据到e时贷
                boolean succEsd = esdUtil.zcyPushToEsd(cust, logNumber);
                if (succEsd){
                    esdUtil.zcyIncomeToEsd(cust, logNumber);
                }
                return true;
            }, executor);
 
            ZcyResponse resp = getZcyResponse(200, "成功!");
            log.info("日志编号:{} 手机号为:{} 中诚易数据入库成功", logNumber, phone);
            return resp;
        } catch (Exception e) {
            ZcyResponse resp = getZcyResponse(500, e.getMessage());
            log.error("日志编号:{} 中诚易数据入库失败,传入参数:{} 错误原因:{}", logNumber, body, e);
            return resp;
        }
    }
 
    @NotNull
    private ZcyResponse getZcyResponse(Integer code, String msg) {
        ZcyResponse resp = new ZcyResponse();
        resp.setCode(code);
        resp.setMsg(msg);
        return resp;
    }
 
 
}