package com.nova.sankuai.infra.utils.qinghuayoupin; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.nova.sankuai.domain.api.hengyidai.response.HyGetOrderStatusResponse; import com.nova.sankuai.domain.api.qinghuayoupin.QingHuaYouPinResponse; import com.nova.sankuai.domain.api.zhongzan.RbResponse; import com.nova.sankuai.domain.dto.qinghuayoupin.*; import com.nova.sankuai.domain.dto.rongbei.ApplyDto; import com.nova.sankuai.domain.dto.rongbei.ContactListDto; import com.nova.sankuai.domain.dto.rongbei.DeviceInfoDto; import com.nova.sankuai.domain.dto.rongbei.ProfileDictDto; import com.nova.sankuai.domain.entity.*; import com.nova.sankuai.domain.enums.capitalInfo.CapitalApprovalResultEnum; import com.nova.sankuai.domain.enums.capitalInfo.CapitalResultStatusEnum; import com.nova.sankuai.infra.mapper.CustomerApplyOrderMapper; 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.SpringUtils; import com.nova.sankuai.security.HttpClientUtil; import com.nova.sankuai.service.ICapitalResultCommonService; import com.nova.sankuai.service.ICustomerCapitalResultService; import com.nova.sankuai.service.ICustomerScyIncomeService; import com.nova.sankuai.service.IRepayRecord; import com.nova.sankuai.service.impl.CustomerCapitalResultServiceImpl; import com.nova.sankuai.service.impl.VipCardOrderServiceImpl; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.util.DigestUtils; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @Component @RequiredArgsConstructor public class QingHuaYouPinUtil { private static final Logger log = LoggerFactory.getLogger("capitalLogger"); private final CustomerApplyOrderMapper customerApplyOrderMapper; @Value("${rongbei.qingHuaYouPin.orgCode}") private String orgCode; @Value("${rongbei.qingHuaYouPin.productCode}") private String productCode; @Value("${rongbei.qingHuaYouPin.publicKey}") private String publicKey; @Value("${rongbei.qingHuaYouPin.privateKey}") private String privateKey; @Value("${rongbei.qingHuaYouPin.publicKeySelf}") private String publicKeySelf; @Value("${rongbei.qingHuaYouPin.privateKeySelf}") private String privateKeySelf; @Value("${rongbei.qingHuaYouPin.basicUrl}") private String basicUrl; private final ICapitalResultCommonService capitalResultCommonService; private final CustomerCapitalResultMapper capitalResultMapper; private final HttpServletRequest request; private final CustomerMapper customerMapper; private final CustomerUserMapper customerUserMapper; private final ICustomerScyIncomeService customerZcyIncomeService; /** * 用户准入接口 * @param capitalInfo * @param customer * @param customerUser * @return */ public RbResponse checkUser(CapitalInfo capitalInfo, Customer customer, CustomerUser customerUser) { String logNumber = IdUtil.randomUUID(); RbResponse resp = new RbResponse(); log.info("日志编号:" + logNumber + "【轻花优品】用户准入接口开始"); 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() + "撞库时不满足资方信息筛选条件,撞库失败"); } JSONObject param = new JSONObject(); param.putOpt("certNoMd5", DigestUtils.md5DigestAsHex(customer.getIdCard().getBytes(StandardCharsets.UTF_8))); param.putOpt("phoneMd5", DigestUtils.md5DigestAsHex(customer.getPhone().getBytes(StandardCharsets.UTF_8))); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,param.toString(),publicKey,privateKeySelf,desKey); log.info("日志编号:" + logNumber + " 手机号为:{},【轻花优品】用户准入接口参数:{}, data加密 {},desKey{}", customer.getPhone(), param, jsonData,desKey); String result = null; try { log.info("日志编号:" + logNumber + " 请求地址 {}", basicUrl + "/qhyp/api/userCheck/checkUser"); result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/userCheck/checkUser", jsonData); } catch (Exception ex) { capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL); log.error("日志编号:" + logNumber + " 手机号为:{},【轻花优品】用户准入接口推送失败,传参:{} ex:{}", customer.getPhone(), jsonData, ex, ""); } try { log.error("日志编号:" + logNumber + " 用户准入接口回传数据{}", result); getQhypResponse(resp, logNumber, jsonData, result, "用户准入接口",desKey.toString()); log.error("日志编号:" + logNumber + " 用户准入接口回传数据解密后{}", resp); if ("200".equals(resp.getCode())) {//准入成功 capitalResult.setCheckResult(CustomerCapitalResult.CHECK_SUCCESS); }else { capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL); } } catch (Exception ex) { capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL); log.error("日志编号:" + logNumber + " 手机号为:{},【轻花优品】用户准入接口推送原始返回参数转换失败,jsonData:{} ex:{}", customer.getPhone(), jsonData, ex, ""); } // capitalResultMapper.insert(capitalResult); return resp; } public RbResponse getContract(Integer type) { RbResponse resp = new RbResponse(); String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + "【轻花优品】获取协议接口开始"); JSONObject param = new JSONObject(); param.putOpt("scene", type); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,param.toString(),publicKey,privateKeySelf,desKey); log.info("日志编号:" + logNumber + " 【轻花优品】获取协议接口参数:{}, data加密 {}", param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/contract/getContract", jsonData); } catch (Exception ex) { log.error("日志编号:" + logNumber + "【轻花优品】获取协议接口推送失败,传参:{} ex:{}", jsonData, ex, ""); } try { getQhypResponse(resp, logNumber, jsonData, result, "获取协议接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:" + logNumber + " 【轻花优品】获取协议接口推送原始返回参数转换失败,jsonData:{} ex:{}", jsonData, ex, ""); } return resp; } /** * 3.进件接口 */ public RbResponse pushProfile(Customer customer) { RbResponse resp = new RbResponse(); String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + "【轻花优品】进件接口开始"+customer.toString()); Random random = new Random(); int[] values; SimpleDateFormat inputFormat = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); UserProfile userProfile = new UserProfile(); userProfile.setImageFormat("LINK"); userProfile.setPartnerOrderNo(customer.getCreditNo()); userProfile.setMobile(customer.getPhone()); userProfile.setUserName(customer.getName()); userProfile.setIdCard(customer.getIdCard()); // 照片 photos Photos photos = new Photos(); photos.setNationalEmblemImage(StringUtils.isEmpty(customer.getIdCardFrontPath())? "https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png" :customer.getIdCardFrontPath()); photos.setHeadImage(StringUtils.isEmpty(customer.getIdCardBackPath())? "https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png" :customer.getIdCardBackPath()); photos.setName(customer.getName()); photos.setCertNo(customer.getIdCard()); try { photos.setCertValidStart(StringUtils.isEmpty(customer.getIdValidDateBegin())? "2011-10-10":simpleDateFormat.format(inputFormat.parse(customer.getIdValidDateBegin()))); photos.setCertValidEnd(StringUtils.isEmpty(customer.getIdValidDateEnd())? "2031-10-10":simpleDateFormat.format(inputFormat.parse(customer.getIdValidDateEnd()))); } catch (ParseException e) { log.error("日期转换异常{}",e); } photos.setCertAddress(StringUtils.isEmpty(customer.getIdAddress())? "测试测试测试测试测试测试测试测试":customer.getIdAddress()); photos.setGender(StringUtils.isEmpty(customer.getSex())? "男":customer.getSex()); photos.setNation(StringUtils.isEmpty(customer.getNation())?"汉":customer.getNation()); photos.setCertSignOrg(StringUtils.isEmpty(customer.getSignOrganization()) ? "测试机关测试机关测试机关":customer.getSignOrganization()); photos.setFaceImageUrl(StringUtils.isEmpty(customer.getFacePhotoPath())? "https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png":customer.getFacePhotoPath()); photos.setFaceScore(StringUtils.isEmpty(customer.getVerifySimilarity())? "99.555554":customer.getVerifySimilarity()); photos.setFaceImage(StringUtils.isEmpty(customer.getFacePhotoPath())? "https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png":customer.getFacePhotoPath()); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); photos.setFaceCollectTime(simpleDateFormat2.format(new Date())); photos.setFaceSource(StringUtils.isEmpty(customer.getVerifySimilarity())?"测试测试测试测试测试测试":customer.getVerifySimilarity()); userProfile.setPhotos(photos); // 基础信息baseInfo BaseInfo baseInfo = new BaseInfo(); /** * 学历 * 5:博士及以上, 4:硕士, 3:本科, 2:专科, 1:高中/中专, 0:初中及以下 */ String eduction = customer.getEducation(); if ("0".equals(eduction)) { eduction = "PRIMARY_SCHOOL"; }else if ("01".equals(eduction)) { eduction = "HIGH_SCHOOL"; }if ("02".equals(eduction)) { eduction = "JUNIOR_COLLEGE"; } else if ("03".equals(eduction)) { eduction = "COLLEGE"; } else if ("04".equals(eduction)) { eduction = "MASTER"; } else if ("05".equals(eduction)) { eduction = "DOCTOR"; }else { eduction = "UNKNOWN"; } baseInfo.setEducation(eduction); /** * 有按揭车: 4,全款车: 5,无: 0 */ Integer carStatus = customer.getCarStatus(); if (Objects.isNull(carStatus)){ baseInfo.setCar("NO_CAR"); }else { if (carStatus == 0){ baseInfo.setCar("NO_CAR"); }else if (carStatus == 4){ baseInfo.setCar("MORTGAGED_CAR"); }else if (carStatus == 5){ baseInfo.setCar("OWNED_CAR"); } } /** * "01:未婚, * 02:已婚, * 03:离异, * 04:丧偶 */ String maritalStatus = customer.getMaritalStatus(); if ("04".equals(maritalStatus)) { maritalStatus = "WIDOWED"; } else if ("03".equals(maritalStatus)) { maritalStatus = "DIVORCED"; } else if ("02".equals(maritalStatus)) { maritalStatus = "MARRIED"; }else if ("01".equals(maritalStatus)) { maritalStatus = "UNMARRIED"; } else { maritalStatus = "UNKNOWN"; } baseInfo.setMarriage(maritalStatus); /** * ⽉收⼊ INCOME_3Q_UNDER(0, "3000以下"), Income_3Q_6Q(1, "3000-6000"), Income_6Q_1W(2, "6000-10000"), Income_1W_3W(3, "10000-30000"), Income_3W_UPPER(4, "30000以上"), Income_6(5, "未知"), Income_5Q_UNDER(6, "5000元以下"), Income_5Q_1W(7, "5000 - 10000元"), Income_1W_1W5(8, "10001 - 15000元"), Income_1W5_2W(9, "15001 - 20000元"), Income_2W_2W5(10, "20001 - 25000元"), Income_2W5_3W(11, "25001 - 30000元"), Income_3W_UPPER_1(12, "30000元以上"), Income_1W_UNDER(13, "10000以下"); */ int monthlySalary = customer.getMonthlyIncome(); if (monthlySalary == 3) { // 10000-30000 values = new int[]{10000, 20000}; // 指定的字符集合 monthlySalary = values[random.nextInt(values.length)]; } else if (monthlySalary == 4) { // 30000以上 monthlySalary = 20000; } else { // 10000以下 values = new int[]{3000, 6000}; // 指定的字符集合 monthlySalary = values[random.nextInt(values.length)]; } baseInfo.setIncome(monthlySalary); /** * (0:批发/零售, 1:制造业, 2:金融/保险/证券, 3:住宿/餐饮/旅游, 4:商业服务/娱乐/艺术/体育, 5:计算机/互联网, 6:通讯电子, 7:建筑/房地产, 8:法律/咨询, 9:卫生/教育/社会服务, 10:公共事业/社会团体, 11:生物/制药, 12:广告/媒体, 13:能源, 14:贸易, 15:交通运输/仓储/物流, 16:农业/化工/金属冶炼, 17:其他行业)所属行业 --> 融呗( (A:农、林、牧、渔业,B:采矿业,C:制造业,D:电力、热力、燃气及水生产和供应业,E:建筑业,F:批发和零售业,G:交通运输、仓储和邮储业,H:住宿和餐饮业,I:信息传输、软件和信息技术服务,J:金融业,K:房地产业,L:租赁和商务服务业,M:科学研究和技术服务业,N:水利、环境和公共设施管理业,O:居民服务、修理和其他服务业,P:教育,Q:卫生和社会工作,R:文化、体育和娱乐业,S:公共管理、社会保障和社会组织,T:国际组织,9:未知)) * 1. 建筑业 -->(E) * 2. 电力,热力,燃气及水生产和供应业 -->(D) * 3. 交通运输、仓储和邮政业 -->(G) * 4. 教育 -->(P) * 5. 房地产业 -->(K) * 6. 住宿和餐饮业 -->(H) * 7. 批发和零售业 -->(F) * 8. 租赁和商务服务业 -->(L) * 9. 信息传输、软件和信息技术服务业 -->(I) * 10. 金融业 -->(J) * 11. 文化、体育和娱乐业 -->(R) * 12. 制造业 -->(1) * 13. 水利、环境和公共设施管理业 -->(N) * 14. 采矿业 -->(B) * 15. 农、林、牧、渔业 -->(A) * 16. 居民服务、修理和其他服务业 -->(O) * 17. 卫生和社会工作 -->(Q) * 18. 科学研究和技术服务业 -->(M) * 19. 公共管理、社会保障和社会组织 -->(S) */ String companyTrade = customer.getCompanyTrade(); if ("E".equals(companyTrade) ) { //建筑业 companyTrade = "ONE"; }else if ("D".equals(companyTrade)) { //电力、热力、燃气及水生产和供应业 companyTrade = "TWO"; }else if ("G".equals(companyTrade)) { //交通运输、仓储和邮政业 companyTrade = "THREE"; }else if ("P".equals(companyTrade)) { //教育 companyTrade = "FOUR"; } else if ("K".equals(companyTrade)) { //房地产业 companyTrade = "FIVE"; } else if ("H".equals(companyTrade)) { //住宿和餐饮业 companyTrade = "SIX"; } else if ("F".equals(companyTrade)) { //批发和零售业 companyTrade = "SEVEN"; }else if ("L".equals(companyTrade)) { //租赁和商务服务业 companyTrade = "EIGHT"; } else if ("I".equals(companyTrade)) { //信息传输、软件和信息技术服务业 companyTrade = "NINE"; } else if ("J".equals(companyTrade)) { //金融业 companyTrade = "TEN"; } else if ("R".equals(companyTrade)) { //文化、体育和娱乐业 companyTrade = "ELEVEN"; } else if ("C".equals(companyTrade)) { //制造业 companyTrade = "TWELVE"; }else if ("N".equals(companyTrade)) { //水利、环境和公共设施管理业 companyTrade = "THIRTEEN"; }else if ("B".equals(companyTrade)) { //采矿业 companyTrade = "FOURTEEN"; }else if ("A".equals(companyTrade)) { //农、林、牧、渔业 companyTrade = "FIFTEEN"; }else if ("O".equals(companyTrade)) { //居民服务、修理和其他服务业 companyTrade = "SIXTEEN"; }else if ("Q".equals(companyTrade)) { //卫生和社会工作 companyTrade = "SEVENTEEN"; }else if ("M".equals(companyTrade)) { //科学研究和技术服务业 companyTrade = "EIGHTEEN"; }else if ("S".equals(companyTrade)) { //公共管理、社会保障和社会组织 companyTrade = "NINETEEN"; }else { companyTrade = "TWENTY"; } baseInfo.setIndustry(companyTrade); /** *职业类别 */ int professionInfo = customer.getProfessionInfo(); if (professionInfo == 1 || professionInfo == 3){//自由职业 企业主 baseInfo.setPosition("SIXTEEN"); }else if (professionInfo == 0){ java.lang.String[] professions = new java.lang.String[]{"EIGHTEEN", "FIFTEEN", "FOURTEEN", "FOURTEEN"}; // 上班族 java.lang.String profession = professions[random.nextInt(professions.length)]; baseInfo.setPosition(profession); }else if (professionInfo == 4){ baseInfo.setPosition("NINETEEN"); java.lang.String[] professions = new java.lang.String[]{"NINETEEN", "TWENTY"}; // 公职人员 java.lang.String profession = professions[random.nextInt(professions.length)]; baseInfo.setPosition(profession); }else { baseInfo.setPosition("SIXTEEN"); } /** * 有按揭商品房: 4,有全款商品房: 5,仅外地有房: 6,无: 0 */ Integer housePayment = customer.getHouseStatus(); if (housePayment == 0){ baseInfo.setHouse("RENTED_HOUSING");//租房 }else if (housePayment == 4){ baseInfo.setHouse("MORTGAGED_HOUSING"); }else if (housePayment == 5){ baseInfo.setHouse("OWNED_HOUSING"); }else if (housePayment == 6){ baseInfo.setHouse("SELF_BUILT_HOUSING"); } baseInfo.setEmail(customer.getEmail()); baseInfo.setLivingAddress(customer.getLiveProvince()+customer.getLiveCity()+customer.getLiveArea()+customer.getAddress()); baseInfo.setLivingStreet(customer.getLiveProvince()+customer.getLiveCity()+customer.getLiveArea()); baseInfo.setCompany(customer.getCompanyName()); baseInfo.setCompanyPhone(customer.getCompanyPhone()); baseInfo.setCompanyAddress(customer.getCompanyProvince()+customer.getCompanyCity()+customer.getCompanyArea()+customer.getCompanyAddress()); baseInfo.setCompanyStreet(customer.getCompanyProvince()+customer.getCompanyCity()+customer.getCompanyArea()); /** * 借款⽤途 * 0:日常消费, 1:装修, 2:医疗, 3:教育, 4:旅游, 5:其他 */ String useOfLoan = customer.getUseOfLoan(); if ("DEC".equals(useOfLoan)) { //装修 useOfLoan = "DECORATION"; } else if ("TRA".equals(useOfLoan)) { // 旅游 useOfLoan = "TOUR"; } else if ("EDU".equals(useOfLoan)) { // 教育 useOfLoan = "EDUCATION"; }else if ("MAR".equals(useOfLoan)) { // 婚庆 useOfLoan = "MARRIAGE"; } else if ("OTH".equals(useOfLoan)) { //其他 String[] valueStr = new String[]{"SHOPPING","HEALTH","OTHER"}; useOfLoan = valueStr[random.nextInt(valueStr.length)]; } baseInfo.setLoanPurpose(useOfLoan); userProfile.setBaseInfo(baseInfo); // GPS Gps gps = new Gps(); gps.setLatitude(new BigDecimal(customer.getLat())); gps.setLongitude(new BigDecimal(customer.getLng())); userProfile.setGps(gps); // 联系人 relations Relation relation = new Relation(); List relations = new ArrayList<>(); relation.setName(customer.getRelationshipName()); /** * 1:父亲、 * 2:母亲、 * 3:配偶、 * 4:儿子、 * 5:女儿、 * 6:哥哥、 * 7:弟弟、 * 8:姐姐、 * 9:妹妹 * 01: 配偶, 02: 父母, 03: 子女, 04: 兄弟姐妹 */ String relationShip = customer.getRelationship(); if ("01".equals(relationShip)) { relationShip = "SPOUSE"; } else if ("02".equals(relationShip)) { relationShip = "PARENTS"; } else if ("03".equals(relationShip)) { relationShip = "CHILDREN"; } else if ("04".equals(relationShip)) { relationShip = "SIBLING"; }else { String[] valuesStr = new String[]{"FRIEND", "COLLEAGUE", "RELATIVE", "OTHER"}; // 指定的字符集合 // 随机选取一个字符 relationShip = valuesStr[random.nextInt(valuesStr.length)]; } relation.setRelation(relationShip); relation.setPhone(customer.getRelationshipPhone()); relations.add(relation); relation = new Relation(); /** * 紧急联系人 * 10:同事, * 11:朋友, * 12:同学, * 13:其他 */ String concatRelation = customer.getContactRelation(); if ("05".equals(concatRelation)) { concatRelation = "OTHER"; }else if ("06".equals(concatRelation)) { concatRelation = "FRIEND"; }else if ("07".equals(concatRelation)) { concatRelation = "COLLEAGUE"; }else { concatRelation = "OTHER"; } relation.setRelation(concatRelation); relation.setName(customer.getContactName()); relation.setPhone(customer.getContactPhone()); relations.add(relation); userProfile.setRelations(relations); // 设备信息 deviceInfo DeviceInfo deviceInfo = new DeviceInfo(); deviceInfo.setDeviceType(""); deviceInfo.setOaId(customer.getAndroidId()); deviceInfo.setIdfa(customer.getIdfa()); deviceInfo.setOsType(customer.getOs()); deviceInfo.setIp(customer.getIpAddres()); deviceInfo.setModel(""); deviceInfo.setIsSimulator(customer.getIsEmulator()); deviceInfo.setUa(""); userProfile.setDeviceInfo(deviceInfo); ObjectMapper objectMapper = new ObjectMapper(); ObjectNode param = objectMapper.createObjectNode(); // 将 UserProfile 对象转换为 JSON Node ObjectNode userNode = objectMapper.valueToTree(userProfile); param.setAll(userNode); log.info("日志编号:" + logNumber + " 【轻花优品】进件接口参数:{}", String.valueOf(param)); StringBuilder desKey = new StringBuilder(); String sendData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:" + logNumber + " 【轻花优品】进件接口参数:{}, data加密 {}", userProfile, sendData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/process/approval", sendData); } catch (Exception ex) { log.error("日志编号:" + logNumber + "【轻花优品】进件接口推送失败,传参:{} ex:{}", sendData, ex, ""); } try { getQhypResponse(resp, logNumber, sendData, result, "进件接口",desKey.toString()); JSONObject data = resp.getData(); data.putOpt("orderNo", userProfile.getPartnerOrderNo()); resp.setData(data); } catch (Exception ex) { log.error("日志编号:" + logNumber + " 【轻花优品】进件接口推送原始返回参数转换失败,jsonData:{} ex:{}", sendData, ex, ""); } return resp; } private void getQhypResponse(RbResponse resp, String logNumber, String jsonData, String result, String trips,String desKey) { QingHuaYouPinResponse qingHuaYouPinResponse = JSON.parseObject(result, QingHuaYouPinResponse.class); if ("1000".equals(qingHuaYouPinResponse.getRespCode())) { resp.setCode("200"); String decryptStr = QhypUtil.decrypt(jsonData, qingHuaYouPinResponse.getSignature(), qingHuaYouPinResponse.getData(), publicKey, privateKey,desKey); resp.setData(JSON.parseObject(decryptStr, JSONObject.class)); log.info("日志编号:" + logNumber + " 【轻花优品】"+trips+"接口解析之后的响应数据:{}, 解密数据 {}", JSON.toJSONString(qingHuaYouPinResponse), JSON.parseObject(decryptStr, JSONObject.class)); } else { resp.setCode("201"); log.error("日志编号:{} 【轻花优品】{}失败:{},jsonData:{}", logNumber, trips, result, jsonData); } } /** * 4.查询进件结果 */ public RbResponse queryApproval(CustomerCapitalResult capitalResult) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", capitalResult.getCreditNo()); String logNumber = IdUtil.randomUUID(); log.info("日志编号:" + logNumber + "【轻花优品】查询进件结果接口开始"); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:" + logNumber + " 【轻花优品】查询进件结果接口参数:{}, data加密 {}", param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/process/queryApproval", jsonData); } catch (Exception ex) { log.error("日志编号:" + logNumber + "【轻花优品】查询进件结果推送失败,传参:{} ex:{}", jsonData, ex, ""); } try { getQhypResponse(resp, logNumber, jsonData, result, "查询进件申请结果接口",desKey.toString()); JSONObject data = resp.getData(); String approvalStatus = (String) data.get("approvalStatus"); if ("AUDIT_PASS".equals(approvalStatus)){ capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode()); capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_SUCCESS); }else if ("AUDITING".equals(approvalStatus)){ capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_WAIT.getCode()); capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_WAIT); }else if ("AUDIT_REJECT".equals(approvalStatus)){ capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REFUSE.getCode()); capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_FAIL); } CustomerCapitalResultServiceImpl customerCapitalResultService = SpringUtils.getBean(CustomerCapitalResultServiceImpl.class); customerCapitalResultService.updateById(capitalResult); } catch (Exception ex) { log.error("日志编号:" + logNumber + " 【轻花优品】查询进件申请结果接口推送原始返回参数转换失败,jsonData:{} ex:{}", jsonData, ex, ""); } return resp; } /** * 5.支持银行列表接口 */ public RbResponse getBankList() { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); // param.putOpt("orderNo", orderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】支持银行列表接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】支持银行列表接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/process/getBankList", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】支持银行列表接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "支持银行列表接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【众攒】支持银行列表接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 6.已经绑定银行卡信息查询 */ public RbResponse getBankCardList(String orderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", orderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】已经绑定银行卡信息查询接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】已经绑定银行卡信息查询接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/process/getUserBank", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】已经绑定银行卡信息查询接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "支持银行列表接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】已经绑定银行卡信息查询接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 7.绑卡申请 */ public RbResponse bindCardApply(String cardNo,String phone, String certNo,String bankCode, String cardName, String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("cardNo", cardNo); param.putOpt("phone", phone); param.putOpt("certNo", certNo); param.putOpt("bankCode", bankCode); param.putOpt("cardName", cardName); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】绑卡申请接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】绑卡申请接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/bankCard/bindCardApply", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】绑卡申请接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "绑卡申请接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】绑卡申请接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 8.绑卡确认 */ public RbResponse bindCardConfirm(String confirmNo,String smsCode, String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("confirmNo", confirmNo); param.putOpt("smsCode", smsCode); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】绑卡确认接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】绑卡确认接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/bankCard/bindCardConfirm", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】绑卡确认接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "绑卡确认接口",desKey.toString()); if ("200".equals(resp.getCode())){ CustomerCapitalResultServiceImpl customerCapitalResultService = SpringUtils.getBean(CustomerCapitalResultServiceImpl.class); CustomerUser customerUser = customerCapitalResultService.checkUser(this.request); Customer customer = this.customerMapper.getLatestCustomerRecord(customerUser.getPhone()); List capitalResultList = new ArrayList(); if (customer != null) { capitalResultList = customerCapitalResultService.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoId, 4l) .list(); } log.info("日志编号:{}【轻花优品】绑卡确认成功,修改状态为已绑卡{}", logNumber,capitalResultList); if (!(capitalResultList).isEmpty()){ CustomerCapitalResult customerCapitalResult = capitalResultList.get(0); customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_BINDCARD_SECCESS.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_BIND_CARD_SUCCESS); customerCapitalResultService.updateById(customerCapitalResult); log.info("日志编号:{}【轻花优品】绑卡确认成功,修改状态为已绑卡完成", logNumber); } } } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】绑卡确认接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 9.借款申请链接 */ public RbResponse getLoanUrl(String redirectUrl, String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("redirectUrl", redirectUrl); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】借款申请链接接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】借款申请链接接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/loan/getLoanUrl", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】借款申请链接接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "借款申请链接接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】借款申请链接接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 10.还款链接 */ public RbResponse getRepayUrl(String redirectUrl, String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("redirectUrl", redirectUrl); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】还款链接接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】还款链接接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/repay/getRepayUrl", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】还款链接接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "还款链接接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】还款链接接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 11.要款试算 */ public RbResponse trial( String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】要款试算接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】要款试算接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/loan/trial", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】要款试算接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "还款链接接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】要款试算接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 12.提交要款 */ public RbResponse submitLoan(String partnerOrderNo, String rightsMarking) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("rightsMarking", rightsMarking); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】提交要款接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】提交要款接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/loan/submitLoan", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】提交要款接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "提交要款接口",desKey.toString()); if ("200".equals(resp.getCode())){ CustomerCapitalResultServiceImpl customerCapitalResultService = SpringUtils.getBean(CustomerCapitalResultServiceImpl.class); CustomerUser customerUser = customerCapitalResultService.checkUser(this.request); Customer customer = this.customerMapper.getLatestCustomerRecord(customerUser.getPhone()); List capitalResultList = new ArrayList(); if (customer != null) { capitalResultList = customerCapitalResultService.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoId, 4l) .list(); } log.info("日志编号:{}【轻花优品】提交要款成功,{}", logNumber,capitalResultList); if (!(capitalResultList).isEmpty()){ CustomerCapitalResult customerCapitalResult = capitalResultList.get(0); JSONObject data = resp.getData(); String orderState = (String) data.get("orderState"); customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); if ("LOAN_FAIL".equals(orderState)){//放款失败 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_FAIL); }else if ("LOANING".equals(orderState)){//放款中 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_SUCCESS); }else if ("LOAN_PASS".equals(orderState)){//放款成功 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REPAY.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_SUCCESS); }else if ("CLEAR".equals(orderState)){//结清 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_REPAY_CLEAN_NORMAL); }else if ("SUBMIT_LOAN".equals(orderState)){//已经提交要款 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_WAIT); } customerCapitalResultService.updateById(customerCapitalResult); log.info("日志编号:{}【轻花优品】提交要款成功,修改状态为已完成", logNumber); } } } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】提交要款接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 13.借款查询 */ public RbResponse queryLoan(String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】借款查询接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】借款查询接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/loan/queryLoan", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】借款查询接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "借款查询接口",desKey.toString()); if ("200".equals(resp.getCode())){ CustomerCapitalResultServiceImpl customerCapitalResultService = SpringUtils.getBean(CustomerCapitalResultServiceImpl.class); CustomerUser customerUser = customerCapitalResultService.checkUser(this.request); Customer customer = this.customerMapper.getLatestCustomerRecord(customerUser.getPhone()); List capitalResultList = new ArrayList(); if (customer != null) { capitalResultList = customerCapitalResultService.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoId, 4l) .list(); } log.info("日志编号:{}【轻花优品】还款计划查询capitalResultList成功,{}", logNumber,capitalResultList); if (!(capitalResultList).isEmpty()){ CustomerCapitalResult customerCapitalResult = capitalResultList.get(0); JSONObject data = resp.getData(); String orderState = (String) data.get("orderState"); if ("LOAN_FAIL".equals(orderState)){//放款失败 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_FAIL); }else if ("LOANING".equals(orderState)){//放款中 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_SUCCESS); }else if ("LOAN_PASS".equals(orderState)){//放款成功 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REPAY.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_SUCCESS); customerCapitalResult.setQuotaRate((String) data.get("rate")); customerCapitalResult.setLoanTime((String) data.get("modifyTime")); customerCapitalResult.setLoanAmount((Long) data.get("loanAmount")); customerCapitalResult.setPeriods((String) data.get("period")); }else if ("CLEAR".equals(orderState)){//结清 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_REPAY_CLEAN_NORMAL); }else if ("SUBMIT_LOAN".equals(orderState)){//已经提交要款 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_WAIT); customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); } customerCapitalResult.setFreezeTime((String) data.get("freezeTime")); customerCapitalResultService.updateById(customerCapitalResult); log.info("日志编号:{}【轻花优品】还款计划查询capitalResultList成功,修改状态为已完成", logNumber); } } } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】借款查询接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 14.还款计划查询 */ public RbResponse queryRepayPlan(String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】还款计划查询接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】还款计划查询接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/repay/queryRepayPlan", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】还款计划查询接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "还款计划查询接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】还款计划查询接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 15.查询权益包详情 */ public RbResponse detail(String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】查询权益包详情接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】查询权益包详情接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/rights/detail", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】查询权益包详情接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "查询权益包详情接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】查询权益包详情接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 16.获取权益兑换地址 */ public RbResponse benefitExchange(String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】获取权益兑换地址接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】获取权益兑换地址接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/rights/benefitExchange", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】获取权益兑换地址接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "获取权益兑换地址接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】获取权益兑换地址接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 17.查询权益扣款结果 */ public RbResponse deductionResult(String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】查询权益扣款结果接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】查询权益扣款结果接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/rights/deductionResult", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】查询权益扣款结果接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "查询权益扣款结果接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】查询权益扣款结果接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 18.还款试算 */ public RbResponse repayTrial(String partnerOrderNo,String repayPurpose,String period) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); param.putOpt("repayPurpose", repayPurpose); param.putOpt("period", period); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】还款试算接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】还款试算接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/repay/repayTrial", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】还款试算接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "还款试算接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】还款试算接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 19.提交还款 */ public RbResponse repay(String partnerOrderNo,String repayPurpose,String period,String partnerRepayNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); param.putOpt("partnerRepayNo", partnerRepayNo); param.putOpt("repayPurpose", repayPurpose); param.putOpt("period", period); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】提交还款接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】提交还款接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/repay/repay", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】提交还款接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "提交还款接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】提交还款接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 20.还款结果查询 */ public RbResponse queryRepayResult(String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【轻花优品】还款结果查询接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【轻花优品】还款结果查询接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/repay/queryRepayResult", jsonData); } catch (Exception ex) { log.error("日志编号:{}【轻花优品】还款结果查询接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "还款结果查询接口",desKey.toString()); } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】还款结果查询接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } return resp; } /** * 根据身份证号码判断性别 * * @param idCard * @return */ public String getGenderByIDCard(String idCard) { if (idCard == null || (idCard.length() != 18 && idCard.length() != 15)) { throw new IllegalArgumentException("身份证号码长度不正确"); } char sex = idCard.charAt(idCard.length() - 2); return (sex % 2 == 0) ? "女" : "男"; } /** * 身份证地址提取省市区 * * @param fullAddress 身份证完整地址 */ private static Map addressResolution(String fullAddress) { // 定义正则 String regex = "(?[^省]+自治区|.*?省|.*?行政区|.*?市)(?[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)?(?[^区]+区|.+镇)?(?.*)"; Matcher matcher = Pattern.compile(regex).matcher(fullAddress); String province, city, area, town, detail; Map map = new LinkedHashMap<>(); while (matcher.find()) { province = matcher.group("province"); map.put("province", StringUtils.isEmpty(province) ? "" : province.trim()); city = matcher.group("city"); map.put("city", StringUtils.isEmpty(city) ? "" : city.trim()); area = matcher.group("area"); map.put("area", StringUtils.isEmpty(area) ? "" : area.trim()); town = matcher.group("town"); map.put("town", StringUtils.isEmpty(town) ? "" : town.trim()); detail = matcher.group("detail"); map.put("detail", StringUtils.isEmpty(detail) ? "" : detail.trim()); } return map; } /** * 我来贷数据推送到青花优品操作 */ public boolean wldPushToQHYP(CapitalInfo capitalInfo,ApplyDto applyDto,Customer customer,String logNumber) { boolean isSucc = false; log.info("日志编号:{},手机号:{},【我来贷】数据推送到青花优品流程开始", logNumber, customer.getPhone()); try { //进件成功后注册账户 并保存资方信息 CustomerUser customerUser = initCustomer(capitalInfo, customer, logNumber); JSONObject param = new JSONObject(); // RbResponse rbResponse = checkUser(capitalInfo, customer, customerUser); isSucc = push(customer, param, logNumber); // if (Objects.equals("200",rbResponse.getCode())){ // isSucc = true; // } Integer qhyp = 0; if (!isSucc) { log.error("日志编号:{},手机号:{},【我来贷】数据推送到青花优品失败", logNumber, customer.getPhone()); } else { qhyp = 1; } saveStatus(customer, qhyp); if (isSucc) { isSucc = wldIncomeToQHYP(applyDto,customer, logNumber); } } catch (Exception ex) { log.error("日志编号:{},手机号:{},【我来贷】数据推送到青花优品失败:{}", logNumber, customer.getPhone(), ex.getMessage()); isSucc = false; } return isSucc; } public CustomerUser initCustomer(CapitalInfo capitalInfo, Customer customer,String logNumber) { LambdaQueryWrapper customerUserLambdaQueryWrapper = Wrappers.lambdaQuery(); customerUserLambdaQueryWrapper.eq(CustomerUser::getPhone,customer.getPhone()); List customerUserList = customerUserMapper.selectList(customerUserLambdaQueryWrapper); CustomerUser customerUser; if (CollUtil.isNotEmpty(customerUserList)) { customerUser = customerUserList.get(0); }else { customerUser = new CustomerUser(); } LambdaQueryWrapper customerLambdaQueryWrapper = Wrappers.lambdaQuery(); customerLambdaQueryWrapper.eq(Customer::getPhone,customer.getPhone()); List customerList = customerMapper.selectList(customerLambdaQueryWrapper); //注册用户信息-基本资料 customerUser.setName(customer.getName()); customerUser.setPhone(customer.getPhone()); customerUser.setCreationDate(customer.getApplyDate()); customerUser.setSourceChannel(customer.getSourceChannel()); customerUser.setPhoneMd5(DigestUtils.md5DigestAsHex(customer.getPhone().getBytes())); customerUser.setNameMd5(DigestUtils.md5DigestAsHex(customer.getName().getBytes())); customerUser.setIdCardMd5(DigestUtils.md5DigestAsHex(customer.getIdCard().getBytes())); //注册用户信息-更新用户审核时间 DateTime approvalTime = DateUtil.offsetMinute(new Date(), 300); DateTime nextApplyTime = DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), Customer.VALID_DAY)); customerUser.setApprovalTime(approvalTime); customerUser.setNextApplyTime(nextApplyTime); customerUser.setFirstQuota(VipCardOrderServiceImpl.randomQuota()); customerUser.setVipQuota(VipCardOrderServiceImpl.randomVipQuota(customerUser.getFirstQuota())); customerUser.setShowActivationPage(true); customerUser.setCreditNo(customer.getCreditNo()); customerUser.setThirdUserId(customer.getYqgUserId()); //注册用户信息-保存用户 if (customerUser.getId() != null) { customerUserMapper.updateById(customerUser); }else { customerUserMapper.insert(customerUser); } customer.setCustomerUserId(customerUser.getId()); if (CollUtil.isEmpty(customerList)) { customerMapper.insert(customer); } CustomerCapitalResult capitalResult = CustomerCapitalResult.initResult(capitalInfo, customerUser.getId(), customer.getId()); capitalResult.setStatus(CapitalResultStatusEnum.CHECK.getCode()); capitalResult.setCreditNo(customer.getCreditNo()); CustomerCapitalResult filterResult = capitalResultCommonService.filterCustomer(customer, capitalInfo, capitalResult, logNumber); if (filterResult != null) { log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库时不满足资方信息筛选条件,撞库失败"); } return customerUser; } private boolean wldIncomeToQHYP(ApplyDto applyDto,Customer customer, String logNumber) { boolean isSucc = false; log.info("日志编号:{},手机号:{},【我来贷】数据进件到【青花优品】流程开始", logNumber, customer.getPhone()); try { int qhyp = 3; UserProfile userProfile = initUserProfile(applyDto, customer); log.info("日志编号:" + logNumber + " 【青花优品】进件接口参数:{}", userProfile); ObjectMapper objectMapper = new ObjectMapper(); ObjectNode param = objectMapper.createObjectNode(); // 将 UserProfile 对象转换为 JSON Node ObjectNode userNode = objectMapper.valueToTree(userProfile); param.setAll(userNode); log.info("日志编号:" + logNumber + " 【青花优品】进件接口参数:{}", param); StringBuilder desKey = new StringBuilder(); String sendData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:" + logNumber + " 【青花优品】进件接口参数:{}, data加密 {}", userProfile, sendData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/process/approval", sendData); QingHuaYouPinResponse qingHuaYouPinResponse = JSON.parseObject(result, QingHuaYouPinResponse.class); if ("1000".equals(qingHuaYouPinResponse.getRespCode())) { String decryptStr = QhypUtil.decrypt(sendData, qingHuaYouPinResponse.getSignature(), qingHuaYouPinResponse.getData(), publicKey, privateKey,desKey.toString()); log.info("日志编号:" + logNumber + " 【青花优品】进件接口解析之后的响应数据:{}, 解密数据 {}", JSON.toJSONString(qingHuaYouPinResponse), JSON.parseObject(decryptStr, JSONObject.class)); JSONObject data = JSON.parseObject(decryptStr, JSONObject.class); String approvalStatus = (String) data.get("approvalStatus"); if (!"AUDIT_REJECT".equals(approvalStatus)){ isSucc = true; } } else { log.error("日志编号:{} 【青花优品】{}失败:{},jsonData:{}", logNumber, "进件接口", result, sendData); } } catch (Exception ex) { log.error("日志编号:" + logNumber + "【青花优品】进件接口推送失败,传参:{} ex:{}", sendData, ex, ""); } if (!isSucc) { log.error("日志编号:{},手机号:{},【我来贷】数据进件到【青花优品】失败", logNumber, customer.getPhone()); } else { qhyp = 4; log.info("日志编号:{},手机号:{},【我来贷】数据进件到【青花优品】成功", logNumber, customer.getPhone()); } saveStatus(customer, qhyp); } catch (Exception ex) { ex.printStackTrace(); log.error("日志编号:{},手机号:{},【我来贷】数据进件到【青花优品】失败: {}", logNumber, customer.getPhone(), ex.getMessage()); } return isSucc; } public boolean push(Customer customer, JSONObject param, String logNumber) { param.putOpt("certNoMd5", DigestUtils.md5DigestAsHex(customer.getIdCard().getBytes(StandardCharsets.UTF_8))); param.putOpt("phoneMd5", DigestUtils.md5DigestAsHex(customer.getPhone().getBytes(StandardCharsets.UTF_8))); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,param.toString(),publicKey,privateKeySelf,desKey); log.info("日志编号:" + logNumber + " 手机号为:{},【青花优品(我来贷)】用户准入接口参数:{}, data加密 {}", customer.getPhone(), param, jsonData); String result = null; RbResponse resp = new RbResponse(); try { log.info("日志编号:" + logNumber + " 请求地址 {}", basicUrl + "/qhyp/api/userCheck/checkUser"); result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/userCheck/checkUser", jsonData); log.error("日志编号:" + logNumber + " 用户准入接口回传数据{}", result); QingHuaYouPinResponse qingHuaYouPinResponse = JSON.parseObject(result, QingHuaYouPinResponse.class); if ("1000".equals(qingHuaYouPinResponse.getRespCode())) { resp.setCode("200"); String decryptStr = QhypUtil.decrypt(jsonData, qingHuaYouPinResponse.getSignature(), qingHuaYouPinResponse.getData(), publicKey, privateKey,desKey.toString()); resp.setData(JSON.parseObject(decryptStr, JSONObject.class)); log.info("日志编号:" + logNumber + " 【青花优品(我来贷)】用户准入接口接口解析之后的响应数据:{}, 解密数据 {}", JSON.toJSONString(qingHuaYouPinResponse), JSON.parseObject(decryptStr, JSONObject.class)); return true; } else { resp.setCode("201"); log.error("日志编号:{} 【青花优品(我来贷)】{}失败:{},jsonData:{}", logNumber, "用户准入接口", result, jsonData); } } catch (Exception ex) { log.error("日志编号:" + logNumber + " 手机号为:{},【青花优品(我来贷)】用户准入接口推送失败,传参:{} ex:{}", customer.getPhone(), jsonData, ex, ""); } return false; } /** * 我来贷数据推送录入或更新到customer_scy_income表 */ public void saveStatus(Customer customer, Integer qhyp) { // 录入或更新到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.setQhyp(qhyp); customerZcyIncomeService.saveOrUpdate(csi); } public UserProfile initUserProfile(ApplyDto applyDto,Customer customer) { UserProfile userProfile = new UserProfile(); ProfileDictDto profileDict = applyDto.getProfile_dict(); userProfile.setImageFormat("LINK"); userProfile.setPartnerOrderNo(customer.getCreditNo()); userProfile.setMobile(customer.getPhone()); userProfile.setUserName(customer.getName()); userProfile.setIdCard(customer.getIdCard()); // 照片 photos Photos photos = new Photos(); List validDate = null; if (StrUtil.isNotEmpty(profileDict.getValid_date())){ validDate = Arrays.asList(profileDict.getValid_date().split("-")); } photos.setNationalEmblemImage("https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png"); photos.setHeadImage("https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png"); photos.setName(customer.getName()); photos.setCertNo(customer.getIdCard()); photos.setCertValidStart(CollUtil.isEmpty(validDate)? "2011-10-10":validDate.get(0).replace(".","-")); photos.setCertValidEnd(CollUtil.isEmpty(validDate)? "2031-10-10":validDate.get(1).replace(".","-")); photos.setCertAddress(StringUtils.isEmpty(customer.getIdAddress())? "测试测试测试测试测试测试测试测试":customer.getIdAddress()); photos.setGender(StringUtils.isEmpty(customer.getSex())? "男":customer.getSex()); photos.setNation(StringUtils.isEmpty(customer.getNation())?"汉":customer.getNation()); photos.setCertSignOrg(StringUtils.isEmpty(customer.getSignOrganization()) ? "测试机关测试机关测试机关":customer.getSignOrganization()); photos.setFaceImageUrl("https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png"); photos.setFaceScore(StringUtils.isEmpty(customer.getVerifySimilarity())? "99.555554":customer.getVerifySimilarity()); photos.setFaceImage("https://zhitech18967.itech-zwbbg.cn/api/upload_img/20240923/2ba1d26c0bc94bd7ad61e399c77168d5.png"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); photos.setFaceCollectTime(simpleDateFormat.format(new Date())); photos.setFaceSource(StringUtils.isEmpty(customer.getVerifySimilarity())?"测试测试测试测试测试测试":customer.getVerifySimilarity()); userProfile.setPhotos(photos); BaseInfo baseInfo = new BaseInfo(); //教育程度 switch (profileDict.getEducation()) { //默认最高学历 //青花 初中及以下 case "1": baseInfo.setEducation("JUNIOR_HIGH_SCHOOL"); break; case "2": baseInfo.setEducation("HIGH_SCHOOL"); break; case "3": baseInfo.setEducation("JUNIOR_COLLEGE"); break; case "4": baseInfo.setEducation("COLLEGE"); break; case "5": baseInfo.setEducation("MASTER"); break; case "6": baseInfo.setEducation("DOCTOR"); break; default: baseInfo.setEducation("UNKNOWN"); } //职业类型与青花字典完全对不上 默认其他 baseInfo.setPosition("ELEVEN"); //婚姻 switch (profileDict.getMarital_status()) { case 1: baseInfo.setMarriage("UNMARRIED"); break; case 2: baseInfo.setMarriage("DIVORCED"); break; case 3: case 4: case 5: case 7: baseInfo.setMarriage("MARRIED"); break; case 6: baseInfo.setMarriage("WIDOWED"); break; case 8: baseInfo.setMarriage("UNKNOWN"); break; } //月收入 baseInfo.setIncome(profileDict.getMonthly_income()); //行业 switch (profileDict.getIndustry()) { case "1": baseInfo.setIndustry("ONE"); break; case "2": baseInfo.setIndustry("TWO"); break; case "3": baseInfo.setIndustry("THREE"); break; case "4": baseInfo.setIndustry("FOUR"); break; case "5": baseInfo.setIndustry("FIVE"); break; case "6": baseInfo.setIndustry("SIX"); break; case "7": baseInfo.setIndustry("SEVEN"); break; case "8": baseInfo.setIndustry("EIGHT"); break; case "9": baseInfo.setIndustry("NINE"); break; case "10": baseInfo.setIndustry("TEN"); break; case "11": baseInfo.setIndustry("ELEVEN"); break; case "12": baseInfo.setIndustry("TWELVE"); break; case "13": baseInfo.setIndustry("THIRTEEN"); break; case "14": baseInfo.setIndustry("FOURTEEN"); break; case "15": baseInfo.setIndustry("FIFTEEN"); break; case "16": baseInfo.setIndustry("SIXTEEN"); break; case "17": baseInfo.setIndustry("SEVENTEEN"); break; case "18": baseInfo.setIndustry("EIGHTEEN"); break; case "19": baseInfo.setIndustry("NINETEEN"); break; default: baseInfo.setIndustry("TWENTY"); } //居住地址 baseInfo.setLivingAddress(profileDict.getResidential_address()); //工作单位 baseInfo.setCompany(profileDict.getOrganize_name()); //工作地址 baseInfo.setCompanyAddress(profileDict.getCompany_address()); //工作单位街道 baseInfo.setCompanyStreet(profileDict.getCompany_address_detail()); //借款用途 switch (profileDict.getLoan_usage()) { //匹配不上的 默认都是其他 case "1": baseInfo.setLoanPurpose("SHOPPING"); break; case "2": baseInfo.setLoanPurpose("DECORATION"); break; case "3": baseInfo.setLoanPurpose("TOUR"); break; case "5": baseInfo.setLoanPurpose("EDUCATION"); break; case "6": case "14": baseInfo.setLoanPurpose("MARRIAGE"); break; case "7": baseInfo.setLoanPurpose("HEALTH"); break; default: baseInfo.setLoanPurpose("OTHER"); } userProfile.setBaseInfo(baseInfo); // GPS Gps gps = new Gps(); DeviceInfoDto deviceInfoDto = applyDto.getDevice_info(); if (StrUtil.isNotEmpty(deviceInfoDto.getGps())){ List gpsList = Arrays.asList(deviceInfoDto.getGps().split(",")); gps.setLongitude(new BigDecimal(gpsList.get(0))); gps.setLatitude(new BigDecimal(gpsList.get(1))); userProfile.setGps(gps); } // 联系人 relations List contactList = applyDto.getContact_list(); List relationList = new ArrayList<>(); for (ContactListDto contactListDto : contactList) { Relation relation = new Relation(); relation.setName(contactListDto.getName()); relation.setPhone(contactListDto.getPhone()); switch (contactListDto.getRelation()) { case 1: relation.setRelation("PARENTS"); break; case 2: relation.setRelation("SPOUSE"); break; case 3: relation.setRelation("CHILDREN"); break; case 4: relation.setRelation("RELATIVE"); break; case 5: relation.setRelation("COLLEAGUE"); break; case 6: relation.setRelation("FRIEND"); break; case 7: relation.setRelation("OTHER"); break; } relationList.add(relation); } userProfile.setRelations(relationList); // 设备信息 deviceInfo DeviceInfo deviceInfo = new DeviceInfo(); deviceInfo.setDeviceType(""); deviceInfo.setOaId(customer.getAndroidId()); deviceInfo.setIdfa(customer.getIdfa()); deviceInfo.setOsType(customer.getOs()); deviceInfo.setIp(customer.getIpAddres()); deviceInfo.setModel(""); deviceInfo.setIsSimulator(customer.getIsEmulator()); deviceInfo.setUa(""); userProfile.setDeviceInfo(deviceInfo); return userProfile; } public ResponseEntity bindCardApplyToWoLaiDai(String cardNo, String phone, String certNo, String bankCode, String cardName, String creditNo) { log.debug("7.1:绑卡申请"); RbResponse result = bindCardApply(cardNo, phone, certNo, bankCode, cardName, creditNo);; if (!Objects.equals("200",result.getCode())) { result.setMsg("绑卡申请失败"); result.setCode("1"); } return ResponseEntity.ok(result); } public ResponseEntity bindCardConfirmToWoLaiDai(String confirmNo, String smsCode, String creditNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("confirmNo", confirmNo); param.putOpt("smsCode", smsCode); param.putOpt("partnerOrderNo", creditNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【青花优品】绑卡确认接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【青花优品】绑卡确认接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/bankCard/bindCardConfirm", jsonData); } catch (Exception ex) { log.error("日志编号:{}【青花优品】绑卡确认接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "绑卡确认接口",desKey.toString()); if ("200".equals(resp.getCode())){ CustomerCapitalResultServiceImpl customerCapitalResultService = SpringUtils.getBean(CustomerCapitalResultServiceImpl.class); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Customer::getCertNo,creditNo); List customerList = customerMapper.selectList(queryWrapper); Customer customer = null; if (CollUtil.isNotEmpty(customerList)){ customer = customerList.get(0); } List capitalResultList = new ArrayList(); if (customer != null) { capitalResultList = customerCapitalResultService.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customer.getCustomerUserId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoId, 4l) .list(); } log.info("日志编号:{}【青花优品】绑卡确认成功,修改状态为已绑卡{}", logNumber,capitalResultList); if (!(capitalResultList).isEmpty()){ CustomerCapitalResult customerCapitalResult = capitalResultList.get(0); customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_BINDCARD_SECCESS.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_BIND_CARD_SUCCESS); customerCapitalResultService.updateById(customerCapitalResult); log.info("日志编号:{}【青花优品】绑卡确认成功,修改状态为已绑卡完成", logNumber); } if (customer != null){ customer.setRepayApplyDate(new Date()); customerMapper.updateById(customer); } } } catch (Exception ex) { log.error("日志编号:{} 【青花优品】绑卡确认接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } if(!Objects.equals(resp.getCode(),"200")) { resp.setMsg("绑卡确认失败"); resp.setCode("201"); } return ResponseEntity.ok(resp); } public ResponseEntity submitLoanToWoLaiDai(String creditNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("rightsMarking", "N"); param.putOpt("partnerOrderNo", creditNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【青花优品】提交要款接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【青花优品】提交要款接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/loan/submitLoan", jsonData); } catch (Exception ex) { log.error("日志编号:{}【青花优品】提交要款接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } try { getQhypResponse(resp, logNumber, jsonData, result, "提交要款接口",desKey.toString()); if ("200".equals(resp.getCode())){ CustomerCapitalResultServiceImpl customerCapitalResultService = SpringUtils.getBean(CustomerCapitalResultServiceImpl.class); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Customer::getCertNo,creditNo); List customerList = customerMapper.selectList(queryWrapper); Customer customer = null; if (CollUtil.isNotEmpty(customerList)){ customer = customerList.get(0); } List capitalResultList = new ArrayList(); if (customer != null) { capitalResultList = customerCapitalResultService.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customer.getCustomerUserId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoId, 4l) .list(); } log.info("日志编号:{}【青花优品】提交要款成功,{}", logNumber,capitalResultList); if (!(capitalResultList).isEmpty()){ CustomerCapitalResult customerCapitalResult = capitalResultList.get(0); JSONObject data = resp.getData(); String orderState = (String) data.get("orderState"); customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); if ("LOAN_FAIL".equals(orderState)){//放款失败 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_FAIL); }else if ("LOANING".equals(orderState)){//放款中 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_SUCCESS); }else if ("LOAN_PASS".equals(orderState)){//放款成功 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REPAY.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_SUCCESS); }else if ("CLEAR".equals(orderState)){//结清 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_REPAY_CLEAN_NORMAL); }else if ("SUBMIT_LOAN".equals(orderState)){//已经提交要款 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_WAIT); } customerCapitalResult.setLoanApplyDate(new Date()); customerCapitalResultService.updateById(customerCapitalResult); log.info("日志编号:{}【青花优品】提交要款成功,修改状态为已完成", logNumber); } } } catch (Exception ex) { log.error("日志编号:{} 【青花优品】提交要款接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } if(!Objects.equals(resp.getCode(),"200")) { resp.setMsg("提交要款接失败"); resp.setCode("201"); } return ResponseEntity.ok(resp); } public ResponseEntity queryLoanToWolaidai(String partnerOrderNo) { RbResponse resp = new RbResponse(); JSONObject param = new JSONObject(); param.putOpt("partnerOrderNo", partnerOrderNo); String logNumber = IdUtil.randomUUID(); log.info("日志编号:{}【青花优品】借款查询接口开始", logNumber); StringBuilder desKey = new StringBuilder(); String jsonData = QhypUtil.encrypt(orgCode,productCode,String.valueOf(param),publicKey,privateKeySelf,desKey); log.info("日志编号:{} 【青花优品】借款查询接口参数:{}, data加密 {}", logNumber, param, jsonData); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "/qhyp/api/loan/queryLoan", jsonData); } catch (Exception ex) { log.error("日志编号:{}【青花优品】借款查询接口推送失败,传参:{} ex:{}", logNumber, jsonData, ex.getMessage()); } Customer customer = null; CustomerCapitalResult customerCapitalResult = null; try { // JSONObject.JSON.parseObject(result); // if ("1000".equals(qingHuaYouPinResponse.getRespCode())) { // resp.setCode("200"); // String decryptStr = QhypUtil.decrypt(jsonData, qingHuaYouPinResponse.getSignature(), qingHuaYouPinResponse.getData(), publicKey, privateKey,desKey); // resp.setData(JSON.parseObject(decryptStr, JSONObject.class)); // log.info("日志编号:" + logNumber + " 【轻花优品】"+trips+"接口解析之后的响应数据:{}, 解密数据 {}", JSON.toJSONString(qingHuaYouPinResponse), JSON.parseObject(decryptStr, JSONObject.class)); // } else { // resp.setCode("201"); // log.error("日志编号:{} 【轻花优品】{}失败:{},jsonData:{}", logNumber, trips, result, jsonData); // } getQhypResponse(resp, logNumber, jsonData, result, "借款查询接口",desKey.toString()); if ("200".equals(resp.getCode())){ CustomerCapitalResultServiceImpl customerCapitalResultService = SpringUtils.getBean(CustomerCapitalResultServiceImpl.class); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Customer::getCertNo,partnerOrderNo); List customerList = customerMapper.selectList(queryWrapper); if (CollUtil.isNotEmpty(customerList)){ customer = customerList.get(0); } List capitalResultList = new ArrayList(); if (customer != null) { capitalResultList = customerCapitalResultService.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customer.getCustomerUserId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoId, 4l) .list(); } log.info("日志编号:{}【青花优品】查询capitalResultList成功,{}", logNumber,capitalResultList); if (!(capitalResultList).isEmpty()){ customerCapitalResult = capitalResultList.get(0); JSONObject data = resp.getData(); String orderState = (String) data.get("orderState"); if ("LOAN_FAIL".equals(orderState)){//放款失败 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_FAIL); }else if ("LOANING".equals(orderState)){//放款中 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_SUCCESS); }else if ("LOAN_PASS".equals(orderState)){//放款成功 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REPAY.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_SUCCESS); }else if ("CLEAR".equals(orderState)){//结清 customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_REPAY_CLEAN_NORMAL); }else if ("SUBMIT_LOAN".equals(orderState)){//已经提交要款 customerCapitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_WAIT); customerCapitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode()); } customerCapitalResultService.updateById(customerCapitalResult); log.info("日志编号:{}【轻花优品】还款计划查询capitalResultList成功,修改状态为已完成", logNumber); } } } catch (Exception ex) { log.error("日志编号:{} 【轻花优品】借款查询接口推送原始返回参数转换失败,jsonData:{} ex:{}", logNumber, jsonData, ex.getMessage()); } if(!Objects.equals(resp.getCode(),"200") && customerCapitalResult == null) { resp.setMsg("借款查询失败"); resp.setCode("201"); } LambdaQueryWrapper customerApplyOrderLambdaQueryWrapper = Wrappers.lambdaQuery(); customerApplyOrderLambdaQueryWrapper.eq(CustomerApplyOrder::getChnOrderId,partnerOrderNo); List customerApplyOrders = customerApplyOrderMapper.selectList(customerApplyOrderLambdaQueryWrapper); CustomerApplyOrder customerApplyOrder = null; if (CollUtil.isNotEmpty(customerApplyOrders)){ customerApplyOrder = customerApplyOrders.get(0); } SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); JSONObject data = resp.getData(); if (data != null) { JSONObject jsonObject = new JSONObject(); //合作机构单号 jsonObject.putOpt("partnerOrderNo", data.get("partnerOrderNo")); //我方单号 jsonObject.putOpt("orderId", data.get("orderId") == null ? "" : data.get("orderId")); //放款金额 jsonObject.putOpt("loanAmount", data.get("loanAmount") == null ? "" : data.get("loanAmount")); //到账卡 jsonObject.putOpt("bankCardNo", data.get("bankCardNo") == null ? "" : data.get("bankCardNo")); //借款期限 jsonObject.putOpt("period", data.get("period") == null ? "" : data.get("period")); //等待放款中的时间: jsonObject.putOpt("loanApplyDate", customerCapitalResult == null ? "" : customerCapitalResult.getLoanApplyDate() == null ? "" : simpleDateFormat.format(customerCapitalResult.getLoanApplyDate())); //资金方匹配中的时间 jsonObject.putOpt("repayApplyDate", customer == null ? "" : customer.getRepayApplyDate() == null ? "" : simpleDateFormat.format(customer.getRepayApplyDate())); //额度审批通过中的时间 jsonObject.putOpt("approvalDate", customerApplyOrder == null ? "" : customerApplyOrder.getCreateDate() == null ? "" : simpleDateFormat.format(customerApplyOrder.getCreateDate())); //额度已提交中的时间 jsonObject.putOpt("checkDate", customerCapitalResult == null ? "" : customerCapitalResult.getCreationDate() == null ? "" : simpleDateFormat.format(customerCapitalResult.getCreationDate())); resp.setData(jsonObject); } return ResponseEntity.ok(resp); } }