Commit 22df2291 authored by 王向伟's avatar 王向伟

二次风控 放款接口接中台

parent 5658ccf6
......@@ -12,6 +12,7 @@ import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
......@@ -31,6 +32,7 @@ public class OrderController {
@Autowired
@Qualifier("moOrderServiceImpl")
private OrderService orderService;
......
......@@ -7,6 +7,7 @@ package cn.quantgroup.cashloanflowboss.core.constants;
*/
public interface Constants {
String SUCCESS = "success";
String FAIL = "fail";
String TOTAL_COUNT = "totalCount";
String TOTAL_AMOUNT = "totalAmount";
String DATA = "data";
......
......@@ -18,10 +18,10 @@ import java.util.Map;
*/
@Component
@FeignClient(name = "ClothoServiceCenter", url = "${koala.api-host}", fallback = ClothoCenter.Fallback.class)
@FeignClient(name = "ClothoServiceCenter", url = "${fund.pay.api-host}", fallback = ClothoCenter.Fallback.class)
public interface ClothoCenter {
@PostMapping(value = "/v1/risk_management/audit/receive_risk_control_result", consumes = "application/x-www-form-urlencoded")
@PostMapping(value = "/external/quota/auth_amount_audit/notify", consumes = "application/x-www-form-urlencoded")
String approve(@RequestParam Map approveData);
@PostMapping(value = "/external/quota/order_audit/notify", consumes = "application/x-www-form-urlencoded")
......
package cn.quantgroup.cashloanflowboss.spi.koala.client;
import cn.quantgroup.cashloanflowboss.spi.clotho.exception.ClothoCenterException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
/**
* function:
* date: 2019/8/9
*
* @author: suntao
*/
@Component
@FeignClient(name = "KoalaCenter", url = "${koala.api-host}", fallback = KoalaCenter.Fallback.class)
public interface KoalaCenter {
@PostMapping(value = "/v1/risk_management/audit/receive_risk_control_result", consumes = "application/x-www-form-urlencoded")
String approve(@RequestParam Map approveData);
@PostMapping(value = "/v1/risk/notify", consumes = "application/x-www-form-urlencoded")
String orderAuditNotify(@RequestParam Map notify);
/**
* 生成放款MQ消息
*
* @param data
* @return
*/
@PostMapping(value = "/ex/paycenter/pay_notify", consumes = "application/x-www-form-urlencoded")
String generatorLendingMessage(@RequestParam Map data);
/**
* 放款
*
* @param data
* @return
*/
@PostMapping(value = "clotho/funds/plan/loan/apply", consumes = "application/x-www-form-urlencoded")
String lending(@RequestParam Map data);
/**
* 贷前关单(提现前)
*
* @param data
* @return
*/
@PostMapping(value = "/loan/super/close/quota", consumes = "application/x-www-form-urlencoded")
String cancelPreLoan(@RequestParam Map data, @RequestHeader(value = "x-auth-token") String token);
/**
* 贷前关单(提现后)
*
* @param data
* @return
*/
@PostMapping(value = "/loan/super/close", consumes = "application/x-www-form-urlencoded")
String cancelPreLoanHasLoanId(@RequestParam Map data, @RequestHeader(value = "x-auth-token") String token);
/**
* 贷后关单
*
* @param data
* @return
*/
@PostMapping(value = "/external/huijinsuo/withdraw/test/72", consumes = "application/x-www-form-urlencoded")
String cancelAfterLoan(@RequestParam Map data);
@Component
class Fallback implements KoalaCenter {
@Override
public String approve(Map approveData) {
return "error1";
}
@Override
public String orderAuditNotify(Map notify) {
return null;
}
@Override
public String generatorLendingMessage(Map data) {
throw new ClothoCenterException();
}
@Override
public String lending(Map data) {
return null;
}
@Override public String cancelPreLoan(Map data, String token) {
return null;
}
@Override public String cancelPreLoanHasLoanId(Map data, String token) {
return null;
}
@Override public String cancelAfterLoan(Map data) {
return null;
}
}
}
package cn.quantgroup.cashloanflowboss.spi.koala.service;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.spi.clotho.client.ClothoCenter;
import cn.quantgroup.cashloanflowboss.spi.clotho.model.LendingServiceModel;
import cn.quantgroup.cashloanflowboss.spi.koala.client.KoalaCenter;
import cn.quantgroup.cashloanflowboss.spi.model.JsonResult;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* Created by WeiWei on 2019/8/12.
*/
@Slf4j
@Service
public class KoalaCenterService {
@Autowired
private KoalaCenter koalaCenter;
public Boolean orderAuditNotify(String uuid, Long loanId, boolean auditResult, int bizType, Long registeredFrom) {
Map notify = new HashMap();
notify.put("code", 0);
notify.put("msg", "success");
notify.put("bizChannel", registeredFrom);
notify.put("uuid", uuid);
notify.put("bizNo", loanId);
notify.put("bizType", bizType);
notify.put("auditResult", auditResult);
notify.put("deadLine",System.currentTimeMillis());
String result = koalaCenter.orderAuditNotify(notify);
JsonResult jsonResult = JSONObject.parseObject(result,JsonResult.class);
return jsonResult.isSuccess();
}
/**
* 生成放款MQ消息
*
* @return
*/
public String generatorLendingMessage(LendingServiceModel lendingServiceModel) {
return this.koalaCenter.generatorLendingMessage(JSONTools.toMap(lendingServiceModel));
}
/**
* 放款
*
* @return
*/
public boolean lending(Integer fundId, BigDecimal amountLimit, Integer pepoleLimit) {
if (Application.isDebug()) {
String data = this.koalaCenter.lending(new HashMap(4) {{
put("fundingCorpId", fundId);
put("amountLimit", amountLimit);
put("peopleLimit", pepoleLimit);
}});
JsonResult jsonObject = JSONObject.parseObject(data, JsonResult.class);
return jsonObject.isSuccess();
} else {
return false;
}
}
/**
* 审批
* @param approveData
* @return
*/
public String approve(Map<String, Object> approveData) {
if (Application.isDebug()) {
String result = koalaCenter.approve(approveData);
JsonResult jsonObject = JSONObject.parseObject(result, JsonResult.class);
if(jsonObject.isSuccess()){
return Constants.SUCCESS;
}else {
return Constants.FAIL;
}
} else {
return "error";
}
}
public String cancelPreLoan(Map<Object, Object> data,String token) {
if (Application.isDebug()) {
return koalaCenter.cancelPreLoan(data,token);
} else {
return "error";
}
}
public String cancelAfterLoan(Map<Object, Object> data) {
if (Application.isDebug()) {
String result = koalaCenter.cancelAfterLoan(data);
JsonResult jsonObject = JSONObject.parseObject(result, JsonResult.class);
if(jsonObject.isSuccess()){
return Constants.SUCCESS;
}else {
return Constants.FAIL;
}
} else {
return "error";
}
}
public String cancelPreLoanHasLoanId(Map<Object, Object> data,String token) {
if (Application.isDebug()) {
String result = koalaCenter.cancelPreLoanHasLoanId(data,token);
JsonResult jsonObject = JSONObject.parseObject(result, JsonResult.class);
if(jsonObject.isSuccess()){
return Constants.SUCCESS;
}else {
return Constants.FAIL;
}
} else {
return "error";
}
}
}
package cn.quantgroup.cashloanflowboss.spi.mo_clotho.client;
import cn.quantgroup.cashloanflowboss.spi.xyqb.client.XYQBCenter;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
/**
* @author Wang Xiangwei
* @version 2020/5/26
*/
@Component
@FeignClient(name = "MoClothoCenter", url = "${mo.clotho.http}", fallback = MoClothoCenter.Fallback.class)
public interface MoClothoCenter {
@PostMapping(value = "/middle_office/pay/notify", consumes = "application/x-www-form-urlencoded")
String pushLendingResult(@RequestParam Map parameter);
@Component
class Fallback implements MoClothoCenter{
@Override
public String pushLendingResult(Map parameter) {
return null;
}
}
}
package cn.quantgroup.cashloanflowboss.spi.mo_clotho.service;
/**
* @author Wang Xiangwei
* @version 2020/5/26
*/
public interface MoClothoService {
boolean payResultNotify(Long loanId, Boolean expectPayResult);
}
package cn.quantgroup.cashloanflowboss.spi.mo_clotho.service;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.spi.mo_clotho.client.MoClothoCenter;
import cn.quantgroup.cashloanflowboss.spi.model.JsonResult;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.google.gson.JsonObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @author Wang Xiangwei
* @version 2020/5/26
*/
@Service
@Slf4j
public class MoClothoServiceImpl implements MoClothoService{
@Autowired
private MoClothoCenter moClothoCenter;
@Override
public boolean payResultNotify(Long loanId, Boolean expectPayResult) {
if (Application.isDebug()) {
Map paramMap = Maps.newHashMap();
paramMap.put("orderNo", loanId);
paramMap.put("payOrderNo", loanId);
paramMap.put("payTime",System.currentTimeMillis());
paramMap.put("payStatus", expectPayResult ? 3 : 5);
String result = moClothoCenter.pushLendingResult(paramMap);
log.info("[放款结果通知]xyqb返回结果result={}", result);
JsonResult jsonResult = JSONObject.parseObject(result,JsonResult.class);
return jsonResult.isSuccess();
} else {
return false;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment