package com.nova.sankuai.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.nova.sankuai.domain.api.xiaobaiyouka.XiaoBaiYouKaCheckUserResponse;
|
import com.nova.sankuai.domain.api.xiaobaiyouka.XiaoBaiYouKaRegisterResponse;
|
import com.nova.sankuai.domain.api.xiaobaiyouka.XiaoBaiYouKaUtil;
|
import com.nova.sankuai.domain.entity.CapitalInfo;
|
import com.nova.sankuai.domain.entity.Customer;
|
import com.nova.sankuai.domain.entity.CustomerCapitalResult;
|
import com.nova.sankuai.domain.entity.CustomerUser;
|
import com.nova.sankuai.domain.enums.capitalInfo.CapitalApprovalResultEnum;
|
import com.nova.sankuai.domain.enums.capitalInfo.CapitalInfoTypeCodeEnum;
|
import com.nova.sankuai.domain.enums.capitalInfo.CapitalResultStatusEnum;
|
import com.nova.sankuai.domain.vo.capitalresult.XiaoBaiYouKaPushResultVo;
|
import com.nova.sankuai.infra.config.CommonException;
|
import com.nova.sankuai.infra.mapper.CustomerCapitalResultMapper;
|
import com.nova.sankuai.infra.mapper.CustomerMapper;
|
import com.nova.sankuai.service.ICapitalResultCommonService;
|
import com.nova.sankuai.service.IXiaoBaiYouKaService;
|
import lombok.AllArgsConstructor;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Service;
|
|
/**
|
* @Author Lilinhong
|
* @Date 2022/7/26 9:40
|
*/
|
@Service
|
@AllArgsConstructor
|
public class XiaoBaiYouKaServiceImpl implements IXiaoBaiYouKaService {
|
|
private final ICapitalResultCommonService capitalResultCommonService;
|
|
private final CustomerCapitalResultMapper capitalResultMapper;
|
|
private static final Logger log = LoggerFactory.getLogger("capitalLogger");
|
|
private final XiaoBaiYouKaUtil xiaoBaiYouKaUtil;
|
|
private final CustomerMapper customerMapper;
|
|
|
@Override
|
public CustomerCapitalResult checkCustomerByXiaoBaiYouKa(CapitalInfo capitalInfo, Customer customer, CustomerUser customerUser, String logNumber) {
|
log.info("日志编号:" + logNumber + "小白优卡撞库开始");
|
CustomerCapitalResult capitalResult = CustomerCapitalResult.initResult(capitalInfo, customerUser.getId(), customer.getId());
|
capitalResult.setStatus(CapitalResultStatusEnum.CHECK.getCode());
|
CustomerCapitalResult filterResult = capitalResultCommonService.filterCustomer(customer, capitalInfo, capitalResult, logNumber);
|
if (filterResult != null) {
|
log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库时不满足资方信息筛选条件,撞库失败");
|
return filterResult;
|
}
|
try {
|
XiaoBaiYouKaCheckUserResponse xiaoBaiYouKaCheckUserResponse = xiaoBaiYouKaUtil.checkUser(customerUser);
|
if (xiaoBaiYouKaCheckUserResponse == null) {
|
log.error("日志编号:" + logNumber + "小白优卡错误,撞库对接返回为空");
|
throw new CommonException("小白优卡错误,撞库对接失败");
|
} else {
|
if ("0".equals(xiaoBaiYouKaCheckUserResponse.getResult())) {
|
log.info("日志编号:" + logNumber + "小白优卡,撞库对接信息:{}", xiaoBaiYouKaCheckUserResponse.toString());
|
capitalResult.setCheckResult(CustomerCapitalResult.CHECK_SUCCESS);
|
} else {
|
log.error("日志编号:" + logNumber + "小白优卡错误,撞库对接失败:{}", xiaoBaiYouKaCheckUserResponse.toString());
|
capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL);
|
}
|
}
|
} catch (Exception e) {
|
capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL);
|
log.error("日志编号:" + logNumber + "小白优卡错误,撞库接口异常:", e);
|
}
|
capitalResultMapper.insert(capitalResult);
|
log.info("日志编号:" + logNumber + "小白优卡撞库结束");
|
return capitalResult;
|
}
|
|
@Override
|
/**
|
* 于2022-11-29新增:
|
* @param isNotCheckResult 若为true则不需要判断approval_result或check_result为1
|
* @return
|
*/
|
public XiaoBaiYouKaPushResultVo pushCustomerByXiaoBaiYouKa(CapitalInfo capitalInfo, CustomerUser customerUser, boolean isNotCheckResult) {
|
String logNumber = IdUtil.randomUUID();
|
log.info("日志编号:" + logNumber + "小白优卡对接流程开始");
|
XiaoBaiYouKaPushResultVo xiaoBaiYouKaPushResultVo = new XiaoBaiYouKaPushResultVo();
|
Customer customer = customerMapper.getLatestCustomerRecord(customerUser.getPhone());
|
CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(new LambdaQueryWrapper<CustomerCapitalResult>()
|
.eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId())
|
.eq(CustomerCapitalResult::getCustomerRecordId, customer.getId())
|
.eq(CustomerCapitalResult::getCapitalInfoCode, CapitalInfoTypeCodeEnum.XIAO_BAI_YOU_KA.getCode()));
|
if (capitalResult == null) {
|
log.info("日志编号:" + logNumber + "小白优卡资方对接结果不存在");
|
throw new CommonException("资方对接结果不存在");
|
}
|
if (CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) {
|
xiaoBaiYouKaPushResultVo.setCheckResult(true);
|
} else {
|
xiaoBaiYouKaPushResultVo.setCheckResult(false);
|
}
|
String url = null;
|
XiaoBaiYouKaRegisterResponse register = null;
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡数据推送开始");
|
try {
|
register = xiaoBaiYouKaUtil.register(customerUser);
|
if (register != null) {
|
// 2022-11-29新增:不需要判断ApprovalResult为1
|
if (isNotCheckResult) {
|
if (register.getUrl() != null) {
|
url = register.getUrl();
|
}
|
} else {
|
if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult()) && register.getUrl() != null) {
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + "," + capitalInfo.getName() + "小白优卡数据返回地址为:" + register.getUrl());
|
url = register.getUrl();
|
}
|
}
|
// 完
|
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请返回结果" + register.toString());
|
if ("0".equals(register.getResult())) {
|
capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode());
|
} else {
|
capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode());
|
log.error("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请失败" + register.toString());
|
}
|
} else {
|
log.error("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请返回结果为空");
|
capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode());
|
}
|
} catch (Exception e) {
|
log.error("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请失败", e);
|
throw new CommonException("请求异常");
|
}
|
if (CapitalResultStatusEnum.CHECK.getCode().equals(capitalResult.getStatus())
|
&& CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) {
|
capitalResult.setStatus(CapitalResultStatusEnum.APPLY.getCode());
|
LambdaUpdateWrapper<CustomerCapitalResult> wrapper = capitalResultCommonService.getWrapper(capitalInfo, capitalResult);
|
capitalResultMapper.update(null,wrapper);
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡数据推送结束");
|
}
|
if (url != null) {
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + "," + capitalInfo.getName() + "联登数据返回地址为:" + url);
|
xiaoBaiYouKaPushResultVo.setUrl(url);
|
}
|
// else if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
|
// if (register != null && register.getUrl() != null) {
|
// xiaoBaiYouKaPushResultVo.setUrl(register.getUrl());
|
// }
|
else {
|
// 2022-11-29新增:不需要判断ApprovalResult为1
|
if (isNotCheckResult) {
|
if (register != null && register.getUrl() != null) {
|
xiaoBaiYouKaPushResultVo.setUrl(register.getUrl());
|
}
|
} else {
|
if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
|
if (register != null && register.getUrl() != null) {
|
xiaoBaiYouKaPushResultVo.setUrl(register.getUrl());
|
}
|
}
|
}
|
// 完
|
}
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡对接流程结束");
|
return xiaoBaiYouKaPushResultVo;
|
}
|
}
|