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;
|
}
|
|
|
}
|