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