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);
|
}
|
}
|