ab
2024-11-05 0c6faf64f2a02ae94b0d719729754f7ca29da416
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package com.nova.sankuai.service.impl;
 
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.nova.sankuai.domain.api.xiaobaiyouka.XiaoBaiYouKaCheckUserResponse;
import com.nova.sankuai.domain.api.xiaobaiyouka.XiaoBaiYouKaRegisterResponse;
import com.nova.sankuai.domain.api.xiaobaiyouka.XiaoBaiYouKaUtil;
import com.nova.sankuai.domain.entity.CapitalInfo;
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.CapitalApprovalResultEnum;
import com.nova.sankuai.domain.enums.capitalInfo.CapitalInfoTypeCodeEnum;
import com.nova.sankuai.domain.enums.capitalInfo.CapitalResultStatusEnum;
import com.nova.sankuai.domain.vo.capitalresult.XiaoBaiYouKaPushResultVo;
import com.nova.sankuai.infra.config.CommonException;
import com.nova.sankuai.infra.mapper.CustomerCapitalResultMapper;
import com.nova.sankuai.infra.mapper.CustomerMapper;
import com.nova.sankuai.service.ICapitalResultCommonService;
import com.nova.sankuai.service.IXiaoBaiYouKaService;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
 
/**
 * @Author Lilinhong
 * @Date 2022/7/26 9:40
 */
@Service
@AllArgsConstructor
public class XiaoBaiYouKaServiceImpl implements IXiaoBaiYouKaService {
 
    private final ICapitalResultCommonService capitalResultCommonService;
 
    private final CustomerCapitalResultMapper capitalResultMapper;
 
    private static final Logger log = LoggerFactory.getLogger("capitalLogger");
 
    private final XiaoBaiYouKaUtil xiaoBaiYouKaUtil;
 
    private final CustomerMapper customerMapper;
 
 
    @Override
    public CustomerCapitalResult checkCustomerByXiaoBaiYouKa(CapitalInfo capitalInfo, Customer customer, CustomerUser customerUser, String logNumber) {
        log.info("日志编号:" + logNumber + "小白优卡撞库开始");
        CustomerCapitalResult capitalResult = CustomerCapitalResult.initResult(capitalInfo, customerUser.getId(), customer.getId());
        capitalResult.setStatus(CapitalResultStatusEnum.CHECK.getCode());
        CustomerCapitalResult filterResult = capitalResultCommonService.filterCustomer(customer, capitalInfo, capitalResult, logNumber);
        if (filterResult != null) {
            log.info("日志编号:" + logNumber + capitalInfo.getName() + "撞库时不满足资方信息筛选条件,撞库失败");
            return filterResult;
        }
        try {
            XiaoBaiYouKaCheckUserResponse xiaoBaiYouKaCheckUserResponse = xiaoBaiYouKaUtil.checkUser(customerUser);
            if (xiaoBaiYouKaCheckUserResponse == null) {
                log.error("日志编号:" + logNumber + "小白优卡错误,撞库对接返回为空");
                throw new CommonException("小白优卡错误,撞库对接失败");
            } else {
                if ("0".equals(xiaoBaiYouKaCheckUserResponse.getResult())) {
                    log.info("日志编号:" + logNumber + "小白优卡,撞库对接信息:{}", xiaoBaiYouKaCheckUserResponse.toString());
                    capitalResult.setCheckResult(CustomerCapitalResult.CHECK_SUCCESS);
                } else {
                    log.error("日志编号:" + logNumber + "小白优卡错误,撞库对接失败:{}", xiaoBaiYouKaCheckUserResponse.toString());
                    capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL);
                }
            }
        } catch (Exception e) {
            capitalResult.setCheckResult(CustomerCapitalResult.CHECK_FAIL);
            log.error("日志编号:" + logNumber + "小白优卡错误,撞库接口异常:", e);
        }
        capitalResultMapper.insert(capitalResult);
        log.info("日志编号:" + logNumber + "小白优卡撞库结束");
        return capitalResult;
    }
 
    @Override
    /**
     * 于2022-11-29新增:
     * @param isNotCheckResult 若为true则不需要判断approval_result或check_result为1
     * @return
     */
    public XiaoBaiYouKaPushResultVo pushCustomerByXiaoBaiYouKa(CapitalInfo capitalInfo, CustomerUser customerUser, boolean isNotCheckResult) {
        String logNumber = IdUtil.randomUUID();
        log.info("日志编号:" + logNumber + "小白优卡对接流程开始");
        XiaoBaiYouKaPushResultVo xiaoBaiYouKaPushResultVo = new XiaoBaiYouKaPushResultVo();
        Customer customer = customerMapper.getLatestCustomerRecord(customerUser.getPhone());
        CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(new LambdaQueryWrapper<CustomerCapitalResult>()
                .eq(CustomerCapitalResult::getCustomerUserId, customerUser.getId())
                .eq(CustomerCapitalResult::getCustomerRecordId, customer.getId())
                .eq(CustomerCapitalResult::getCapitalInfoCode, CapitalInfoTypeCodeEnum.XIAO_BAI_YOU_KA.getCode()));
        if (capitalResult == null) {
            log.info("日志编号:" + logNumber + "小白优卡资方对接结果不存在");
            throw new CommonException("资方对接结果不存在");
        }
        if (CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) {
            xiaoBaiYouKaPushResultVo.setCheckResult(true);
        } else {
            xiaoBaiYouKaPushResultVo.setCheckResult(false);
        }
        String url = null;
        XiaoBaiYouKaRegisterResponse register = null;
        log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡数据推送开始");
        try {
            register = xiaoBaiYouKaUtil.register(customerUser);
            if (register != null) {
                // 2022-11-29新增:不需要判断ApprovalResult为1
                if (isNotCheckResult) {
                    if (register.getUrl() != null) {
                        url = register.getUrl();
                    }
                } else {
                    if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult()) && register.getUrl() != null) {
                        log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + "," + capitalInfo.getName() + "小白优卡数据返回地址为:" + register.getUrl());
                        url = register.getUrl();
                    }
                }
                // 完
 
                log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请返回结果" + register.toString());
                if ("0".equals(register.getResult())) {
                    capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode());
                } else {
                    capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode());
                    log.error("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请失败" + register.toString());
                }
            } else {
                log.error("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请返回结果为空");
                capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode());
            }
        } catch (Exception e) {
            log.error("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡授权申请失败", e);
            throw new CommonException("请求异常");
        }
        if (CapitalResultStatusEnum.CHECK.getCode().equals(capitalResult.getStatus())
                && CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) {
            capitalResult.setStatus(CapitalResultStatusEnum.APPLY.getCode());
            LambdaUpdateWrapper<CustomerCapitalResult> wrapper = capitalResultCommonService.getWrapper(capitalInfo, capitalResult);
            capitalResultMapper.update(null,wrapper);
            log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡数据推送结束");
        }
        if (url != null) {
            log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + "," + capitalInfo.getName() + "联登数据返回地址为:" + url);
            xiaoBaiYouKaPushResultVo.setUrl(url);
        }
//        else if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
//            if (register != null && register.getUrl() != null) {
//                xiaoBaiYouKaPushResultVo.setUrl(register.getUrl());
//            }
        else {
            // 2022-11-29新增:不需要判断ApprovalResult为1
            if (isNotCheckResult) {
                if (register != null && register.getUrl() != null) {
                    xiaoBaiYouKaPushResultVo.setUrl(register.getUrl());
                }
            } else {
                if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
                    if (register != null && register.getUrl() != null) {
                        xiaoBaiYouKaPushResultVo.setUrl(register.getUrl());
                    }
                }
            }
            // 完
        }
        log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",小白优卡对接流程结束");
        return xiaoBaiYouKaPushResultVo;
    }
}