package com.nova.sankuai.service.impl; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.nova.sankuai.domain.api.hengyidai.HySignUtil; import com.nova.sankuai.domain.api.hengyidai.HyUtil; import com.nova.sankuai.domain.api.hengyidai.callback.HyPushLoanStatusDto; import com.nova.sankuai.domain.api.hengyidai.callback.HyPushRepayDto; import com.nova.sankuai.domain.api.hengyidai.callback.HyPushRepayPlanDto; import com.nova.sankuai.domain.api.hengyidai.dto.HyConfirmDto; import com.nova.sankuai.domain.api.hengyidai.dto.HyGetContractsDto; import com.nova.sankuai.domain.api.hengyidai.dto.HyGetRepayUrlDto; import com.nova.sankuai.domain.api.hengyidai.dto.HyGetSignUrlDto; import com.nova.sankuai.domain.api.hengyidai.response.*; import com.nova.sankuai.domain.dto.capitalflow.*; import com.nova.sankuai.domain.entity.CapitalInfo; import com.nova.sankuai.domain.entity.Customer; import com.nova.sankuai.domain.entity.CustomerCapitalResult; import com.nova.sankuai.domain.entity.CustomerUser; import com.nova.sankuai.domain.enums.CustomerUserBusinessTypeEnum; import com.nova.sankuai.domain.enums.capitalInfo.CapitalApprovalResultEnum; import com.nova.sankuai.domain.enums.capitalInfo.CapitalResultSourceCodeEnum; import com.nova.sankuai.domain.enums.capitalInfo.CapitalResultStatusEnum; import com.nova.sankuai.domain.enums.customerinfo.UseOfLoanEnum; import com.nova.sankuai.domain.enums.yixin.YiXinHomeRelationEnum; import com.nova.sankuai.domain.vo.capitalflow.*; import com.nova.sankuai.domain.vo.capitalresult.HengYiDaiPushResultVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.constants.ResultCode; import com.nova.sankuai.infra.mapper.CustomerCapitalResultMapper; import com.nova.sankuai.infra.mapper.CustomerMapper; import com.nova.sankuai.infra.mapper.CustomerUserMapper; import com.nova.sankuai.infra.utils.ConstantsUtil; import com.nova.sankuai.infra.utils.ResultJson; import com.nova.sankuai.service.ICapitalResultCommonService; import com.nova.sankuai.service.IHengYiDaiService; import lombok.AllArgsConstructor; import org.apache.http.util.TextUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; import java.util.*; @Service @AllArgsConstructor public class HengYiDaiServiceImpl implements IHengYiDaiService { private final HySignUtil hySignUtil; private final HyUtil hyUtil; private final ICapitalResultCommonService capitalResultCommonService; private final CustomerCapitalResultMapper capitalResultMapper; private final CustomerMapper customerMapper; private final CustomerUserMapper customerUserMapper; private static final Logger log = LoggerFactory.getLogger("capitalLogger"); @Override public String pushAuditResult(String param, String logNumber) { JSONObject object = new JSONObject(); try { if (!TextUtils.isEmpty(param)) { Map map = hySignUtil.parseRequest(param); log.info("日志编号:" + logNumber + "审核结果回调接口:{}", map.toString()); if (!TextUtils.isEmpty(map.get("data").toString())) { HyGetAuditResultResponse result = JSON.parseObject(map.get("data").toString(), HyGetAuditResultResponse.class); CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(Wrappers.lambdaQuery() .eq(CustomerCapitalResult::getCreditNo, result.getOrderNo())); if (capitalResult != null) { updateResultByAudit(capitalResult, result); } object.put("code", 200); object.put("msg", "成功"); return object.toJSONString(); } } } catch (Exception e) { e.printStackTrace(); log.error("日志编号:" + logNumber + "审核结果回调接口异常:{}", e); } object.put("code", 1001); object.put("msg", "参数错误"); return object.toJSONString(); } private CustomerCapitalResult updateResultByAudit(CustomerCapitalResult capitalResult, HyGetAuditResultResponse param) { if (CapitalApprovalResultEnum.APPROVAL_WAIT.getCode().equals(capitalResult.getApprovalResult())) { LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate() .set(CustomerCapitalResult::getLastUpdatedDate, new Date()) .set(CustomerCapitalResult::getCreditApplyTime, param.getAuditTime()) .set(CustomerCapitalResult::getThirdOrderStatus, param.getStatus()) .eq(CustomerCapitalResult::getId, capitalResult.getId()); if (HyGetOrderStatusResponse.STATUS_AUDIT_SUCCESS.equals(param.getStatus())) { capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode()); if (param.getAuditAmount() != null) { Double amount = Double.valueOf(param.getAuditAmount()) / 100; wrapper.set(CustomerCapitalResult::getTotalCredit, amount); } wrapper.set(CustomerCapitalResult::getPeriods, param.getAuditPeriodNum()); wrapper.set(CustomerCapitalResult::getApprovalTermUnit, param.getAuditPeriodNumUnit()); } else if (HyGetOrderStatusResponse.STATUS_AUDIT_FAIL.equals(param.getStatus())) { capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REFUSE.getCode()); wrapper.set(CustomerCapitalResult::getFailedReason, param.getRejectReasons()); } wrapper.set(CustomerCapitalResult::getApprovalResult, capitalResult.getApprovalResult()); capitalResultMapper.update(null, wrapper); } return capitalResult; } @Override public String pushLoanStatus(String param, String logNumber) { JSONObject object = new JSONObject(); try { if (!TextUtils.isEmpty(param)) { Map map = hySignUtil.parseRequest(param); log.info("日志编号:" + logNumber + "订单状态回调接口:{}", map.toString()); if (!TextUtils.isEmpty(map.get("data").toString())) { HyPushLoanStatusDto result = JSON.parseObject(map.get("data").toString(), HyPushLoanStatusDto.class); CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(Wrappers.lambdaQuery() .eq(CustomerCapitalResult::getCreditNo, result.getOrderNo())); if (capitalResult != null) { if (!Objects.equals(result.getStatus(), capitalResult.getThirdOrderStatus())) { capitalResult.setThirdOrderStatus(result.getStatus()); capitalResultMapper.update(null, Wrappers.lambdaUpdate() .set(CustomerCapitalResult::getThirdOrderStatus, capitalResult.getThirdOrderStatus()) .eq(CustomerCapitalResult::getId, capitalResult.getId())); } } object.put("code", 200); object.put("msg", "成功"); return object.toJSONString(); } } } catch (Exception e) { e.printStackTrace(); log.error("日志编号:" + logNumber + "订单状态回调接口异常:{}", e); } object.put("code", 1001); object.put("msg", "参数错误"); return object.toJSONString(); } @Override public String pushRepayResult(String param, String logNumber) { JSONObject object = new JSONObject(); try { if (!TextUtils.isEmpty(param)) { Map map = hySignUtil.parseRequest(param); log.info("日志编号:" + logNumber + "还款结果回调接口:{}", map.toString()); if (!TextUtils.isEmpty(map.get("data").toString())) { HyPushRepayDto parseObject = JSON.parseObject(map.get("data").toString(), HyPushRepayDto.class); System.out.println(parseObject); object.put("code", 200); object.put("msg", "成功"); return object.toJSONString(); } } } catch (Exception e) { e.printStackTrace(); log.error("日志编号:" + logNumber + "还款结果回调接口异常:{}", e); } object.put("code", 1001); object.put("msg", "参数错误"); return object.toJSONString(); } @Override public String pushRepayPlan(String param, String logNumber) { JSONObject object = new JSONObject(); try { if (!TextUtils.isEmpty(param)) { Map map = hySignUtil.parseRequest(param); log.info("日志编号:" + logNumber + "还款计划回调接口:{}", map.toString()); if (!TextUtils.isEmpty(map.get("data").toString())) { HyPushRepayPlanDto parseObject = JSON.parseObject(map.get("data").toString(), HyPushRepayPlanDto.class); object.put("code", 200); object.put("msg", "成功"); return object.toJSONString(); } } } catch (Exception e) { e.printStackTrace(); log.error("日志编号:" + logNumber + "还款计划回调接口异常:{}", e); } object.put("code", 1001); object.put("msg", "参数错误"); return object.toJSONString(); } /** * 校验恒易贷请求是否成功 * * @param response * @return * @throws CommonException */ private boolean checkHydResponse(HyResponse response) throws CommonException { if (response != null) { if (response.isSuccess()) { return true; } else { return false; } } else { throw new CommonException("请求返回值为空"); } } /** * 校验恒易贷请求业务数据是否为空 * * @param response * @return * @throws CommonException */ private boolean checkHydResponseData(HyResponse response) throws CommonException { if (response != null) { if (response.isSuccess()) { if (response.getData() != null) { return true; } else { throw new CommonException("请求业务数据为空"); } } else { throw new CommonException("请求响应状态失败"); } } else { throw new CommonException("请求返回值为空"); } } @Override public CustomerCapitalResult checkCustomerByHengYiDai(CapitalInfo capitalInfo, Customer customer, CustomerUser customerUser, String logNumber) { log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库接口开始"); CustomerCapitalResult capitalResult = CustomerCapitalResult.initResult(capitalInfo, customerUser.getId(), customer.getId()); capitalResult.setStatus(CapitalResultStatusEnum.CHECK.getCode()); CustomerCapitalResult filterResult = capitalResultCommonService.filterCustomer(customer, capitalInfo, capitalResult, logNumber); if (filterResult != null) { log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库时不满足资方信息筛选条件,撞库失败"); return filterResult; } try { String idCardMd5 = DigestUtils.md5DigestAsHex(customer.getIdCard().getBytes()); HyResponse response = hyUtil.checkUser(idCardMd5, log, logNumber); if (checkHydResponseData(response)) { HyCollisionLibraryResponse data = response.getData(); if (HyCollisionLibraryResponse.CAN_LOAN.equals(data.getIsCanLoan())) { log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库对接信息:{}", response.toString()); capitalResult.setCheckResult(CustomerCapitalResult.CHECK_SUCCESS); } else { log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库对接信息:{}", response.toString()); capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL); } } } catch (CommonException e) { capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL); log.error("日志编号:" + logNumber + capitalInfo.getName() + "初筛接口撞库失败" + e.getMessage()); } catch (Exception e) { capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL); log.error("日志编号:" + logNumber + capitalInfo.getName() + "初筛接口撞库失败", e); } if (CustomerUserBusinessTypeEnum.RONG_YI_TUI.getCode().equals(customerUser.getBusinessType())) { capitalResult.setCapitalResultSourceCode(CapitalResultSourceCodeEnum.RONG_YI_TUI.getCode()); } capitalResultMapper.insert(capitalResult); log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库结束"); return capitalResult; } @Override @Transactional(rollbackFor = Exception.class) public HengYiDaiPushResultVo pushCustomerByHengYiDai(CapitalInfo capitalInfo, CustomerUser customerUser) { String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + capitalInfo.getName() + "对接流程开始"); HengYiDaiPushResultVo pushResultVo = new HengYiDaiPushResultVo(); Customer customer = customerMapper.getLatestCustomerRecord(customerUser.getPhone()); CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(Wrappers.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoCode, capitalInfo.getCode())); if (capitalResult == null) { throw new CommonException("资方对接结果不存在"); } if (CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) { pushResultVo.setCheckResult(true); } else { pushResultVo.setCheckResult(false); } pushResultVo.setCapitalResultId(capitalResult.getId()); if (CapitalResultStatusEnum.CHECK.getCode().equals(capitalResult.getStatus()) && CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) { log.info("日志编号:" + logNumber + capitalInfo.getName() + "数据推送开始"); capitalResult.setStatus(CapitalResultStatusEnum.APPLY.getCode()); try { String creditNo = ConstantsUtil.getCreditNo(); boolean filter = filterCustomerByHengYidai(customer, capitalInfo, logNumber); if (!filter) { capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode()); capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_FAIL); } else { HyResponse response = hyUtil.pushPhaseOne(customer, creditNo, log, logNumber); if (checkHydResponse(response)) { log.info("日志编号:" + logNumber + capitalInfo.getName() + "进件申请返回结果" + response.toString()); customerUserMapper.update(null, Wrappers.lambdaUpdate() .set(CustomerUser::getCreditNo, capitalResult.getCreditNo()) .eq(CustomerUser::getId, customerUser.getId())); capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_WAIT.getCode()); capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_WAIT); } else { capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode()); capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_FAIL); log.error("日志编号:" + logNumber + capitalInfo.getName() + "进件申请被拒绝" + response.toString()); } } LambdaUpdateWrapper wrapper = capitalResultCommonService.getWrapper(capitalInfo, capitalResult); wrapper.set(CustomerCapitalResult::getThirdOrderStatus, capitalResult.getThirdOrderStatus()); wrapper.set(CustomerCapitalResult::getCreditNo, creditNo); capitalResultMapper.update(null, wrapper); Integer pageType = HyGetOrderStatusResponse.parsePageType(capitalResult.getThirdOrderStatus()); pushResultVo.setPageType(pageType); pushResultVo.setThirdStatus(capitalResult.getThirdOrderStatus()); log.info("日志编号:" + logNumber + capitalInfo.getName() + "数据推送结束"); return pushResultVo; } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "进件申请请求失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "进件申请请求失败", e); } throw new CommonException("推送数据异常"); } else { try { if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) { HyResponse response = hyUtil.getOrderStatus(capitalResult.getCreditNo(), log, logNumber); if (checkHydResponseData(response)) { Integer status = response.getData().getStatus(); if (!status.equals(capitalResult.getThirdOrderStatus())) { capitalResult.setThirdOrderStatus(status); capitalResultMapper.update(null, Wrappers.lambdaUpdate() .set(CustomerCapitalResult::getThirdOrderStatus, status) .set(CustomerCapitalResult::getLastUpdatedDate, new Date()) .eq(CustomerCapitalResult::getId, capitalResult.getId())); } } } else { HyResponse response = hyUtil.getAuditResult(capitalResult.getCreditNo(), log, logNumber); if (checkHydResponseData(response)) { HyGetAuditResultResponse data = response.getData(); capitalResult = updateResultByAudit(capitalResult, data); } } Integer pageType = HyGetOrderStatusResponse.parsePageType(capitalResult.getThirdOrderStatus()); pushResultVo.setPageType(pageType); pushResultVo.setThirdStatus(capitalResult.getThirdOrderStatus()); return pushResultVo; } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取订单状态失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取订单状态失败", e); } throw new CommonException("获取订单状态异常"); } } @Override public boolean filterCustomerByHengYidai(Customer customer, CapitalInfo capitalInfo, String logNumber) { boolean filter = true; if (YiXinHomeRelationEnum.BROTHERS.getCode().equals(customer.getRelationship())) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "进件申请不满足条件,第一联系人为兄弟姐妹"); filter = false; } //过滤COS任性贷消费,LEA租赁,LRT土地租金,REN租房,OTH其他消费 等借款用途 if (UseOfLoanEnum.Loan_21.getCode().equals(customer.getUseOfLoan()) || UseOfLoanEnum.Loan_22.getCode().equals(customer.getUseOfLoan()) || UseOfLoanEnum.Loan_20.getCode().equals(customer.getUseOfLoan()) || UseOfLoanEnum.Loan_13.getCode().equals(customer.getUseOfLoan()) || UseOfLoanEnum.Loan_12.getCode().equals(customer.getUseOfLoan())) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "进件申请不满足条件,借款用途不在可选范围内" + customer.getUseOfLoan()); filter = false; } return filter; } @Override @Transactional(rollbackFor = Exception.class) public ResultJson capitalGetSignUrl(CapitalGetSignUrlDto paramDto, CapitalInfo capitalInfo) { String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + capitalInfo.getName() + "获取绑卡/签约链接开始"); CustomerCapitalResult capitalResult = capitalResultMapper.selectById(paramDto.getCapitalResultId()); if (capitalResult == null) { throw new CommonException("资方对接结果不存在"); } try { HyGetSignUrlDto hyGetSignUrlDto = new HyGetSignUrlDto(capitalResult.getCreditNo(), paramDto.getReturnUrl()); HyResponse response = hyUtil.getSignUrl(hyGetSignUrlDto, log, logNumber); if (checkHydResponseData(response)) { CapitalGetSignUrlVo signUrlVo = new CapitalGetSignUrlVo(); signUrlVo.setUrl(response.getData().getUrl()); return ResultJson.ok(signUrlVo); } } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取绑卡/签约链接失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取绑卡/签约链接失败", e); } return ResultJson.failure(ResultCode.SERVER_ERROR, "获取绑卡/签约链接失败"); } @Override @Transactional(rollbackFor = Exception.class) public ResultJson capitalLoanTrial(CapitalBaseParamDto paramDto, CapitalInfo capitalInfo) { String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + capitalInfo.getName() + "借款试算开始"); CustomerCapitalResult capitalResult = capitalResultMapper.selectById(paramDto.getCapitalResultId()); if (capitalResult == null) { throw new CommonException("资方对接结果不存在"); } try { HyResponse response = hyUtil.getTrialInfo(capitalResult.getCreditNo(), log, logNumber); if (checkHydResponseData(response)) { CapitalLoanTrialVo capitalLoanTrialVo = HyGetTrialInfoResponse.parseVo(response.getData()); double value = Double.parseDouble(capitalResult.getTotalCredit()); capitalLoanTrialVo.setActualAmount((long) (int) value * 100); capitalLoanTrialVo.setPeriodNum(Integer.valueOf(capitalResult.getPeriods())); return ResultJson.ok(capitalLoanTrialVo); } } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "借款试算失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "借款试算失败", e); } return ResultJson.failure(ResultCode.SERVER_ERROR, "借款试算失败"); } @Override @Transactional(rollbackFor = Exception.class) public ResultJson capitalConfirmLoan(CapitalConfirmLoanDto paramDto, CapitalInfo capitalInfo) { String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + capitalInfo.getName() + "确认借款开始"); CustomerCapitalResult capitalResult = capitalResultMapper.selectById(paramDto.getCapitalResultId()); if (capitalResult == null) { throw new CommonException("资方对接结果不存在"); } try { HyConfirmDto hyConfirmDto = new HyConfirmDto(capitalResult.getCreditNo(), paramDto); HyResponse confirm = hyUtil.confirm(hyConfirmDto, log, logNumber); if (checkHydResponse(confirm)) { Date date = new Date(); capitalResultMapper.update(null, Wrappers.lambdaUpdate() .set(CustomerCapitalResult::getLoanAmount, paramDto.getApplyAmount()) .set(CustomerCapitalResult::getLastUpdatedDate, date) .set(CustomerCapitalResult::getLoanApplyDate, date) .eq(CustomerCapitalResult::getId, capitalResult.getId())); return ResultJson.ok(new CapitalConfirmLoanVo(true)); } else { return ResultJson.ok(new CapitalConfirmLoanVo(false)); } } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "确认借款失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "确认借款失败", e); } return ResultJson.failure(ResultCode.SERVER_ERROR, "确认借款失败"); } @Override public ResultJson capitalGetRepayUrl(CapitalGetRepayUrlDto paramDto, CapitalInfo capitalInfo) { String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + capitalInfo.getName() + "获取还款页面开始"); CustomerCapitalResult capitalResult = capitalResultMapper.selectById(paramDto.getCapitalResultId()); if (capitalResult == null) { throw new CommonException("资方对接结果不存在"); } try { HyGetRepayUrlDto hyGetRepayUrlDto = new HyGetRepayUrlDto(capitalResult.getCreditNo(), paramDto.getReturnUrl()); HyResponse response = hyUtil.getRepayUrl(hyGetRepayUrlDto, log, logNumber); if (checkHydResponseData(response)) { CapitalGetRepayUrlVo repayUrlVo = new CapitalGetRepayUrlVo(); repayUrlVo.setUrl(response.getData().getUrl()); return ResultJson.ok(repayUrlVo); } } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取还款页面失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取还款页面失败", e); } return ResultJson.failure(ResultCode.SERVER_ERROR, "获取还款页面失败"); } @Override public ResultJson capitalRepayPlan(CapitalBaseParamDto paramDto, CapitalInfo capitalInfo) { String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + capitalInfo.getName() + "获取还款计划开始"); CustomerCapitalResult capitalResult = capitalResultMapper.selectById(paramDto.getCapitalResultId()); if (capitalResult == null) { throw new CommonException("资方对接结果不存在"); } try { if (HyGetOrderStatusResponse.STATUS_SIGN_SUCCESS.equals(capitalResult.getThirdOrderStatus()) || HyGetOrderStatusResponse.STATUS_LOAN_APPLY_FAIL.equals(capitalResult.getThirdOrderStatus())) { return ResultJson.ok(null); } HyResponse> response = hyUtil.getRepayPlan(capitalResult.getCreditNo(), log, logNumber); if (checkHydResponseData(response)) { List data = response.getData(); if (data == null || data.isEmpty()) { return ResultJson.ok(null); } CapitalRepayPlanVo repayPlanVo = new CapitalRepayPlanVo(); repayPlanVo.setLoanAmount(capitalResult.getLoanAmount()); repayPlanVo.setLoanApplyDate(capitalResult.getLoanApplyDate()); List detailVos = new ArrayList<>(); boolean clean = true; Integer status = 0; for (HyGetRepayPlanResponse repayPlan : data) { CapitalRepayPlanDetailVo detailVo = repayPlan.parseVo(); if (repayPlanVo.getTotalPeriodNum() == null) { repayPlanVo.setTotalPeriodNum(repayPlan.getTotalPeriodNum()); } if (!HyGetRepayPlanResponse.STATUS_REPAID.equals(repayPlan.getStatus())) { clean = false; } if (status == 0 && HyGetRepayPlanResponse.STATUS_OVERDUE.equals(repayPlan.getStatus())) { status = 1; } detailVos.add(detailVo); } if (clean) { status = 2; } repayPlanVo.setStatus(status); repayPlanVo.setRepayDetails(detailVos); return ResultJson.ok(repayPlanVo); } } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取还款计划失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取还款计划失败", e); } return ResultJson.failure(ResultCode.SERVER_ERROR, "获取还款计划失败"); } @Override public ResultJson> capitalContracts(CapitalContractsDto paramDto, CapitalInfo capitalInfo) { String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + capitalInfo.getName() + "获取协议链接开始"); CustomerCapitalResult capitalResult = capitalResultMapper.selectById(paramDto.getCapitalResultId()); if (capitalResult == null) { throw new CommonException("资方对接结果不存在"); } try { HyGetContractsDto hyGetContractsDto = new HyGetContractsDto(); if (CapitalContractsDto.TYPE_ALL.equals(paramDto.getType())) { hyGetContractsDto.setContractTypeList(Arrays.asList(1, 2, 3, 4)); } else { hyGetContractsDto.setContractTypeList(Collections.singletonList(paramDto.getType())); } hyGetContractsDto.setOrderNo(capitalResult.getCreditNo()); HyResponse> response = hyUtil.getContracts(hyGetContractsDto, log, logNumber); if (checkHydResponseData(response)) { List contractsVos = new ArrayList<>(); Map data = response.getData(); for (Map.Entry entry : data.entrySet()) { CapitalContractsVo contractsVo = new CapitalContractsVo(); contractsVo.setType(Integer.valueOf(entry.getKey())); contractsVo.setUrl(entry.getValue()); contractsVos.add(contractsVo); } return ResultJson.ok(contractsVos); } } catch (CommonException e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取协议链接失败" + e.getMessage()); } catch (Exception e) { log.error("日志编号:" + logNumber + capitalInfo.getName() + "获取协议链接失败", e); } return ResultJson.failure(ResultCode.SERVER_ERROR, "获取协议链接失败"); } }