Commit d34603ef authored by suntao's avatar suntao

二次风控接口

parent 851b33b5
......@@ -86,22 +86,24 @@ public class OrderController {
@PostMapping("/lending")
public Result<Boolean> lending(@RequestBody @Valid LendingFormModel lendingFormModel) {
if (debugModel) {
return Result.buildSuccess(this.orderService.lending(lendingFormModel), this.orderService.lending(lendingFormModel) ? "放款操作成功" : "放款操作失败");
boolean lendingResult = this.orderService.lending(lendingFormModel);
return Result.buildSuccess(lendingResult, lendingResult ? "放款操作成功" : "放款操作失败");
} else {
return Result.buildSuccess(false,"无此操作");
}
}
/**
* 放款
* 二次风控审批
*
* @return
*/
@Security(authorityId = "Order.secondAudit")
@PostMapping("/secondAudit")
public Result<Boolean> secondAudit(@RequestBody @Valid LendingFormModel lendingFormModel) {
@GetMapping("/secondAudit")
public Result<Boolean> secondAudit(String channelOrderNumber) {
if (debugModel) {
return Result.buildSuccess(this.orderService.secondAudit(lendingFormModel));
boolean secondAudit = this.orderService.secondAudit(channelOrderNumber);
return Result.buildSuccess(secondAudit, secondAudit ? "操作成功" : "操作失败");
} else {
return Result.buildSuccess(false,"无此操作");
}
......
......@@ -37,6 +37,7 @@ public class OrderVo {
public enum OptButtonAction {
audit("审批"),
cancel("贷前关单"),
second_audit("二次风控审批"),
pay_succ("放款成功"),
pay_fail("放款失败"),
withdraw_second("存管提现"),
......
......@@ -29,6 +29,7 @@ import cn.quantgroup.cashloanflowboss.spi.user.service.UserSysService;
import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.Contract;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundLending;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.LoanApplicationHistory;
import cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import cn.quantgroup.user.retbean.XUser;
......@@ -147,14 +148,12 @@ public class OrderService {
orderVo.setCreatedAt(it.getCreatedAt());
if (StringUtils.isNotEmpty(it.getApplyNo())) {
OrderApprove orderApprove = orderApproveRepository.findByCreditNumber(it.getApplyNo());
ServiceResult<XyqbCurrentOrderStatusServiceResultModel> xyqbCenterServiceXyqbOrderStatus = xyqbCenterService.getXyqbOrderStatus(it.getApplyNo(), it.getLoanId());
log.info("[xyqbCenterService.getXyqbOrderStatus]xyqbOrderStatus={}", JSONTools.serialize(xyqbCenterServiceXyqbOrderStatus));
if (xyqbCenterServiceXyqbOrderStatus.isSuccess()) {
QueryXyqbOrderStatus currentStatus = xyqbCenterServiceXyqbOrderStatus.getData().getCurrentStatus();
Tuple<String, List<OrderVo.OptButton>> currentStatusAndButtons = OrderUtil.getCurrentStatusAndButtons(currentStatus, orderApprove);
Tuple<String, List<OrderVo.OptButton>> currentStatusAndButtons = this.getCurrentStatusAndButtons(currentStatus, it);
orderVo.setStatus(currentStatusAndButtons.getKey());
if (debugModel) {
// 只有测试环境才需要订单操作
......@@ -303,15 +302,15 @@ public class OrderService {
* 已经自动,无须调用
* 二次风控
*
* @param lendingFormModel
* @param channelOrderNumber
* @return
*/
@Transactional
public boolean secondAudit(LendingFormModel lendingFormModel) {
public boolean secondAudit(String channelOrderNumber) {
boolean result;
ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoAndRegisteredFromLastOne(lendingFormModel.getChannelOrderNumber(), lendingFormModel.getChannelId());
ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
// 更新合同状态
Contract conscont= xyqbCenterService.findContractByUserId(orderMapping.getQgUserId());
......@@ -324,7 +323,7 @@ public class OrderService {
// 操作记录
OptHistoryLog optHistoryLog = new OptHistoryLog();
optHistoryLog.setChannelOrderNumber(lendingFormModel.getChannelOrderNumber());
optHistoryLog.setChannelOrderNumber(channelOrderNumber);
optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setChannelId(orderMapping.getRegisteredFrom());
......@@ -335,27 +334,27 @@ public class OrderService {
// 二次风控回调
XUser xUser = xyqbUserService.findXUserById(orderMapping.getQgUserId());
if (xUser == null) {
log.info("[secendAudit]二次风控失败,未找到user channelOrderNumber={}", lendingFormModel.getChannelOrderNumber());
log.info("[secendAudit]二次风控失败,未找到user channelOrderNumber={}", channelOrderNumber);
optHistoryLog.setOptLogDetail("二次风控失败,未找到user");
optHistoryLog.setOptResult(false);
optHistoryLogService.save(optHistoryLog);
return false;
}
ChannelConf channelConf = channelConfRepository.getByChannelId(lendingFormModel.getChannelId());
ChannelConf channelConf = channelConfRepository.getByChannelId(orderMapping.getRegisteredFrom());
if (channelConf == null) {
log.info("[secendAudit]二次风控失败,未找到channelConf配置 channelOrderNumber={}", lendingFormModel.getChannelOrderNumber());
log.info("[secendAudit]二次风控失败,未找到channelConf配置 channelOrderNumber={}", channelOrderNumber);
optHistoryLog.setOptLogDetail("二次风控失败,未找到channelConf配置");
optHistoryLog.setOptResult(false);
optHistoryLogService.save(optHistoryLog);
return false;
}
log.info("[secendAudit]二次风控发起,channelOrderNumber={}, bizType={}", lendingFormModel.getChannelOrderNumber(), channelConf.getBizType());
log.info("[secendAudit]二次风控发起,channelOrderNumber={}, bizType={}", channelOrderNumber, channelConf.getBizType());
result = clothoCenterService.orderAuditNotify(xUser.getUuid(), orderMapping.getLoanId(), true, channelConf.getBizType());
if (result) {
log.info("[secendAudit]二次风控成功,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result);
log.info("[secendAudit]二次风控成功,channelOrderNumber={}, result={}", channelOrderNumber, result);
} else {
log.info("[secendAudit]二次风控失败,clotho返回失败 channelOrderNumber={}", lendingFormModel.getChannelOrderNumber());
log.info("[secendAudit]二次风控失败,clotho返回失败 channelOrderNumber={}", channelOrderNumber);
optHistoryLog.setOptLogDetail("二次风控失败,clotho返回失败");
optHistoryLog.setOptResult(false);
optHistoryLogService.save(optHistoryLog);
......@@ -375,7 +374,7 @@ public class OrderService {
optHistoryLog.setOptLogDetail("二次风控操作成功");
optHistoryLog.setOptResult(true);
optHistoryLogService.save(optHistoryLog);
log.info("[secendAudit]二次风控操作 最后结果,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result);
log.info("[secendAudit]二次风控操作 最后结果,channelOrderNumber={}, result={}", channelOrderNumber, result);
return result;
......@@ -489,8 +488,8 @@ public class OrderService {
List<VoOrderStatus> historyStatusList = new ArrayList<>();
for (QueryXyqbOrderStatus queryXyqbOrderStatus : data.getHistoryStatus()) {
VoOrderStatus voOrderStatus = new VoOrderStatus();
Tuple<String, List<OrderVo.OptButton>> oneStatus = OrderUtil.getCurrentStatusAndButtons(queryXyqbOrderStatus, orderApprove);
voOrderStatus.setStatus(oneStatus.getKey());
Tuple<String, String> stautsName = OrderUtil.KaNoticeTypeNameConvertChnName(queryXyqbOrderStatus.getStatus(), orderApprove);
voOrderStatus.setStatus(stautsName.getValue());
voOrderStatus.setUpdateTime(new Date(queryXyqbOrderStatus.getUpdateTime()));
historyStatusList.add(voOrderStatus);
}
......@@ -630,4 +629,143 @@ public class OrderService {
// xyqbCenterService.findRepaymentPlan(loanId);
return null;
}
/**
* 查询订单状态
* @param currentStatus
* @param orderMapping
* @return
*/
private Tuple<String, List<OrderVo.OptButton>> getCurrentStatusAndButtons(QueryXyqbOrderStatus currentStatus, ClfOrderMapping orderMapping) {
Tuple tuple = new Tuple();
List<OrderVo.OptButton> buttonList = new ArrayList<>();
if (currentStatus != null) {
if (StringUtils.isNotEmpty(currentStatus.getStatus())) {
OrderVo.OptButton buttonBeforeCancel = new OrderVo.OptButton();
buttonBeforeCancel.setAction(OrderVo.OptButtonAction.cancel.name());
buttonBeforeCancel.setName(OrderVo.OptButtonAction.cancel.getDesc());
switch (currentStatus.getStatus()) {
case "CREDIT_SUCC" :
// 授信成功 需要 审批
OrderVo.OptButton buttonApprove = new OrderVo.OptButton();
buttonApprove.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove);
buttonList.add(buttonBeforeCancel);
tuple.setKey("授信成功");
tuple.setValue(buttonList);
return tuple;
case "APPROVE_ING" :
OrderApprove orderApprove = orderApproveRepository.findByCreditNumber(orderMapping.getApplyNo());
if (orderApprove == null) {
OrderVo.OptButton buttonApprove2 = new OrderVo.OptButton();
buttonApprove2.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove2.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove2);
buttonList.add(buttonBeforeCancel);
tuple.setKey("授信成功,待审批");
tuple.setValue(buttonList);
} else {
tuple.setKey("审批中(等待几分钟)");
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
}
return tuple;
case "REJECT" :
tuple.setKey("审批拒绝");
tuple.setValue(buttonList);
return tuple;
case "FUAD_ASSIFN_SUCC" :
tuple.setKey("审批通过,待提现");
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return tuple;
case "WITHDRAW" :
// 提现申请成功 需要放款
tuple.setKey("申请提现成功");
LoanApplicationHistory loanApplicationHistory = xyqbCenterService.findLoanApplicationHistoryById(orderMapping.getLoanId());
if (loanApplicationHistory != null) {
if (LoanProgress.WAITING_FUND.equals(loanApplicationHistory.getProgress())) {
// 更改放款时间,二次风控回调
OrderVo.OptButton secondAudit = new OrderVo.OptButton();
secondAudit.setAction(OrderVo.OptButtonAction.second_audit.name());
secondAudit.setName(OrderVo.OptButtonAction.second_audit.getDesc());
buttonList.add(secondAudit);
} else if (LoanProgress.FINAL_SEND_TO_MASHANG_BEFORE_APPROVAL.equals(loanApplicationHistory.getProgress())) {
OrderVo.OptButton buttonPaySucc = new OrderVo.OptButton();
buttonPaySucc.setAction(OrderVo.OptButtonAction.pay_succ.name());
buttonPaySucc.setName(OrderVo.OptButtonAction.pay_succ.getDesc());
buttonList.add(buttonPaySucc);
OrderVo.OptButton buttonPayFail = new OrderVo.OptButton();
buttonPayFail.setAction(OrderVo.OptButtonAction.pay_fail.name());
buttonPayFail.setName(OrderVo.OptButtonAction.pay_fail.getDesc());
buttonList.add(buttonPayFail);
buttonList.add(buttonBeforeCancel);
}
tuple.setValue(buttonList);
}
return tuple;
case "PAY_ING" :
tuple.setKey("放款中(等待几分钟)");
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return tuple;
case "FUND_SUCC" :
OrderApprove orderApprove2 = orderApproveRepository.findByCreditNumber(orderMapping.getApplyNo());
if (orderApprove2 != null && orderApprove2.getFundType() != 0) {
// 是存管
tuple.setKey("放款到存管,待提现");
OrderVo.OptButton cancelAfterButton = new OrderVo.OptButton();
cancelAfterButton.setAction(OrderVo.OptButtonAction.cancel_after.name());
cancelAfterButton.setName(OrderVo.OptButtonAction.cancel_after.getDesc());
buttonList.add(cancelAfterButton);
OrderVo.OptButton withdrawSecondButton = new OrderVo.OptButton();
withdrawSecondButton.setAction(OrderVo.OptButtonAction.withdraw_second.name());
withdrawSecondButton.setName(OrderVo.OptButtonAction.withdraw_second.getDesc());
buttonList.add(withdrawSecondButton);
} else {
tuple.setKey("放款成功");
}
tuple.setValue(buttonList);
return tuple;
case "FUND_WITHDRAW_SUCC" :
tuple.setKey("存管提现成功");
tuple.setValue(buttonList);
return tuple;
case "FUND_FAIL" :
tuple.setKey("放款失败");
tuple.setValue(buttonList);
return tuple;
case "ALL_REPAID" :
tuple.setKey("已结清");
tuple.setValue(buttonList);
return tuple;
case "CANCEL_LOAN" :
tuple.setKey("已关单");
tuple.setValue(buttonList);
return tuple;
case "CANCEL_AFTER_LOAN" :
tuple.setKey("存管提现超时或贷后关单");
tuple.setValue(buttonList);
return tuple;
default:
tuple.setKey("未知状态");
tuple.setValue(buttonList);
return tuple;
}
}
} else {
tuple.setKey("未知状态");
tuple.setValue(buttonList);
return tuple;
}
tuple.setKey("未知状态");
tuple.setValue(buttonList);
return tuple;
}
}
......@@ -25,219 +25,106 @@ import java.util.List;
public class OrderUtil {
public static final String financeProductsFormat = "[{\"min\":%s,\"max\":%s,\"terms\":[{\"term\":%s,\"fundInfo\":[{\"fundId\":%s,\"rate\":\"0\",\"rateType\":1,\"priority\":\"1\",\"feeType\":\"1\"}]}]}]";
/**
*
* @param kaNoticeType
* @return 状态英文,状态中文
*/
public static Tuple<String, String> KaNoticeTypeConvertChnName(KANoticeType kaNoticeType, OrderApprove orderApprove) {
public static Tuple<String, List<OrderVo.OptButton>> getCurrentStatusAndButtons(QueryXyqbOrderStatus currentStatus, OrderApprove orderApprove) {
Tuple tuple = new Tuple();
List<OrderVo.OptButton> buttonList = new ArrayList<>();
if (currentStatus != null) {
if (StringUtils.isNotEmpty(currentStatus.getStatus())) {
OrderVo.OptButton buttonBeforeCancel = new OrderVo.OptButton();
buttonBeforeCancel.setAction(OrderVo.OptButtonAction.cancel.name());
buttonBeforeCancel.setName(OrderVo.OptButtonAction.cancel.getDesc());
switch (currentStatus.getStatus()) {
if (kaNoticeType != null) {
switch (kaNoticeType.name()) {
case "CREDIT_SUCC" :
// 授信成功 需要 审批
OrderVo.OptButton buttonApprove = new OrderVo.OptButton();
buttonApprove.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove);
buttonList.add(buttonBeforeCancel);
tuple.setKey("授信成功");
tuple.setValue(buttonList);
return tuple;
return new Tuple("CREDIT_SUCC", "授信成功");
case "APPROVE_ING" :
if (orderApprove == null) {
OrderVo.OptButton buttonApprove2 = new OrderVo.OptButton();
buttonApprove2.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove2.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove2);
buttonList.add(buttonBeforeCancel);
tuple.setKey("授信成功,待审批");
tuple.setValue(buttonList);
return new Tuple("APPROVE_ING", "授信成功,待审批");
} else {
tuple.setKey("审批中");
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return new Tuple("APPROVE_ING", "审批中");
}
return tuple;
case "REJECT" :
tuple.setKey("审批拒绝");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "审批拒绝");
case "FUAD_ASSIFN_SUCC" :
tuple.setKey("审批通过,待提现");
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "审批通过,待提现");
case "WITHDRAW" :
// 提现申请成功 需要放款
tuple.setKey("申请提现成功");
OrderVo.OptButton buttonPaySucc = new OrderVo.OptButton();
buttonPaySucc.setAction(OrderVo.OptButtonAction.pay_succ.name());
buttonPaySucc.setName(OrderVo.OptButtonAction.pay_succ.getDesc());
buttonList.add(buttonPaySucc);
OrderVo.OptButton buttonPayFail = new OrderVo.OptButton();
buttonPayFail.setAction(OrderVo.OptButtonAction.pay_fail.name());
buttonPayFail.setName(OrderVo.OptButtonAction.pay_fail.getDesc());
buttonList.add(buttonPayFail);
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "申请提现成功");
case "PAY_ING" :
tuple.setKey("放款中");
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return tuple;
return new Tuple("PAY_ING", "放款中");
case "FUND_SUCC" :
if (orderApprove != null && orderApprove.getFundType() != 0) {
// 是存管
tuple.setKey("放款到存管,待提现");
OrderVo.OptButton cancelAfterButton = new OrderVo.OptButton();
cancelAfterButton.setAction(OrderVo.OptButtonAction.cancel_after.name());
cancelAfterButton.setName(OrderVo.OptButtonAction.cancel_after.getDesc());
buttonList.add(cancelAfterButton);
OrderVo.OptButton withdrawSecondButton = new OrderVo.OptButton();
withdrawSecondButton.setAction(OrderVo.OptButtonAction.withdraw_second.name());
withdrawSecondButton.setName(OrderVo.OptButtonAction.withdraw_second.getDesc());
buttonList.add(withdrawSecondButton);
return new Tuple(kaNoticeType.name(), "放款到存管,待提现");
} else {
tuple.setKey("放款成功");
return new Tuple(kaNoticeType.name(), "放款成功");
}
tuple.setValue(buttonList);
return tuple;
case "FUND_WITHDRAW_SUCC" :
tuple.setKey("存管提现成功");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "存管提现成功");
case "FUND_FAIL" :
tuple.setKey("放款失败");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "放款失败");
case "ALL_REPAID" :
tuple.setKey("已结清");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "已结清");
case "CANCEL_LOAN" :
tuple.setKey("已关单");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "已关单");
case "CANCEL_AFTER_LOAN" :
tuple.setKey("存管提现超时或贷后关单");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "存管提现超时或贷后关单");
default:
tuple.setKey("未知状态");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "未知状态");
}
}
} else {
tuple.setKey("未知状态");
tuple.setValue(buttonList);
return tuple;
}
tuple.setKey("未知状态");
tuple.setValue(buttonList);
return tuple;
return new Tuple(kaNoticeType.name(), "未知状态");
}
public static Tuple<String, String> KaNoticeTypeConvert(KANoticeType kaNoticeType) {
/**
*
* @param kaNoticeType
* @return 状态英文,状态中文
*/
public static Tuple<String, String> KaNoticeTypeNameConvertChnName(String kaNoticeType, OrderApprove orderApprove) {
if (kaNoticeType != null) {
switch (kaNoticeType.name()) {
if (StringUtils.isNotEmpty(kaNoticeType)) {
switch (kaNoticeType) {
case "CREDIT_SUCC" :
// 授信成功 需要 审批
// return new Tuple("授信成功", "CREDIT_SUCC");
// case "APPROVE_ING" :
// if (orderApprove == null) {
// OrderVo.OptButton buttonApprove2 = new OrderVo.OptButton();
// buttonApprove2.setAction(OrderVo.OptButtonAction.audit.name());
// buttonApprove2.setName(OrderVo.OptButtonAction.audit.getDesc());
// buttonList.add(buttonApprove2);
// buttonList.add(buttonBeforeCancel);
// tuple.setKey("授信成功,待审批");
// tuple.setValue(buttonList);
// } else {
// tuple.setKey("审批中");
// buttonList.add(buttonBeforeCancel);
// tuple.setValue(buttonList);
// }
// return tuple;
// case "REJECT" :
// tuple.setKey("审批拒绝");
// tuple.setValue(buttonList);
// return tuple;
// case "FUAD_ASSIFN_SUCC" :
// tuple.setKey("审批通过,待提现");
// buttonList.add(buttonBeforeCancel);
// tuple.setValue(buttonList);
// return tuple;
// case "WITHDRAW" :
// // 提现申请成功 需要放款
// tuple.setKey("申请提现成功");
// OrderVo.OptButton buttonPaySucc = new OrderVo.OptButton();
// buttonPaySucc.setAction(OrderVo.OptButtonAction.pay_succ.name());
// buttonPaySucc.setName(OrderVo.OptButtonAction.pay_succ.getDesc());
// buttonList.add(buttonPaySucc);
// OrderVo.OptButton buttonPayFail = new OrderVo.OptButton();
// buttonPayFail.setAction(OrderVo.OptButtonAction.pay_fail.name());
// buttonPayFail.setName(OrderVo.OptButtonAction.pay_fail.getDesc());
// buttonList.add(buttonPayFail);
// buttonList.add(buttonBeforeCancel);
// tuple.setValue(buttonList);
// return tuple;
// case "PAY_ING" :
// tuple.setKey("放款中");
// buttonList.add(buttonBeforeCancel);
// tuple.setValue(buttonList);
// return tuple;
// case "FUND_SUCC" :
// if (orderApprove != null && orderApprove.getFundType() != 0) {
// // 是存管
// tuple.setKey("放款到存管,待提现");
// OrderVo.OptButton cancelAfterButton = new OrderVo.OptButton();
// cancelAfterButton.setAction(OrderVo.OptButtonAction.cancel_after.name());
// cancelAfterButton.setName(OrderVo.OptButtonAction.cancel_after.getDesc());
// buttonList.add(cancelAfterButton);
// OrderVo.OptButton withdrawSecondButton = new OrderVo.OptButton();
// withdrawSecondButton.setAction(OrderVo.OptButtonAction.withdraw_second.name());
// withdrawSecondButton.setName(OrderVo.OptButtonAction.withdraw_second.getDesc());
// buttonList.add(withdrawSecondButton);
// } else {
// tuple.setKey("放款成功");
// }
// tuple.setValue(buttonList);
// return tuple;
// case "FUND_WITHDRAW_SUCC" :
// tuple.setKey("存管提现成功");
// tuple.setValue(buttonList);
// return tuple;
// case "FUND_FAIL" :
// tuple.setKey("放款失败");
// tuple.setValue(buttonList);
// return tuple;
// case "ALL_REPAID" :
// tuple.setKey("已结清");
// tuple.setValue(buttonList);
// return tuple;
// case "CANCEL_LOAN" :
// tuple.setKey("已关单");
// tuple.setValue(buttonList);
// return tuple;
// case "CANCEL_AFTER_LOAN" :
// tuple.setKey("存管提现超时或贷后关单");
// tuple.setValue(buttonList);
// return tuple;
// default:
// tuple.setKey("未知状态");
// tuple.setValue(buttonList);
// return tuple;
return new Tuple("CREDIT_SUCC", "授信成功");
case "APPROVE_ING" :
if (orderApprove == null) {
return new Tuple("APPROVE_ING", "授信成功");
} else {
return new Tuple("APPROVE_ING", "审批中");
}
case "REJECT" :
return new Tuple(kaNoticeType, "审批拒绝");
case "FUAD_ASSIFN_SUCC" :
return new Tuple(kaNoticeType, "审批通过");
case "WITHDRAW" :
// 提现申请成功 需要放款
return new Tuple(kaNoticeType, "申请提现成功");
case "PAY_ING" :
return new Tuple("PAY_ING", "放款中");
case "FUND_SUCC" :
if (orderApprove != null && orderApprove.getFundType() != 0) {
// 是存管
return new Tuple(kaNoticeType, "放款到存管");
} else {
return new Tuple(kaNoticeType, "放款成功");
}
case "FUND_WITHDRAW_SUCC" :
return new Tuple(kaNoticeType, "存管提现成功");
case "FUND_FAIL" :
return new Tuple(kaNoticeType, "放款失败");
case "ALL_REPAID" :
return new Tuple(kaNoticeType, "已结清");
case "CANCEL_LOAN" :
return new Tuple(kaNoticeType, "已关单");
case "CANCEL_AFTER_LOAN" :
return new Tuple(kaNoticeType, "存管提现超时或贷后关单");
default:
return new Tuple(kaNoticeType, "未知状态");
}
return null;
}
return new Tuple(kaNoticeType, "未知状态");
}
public static List<OptHistoryLog> convertApplyRequestHistoryList2OptHistoryLogList(List<ApplyRequestHistory> applyRequestHistoryList, ClfOrderMapping orderMapping) {
......
package cn.quantgroup.cashloanflowboss.spi.xyqb.entity;
import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Objects;
/**
* Created by FrankChow on 15/7/8.
* 贷款记录表
*/
@Entity
@Table(name = "loan_application_history")
@Getter
@Setter
@ToString
public class LoanApplicationHistory implements Serializable {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_id")
private Long userId;
@Column(name = "channel_id")
private Long channelId;
// false表示借款申请是无效的或者已完成
@Column(name = "is_active")
private Boolean isActive = true;
// 贷款进度 默认是02
@Column(name = "progress")
private LoanProgress progress = LoanProgress.USER_AUTHENTICATION_INCOMPLETE;
@Column(name = "bank_card_id")
private Long bankCardId;
// 从哪个渠道注册过来
@Column(name = "created_from")
private Long createdFrom;
@Column(name = "baitiao_merchant_id")
private Long baitiaoMerchantId = -1L;
// 上一次修改时间
@Column(name = "updated_at")
private Timestamp updatedAt;
// 上一次修改时间
@Column(name = "created_at")
private Timestamp createdAt;
@PrePersist
public void prePersist() {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
createdAt = timestamp;
updatedAt = timestamp;
}
@PreUpdate
public void preUpdate() {
updatedAt = new Timestamp(System.currentTimeMillis());
}
public long parseChannelId() {
return !Objects.equals(createdFrom, -1L) ? this.createdFrom : this.channelId;
}
}
package cn.quantgroup.cashloanflowboss.spi.xyqb.repository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.LoanApplicationHistory;
import cn.quantgroup.cashloanflowboss.spi.xyqb.source.XYQBDataSource;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
/**
* Created by WeiWei on 2019/8/12.
*/
@XYQBDataSource
@Repository
public interface LoanApplicationHistoryRepository extends CrudRepository<LoanApplicationHistory, Integer> {
LoanApplicationHistory findById(Long id);
}
\ No newline at end of file
......@@ -4,10 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServ
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import cn.quantgroup.cashloanflowboss.spi.xyqb.client.XYQBCenter;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.Contract;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundLending;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundingAssetAllocationsPrograms;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundingCorpPolicy;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.*;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.*;
import cn.quantgroup.cashloanflowboss.spi.xyqb.util.SignUtil;
import cn.quantgroup.cashloanflowboss.utils.DateUtil;
......@@ -38,6 +35,8 @@ public class XYQBCenterService {
private FundingCorpPolicyRepository fundingCorpPolicyRepository;
@Autowired
private FundingAssetAllocationsProgramsRepository fundingAssetAllocationsProgramsRepository;
@Autowired
private LoanApplicationHistoryRepository loanApplicationHistoryRepository;
@Value("${debug.model}")
......@@ -133,6 +132,10 @@ public class XYQBCenterService {
return fundingAssetAllocationsProgramsRepository.findByFundCorpIdAndPlanDate(corpPolicyId, planDate);
}
public LoanApplicationHistory findLoanApplicationHistoryById(Long loanId) {
return loanApplicationHistoryRepository.findById(loanId);
}
/**
* 验证资产计划 是否有效
* @param corpPolicyId
......
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