package com.nova.sankuai.infra.utils.hjqb;
|
|
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.crypto.SecureUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.nova.sankuai.domain.api.esd.EsdResponse;
|
import com.nova.sankuai.domain.api.hjqb.HjqbResponse;
|
import com.nova.sankuai.domain.api.yinsheng.StringUtil;
|
import com.nova.sankuai.domain.entity.*;
|
import com.nova.sankuai.domain.enums.capitalInfo.CapitalInfoTypeCodeEnum;
|
import com.nova.sankuai.domain.vo.capitalresult.LvdiPushResultVo;
|
import com.nova.sankuai.infra.config.CommonException;
|
import com.nova.sankuai.infra.mapper.CustomerCapitalResultMapper;
|
import com.nova.sankuai.infra.mapper.CustomerMapper;
|
import com.nova.sankuai.infra.utils.RbUtil;
|
import com.nova.sankuai.infra.utils.ResultJson;
|
import com.nova.sankuai.infra.utils.UserUtil;
|
import com.nova.sankuai.security.HttpClientUtil;
|
import com.nova.sankuai.security.UserDetail;
|
import com.nova.sankuai.service.ICustomerScyIncomeService;
|
import com.nova.sankuai.service.ICustomerUserService;
|
import com.nova.sankuai.service.IPlatformCapitalService;
|
import lombok.RequiredArgsConstructor;
|
import org.apache.commons.lang3.StringUtils;
|
import org.jetbrains.annotations.Nullable;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.DigestUtils;
|
import sun.misc.BASE64Encoder;
|
|
import javax.crypto.Cipher;
|
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.SecretKeySpec;
|
import javax.servlet.http.HttpServletRequest;
|
import java.nio.charset.StandardCharsets;
|
import java.util.Calendar;
|
import java.util.Objects;
|
import java.util.Random;
|
|
/**
|
* 慧借钱包对接
|
*/
|
@Component
|
@RequiredArgsConstructor
|
public class HjqbUtil {
|
private static final Logger log = LoggerFactory.getLogger("capitalLogger");
|
|
private static final Long capitalId = 12L;
|
|
@Value("${hjqb.domain}")
|
private String domain;
|
|
@Value("${hjqb.zkUrl}")
|
private String zkUrl;
|
|
@Value("${hjqb.jkUrl}")
|
private String jkUrl;
|
|
@Value("${hjqb.apiName}")
|
private String apiName;
|
|
|
@Value("${hjqb.channelCode}")
|
private String channelCode;
|
|
@Value("${hjqb.orgAccount}")
|
private String orgAccount;
|
|
@Value("${hjqb.skey}")
|
private String secretKey;
|
|
@Value("${hjqb.ivParameter}")
|
private String vector;
|
|
@Value("${hjqb.companyName}")
|
private String companyName;
|
|
@Value("${hjqb.productName}")
|
private String productName;
|
|
@Value("${hjqb.logoUrl}")
|
private String logoUrl;
|
|
private final CustomerMapper customerMapper;
|
private final CustomerCapitalResultMapper capitalResultMapper;
|
private final IPlatformCapitalService platformCapitalService;
|
private final ICustomerUserService customerUserService;
|
private final ICustomerScyIncomeService customerZcyIncomeService;
|
|
|
private JSONObject getParam(Customer customer) {
|
|
JSONObject param = new JSONObject();
|
|
param.put("userName", customer.getName());
|
|
/*渠道code*/
|
param.put("channelCode", channelCode);
|
|
//param.put("phone", customer.getPhone());
|
|
/* age String 是 25 年龄(25-55之间)*/
|
Integer age = RbUtil.calculateAgeFromIdNumber(customer.getIdCard());
|
param.put("age", Objects.isNull(age) ? 25 : age);
|
|
String sex = RbUtil.getGenderByIDCard(customer.getIdCard());
|
param.put("sex", "男".equals(sex) ? 0 : 1);
|
|
param.put("cardId", customer.getIdCard());
|
|
param.put("city", customer.getCityName());
|
|
/*详细地址*/
|
param.put("address", customer.getAddress());
|
|
/* accumulation int 1 公积金(公积金 0:无 1:6个月以下 2:6到12个月 3:12个月以上)*/
|
param.put("gongJiJin", customer.getProvidentFund());
|
|
|
/* house int 否 1 房屋信息(住房 0无 1:自建房 2:按揭房 3:全款房)*/
|
Integer houseStatus = customer.getHouseStatus();
|
int hs = Objects.isNull(houseStatus) ? 0 : houseStatus.intValue();
|
int house = 0;
|
if (hs == 4) {
|
house = 2;
|
} else if (hs == 5) {
|
house = 3;
|
}
|
param.put("hour", house);
|
|
/* car int 否 1车辆信息(车 0无 1:按揭车 2:全款车) */
|
Integer carStatus = customer.getCarStatus();
|
int cs = Objects.isNull(carStatus) ? 0 : carStatus.intValue();
|
int car = 0;
|
if (cs == 4) {// 有按揭车
|
car = 2;
|
} else if (cs == 5) {// 全款车
|
car = 3;
|
}
|
param.put("car", car);
|
|
/* 芝麻分(芝麻分 0:550分以下 1:550分-599分 2:600-649分 3:650-699分 4:700以上) */
|
Integer customerSesame = customer.getSesame();
|
int cus = Objects.isNull(customerSesame) ? 2 : customerSesame.intValue();
|
param.put("zhiMaFen", Math.max(cus, 2));
|
|
/* 工作类型 0:自由职业 1:个体户 2:企业主 3:上班职员 */
|
Integer pi = customer.getProfessionInfo();
|
int professionInfo = 0;// 默认自由职业
|
int job = 0;
|
if (!Objects.isNull(pi)) {
|
professionInfo = pi.intValue();
|
}
|
if (professionInfo == 0) {
|
job = 3;
|
} else if (professionInfo == 3) {
|
job = 1;
|
}
|
param.put("position", String.valueOf(job));
|
|
/**
|
* 月收入 0:无 1:2000以下 2:2000~5000 3:5000~10000 4:10000~20000 5:20000以上
|
*
|
* INCOME_3Q_UNDER(0, "3000以下"), 2
|
* Income_5Q_UNDER(6, "5000元以下"), 2
|
* Income_6(5, "未知"), 1
|
* Income_3Q_6Q(1, "3000-6000"), 2
|
* Income_6Q_1W(2, "6000-10000"), 3
|
* Income_5Q_1W(7, "5000 - 10000元"), 3
|
* Income_1W_UNDER(13, "10000以下"); 3
|
* Income_1W_1W5(8, "10001 - 15000元"), 4
|
* Income_1W_3W(3, "10000-30000"), 5
|
* Income_1W5_2W(9, "15001 - 20000元"), 4
|
* Income_2W_2W5(10, "20001 - 25000元"), 5
|
* Income_2W5_3W(11, "25001 - 30000元"), 5
|
* Income_3W_UPPER_1(12, "30000元以上"), 5
|
* Income_3W_UPPER(4, "30000以上"), 5
|
*/
|
Integer monthlyIncome = customer.getMonthlyIncome();
|
int mi = monthlyIncome == null ? 0 : monthlyIncome.intValue();
|
int monthlyIncomeLevel = 0;
|
if (mi == 5 ) {
|
monthlyIncomeLevel = 1;
|
} else if (mi == 0 || mi == 1 || mi == 6) {
|
monthlyIncomeLevel = 2;
|
} else if (mi == 2 || mi == 7 || mi == 13) {
|
monthlyIncomeLevel = 3;
|
} else if (mi == 8 || mi == 9) {
|
monthlyIncomeLevel = 4;
|
} else if (mi == 3 || mi == 10 || mi == 11 || mi == 12 || mi == 4) {
|
monthlyIncomeLevel = 5;
|
}
|
/**/
|
param.put("monthIncome", monthlyIncomeLevel);
|
/*贷款金额*/
|
param.put("loanAmount", StringUtils.isNotEmpty(customer.getLoanAmount().toString()) ? customer.getLoanAmount().toString() : "0");
|
/* 社保 0 无 1: 6个月以下 2:6个月以上*/
|
Integer social = customer.getSocialSecurity();
|
int soc = Objects.isNull(social) ? 0 : social.intValue();
|
param.put("sheBao", soc);
|
/*花呗 0无 1有*/
|
param.put("huaBei", 0);
|
/* 有无借条 0无 1有*/
|
param.put("jieTiao", 0);
|
/*有无逾期 0无 1有*/
|
// 2024-10-29 17:10 ab应张小明要求修改
|
Random random = new Random();
|
int[] values = {0, 1};
|
param.put("overdueStatus", values[random.nextInt(values.length)]);
|
|
return param;
|
}
|
|
/**
|
* 中诚易数据推送到慧借钱包操作
|
*/
|
public boolean zcyPushToHjqb(Customer customer, String logNumber) {
|
boolean isSucc = false;
|
log.info("日志编号:" + logNumber + ",手机号:{},中诚易数据推送到【慧借钱包】流程开始", customer.getPhone());
|
try {
|
JSONObject param = getParam(customer);
|
isSucc = push(customer, param, logNumber);
|
Integer hjqb = 0;
|
if (!isSucc) {
|
log.error("日志编号:" + logNumber + ",手机号:{},中诚易数据推送到【慧借钱包】失败", customer.getPhone());
|
} else {
|
hjqb = 1;
|
}
|
saveStatus(customer, hjqb);
|
} catch (Exception ex) {
|
log.error("日志编号:" + logNumber + ",手机号:{},中诚易数据推送到【慧借钱包】失败", customer.getPhone());
|
}
|
return isSucc;
|
}
|
/**
|
* 我来贷数据推送到慧借钱包操作
|
*/
|
public boolean wldPushToHjqb(Customer customer, String logNumber) {
|
boolean isSucc = false;
|
log.info("日志编号:{},手机号:{},【我来贷】数据推送到【慧借钱包】流程开始", logNumber, customer.getPhone());
|
try {
|
JSONObject param = getParam(customer);
|
isSucc = push(customer, param, logNumber);
|
Integer hjqb = 0;
|
if (!isSucc) {
|
log.error("日志编号:{},手机号:{},【我来贷】数据推送到【慧借钱包】失败", logNumber, customer.getPhone());
|
} else {
|
hjqb = 1;
|
}
|
saveStatus(customer, hjqb);
|
if (isSucc) {
|
isSucc = wldIncomeToHjqb(customer, param, logNumber);
|
}
|
|
} catch (Exception ex) {
|
log.error("日志编号:{},手机号:{},【我来贷】数据推送到【慧借钱包】失败:{}", logNumber, customer.getPhone(), ex.getMessage());
|
isSucc = false;
|
}
|
return isSucc;
|
}
|
|
public LvdiPushResultVo hjqbPush(CustomerUser customerUser, String channelCode) {
|
String logNumber = IdUtil.randomUUID();
|
log.info("日志编号:" + logNumber + "【慧借钱包】 channelCode:" + channelCode + " 推送流程开始");
|
Customer customer = customerMapper.getLatestCustomerRecord(customerUser.getPhone());
|
CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(new LambdaQueryWrapper<CustomerCapitalResult>()
|
.eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId())
|
.eq(CustomerCapitalResult::getCustomerRecordId, customer.getId())
|
.eq(CustomerCapitalResult::getCapitalInfoCode, CapitalInfoTypeCodeEnum.HJQB.getCode()));
|
if (capitalResult == null) {
|
log.info("日志编号:" + logNumber + " 手机号:" + customerUser.getPhone() + " 【慧借钱包】数据库结果不存在, customerUser id:" +
|
customerUser.getId() + " customer id:" + customer.getId());
|
throw new CommonException("资方对接结果不存在");
|
}
|
|
JSONObject param = getParam(customer);
|
// 开始撞库
|
boolean isSucc = push(customer, param, logNumber);
|
if (!isSucc) {
|
return null;
|
}
|
// 开始进件
|
logNumber = IdUtil.randomUUID();
|
isSucc = getPushResultNew(logNumber, customer);
|
if (!isSucc) {
|
return null;
|
}
|
|
// 开始进件操作
|
// 转成 LvdiPushResultVo
|
LvdiPushResultVo result = new LvdiPushResultVo();
|
result.setCheckResult(true);
|
result.setUrlType("1");// APP下载链接
|
return result;
|
}
|
|
public LvdiPushResultVo hjqbPushNoIncome(CustomerUser customerUser, String channelCode) {
|
String logNumber = IdUtil.randomUUID();
|
log.info("日志编号:" + logNumber + "【慧借钱包】 channelCode:" + channelCode + " 推送流程开始");
|
Customer customer = customerMapper.getLatestCustomerRecord(customerUser.getPhone());
|
CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(new LambdaQueryWrapper<CustomerCapitalResult>()
|
.eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId())
|
.eq(CustomerCapitalResult::getCustomerRecordId, customer.getId())
|
.eq(CustomerCapitalResult::getCapitalInfoCode, CapitalInfoTypeCodeEnum.HJQB.getCode()));
|
if (capitalResult == null) {
|
log.info("日志编号:" + logNumber + " 手机号:" + customerUser.getPhone() + " 【慧借钱包】数据库结果不存在, customerUser id:" +
|
customerUser.getId() + " customer id:" + customer.getId());
|
throw new CommonException("资方对接结果不存在");
|
}
|
|
JSONObject param = getParam(customer);
|
// 开始撞库
|
boolean isSucc = push(customer, param, logNumber);
|
if (!isSucc) {
|
return null;
|
}
|
|
// 转成 LvdiPushResultVo
|
LvdiPushResultVo result = new LvdiPushResultVo();
|
result.setCheckResult(true);
|
result.setUrlType("1");// APP下载链接
|
return result;
|
}
|
|
/**
|
* 撞库
|
* @param customer
|
* @return
|
*/
|
private boolean push(Customer customer, JSONObject body, String logNumber) {
|
// 撞库签名参数
|
body.put("phoneMd5", DigestUtils.md5DigestAsHex(customer.getPhone().getBytes()));
|
String jsonStr = JSON.toJSONString(body);
|
// 加密
|
JSONObject jsonData = getPostData(jsonStr);
|
|
String result = null;
|
try {
|
// 撞库
|
result = HttpClientUtil.getInstance().postJsonData(domain + zkUrl, jsonData.toJSONString());
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】撞库返回参数:{}", result);
|
} catch (Exception ex) {
|
log.error("日志编号:{} 手机号为:{},【慧借钱包】撞库失败,传参:{} ex:{}", logNumber, customer.getPhone(), jsonData, ex.getMessage());
|
}
|
try {
|
HjqbResponse res = JSON.parseObject(result, HjqbResponse.class);
|
if (res.getCode().intValue() == 200) {
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】推送成功");
|
String desKey = String.format("%s%s", secretKey, res.getTimestamp()).substring(0, 16);
|
String oriData = res.getData();
|
String dataStr = SecureUtil.aes(desKey.getBytes(StandardCharsets.UTF_8)).decryptStr(oriData);
|
log.info("日志编号:{} 手机号为:{},【慧借钱包】返回数据解密结果:{}", logNumber, customer.getPhone(), dataStr);
|
JSONObject obj = JSON.parseObject(dataStr, JSONObject.class);
|
PlatformCapital platformCapital = new PlatformCapital();
|
// 删除同一资方的同一用户数据
|
LambdaQueryWrapper<PlatformCapital> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(PlatformCapital::getCustomerId, customer.getId());
|
wrapper.eq(PlatformCapital::getCapitalId, capitalId);
|
platformCapitalService.remove(wrapper);
|
// 录入到数据库
|
platformCapital.setCustomerId(customer.getId());
|
platformCapital.setCapitalId(capitalId);
|
platformCapital.setCompanyName(obj.getString("companyName"));
|
platformCapital.setProductName(obj.getString("productName"));
|
platformCapital.setLogoUrl(obj.getString("logoUrl"));
|
platformCapital.setPrivateUrl(obj.getString("privateUrl"));
|
platformCapital.setServiceUrl(obj.getString("serviceUrl"));
|
platformCapital.setAuthUrl(obj.getString("authUrl"));
|
platformCapitalService.save(platformCapital);
|
return true;
|
} else {
|
log.error("日志编号:" + logNumber + " 手机号为:{},【慧借钱包】推送失败:{},jsonData:{}", customer.getPhone(), res.getMsg(),jsonData);
|
}
|
} catch (Exception ex) {
|
log.error("日志编号:" + logNumber + " 手机号为:{},【慧借钱包】推送原始返回参数转换失败,jsonData:{} ex:{}, res: {}", customer.getPhone(), jsonData , ex.getMessage());
|
}
|
return false;
|
}
|
|
/**
|
* 中诚易进件数据给助贷操作
|
*/
|
public void zcyIncomeToHjqb(Customer customer, String logNumber) {
|
log.info("日志编号:" + logNumber + ",手机号:{},中诚易数据进件到【慧借钱包】流程开始", customer.getPhone());
|
try {
|
Integer zhd = 3;
|
ResultJson<LvdiPushResultVo> rs = getPushResult(logNumber, customer);
|
if (rs == null) {
|
log.error("日志编号:" + logNumber + ",手机号:{},中诚易数据进件到【慧借钱包】失败", customer.getPhone());
|
} else {
|
zhd = 4;
|
log.info("日志编号:" + logNumber + ",手机号:{},中诚易数据进件到【慧借钱包】成功", customer.getPhone());
|
}
|
saveStatus(customer, zhd);
|
} catch (Exception ex) {
|
log.error("日志编号:" + logNumber + ",手机号:{},中诚易数据进件到【慧借钱包】失败", customer.getPhone());
|
}
|
}
|
|
/**
|
* 中诚易进件数据给助贷操作
|
*/
|
public boolean wldIncomeToHjqb(Customer customer, JSONObject param, String logNumber) {
|
boolean isSucc = false;
|
log.info("日志编号:{},手机号:{},【我来贷】数据进件到【慧借钱包】流程开始", logNumber, customer.getPhone());
|
try {
|
Integer zhd = 3;
|
isSucc = getWldPushResult(logNumber, param, customer);
|
if (!isSucc) {
|
log.error("日志编号:{},手机号:{},【我来贷】数据进件到【慧借钱包】失败", logNumber, customer.getPhone());
|
} else {
|
zhd = 4;
|
log.info("日志编号:{},手机号:{},【我来贷】数据进件到【慧借钱包】成功", logNumber, customer.getPhone());
|
}
|
saveStatus(customer, zhd);
|
} catch (Exception ex) {
|
log.error("日志编号:{},手机号:{},【我来贷】数据进件到【慧借钱包】失败: {}", logNumber, customer.getPhone(), ex.getMessage());
|
}
|
return isSucc;
|
}
|
|
private void saveStatus(Customer customer, Integer hjqb) {
|
// 录入或更新到customer_scy_income表
|
LambdaQueryWrapper<CustomerScyIncome> wr = new LambdaQueryWrapper<>();
|
wr.eq(CustomerScyIncome::getCustomerZcyId, customer.getId());
|
wr.last(" limit 1 ");
|
CustomerScyIncome csi = customerZcyIncomeService.getOne(wr);
|
if (Objects.isNull(csi)) {
|
csi = new CustomerScyIncome();
|
}
|
csi.setCustomerZcyId(customer.getId());
|
csi.setHjqb(hjqb);
|
customerZcyIncomeService.saveOrUpdate(csi);
|
}
|
/**
|
* 进件(导单)
|
*/
|
public ResultJson<?> income(HttpServletRequest request) {
|
String logNumber = IdUtil.randomUUID();
|
log.info("日志编号:" + logNumber + "【慧借钱包】进件流程开始");
|
String token = request.getHeader("Authorization");
|
UserDetail user = UserUtil.getUser(token);
|
if (user == null) {
|
log.info("日志编号:" + logNumber + "【慧借钱包】进件失败,原因:用户Token无效");
|
throw new CommonException("用户Token无效");
|
}
|
|
Customer customer = customerMapper.getLatestCustomerRecord(user.getPhone());
|
LambdaQueryWrapper<CustomerUser> wr = new LambdaQueryWrapper<>();
|
wr.eq(CustomerUser::getPhone, user.getPhone());
|
wr.eq(CustomerUser::getDeleteFlag, 0);
|
wr.last(" limit 1 ");
|
CustomerUser customerUser = customerUserService.getOne(wr);
|
if (customerUser == null) {
|
log.info("日志编号:" + logNumber + " 手机号:" + user.getPhone() + "【慧借钱包】进件失败,原因:用户不存在");
|
throw new CommonException("用户不存在");
|
}
|
CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(new LambdaQueryWrapper<CustomerCapitalResult>()
|
.eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId())
|
.eq(CustomerCapitalResult::getCustomerRecordId, customer.getId())
|
.eq(CustomerCapitalResult::getCapitalInfoCode, CapitalInfoTypeCodeEnum.HJQB.getCode()));
|
if (capitalResult == null) {
|
log.info("日志编号:" + logNumber + " 手机号:" + customerUser.getPhone() + "进件失败,原因:【慧借钱包】数据库结果不存在, customerUser id:" +
|
customerUser.getId() + " customer id:" + customer.getId());
|
throw new CommonException("资方对接结果不存在");
|
}
|
|
return getPushResult(logNumber, customer);
|
}
|
|
@Nullable
|
private ResultJson<LvdiPushResultVo> getPushResult(String logNumber, Customer customer) {
|
// 判断是否数据库中是否有数据,有过数据就不推送了
|
LambdaQueryWrapper<PlatformCapital> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(PlatformCapital::getCustomerId, customer.getId());
|
wrapper.eq(PlatformCapital::getCapitalId, capitalId);
|
wrapper.last(" limit 1 ");
|
PlatformCapital platformCapital = platformCapitalService.getOne(wrapper);
|
if (Objects.isNull(platformCapital)) {// 若没有数据
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "进件失败,原因:【慧借钱包】推送结果不存在, customer id:" + customer.getId());
|
throw new CommonException("资方推送结果不存在");
|
}
|
if (platformCapital.getIncomeStatus() == 1) {// 已进件成功
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "进件失败,原因:【慧借钱包】已经进件成功过,不再进件, customer id:" + customer.getId());
|
return null;
|
}
|
JSONObject param = getParam(customer);
|
|
param.put("phone", customer.getPhone());
|
|
String jsonStr = JSON.toJSONString(param);
|
|
// 加密
|
JSONObject jsonData = getPostData(jsonStr);
|
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "开始进件给资方【慧借钱包】,参数:{}", jsonData);
|
String result = null;
|
try {
|
// 进件
|
result = HttpClientUtil.getInstance().postJsonData(domain + jkUrl, jsonData.toJSONString());
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】进件原始返回参数:{}", result);
|
} catch (Exception ex) {
|
log.error("日志编号:{} 手机号为:{},【慧借钱包】进件失败,传参:{} ex:{}", logNumber, customer.getPhone(), jsonData, ex.getMessage());
|
}
|
if (StringUtils.isBlank(result)) {
|
log.error("日志编号:" + logNumber + " 手机号为:{},【慧借钱包】进件返回数据为空,传参:{} ", customer.getPhone(), jsonData);
|
}
|
try {
|
HjqbResponse res = JSON.parseObject(result, HjqbResponse.class);
|
if (res.getCode() == 200) {
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】进件成功");
|
// 更新数据库
|
platformCapital.setIncomeStatus(1);
|
platformCapitalService.updateById(platformCapital);
|
LvdiPushResultVo rs = new LvdiPushResultVo();
|
rs.setCheckResult(true);
|
rs.setUrlType("1");// APP下载链接
|
return ResultJson.ok(rs);
|
} else {
|
log.error("日志编号:{}, 手机号为:{},【慧借钱包】进件失败:{},jsonData:{}", logNumber, customer.getPhone(), res.getMsg(),jsonData);
|
}
|
} catch (Exception ex) {
|
log.error("日志编号:{} 手机号为:{},【慧借钱包】进件原始返回参数转换失败,jsonData:{} ex:{}", logNumber, customer.getPhone(), jsonData, ex.getMessage());
|
}
|
return null;
|
}
|
|
private boolean getWldPushResult(String logNumber, JSONObject param, Customer customer) {
|
// 判断是否数据库中是否有数据,有过数据就不推送了
|
LambdaQueryWrapper<PlatformCapital> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(PlatformCapital::getCustomerId, customer.getId());
|
wrapper.eq(PlatformCapital::getCapitalId, capitalId);
|
wrapper.last(" limit 1 ");
|
PlatformCapital platformCapital = platformCapitalService.getOne(wrapper);
|
if (Objects.isNull(platformCapital)) {// 若没有数据
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "进件失败,原因:【慧借钱包】推送结果不存在, customer id:" + customer.getId());
|
return false;
|
}
|
if (platformCapital.getIncomeStatus() == 1) {// 已进件成功
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "进件失败,原因:【慧借钱包】已经进件成功过,不再进件, customer id:" + customer.getId());
|
return false;
|
}
|
|
param.put("phone", customer.getPhone());
|
|
String jsonStr = JSON.toJSONString(param);
|
|
// 加密
|
JSONObject jsonData = getPostData(jsonStr);
|
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "开始进件给资方【慧借钱包】,参数:{}", jsonData);
|
String result = null;
|
try {
|
// 进件
|
result = HttpClientUtil.getInstance().postJsonData(domain + jkUrl, jsonData.toJSONString());
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】进件原始返回参数:{}", result);
|
} catch (Exception ex) {
|
log.error("日志编号:{} 手机号为:{},【慧借钱包】进件失败,传参:{} ex:{}", logNumber, customer.getPhone(), jsonData, ex.getMessage());
|
}
|
if (StringUtils.isBlank(result)) {
|
log.error("日志编号:" + logNumber + " 手机号为:{},【慧借钱包】进件返回数据为空,传参:{} ", customer.getPhone(), jsonData);
|
}
|
try {
|
HjqbResponse res = JSON.parseObject(result, HjqbResponse.class);
|
if (res.getCode() == 200) {
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】进件成功");
|
// 更新数据库
|
platformCapital.setIncomeStatus(1);
|
platformCapitalService.updateById(platformCapital);
|
LvdiPushResultVo rs = new LvdiPushResultVo();
|
rs.setCheckResult(true);
|
rs.setUrlType("1");// APP下载链接
|
return true;
|
} else {
|
log.error("日志编号:{}, 手机号为:{},【慧借钱包】进件失败:{},jsonData:{}", logNumber, customer.getPhone(), res.getMsg(),jsonData);
|
}
|
} catch (Exception ex) {
|
log.error("日志编号:{} 手机号为:{},【慧借钱包】进件原始返回参数转换失败,jsonData:{} ex:{}", logNumber, customer.getPhone(), jsonData, ex.getMessage());
|
}
|
return false;
|
}
|
|
private JSONObject getPostData(String jsonStr) {
|
long timestamp = System.currentTimeMillis();
|
String key = String.format("%s%s", secretKey, timestamp).substring(0, 16);
|
String data = SecureUtil.aes(key.getBytes(StandardCharsets.UTF_8)).encryptHex(jsonStr);
|
JSONObject jsonData = new JSONObject();
|
jsonData.put("apiName", apiName);
|
jsonData.put("data", data);
|
jsonData.put("timestamp", timestamp);
|
return jsonData;
|
}
|
|
private boolean getPushResultNew(String logNumber, Customer customer) {
|
// 判断是否数据库中是否有数据,有过数据就不推送了
|
LambdaQueryWrapper<PlatformCapital> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(PlatformCapital::getCustomerId, customer.getId());
|
wrapper.eq(PlatformCapital::getCapitalId, capitalId);
|
wrapper.last(" limit 1 ");
|
PlatformCapital platformCapital = platformCapitalService.getOne(wrapper);
|
if (Objects.isNull(platformCapital)) {// 若没有数据
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "进件失败,原因:【慧借钱包】推送结果不存在, customer id:" + customer.getId());
|
throw new CommonException("资方推送结果不存在");
|
}
|
if (platformCapital.getIncomeStatus() == 1) {// 已进件成功
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "进件失败,原因:【慧借钱包】已经进件成功过,不再进件, customer id:" + customer.getId());
|
return false;
|
}
|
JSONObject param = getParam(customer);
|
param.put("phone", customer.getPhone());
|
|
String jsonStr = JSON.toJSONString(param);
|
JSONObject jsonData = getPostData(jsonStr);
|
|
log.info("日志编号:" + logNumber + " 手机号:" + customer.getPhone() + "开始进件给资方【慧借钱包】,参数:{}", jsonData);
|
String result = null;
|
try {
|
// 进件
|
result = HttpClientUtil.getInstance().postJsonData(domain + jkUrl, jsonData.toJSONString());
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】进件原始返回参数:{}", result);
|
return false;
|
} catch (Exception ex) {
|
log.error("日志编号:{} 手机号为:{},【慧借钱包】进件失败,传参:{} ex:{}", logNumber, customer.getPhone(), jsonData, ex.getMessage());
|
}
|
if (StringUtils.isBlank(result)) {
|
log.error("日志编号:" + logNumber + " 手机号为:{},【慧借钱包】进件返回数据为空,传参:{} ", customer.getPhone(), jsonData);
|
return false;
|
}
|
try {
|
HjqbResponse res = JSON.parseObject(result, HjqbResponse.class);
|
if (res.getCode() == 200) {
|
log.info("日志编号:" + logNumber + " 手机号为:" + customer.getPhone() + ",【慧借钱包】进件成功");
|
// 更新数据库
|
platformCapital.setIncomeStatus(1);
|
platformCapitalService.updateById(platformCapital);
|
return true;
|
} else {
|
log.error("日志编号:" + logNumber + " 手机号为:{},【慧借钱包】进件失败:{},jsonData:{}", customer.getPhone(), res.getMsg(),jsonData);
|
}
|
} catch (Exception ex) {
|
log.error("日志编号:{} 手机号为:{},【慧借钱包】进件原始返回参数转换失败,jsonData:{} ex:{}", logNumber, customer.getPhone(), jsonData, ex.getMessage());
|
}
|
return false;
|
}
|
|
}
|