zbb378@sohu.com
2024-11-04 b2bad51be3c8d3e78d7f81a19415faeac2d0297c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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);
    }
}