1
sunshine
2024-11-05 92a9e53e82c74d36a72eb92f93777bbb16e2db73
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
package com.nova.sankuai.domain.api.nanjingmingtuo;
 
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.nova.sankuai.domain.entity.Customer;
import com.nova.sankuai.domain.enums.customerinfo.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
 
/**
 * @author Gmw
 */
@Data
@Component
@ConfigurationProperties(prefix = "nanjingmingtuo")
public class NanJingMingTuoUtil {
 
    public static final int HIT_RESP_OK = 200;
    public static final int HIT_RESP_PHONE_EXISTS = 500;
 
    @ApiModelProperty("南京名拓接口对接 - 撞库地址")
    private String hitUrl;
 
    @ApiModelProperty("南京名拓接口对接 - 撞库渠道编码")
    private String hitChannelCode;
 
    @ApiModelProperty("南京名拓接口对接 - 推送地址")
    private String url;
 
    private String secretKey;
 
    public String parseHitParam(Customer customer) {
        HitDto dto = new HitDto();
        dto.setChannelCode(hitChannelCode);
        dto.setPhone(SecureUtil.md5(customer.getPhone()));
        return JSON.toJSONString(dto);
    }
 
    public boolean passHitResponse(HttpResponse response) {
        String body = Optional.ofNullable(response.body()).orElse("{}");
        NanJingMingTuoResp nanJingMingTuoResp = JSON.parseObject(body, NanJingMingTuoResp.class);
        return Objects.equals(HIT_RESP_OK, nanJingMingTuoResp.getCode());
    }
 
    public String parseParam(Customer customer) throws Exception {
        SendDataDto dto = new SendDataDto();
        dto.setChannelCode(hitChannelCode);
        dto.setUserInfo(encryptionUserInfo(customer));
        return JSON.toJSONString(dto);
    }
 
    private String encryptionUserInfo(Customer customer) throws Exception {
        UserInfoDto userInfo = new UserInfoDto();
        userInfo.setName(customer.getName());
        userInfo.setPhone(Optional.ofNullable(customer.getPhone()).orElseThrow(
                () -> new IllegalArgumentException("手机号为必填!")));
        Stream<Integer> condition = Stream.of(HouseStatusEnum.House_2.getCode(),
                HouseStatusEnum.House_3.getCode(), HouseStatusEnum.House_4.getCode());
        if (condition.anyMatch(t -> Objects.equals(t, customer.getHouseStatus()))) {
            userInfo.setHouse("1");
        } else {
            userInfo.setHouse("0");
        }
        condition = Stream.of(ProvidentFundStatusEnum.ProvidentFund_2.getCode(),
                ProvidentFundStatusEnum.ProvidentFund_3.getCode(), ProvidentFundStatusEnum.ProvidentFund_4.getCode());
        if (condition.anyMatch(t -> Objects.equals(t, customer.getProvidentFund()))) {
            userInfo.setGjj("1");
        } else {
            userInfo.setGjj("0");
        }
 
        setSocialSecurity(userInfo, customer);
        setBusinessInsurance(userInfo, customer);
        setVehicle(userInfo, customer);
        setCity(userInfo, customer);
 
        return AesUtil.encrypt(JSON.toJSONString(userInfo), secretKey);
    }
 
    private void setSocialSecurity(UserInfoDto info, Customer customer) {
        Integer socialSecurity = customer.getSocialSecurity();
        if (socialSecurity != null) {
            if (SocialSecurityStatusEnum.SocialSecurity_1.getCode().equals(socialSecurity)) {
                info.setSocialSecurity("0");
            } else {
                info.setSocialSecurity("1");
            }
        }
    }
 
    private void setBusinessInsurance(UserInfoDto info, Customer customer) {
        Integer policy = customer.getInsurancePolicy();
        if (policy == null || InsuranceStatusEnum.BusinessInsurance_1.getCode().equals(policy)) {
            info.setBusinessInsurance("0");
        } else {
            info.setBusinessInsurance("1");
        }
    }
 
    private void setVehicle(UserInfoDto info, Customer customer) {
        Integer carStatus = customer.getCarStatus();
        if (carStatus.equals(CarStatusEnum.Car_1.getCode())) {
            info.setVehicle("0");
        } else {
            info.setVehicle("1");
        }
    }
 
    private void setCity(UserInfoDto info, Customer customer) {
        String city = customer.getCityName();
        info.setCity(city);
    }
}