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