package com.nova.sankuai.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.nova.sankuai.domain.api.externalInterface.*;
|
import com.nova.sankuai.domain.api.externalInterface.yxqb.*;
|
import com.nova.sankuai.domain.entity.ChannelInfo;
|
import com.nova.sankuai.domain.entity.CustomerUser;
|
import com.nova.sankuai.infra.config.CommonException;
|
import com.nova.sankuai.infra.mapper.ChannelInfoMapper;
|
import com.nova.sankuai.service.ICustomerUserService;
|
import com.nova.sankuai.service.YxqbService;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.DigestUtils;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
|
/**
|
* @author 51913
|
*/
|
@Service
|
@AllArgsConstructor
|
@Slf4j
|
public class YxqbServiceImpl implements YxqbService {
|
|
private static final Logger autoLogger = LoggerFactory.getLogger("autoLogger");
|
|
private final ICustomerUserService customerUserService;
|
|
private final ChannelInfoMapper channelInfoMapper;
|
|
private final EIUtil eiUtil;
|
|
public static final String APPID = "fe608acf-770b-405f-a0a0-bdbb5e49aa7e";
|
|
|
@Override
|
public YXCheckUserResponse checkUser(YXCheckUserDto yxCheckUserDto) {
|
autoLogger.info("有信钱包撞库原始数据" + yxCheckUserDto.getData());
|
String uuId = IdUtil.randomUUID();
|
YXCheckUserResponse checkUserResponse = new YXCheckUserResponse();
|
if (yxCheckUserDto.getChannelCode() == null) {
|
throw new CommonException("渠道号不能为空");
|
}
|
ChannelInfo channelInfo = channelInfoMapper.selectOne(new LambdaQueryWrapper<ChannelInfo>()
|
.eq(ChannelInfo::getAppId, yxCheckUserDto.getChannelCode()));
|
if (channelInfo == null) {
|
throw new CommonException("该渠道AppId不合法");
|
}
|
if (yxCheckUserDto.getData() == null) {
|
throw new CommonException("参数data不能为空");
|
}
|
autoLogger.info("日志编号:" + uuId + "有信钱包撞库原始数据" + yxCheckUserDto.getData());
|
String phone = eiUtil.yXCheckUserDataParse(uuId, yxCheckUserDto.getData());
|
if (StringUtils.isEmpty(phone)) {
|
checkUserResponse.setCode(-1);
|
checkUserResponse.setMsg("system error");
|
return checkUserResponse;
|
}
|
autoLogger.info("日志编号:" + uuId + "有信钱包撞库原始数据data" + phone);
|
String phoneParam = phone.substring(0, 7);
|
List<CustomerUser> list = customerUserService.list(new LambdaQueryWrapper<CustomerUser>().likeRight(CustomerUser::getPhone, phoneParam));
|
if (list == null || list.isEmpty()) {
|
checkUserResponse.setCode(0);
|
checkUserResponse.setMsg("success");
|
checkUserResponse.setData(null);
|
} else {
|
ArrayList<String> phoneMd5s = new ArrayList<>();
|
list.stream().map(item -> {
|
String phoneMd5 = DigestUtils.md5DigestAsHex(item.getPhone().getBytes());
|
phoneMd5s.add(phoneMd5);
|
return item;
|
}).collect(Collectors.toList());
|
checkUserResponse.setCode(1);
|
checkUserResponse.setMsg("success");
|
checkUserResponse.setData(phoneMd5s);
|
}
|
autoLogger.info("日志编号:" + uuId + "有信钱包撞库返回数据" + checkUserResponse.toString());
|
return checkUserResponse;
|
}
|
|
@Override
|
public YXRegisterResponse register(YXRegisterDto yxRegisterDto) {
|
String uuId = IdUtil.randomUUID();
|
YXRegisterResponse yxRegisterResponse = new YXRegisterResponse();
|
if (StringUtils.isEmpty(yxRegisterDto.getPhoneNo())) {
|
throw new CommonException("手机号不能为空");
|
}
|
autoLogger.info("日志编号:" + uuId + "有信钱包联登原始数据" + yxRegisterDto.toString());
|
CustomerUser customerUser = customerUserService.getOne(new LambdaQueryWrapper<CustomerUser>().eq(CustomerUser::getPhone, yxRegisterDto.getPhoneNo()));
|
yxRegisterResponse = eiUtil.yxRegister(customerUser, yxRegisterResponse, yxRegisterDto);
|
if (customerUser == null) {
|
String logNumber = IdUtil.randomUUID();
|
autoLogger.info("日志编号" + logNumber + "有信钱包开始注册新用户,用户手机号:" + yxRegisterDto.getPhoneNo() + "渠道AppId:" + APPID);
|
customerUserService.registerInitCustomerUser(yxRegisterDto.getPhoneNo(), APPID, null, yxRegisterDto.getRegisterFrom());
|
autoLogger.info("日志编号" + logNumber + "有信钱包注册新用户成功,用户Id" + customerUser.getId() + ",用户手机号" + customerUser.getPhone());
|
}
|
autoLogger.info("日志编号:" + uuId + "有信钱包撞库返回数据" + yxRegisterResponse.toString());
|
return yxRegisterResponse;
|
}
|
}
|