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 params) { //解密deskey String result = QhypUtil.decryptDataFromQh(params, (String) params.get("signature"),(String)params.get("data"),publicKey,privateKeySelf); Map 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.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.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 params) { String result = QhypUtil.decryptDataFromQh(params, (String) params.get("signature"),(String)params.get("data"),publicKey,privateKeySelf); Map 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.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 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 params) { return QhypUtil.respEncrypt("1000", "还款结果推送回调接口成功", "","","","", publicKey, privateKeySelf,(String) params.get("desKey")); } @Override public String rightsStatusPush(Map params) { return QhypUtil.respEncrypt("1000", "权益扣费计划变更回调接口成功", "","","","", publicKey, privateKeySelf,(String) params.get("desKey")); } }