Air
2024-11-04 cb3b3801255082c53145bd752230339eae5d3e5a
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
package com.nova.sankuai.service.impl;
 
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nova.sankuai.domain.api.hengyidai.response.HyGetOrderStatusResponse;
import com.nova.sankuai.domain.dto.qinghuayoupin.RepayPlan;
import com.nova.sankuai.domain.dto.qinghuayoupin.RepayPlanDTO;
import com.nova.sankuai.domain.entity.CustomerCapitalResult;
import com.nova.sankuai.domain.enums.capitalInfo.CapitalApprovalResultEnum;
import com.nova.sankuai.infra.mapper.CustomerCapitalResultMapper;
import com.nova.sankuai.infra.utils.qinghuayoupin.QhypUtil;
import com.nova.sankuai.service.IQingHuaService;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.apache.http.util.TextUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
 
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
 
@Service
@RequiredArgsConstructor
public class QingHuaServiceImpl implements IQingHuaService {
    private final CustomerCapitalResultMapper capitalResultMapper;
    @Value("${rongbei.qingHuaYouPin.privateKeySelf}")
    private String privateKeySelf;
    @Value("${rongbei.qingHuaYouPin.publicKey}")
    private String publicKey;
    private static final Logger log = LoggerFactory.getLogger("capitalLogger");
 
    @Override
    public String orderStatusPush(Map<String,Object> params) {
        //解密deskey
        String result = QhypUtil.decryptDataFromQh(params, (String) params.get("signature"),(String)params.get("data"),publicKey,privateKeySelf);
        Map<String, Object> resultMap = JSONUtil.parseObj(result).toBean(Map.class);
        String orderStatus = (String) resultMap.get("orderState");
        String loanSuccessTime = (String) resultMap.get("loanSuccessTime");
        String rejectReason = (String) resultMap.get("rejectReason");
        String freezeDay = (String) resultMap.get("freezeDay");
        String partnerOrderNo = (String) resultMap.get("partnerOrderNo");
        String orderId = (String) resultMap.get("orderId");
        String logNumber = (String) resultMap.get("logNumber");
        JSONObject object = new JSONObject();
        try {
            if (!TextUtils.isEmpty(orderStatus) && !TextUtils.isEmpty(partnerOrderNo)) {
                CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(Wrappers.<CustomerCapitalResult>lambdaQuery()
                        .eq(CustomerCapitalResult::getCreditNo,partnerOrderNo));
                if (capitalResult != null) {
                    capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_LOAN.getCode());
                    if (!Objects.equals(orderStatus, capitalResult.getThirdOrderStatus())) {
                        if ("LOAN_FAIL".equals(orderStatus)){
                            capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_FAIL);
                        }else if ("LOANING".equals(orderStatus)){
                            capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_SIGN_SUCCESS);
                        }else if ("LOAN_PASS".equals(orderStatus)){
                            capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_LOAN_APPLY_SUCCESS);
                        }else if ("CLEAR".equals(orderStatus)){
                            capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_REPAY_CLEAN_NORMAL);
                        }
                        capitalResultMapper.update(null, Wrappers.<CustomerCapitalResult>lambdaUpdate()
                                .set(CustomerCapitalResult::getThirdOrderStatus, capitalResult.getThirdOrderStatus())
                                .eq(CustomerCapitalResult::getId, capitalResult.getId()));
                    }
                }
                object.put("code", 200);
                object.put("msg", "成功");
                return QhypUtil.respEncrypt("1000", "订单状态回调接口成功", "","","","", publicKey, privateKeySelf,(String) params.get("desKey"));
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("日志编号:" + logNumber + "订单状态回调接口异常:{}", e);
        }
        return QhypUtil.respEncrypt("1001", "订单状态回调接口失败", "","","","", publicKey, privateKeySelf, (String) params.get("desKey"));
    }
 
    @Override
    public String approvalPush(Map<String, Object> params) {
        String result = QhypUtil.decryptDataFromQh(params, (String) params.get("signature"),(String)params.get("data"),publicKey,privateKeySelf);
        Map<String, Object> resultMap = JSONUtil.parseObj(result).toBean(Map.class);
        String partnerOrderNo = (String) resultMap.get("partnerOrderNo");
        String auditStatus = (String) resultMap.get("approvalStatus");
        Integer amountInt = (Integer) resultMap.get("amount");
        BigDecimal amount = new BigDecimal(amountInt);
        String auditTime = resultMap.get("auditTime") == null ? "" : (String) resultMap.get("auditTime");
        String approvalRate =  resultMap.get("approvalRate") == null ? "" : String.valueOf(resultMap.get("approvalRate"));;
//        String approvalRate = "";
//        if (StringUtils.hasLength(approvalRateString)){
//            Integer approvalRateInt = Integer.parseInt(approvalRateString);
//             approvalRate = String.valueOf(approvalRateInt);
//        }
        String orderId = resultMap.get("orderId").equals(null) ? "" : (String) resultMap.get("orderId");
        String logNumber = (String) resultMap.get("logNumber");
        try {
            if (!TextUtils.isEmpty(partnerOrderNo)) {
                CustomerCapitalResult capitalResult = capitalResultMapper.selectOne(Wrappers.<CustomerCapitalResult>lambdaQuery()
                        .eq(CustomerCapitalResult::getCreditNo,partnerOrderNo));
                log.error("日志编号:" + logNumber + "审核结果回调接口capitalResult:{}", capitalResult);
                if (capitalResult != null) {
                    log.error("日志编号:" + logNumber + "审核结果回调接口查询成auditStatus:{}", auditStatus);
                    if ("AUDITING".equals(auditStatus)){
                        capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_WAIT.getCode());
                        capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_WAIT);
                    }else if ("AUDIT_REJECT".equals(auditStatus)){
                        capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_REFUSE.getCode());
                        capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_FAIL);
                    }else if ("AUDIT_PASS".equals(auditStatus)){
                        capitalResult.setApprovalResult(CapitalApprovalResultEnum.APPROVAL_SUCCESS.getCode());
                        capitalResult.setThirdOrderStatus(HyGetOrderStatusResponse.STATUS_AUDIT_SUCCESS);
                    }
                    capitalResult.setCreditApplyTime(auditTime);
                    capitalResult.setQuotaRate(approvalRate);
                    capitalResult.setTotalCredit(amount.toString());
                    capitalResultMapper.updateById(capitalResult);
                    return QhypUtil.respEncrypt("1000", "进件审批结果回调接口成功", "","","","", publicKey, privateKeySelf,(String) params.get("desKey"));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("日志编号:" + logNumber + "审核结果回调接口异常:{}", e);
        }
        return QhypUtil.respEncrypt("1001", "进件审批结果回调接口失败", "","","","", publicKey, privateKeySelf,(String) params.get("desKey"));
    }
 
    @Override
    public String pushRepayPlan(Map<String, Object> params) {
        JSONObject object = new JSONObject();
        object.put("code", 200);
        object.put("msg", "成功");
        return QhypUtil.respEncrypt("1000", "还款计划回调接口", "","","","", publicKey, privateKeySelf,(String) params.get("desKey"));
    }
 
    @Override
    public String pushRepayResult(Map<String, Object> params) {
 
        return QhypUtil.respEncrypt("1000", "还款结果推送回调接口成功", "","","","", publicKey, privateKeySelf,(String) params.get("desKey"));
    }
 
    @Override
    public String rightsStatusPush(Map<String, Object> params) {
        return QhypUtil.respEncrypt("1000", "权益扣费计划变更回调接口成功", "","","","", publicKey, privateKeySelf,(String) params.get("desKey"));
    }
 
}