Air
2024-11-04 29c405353029f033e187e8dc033b93385365ee43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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;
    }
}