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