package com.nova.sankuai.domain.api.minsheng; import cn.hutool.crypto.SecureUtil; 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.LargeLoanAmountEnum; import com.nova.sankuai.domain.enums.customerinfo.MonthlyIncomeEnum; import com.nova.sankuai.domain.enums.customerinfo.PayrollAgencyEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang.StringUtils; import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.TreeMap; /** * @author weikangdi * @create 2021/11/12 */ @ApiModel(value = "民生接口对接工具类") @Data public class MinShengUtil { @ApiModelProperty(value = "民生API接口地址") public static final String MINSHENG_URL = "http://open.minshengxinnuo.com/Customer/import"; /** * 将Customer对象转换为民生接口对象 * * @param customer * @return */ public static HashMap parseParam(Customer customer) { CustomerCompareDto parse = CustomerCompareDto.parse(customer); HashMap param = new HashMap<>(); param.put("appid", "103711"); param.put("appkey", "B2MQThj5EiJNZ2ut95EpR9tItJHw9mcK67Gn1R"); param.put("timestamp", "" + System.currentTimeMillis()); param.put("vender_name", "8"); param.put("name", customer.getName()); param.put("telphone", customer.getPhone()); param.put("city", "上海"); param.put("birthday", "2021-01-01"); param.put("vocation", "工薪族"); if (customer.getMonthlyIncome() == null) { param.put("salary", "1000 - 4999"); } else { param.put("salary", MonthlyIncomeEnum.value(customer.getMonthlyIncome())); } if (customer.getLoanAmount() == null) { param.put("loan_amount", LargeLoanAmountEnum.parseAmount(customer.getLargeLoanAmount())); } else { param.put("loan_amount", "" + (customer.getLoanAmount() / 10000)); } if (customer.getLoanAmount() == null) { param.put("loan_time", "12"); } else { param.put("loan_time", "" + customer.getLoanTerm()); } param.put("channel", "民生"); if (StringUtils.isNotBlank(customer.getIdCard())) { param.put("id_card", customer.getIdCard()); } if (customer.getCreditCard() != null) { param.put("have_credit_card", parse.isCreditCard() ? "Y" : "N"); } if (customer.getHouseStatus() != null) { param.put("have_house", parse.isHouseStatus() ? "Y" : "N"); } if (customer.getCarStatus() != null) { param.put("have_car", parse.isCarStatus() ? "Y" : "N"); } if (customer.getSocialSecurity() != null) { param.put("shebao", parse.isSocialSecurity() ? "Y" : "N"); } if (customer.getProvidentFund() != null) { param.put("have_fund", parse.isProvidentFund() ? "Y" : "N"); } if (customer.getInsurancePolicy() != null) { param.put("have_baoxian", InsuranceStatusEnum.BusinessInsurance_5.getCode().equals(customer.getInsurancePolicy()) ? "Y" : "N"); } if (customer.getPayrollAgency() != null) { param.put("salary_method", PayrollAgencyEnum.PayrollAgency_2.getCode().equals(customer.getInsurancePolicy()) ? "2" : "0"); } param.put("noncestr", getNonceStr()); param.put("signature", createSign(param)); return param; } /** * 创建签名 * * @param param * @return */ private static String createSign(HashMap param) { Map sortMap = new TreeMap<>(); sortMap.putAll(param); StringBuilder builder = new StringBuilder(); for (Map.Entry s : sortMap.entrySet()) { String k = s.getKey(); String v = (String) s.getValue(); if (StringUtils.isBlank(v)) { continue; } builder.append(k).append("=").append(v).append("&"); } if (!sortMap.isEmpty()) { builder.deleteCharAt(builder.length() - 1); } String string = builder.toString(); return SecureUtil.sha1(string); } /** * 创建随机字符串 * * @return */ public static String getNonceStr() { String BASIC = "123456789qwertyuiopasdfghjklzxcvbnm"; char[] basicArray = BASIC.toCharArray(); Random random = new Random(); char[] result = new char[6]; for (int i = 0; i < result.length; i++) { int index = random.nextInt(100) % (basicArray.length); result[i] = basicArray[index]; } return new String(result); } }