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() .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 list = customerUserService.list(new LambdaQueryWrapper().likeRight(CustomerUser::getPhone, phoneParam)); if (list == null || list.isEmpty()) { checkUserResponse.setCode(0); checkUserResponse.setMsg("success"); checkUserResponse.setData(null); } else { ArrayList 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().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; } }