package com.nova.sankuai.domain.api.sujinsuo; import com.alibaba.fastjson.JSON; import com.nova.sankuai.domain.dto.CustomerCompareDto; import com.nova.sankuai.domain.entity.Customer; import com.nova.sankuai.domain.enums.customerinfo.InsuranceStatusEnum; import com.nova.sankuai.domain.enums.customerinfo.PayrollAgencyEnum; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @ApiModel(value = "速金所接口对接工具类") @Data public class SuJinSuoUtil { @ApiModelProperty(value = "速金所API接口地址") public static final String SUJINSUO_URL = "http://139.224.251.4/api/ec/addCustomersByCBC"; public static final String cKey = "whsjs20220214123"; /** * 将Customer对象转换为民生接口对象 * * @param customer * @return */ public static String parseParam(Customer customer) { CustomerCompareDto parse = CustomerCompareDto.parse(customer); HashMap param = new HashMap<>(); // param.put("name", customer.getName()); param.put("name", "测试"); param.put("quota", customer.getLoanAmount()); //额度 param.put("city", "武汉"); param.put("mobile", customer.getPhone()); param.put("source", "SKFQ"); Map tag = new HashMap(); tag.put("bsnslcs", 2); tag.put("enterpriseTax", 2); tag.put("company", 2); if (customer.getHouseStatus() != null) { tag.put("house", parse.isHouseStatus() ? 1 : 0); } if (customer.getCarStatus() != null) { tag.put("car", parse.isCarStatus() ? 1 : 0); } if (customer.getSocialSecurity() != null) { tag.put("socialInsurance", parse.isSocialSecurity() ? 1 : 0); }else { tag.put("socialInsurance", 0); } if (customer.getProvidentFund() != null) { tag.put("fund", parse.isProvidentFund() ? 1 : 0); }else { tag.put("fund", 0); } if (customer.getInsurancePolicy() != null) { tag.put("policy", InsuranceStatusEnum.BusinessInsurance_6.getCode().equals(customer.getInsurancePolicy()) ? 1 : 0); }else { tag.put("policy", 0); } if (customer.getPayrollAgency() != null) { param.put("salary", PayrollAgencyEnum.PayrollAgency_2.getCode().equals(customer.getPayrollAgency()) ? 1 : 0); }else { tag.put("salary", 0); } if (customer.getMicroLoan() != null) { param.put("loan", PayrollAgencyEnum.PayrollAgency_2.getCode().equals(customer.getMicroLoan()) ? 1 : 0); //微粒贷额度 }else { tag.put("loan", 0); } Map config = new HashMap(); config.put("followUserId", 11253969); config.put("optUserId", 11253969); config.put("createUserId", 11253969); config.put("groupId", 0); param.put("ecConfig", JSON.toJSON(config)); param.put("tag", JSON.toJSON(tag)); String paramJson = JSON.toJSONString(param); HashMap paramMap = new HashMap<>(); try { String encode = Encrypt(paramJson);; paramMap.put("data", encode); } catch (Exception e) { paramMap.put("data", "error"); } return JSON.toJSONString(paramMap); } public static String Encrypt(String sSrc) throws Exception { byte[] raw = cKey.getBytes(StandardCharsets.UTF_8); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式" IvParameterSpec iv = new IvParameterSpec(cKey.getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes()); return new Base64().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。 } }