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.taohuihua.TaoHuiHuaCheckResponse;
|
import com.nova.sankuai.domain.api.taohuihua.TaoHuiHuaRegisterResponse;
|
import com.nova.sankuai.domain.api.taohuihua.TaoHuiHuaUtil;
|
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.TaoHuiHuaPushResultVo;
|
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.ITaoHuiHuaService;
|
import lombok.AllArgsConstructor;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Service;
|
|
/**
|
* @Author Lilinhong
|
* @Date 2022/7/27 16:47
|
*/
|
@Service
|
@AllArgsConstructor
|
public class TaoHuiHuaServiceImpl implements ITaoHuiHuaService {
|
|
private static final Logger log = LoggerFactory.getLogger("capitalLogger");
|
|
private final TaoHuiHuaUtil taoHuiHuaUtil;
|
|
private final ICapitalResultCommonService capitalResultCommonService;
|
|
private final CustomerCapitalResultMapper capitalResultMapper;
|
|
private final CustomerMapper customerMapper;
|
|
|
@Override
|
public CustomerCapitalResult checkCustomerByTaoHuiHua(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 {
|
TaoHuiHuaCheckResponse taoHuiHuaCheckResponse = taoHuiHuaUtil.checkUser(customer.getPhone(), customer.getOs(), customer.getDeviceBrand(), customer.getDeviceOsVersion(), customer.getSystemModel());
|
if (taoHuiHuaCheckResponse == null) {
|
log.error("日志编号:" + logNumber + "淘惠花错误,撞库对接返回为空");
|
throw new CommonException("淘惠花错误,撞库对接失败");
|
} else {
|
if (1 == taoHuiHuaCheckResponse.getStatus()) {
|
log.info("日志编号:" + logNumber + "淘惠花,撞库对接信息:{}", taoHuiHuaCheckResponse.toString());
|
capitalResult.setCheckResult(CustomerCapitalResult.CHECK_SUCCESS);
|
} else {
|
log.error("日志编号:" + logNumber + "淘惠花错误,撞库对接失败:{}", taoHuiHuaCheckResponse.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
|
public TaoHuiHuaPushResultVo pushCustomerByTaoHuiHua(CapitalInfo capitalInfo, CustomerUser customerUser, boolean isNotCheckResult) {
|
String logNumber = IdUtil.randomUUID();
|
log.info("日志编号:" + logNumber + "淘惠花对接流程开始");
|
TaoHuiHuaPushResultVo taoHuiHuaPushResultVo = new TaoHuiHuaPushResultVo();
|
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.TAO_HUI_HUA.getCode()));
|
if (capitalResult == null) {
|
log.info("日志编号:" + logNumber + "淘惠花资方对接结果不存在");
|
throw new CommonException("资方对接结果不存在");
|
}
|
if (CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) {
|
taoHuiHuaPushResultVo.setCheckResult(true);
|
} else {
|
taoHuiHuaPushResultVo.setCheckResult(false);
|
}
|
String url = null;
|
TaoHuiHuaRegisterResponse register = null;
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",淘惠花数据推送开始");
|
try {
|
register = taoHuiHuaUtil.register(customer.getPhone(), customer.getOs(), customer.getDeviceBrand(), customer.getDeviceOsVersion(), customer.getSystemModel());
|
if (register != null) {
|
// if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult()) && register.getUrl() != null) {
|
// log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",淘惠花数据返回地址为:" + register.getUrl());
|
// url = register.getUrl();
|
// }
|
// 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() + ",淘惠花数据返回地址为:" + register.getUrl());
|
url = register.getUrl();
|
}
|
}
|
// 完
|
log.info("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请返回结果" + register.toString());
|
if (1 == register.getResult()) {
|
capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode());
|
} else {
|
capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode());
|
log.error("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请失败" + register.toString());
|
}
|
} else {
|
log.error("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请返回结果为空");
|
throw new CommonException("授权申请返回结果为空");
|
}
|
} catch (Exception e) {
|
log.error("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请失败", e);
|
throw new CommonException("请求异常");
|
}
|
log.info("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花数据推送结束");
|
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() + ",淘惠花数据返回地址为:" + url);
|
taoHuiHuaPushResultVo.setUrl(url);
|
}
|
/*else if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
|
if (register != null && register.getUrl() != null) {
|
taoHuiHuaPushResultVo.setUrl(register.getUrl());
|
}
|
}*/
|
else {
|
// 2022-11-29新增:不需要判断ApprovalResult为1
|
if (isNotCheckResult) {
|
if (register != null && register.getUrl() != null) {
|
taoHuiHuaPushResultVo.setUrl(register.getUrl());
|
}
|
} else {
|
if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
|
if (register != null && register.getUrl() != null) {
|
taoHuiHuaPushResultVo.setUrl(register.getUrl());
|
}
|
}
|
}
|
// 完
|
}
|
log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",淘惠花对接流程结束");
|
return taoHuiHuaPushResultVo;
|
}
|
}
|