Commit 678a2f56 authored by suntao's avatar suntao

资产计划校验

parent 56ea03df
......@@ -9,6 +9,8 @@ import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRoleByChannelOrderNumber;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -29,6 +31,7 @@ public class OrderController {
@Autowired
private OrderService orderService;
/**
* 订单查询列表接口
*
......@@ -60,7 +63,13 @@ public class OrderController {
@ChannelIdInit
@PostMapping("/approve")
public Result approveOpt(@RequestBody @Valid ApproveVo approveVo) {
return Result.buildSuccess(orderService.approveOpt(approveVo));
Tuple<Boolean, Boolean> booleanBooleanTuple = orderService.approveOpt(approveVo);
Boolean approveResult = booleanBooleanTuple.getKey();
if (approveResult) {
return Result.buildSuccess(approveResult, booleanBooleanTuple.getValue() ? "审批成功" : "请检查资产计划配置,审批成功");
} else {
return Result.buildSuccess("审批操作失败");
}
}
/**
......
......@@ -39,6 +39,7 @@ import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
......@@ -136,7 +137,8 @@ public class OrderService {
});
}
public Boolean approveOpt(ApproveVo approveVo) {
public Tuple<Boolean, Boolean> approveOpt(ApproveVo approveVo) {
if (StringUtils.isEmpty(approveVo.getAmount())) {
// 如果UI 金额为空 默认4000
approveVo.setAmount("4000");
......@@ -149,24 +151,24 @@ public class OrderService {
ClfOrderMapping orderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(approveVo.getChannelOrderNumber());
if (orderMapping == null) {
log.info("approveOpt,审批失败,无订单 channelOrderNumber={}", approveVo.getChannelOrderNumber());
return false;
return new Tuple<>(false, false);
}
if (Application.getPrincipal().isChannel() && !Application.getPrincipal().isSameChannel(orderMapping.getRegisteredFrom())) {
log.info("approveOpt,审批失败,不是该渠道订单无法审批 channelOrderNumber={}", approveVo.getChannelOrderNumber());
return false;
return new Tuple<>(false, false);
}
XUser xUser = xyqbUserService.findXUserById(orderMapping.getQgUserId());
if (xUser == null) {
log.info("approveOpt,审批失败,未找到用户 channelOrderNumber={}", approveVo.getChannelOrderNumber());
return false;
return new Tuple<>(false, false);
}
ChannelConf channelConf = channelConfRepository.getByChannelId(orderMapping.getRegisteredFrom());
if (channelConf == null) {
log.info("approveOpt,审批失败,boss渠道配置为空 channelOrderNumber={}", approveVo.getChannelOrderNumber());
return false;
return new Tuple<>(false, false);
}
// 额度有效期
......@@ -205,13 +207,19 @@ public class OrderService {
data.put("financeProducts", fundFormat);
// 发起审批
String approveResult = clothoCenterService.approve(data);
if ("success".equals(approveResult)) {
String approveStringResult = clothoCenterService.approve(data);
Boolean corpPolicyValidate = false;
try {
corpPolicyValidate = xyqbCenterService.validateCorpPolicy(Long.valueOf(fundId), new Date());
} catch (Exception e) {
log.error("审批,资方校验异常,channelOrderNumber={},fundId={}, e={}", orderMapping.getChannelOrderNo(), fundId, ExceptionUtils.getStackTrace(e));
}
if ("success".equals(approveStringResult)) {
log.info("审批申请成功,channelOrderNumber={}", orderMapping.getChannelOrderNo());
return true;
return new Tuple<>(true, corpPolicyValidate);
} else {
log.info("审批申请失败,channelOrderNumber={},requestParam={}", orderMapping.getChannelOrderNo(), JSONTools.serialize(data));
return false;
return new Tuple<>(false, corpPolicyValidate);
}
}
......
package cn.quantgroup.cashloanflowboss.spi.xyqb.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
/**
* 资产分配记录表
*/
@Data
@Entity
@Table(name = "funding_asset_allocations_programs")
public class FundingAssetAllocationsPrograms {
/**
* 资金方ID
*/
@Column(name = "fund_corp_id")
private Long fundCorpId;
/**
* 计划日期
*/
@Column(name = "plan_date")
private Date planDate;
}
package cn.quantgroup.cashloanflowboss.spi.xyqb.entity;
import lombok.Data;
import javax.persistence.*;
/**
* 资产分配记录表
*/
@Data
@Entity
@Table(name = "funding_corp_policy")
public class FundingCorpPolicy {
/**
* 资方id
*/
@Column(name = "funding_corp_id")
private Long fundingCorpId;
/**
* 是否启用自动分配
*/
@Column(name = "is_auto_assign")
private Boolean isAutoAssign;
/**
* 是否启动自动拉取分配结果
*/
@Column(name = "is_auto_fetch")
private Boolean isAutoFetch;
/**
* 是否启用自动推送放款
*/
@Column(name = "is_auto_loan")
private Boolean isAutoLoan;
/**
* 是否启动自动拉取放款结果
*/
@Column(name = "is_auto_loan_fetch")
private Boolean isAutoLoanFetch;
}
package cn.quantgroup.cashloanflowboss.spi.xyqb.repository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundingAssetAllocationsPrograms;
import cn.quantgroup.cashloanflowboss.spi.xyqb.source.XYQBDataSource;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import java.util.Date;
/**
* 资产计划开关表
* Created by suntao 20190902
*/
@XYQBDataSource
@Repository
public interface FundingAssetAllocationsProgramsRepository extends CrudRepository<FundingAssetAllocationsPrograms, Integer> {
FundingAssetAllocationsPrograms findByFundCorpIdAndPlanDate(Long fundCorpId, Date planDate);
}
\ No newline at end of file
package cn.quantgroup.cashloanflowboss.spi.xyqb.repository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundingCorpPolicy;
import cn.quantgroup.cashloanflowboss.spi.xyqb.source.XYQBDataSource;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
/**
* 资产计划开关表
* Created by suntao 20190902
*/
@XYQBDataSource
@Repository
public interface FundingCorpPolicyRepository extends CrudRepository<FundingCorpPolicy, Integer> {
FundingCorpPolicy findByFundingCorpId(Long fundingCorpId);
}
\ No newline at end of file
......@@ -6,11 +6,12 @@ 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.repository.CancelPreLoanRepository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.ContractRepository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.FundLendingRepository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundingAssetAllocationsPrograms;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FundingCorpPolicy;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.*;
import cn.quantgroup.cashloanflowboss.spi.xyqb.util.SignUtil;
import com.google.common.collect.Maps;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -31,6 +32,10 @@ public class XYQBCenterService {
private ContractRepository contractRepository;
@Autowired
private CancelPreLoanRepository cancelPreLoanRepository;
@Autowired
private FundingCorpPolicyRepository fundingCorpPolicyRepository;
@Autowired
private FundingAssetAllocationsProgramsRepository fundingAssetAllocationsProgramsRepository;
......@@ -105,6 +110,38 @@ public class XYQBCenterService {
}
/**
* 通过资方id 查找资产计划开关
* @param corpPolicyId
* @return
*/
public FundingCorpPolicy findFundingCorpPolicyByCorpPolicyId(Long corpPolicyId) {
return fundingCorpPolicyRepository.findByFundingCorpId(corpPolicyId);
}
/**
*
* @param corpPolicyId 资方id
* @param planDate 资产计划日期 精确到天
* @return
*/
public FundingAssetAllocationsPrograms findFundingAssetAllocationsProgramsByCorpPolicyIdAndPlanDate(Long corpPolicyId, Date planDate) {
return fundingAssetAllocationsProgramsRepository.findByFundCorpIdAndPlanDate(corpPolicyId, planDate);
}
/**
* 验证资产计划 是否有效
* @param corpPolicyId
* @param planDate 日期 只能要天
* @return
*/
public Boolean validateCorpPolicy(Long corpPolicyId, Date planDate) {
Boolean isValidate = true;
FundingCorpPolicy fundingCorpPolicy = findFundingCorpPolicyByCorpPolicyId(corpPolicyId);
isValidate = isValidate & fundingCorpPolicy.getIsAutoAssign() & fundingCorpPolicy.getIsAutoFetch() & fundingCorpPolicy.getIsAutoLoan() & fundingCorpPolicy.getIsAutoLoanFetch();
FundingAssetAllocationsPrograms fundingAssetAllocationsPrograms = findFundingAssetAllocationsProgramsByCorpPolicyIdAndPlanDate(corpPolicyId, planDate);
return isValidate & (fundingAssetAllocationsPrograms != null);
}
/**
* 查询订单当前状态
......@@ -157,4 +194,7 @@ public class XYQBCenterService {
return "success".equals(xyqbCenter.pushLendingResult(paramMap));
}
}
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