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<String, Object> parseParam(Customer customer) {
|
CustomerCompareDto parse = CustomerCompareDto.parse(customer);
|
HashMap<String, Object> 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<String, Object> param) {
|
Map<String, Object> sortMap = new TreeMap<>();
|
sortMap.putAll(param);
|
StringBuilder builder = new StringBuilder();
|
for (Map.Entry<String, Object> 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);
|
}
|
}
|