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() .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() .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 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 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 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 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() .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 getPushResult(String logNumber, Customer customer) { // 判断是否数据库中是否有数据,有过数据就不推送了 LambdaQueryWrapper 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 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 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; } }