Sunshine
2024-11-05 8f7985d7764a0aad24bd593ac5ea47b7fc290961
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.taohuihua.TaoHuiHuaCheckResponse;
import com.nova.sankuai.domain.api.taohuihua.TaoHuiHuaRegisterResponse;
import com.nova.sankuai.domain.api.taohuihua.TaoHuiHuaUtil;
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.TaoHuiHuaPushResultVo;
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.ITaoHuiHuaService;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
 
/**
 * @Author Lilinhong
 * @Date 2022/7/27 16:47
 */
@Service
@AllArgsConstructor
public class TaoHuiHuaServiceImpl implements ITaoHuiHuaService {
 
    private static final Logger log = LoggerFactory.getLogger("capitalLogger");
 
    private final TaoHuiHuaUtil taoHuiHuaUtil;
 
    private final ICapitalResultCommonService capitalResultCommonService;
 
    private final CustomerCapitalResultMapper capitalResultMapper;
 
    private final CustomerMapper customerMapper;
 
 
    @Override
    public CustomerCapitalResult checkCustomerByTaoHuiHua(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 {
            TaoHuiHuaCheckResponse taoHuiHuaCheckResponse = taoHuiHuaUtil.checkUser(customer.getPhone(), customer.getOs(), customer.getDeviceBrand(), customer.getDeviceOsVersion(), customer.getSystemModel());
            if (taoHuiHuaCheckResponse == null) {
                log.error("日志编号:" + logNumber + "淘惠花错误,撞库对接返回为空");
                throw new CommonException("淘惠花错误,撞库对接失败");
            } else {
                if (1 == taoHuiHuaCheckResponse.getStatus()) {
                    log.info("日志编号:" + logNumber + "淘惠花,撞库对接信息:{}", taoHuiHuaCheckResponse.toString());
                    capitalResult.setCheckResult(CustomerCapitalResult.CHECK_SUCCESS);
                } else {
                    log.error("日志编号:" + logNumber + "淘惠花错误,撞库对接失败:{}", taoHuiHuaCheckResponse.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
    public TaoHuiHuaPushResultVo pushCustomerByTaoHuiHua(CapitalInfo capitalInfo, CustomerUser customerUser, boolean isNotCheckResult) {
        String logNumber = IdUtil.randomUUID();
        log.info("日志编号:" + logNumber + "淘惠花对接流程开始");
        TaoHuiHuaPushResultVo taoHuiHuaPushResultVo = new TaoHuiHuaPushResultVo();
        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.TAO_HUI_HUA.getCode()));
        if (capitalResult == null) {
            log.info("日志编号:" + logNumber + "淘惠花资方对接结果不存在");
            throw new CommonException("资方对接结果不存在");
        }
        if (CustomerCapitalResult.CHECK_SUCCESS.equals(capitalResult.getCheckResult())) {
            taoHuiHuaPushResultVo.setCheckResult(true);
        } else {
            taoHuiHuaPushResultVo.setCheckResult(false);
        }
        String url = null;
        TaoHuiHuaRegisterResponse register = null;
        log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",淘惠花数据推送开始");
        try {
            register = taoHuiHuaUtil.register(customer.getPhone(), customer.getOs(), customer.getDeviceBrand(), customer.getDeviceOsVersion(), customer.getSystemModel());
            if (register != null) {
//                if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult()) && register.getUrl() != null) {
//                    log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",淘惠花数据返回地址为:" + register.getUrl());
//                    url = register.getUrl();
//                }
                // 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() + ",淘惠花数据返回地址为:" + register.getUrl());
                        url = register.getUrl();
                    }
                }
                // 完
                log.info("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请返回结果" + register.toString());
                if (1 == register.getResult()) {
                    capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode());
                } else {
                    capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REQUEST_FAIL.getCode());
                    log.error("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请失败" + register.toString());
                }
            } else {
                log.error("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请返回结果为空");
                throw new CommonException("授权申请返回结果为空");
            }
        } catch (Exception e) {
            log.error("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花授权申请失败", e);
            throw new CommonException("请求异常");
        }
        log.info("日志编号:" + logNumber + "资方结果id:" + capitalResult.getId() + "淘惠花数据推送结束");
        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() + ",淘惠花数据返回地址为:" + url);
            taoHuiHuaPushResultVo.setUrl(url);
        }
        /*else if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
            if (register != null && register.getUrl() != null) {
                taoHuiHuaPushResultVo.setUrl(register.getUrl());
            }
        }*/
        else {
            // 2022-11-29新增:不需要判断ApprovalResult为1
            if (isNotCheckResult) {
                if (register != null && register.getUrl() != null) {
                    taoHuiHuaPushResultVo.setUrl(register.getUrl());
                }
            } else {
                if (CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode().equals(capitalResult.getApprovalResult())) {
                    if (register != null && register.getUrl() != null) {
                        taoHuiHuaPushResultVo.setUrl(register.getUrl());
                    }
                }
            }
            // 完
        }
        log.info("日志编号:" + logNumber + ",用户手机号:" + customer.getPhone() + ",淘惠花对接流程结束");
        return taoHuiHuaPushResultVo;
    }
}