package com.nova.sankuai.service.impl; import cn.hutool.crypto.digest.MD5; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.nova.sankuai.domain.api.yibeifenqi.YiBeiCallbackRequestDTO; import com.nova.sankuai.domain.api.yibeifenqi.YiBeiCallbackResponseVO; 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.CapitalInfoTypeCodeEnum; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.mapper.CustomerMapper; import com.nova.sankuai.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Objects; /** * 易贝ServiceImpl * @author 51913 */ @Service public class YiBeiServiceImpl implements IYiBeiService { private static final Logger log = LoggerFactory.getLogger("capitalLogger"); @Resource ICustomerCapitalResultService customerCapitalResultService; @Resource ICustomerUserService customerUserService; @Resource CustomerMapper customerMapper; /** * 回调接口使用到的 */ @Value("${yibei.config.sign-key}") private String signKey; @Override public YiBeiCallbackResponseVO callback(YiBeiCallbackRequestDTO body) { try { String format = String.format("channel=%s&data=%s×tamp=%s%s", body.getChannel(), JSON.toJSONString(body.getData()), body.getTimestamp(), signKey); String sign = MD5.create().digestHex(format); if (!Objects.equals(sign, body.getSign())) { YiBeiCallbackResponseVO resp = new YiBeiCallbackResponseVO(); resp.setStatus(0); resp.setMsg("验签失败"); log.info("验签失败! sign=" + body.getSign() + ", format=" + format); return resp; } Customer customer = customerMapper.getLatestCustomerRecord(body.getData().getMobile()); CustomerUser customerUser = customerUserService.getOne(new LambdaQueryWrapper().eq(CustomerUser::getPhone, body.getData().getMobile())); if (customer == null || customerUser == null) { throw new CommonException("用户不存在"); } CustomerCapitalResult capitalResult = customerCapitalResultService.lambdaQuery() .eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId()) .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId()) .eq(CustomerCapitalResult::getCapitalInfoCode, CapitalInfoTypeCodeEnum.YI_BEI.getCode()).one(); if (capitalResult == null) { throw new CommonException("此联登数据不存在"); } customerCapitalResultService.update(Wrappers.lambdaUpdate() .set(CustomerCapitalResult::getCreditNo, body.getData().getOrderNo()) .set(CustomerCapitalResult::getSubmitSuccessTime, body.getData().getSubmitSuccessTime()) .eq(CustomerCapitalResult::getId, capitalResult.getId())); YiBeiCallbackResponseVO resp = new YiBeiCallbackResponseVO(); resp.setStatus(1); resp.setMsg("成功"); YiBeiCallbackResponseVO.Data data = new YiBeiCallbackResponseVO.Data(); data.setCode(1); resp.setData(data); log.info("手机号为:" + customer.getPhone() + "易贝分期联登回调数据,{}", resp.toString()); return resp; } catch (Exception e) { YiBeiCallbackResponseVO resp = new YiBeiCallbackResponseVO(); resp.setStatus(0); resp.setMsg(e.getMessage()); log.info("手机号为:" + body.getData().getMobile() + "易贝分期联登回调数据,{}", resp.toString()); return resp; } } }