Commit a0a2a93f authored by suntao's avatar suntao

Merge branch 'features/mo' of http://git.quantgroup.cn/QG/cash-loan-flow-boss into features/mo

# By xiangwei.wang
# Via xiangwei.wang
* 'features/mo' of http://git.quantgroup.cn/QG/cash-loan-flow-boss:
  查询渠道信息productId为空时处理
  多订单渠道改为apollo配置
  二次风控审核bizType对乐信单独判断
  二次风控乐信bizType传9
  乐信bizType传9
  乐信bizType传9
  放款接口 返回值结果判断
  放款接口 返回值结果判断
parents 8a5eed77 e61b911b
...@@ -227,7 +227,9 @@ public class ChannelConfUtil { ...@@ -227,7 +227,9 @@ public class ChannelConfUtil {
channelConfBaseModel.setEnv(""); channelConfBaseModel.setEnv("");
channelConfBaseModel.setFundId(0); channelConfBaseModel.setFundId(0);
channelConfBaseModel.setP2pFundId(0); channelConfBaseModel.setP2pFundId(0);
if(channelConfiguration.getXyqbProductId() != null){
channelConfBaseModel.setBizType(Integer.valueOf(channelConfiguration.getXyqbProductId())); channelConfBaseModel.setBizType(Integer.valueOf(channelConfiguration.getXyqbProductId()));
}
channelConfBaseModel.setAesKey(channelConfiguration.getAesKey()); channelConfBaseModel.setAesKey(channelConfiguration.getAesKey());
channelConfBaseModel.setMd5Key(channelConfiguration.getMd5Key()); channelConfBaseModel.setMd5Key(channelConfiguration.getMd5Key());
channelConfBaseModel.setAuthCode(channelConfiguration.getSpiderCenterMerchantChannelCode()); channelConfBaseModel.setAuthCode(channelConfiguration.getSpiderCenterMerchantChannelCode());
......
package cn.quantgroup.cashloanflowboss.api.order.service; package cn.quantgroup.cashloanflowboss.api.order.service;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl;
import cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfChannelConfiguration;
import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress;
import cn.quantgroup.cashloanflowboss.api.channel.entity.ChannelConf; import cn.quantgroup.cashloanflowboss.api.channel.entity.ChannelConf;
import cn.quantgroup.cashloanflowboss.api.channel.repository.ChannelConfRepository; import cn.quantgroup.cashloanflowboss.api.channel.repository.ChannelConfRepository;
import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil; import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl;
import cn.quantgroup.cashloanflowboss.api.order.entity.OrderApprove; import cn.quantgroup.cashloanflowboss.api.order.entity.OrderApprove;
import cn.quantgroup.cashloanflowboss.api.order.model.*; import cn.quantgroup.cashloanflowboss.api.order.model.*;
import cn.quantgroup.cashloanflowboss.api.order.repository.OrderApproveRepository; import cn.quantgroup.cashloanflowboss.api.order.repository.OrderApproveRepository;
import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil; import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil;
import cn.quantgroup.cashloanflowboss.core.Application; import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult; import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackRecord; import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfChannelConfiguration;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRecordVoModel; import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRecordVoModel;
import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository; import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
import cn.quantgroup.cashloanflowboss.spi.clf.service.CLFCenterService; import cn.quantgroup.cashloanflowboss.spi.clf.service.CLFCenterService;
import cn.quantgroup.cashloanflowboss.spi.clotho.service.ClothoCenterService; import cn.quantgroup.cashloanflowboss.spi.clotho.service.ClothoCenterService;
...@@ -38,19 +38,6 @@ import cn.quantgroup.cashloanflowboss.utils.JSONTools; ...@@ -38,19 +38,6 @@ import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import cn.quantgroup.user.retbean.XUser; import cn.quantgroup.user.retbean.XUser;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.concurrent.ConcurrentMap;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.BooleanUtils;
...@@ -63,6 +50,14 @@ import org.springframework.data.domain.PageRequest; ...@@ -63,6 +50,14 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import javax.persistence.criteria.Predicate;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* function: * function:
* date: 2019/8/8 * date: 2019/8/8
...@@ -72,8 +67,11 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -72,8 +67,11 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j @Slf4j
@Service @Service
public class OrderServiceImpl implements OrderService{ public class OrderServiceImpl implements OrderService {
//多订单渠道配置
@Value("${multiple.order.channels}")
private String multipleOrderChannel;
@Autowired @Autowired
private OptHistoryLogServiceImpl optHistoryLogService; private OptHistoryLogServiceImpl optHistoryLogService;
...@@ -96,7 +94,6 @@ public class OrderServiceImpl implements OrderService{ ...@@ -96,7 +94,6 @@ public class OrderServiceImpl implements OrderService{
private JolyneService jolyneService; private JolyneService jolyneService;
@Autowired @Autowired
private ClfOrderMappingRepository clfOrderMappingRepository; private ClfOrderMappingRepository clfOrderMappingRepository;
...@@ -111,6 +108,13 @@ public class OrderServiceImpl implements OrderService{ ...@@ -111,6 +108,13 @@ public class OrderServiceImpl implements OrderService{
private static final int CONSCONT_STATUS = 2; private static final int CONSCONT_STATUS = 2;
private List<Long> channels;
@PostConstruct
public void init(){
channels = Stream.of(multipleOrderChannel.split(",")).map(Long::valueOf).collect(Collectors.toList());
}
@Override @Override
public Page<OrderVo> orderList(Long channelId, String channelOrderNo, String applyNo, Long loanId, Integer pageNumber, Integer pageSize) { public Page<OrderVo> orderList(Long channelId, String channelOrderNo, String applyNo, Long loanId, Integer pageNumber, Integer pageSize) {
...@@ -183,7 +187,6 @@ public class OrderServiceImpl implements OrderService{ ...@@ -183,7 +187,6 @@ public class OrderServiceImpl implements OrderService{
} }
/** /**
*
* @param approveVo * @param approveVo
* @return Tuple<Boolean 审批结果 true 审批完成 false 审批操作失败, String msg 信息> * @return Tuple<Boolean 审批结果 true 审批完成 false 审批操作失败, String msg 信息>
*/ */
...@@ -223,15 +226,24 @@ public class OrderServiceImpl implements OrderService{ ...@@ -223,15 +226,24 @@ public class OrderServiceImpl implements OrderService{
if (clfChannelConfiguration == null) { if (clfChannelConfiguration == null) {
return new Tuple(false, "审批失败,clfChannelConfiguration渠道配置为空"); return new Tuple(false, "审批失败,clfChannelConfiguration渠道配置为空");
} }
QuotaProduct quotaProduct = xyqbCenterService.getXyqbProduct(clfChannelConfiguration.getXyqbProductId()); QuotaProduct quotaProduct = null;
Map<String, Object> data = null;
if (channels.contains(orderMapping.getRegisteredFrom())) {
data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, 9);
}else {
quotaProduct = xyqbCenterService.getXyqbProduct(clfChannelConfiguration.getXyqbProductId());
if (quotaProduct == null) { if (quotaProduct == null) {
return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")")); return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")"));
} }
Map<String, Object> data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, quotaProduct); data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, quotaProduct.getProductType());
}
// 发起审批 // 发起审批
log.info("[approveOpt] 向clotho发起审批,data={}", JSONTools.serialize(data)); log.info("[approveOpt] 向clotho发起审批,data={}", JSONTools.serialize(data));
String approveStringResult = clothoCenterService.approve(data); String approveStringResult = clothoCenterService.approve(data);
log.info("[approveOpt] 返回结果 result={}",approveStringResult); log.info("[approveOpt] 返回结果 result={}", approveStringResult);
Boolean corpPolicyValidate = false; Boolean corpPolicyValidate = false;
try { try {
corpPolicyValidate = xyqbCenterService.validateCorpPolicy(Long.valueOf(fundId), new Date()); corpPolicyValidate = xyqbCenterService.validateCorpPolicy(Long.valueOf(fundId), new Date());
...@@ -256,6 +268,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -256,6 +268,7 @@ public class OrderServiceImpl implements OrderService{
/** /**
* 二次风控 * 二次风控
*
* @param channelOrderNumber * @param channelOrderNumber
* @return * @return
*/ */
...@@ -274,7 +287,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -274,7 +287,7 @@ public class OrderServiceImpl implements OrderService{
} }
// 更新合同状态 // 更新合同状态
Contract conscont= xyqbCenterService.findContractByUserId(orderMapping.getQgUserId()); Contract conscont = xyqbCenterService.findContractByUserId(orderMapping.getQgUserId());
if (conscont != null) { if (conscont != null) {
if (conscont.getGenerateStatus() != CONSCONT_STATUS) { if (conscont.getGenerateStatus() != CONSCONT_STATUS) {
log.info("secondAudit,合同状态不对,channelOrderNumber=".concat(channelOrderNumber)); log.info("secondAudit,合同状态不对,channelOrderNumber=".concat(channelOrderNumber));
...@@ -302,6 +315,12 @@ public class OrderServiceImpl implements OrderService{ ...@@ -302,6 +315,12 @@ public class OrderServiceImpl implements OrderService{
if (clfChannelConfiguration == null) { if (clfChannelConfiguration == null) {
return new Tuple(false, "二次风控失败,clfChannelConfiguration渠道配置为空"); return new Tuple(false, "二次风控失败,clfChannelConfiguration渠道配置为空");
} }
if (channels.contains(clfChannelConfiguration.getRegisteredFrom())) {//乐信渠道 bizType直接为9
result = clothoCenterService.orderAuditNotify(xUser.getUuid(), orderMapping.getLoanId(), true, 9);
} else {
QuotaProduct quotaProduct = xyqbCenterService.getXyqbProduct(clfChannelConfiguration.getXyqbProductId()); QuotaProduct quotaProduct = xyqbCenterService.getXyqbProduct(clfChannelConfiguration.getXyqbProductId());
if (quotaProduct == null) { if (quotaProduct == null) {
return new Tuple(false, "二次风控失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")")); return new Tuple(false, "二次风控失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")"));
...@@ -309,6 +328,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -309,6 +328,7 @@ public class OrderServiceImpl implements OrderService{
// 50 // 50
log.info("[secendAudit]二次风控发起,channelOrderNumber={}, bizType={}", channelOrderNumber, quotaProduct.getProductType()); log.info("[secendAudit]二次风控发起,channelOrderNumber={}, bizType={}", channelOrderNumber, quotaProduct.getProductType());
result = clothoCenterService.orderAuditNotify(xUser.getUuid(), orderMapping.getLoanId(), true, quotaProduct.getProductType()); result = clothoCenterService.orderAuditNotify(xUser.getUuid(), orderMapping.getLoanId(), true, quotaProduct.getProductType());
}
if (result) { if (result) {
log.info("[secendAudit]二次风控成功,channelOrderNumber={}, result={}", channelOrderNumber, result); log.info("[secendAudit]二次风控成功,channelOrderNumber={}, result={}", channelOrderNumber, result);
} else { } else {
...@@ -353,7 +373,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -353,7 +373,7 @@ public class OrderServiceImpl implements OrderService{
// 更新合同状态 // 更新合同状态
Contract conscont= xyqbCenterService.findContractByUserId(orderMapping.getQgUserId()); Contract conscont = xyqbCenterService.findContractByUserId(orderMapping.getQgUserId());
if (conscont == null) { if (conscont == null) {
// 合同为空 log表记录问题,UI用户查询 // 合同为空 log表记录问题,UI用户查询
optDetail = optDetail.concat("合同未生成,请注意,需要不用身份证才能自动生成合同,"); optDetail = optDetail.concat("合同未生成,请注意,需要不用身份证才能自动生成合同,");
...@@ -374,7 +394,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -374,7 +394,7 @@ public class OrderServiceImpl implements OrderService{
log.error("[order_lending][queryLendingRecordCount]查询待打款数量 失败,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data); log.error("[order_lending][queryLendingRecordCount]查询待打款数量 失败,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data);
} }
log.info("[order_lending][queryLendingRecordCount]查询待打款数量,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data); log.info("[order_lending][queryLendingRecordCount]查询待打款数量,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data);
if (data !=null && data.size() > 0) { if (data != null && data.size() > 0) {
if (Objects.nonNull(data.get(Constants.TOTAL_AMOUNT)) && Objects.nonNull(data.get(Constants.TOTAL_COUNT))) { if (Objects.nonNull(data.get(Constants.TOTAL_AMOUNT)) && Objects.nonNull(data.get(Constants.TOTAL_COUNT))) {
result = this.clothoCenterService.lending(orderApprove.getFundId(), new BigDecimal(String.valueOf(data.get(Constants.TOTAL_AMOUNT))), Integer.valueOf(String.valueOf(data.get(Constants.TOTAL_COUNT)))); result = this.clothoCenterService.lending(orderApprove.getFundId(), new BigDecimal(String.valueOf(data.get(Constants.TOTAL_AMOUNT))), Integer.valueOf(String.valueOf(data.get(Constants.TOTAL_COUNT))));
log.info("[order_lending]直投打款,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result); log.info("[order_lending]直投打款,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result);
...@@ -431,46 +451,46 @@ public class OrderServiceImpl implements OrderService{ ...@@ -431,46 +451,46 @@ public class OrderServiceImpl implements OrderService{
*/ */
@OperationAnno(channelNo = "#this[0]", opt = OptEnumName.PRE_CANCEL, succSPEL = "#this.key", optDetailSPEL = "#this.value") @OperationAnno(channelNo = "#this[0]", opt = OptEnumName.PRE_CANCEL, succSPEL = "#this.key", optDetailSPEL = "#this.value")
@Override @Override
public Tuple<Boolean,String> cancelPreLoan(String channelOrderNumber) { public Tuple<Boolean, String> cancelPreLoan(String channelOrderNumber) {
boolean cancel = true; boolean cancel = true;
String token = null; String token = null;
String result = ""; String result = "";
ClfOrderMapping orderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber); ClfOrderMapping orderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
if (orderMapping == null) { if (orderMapping == null) {
log.info("cancelPreLoan,贷前关单失败,无订单 channelOrderNumber={}", channelOrderNumber); log.info("cancelPreLoan,贷前关单失败,无订单 channelOrderNumber={}", channelOrderNumber);
return new Tuple<>(false,"贷前关单失败,无订单"); return new Tuple<>(false, "贷前关单失败,无订单");
} }
try{ try {
Long id = cancelPreLoanRepository.cancelPreLoan(orderMapping.getApplyNo()); Long id = cancelPreLoanRepository.cancelPreLoan(orderMapping.getApplyNo());
String response = opCenter.getToken(auth); String response = opCenter.getToken(auth);
JSONObject responseJ = JSONObject.parseObject(response); JSONObject responseJ = JSONObject.parseObject(response);
if(responseJ != null && responseJ.containsKey(Constants.DATA)){ if (responseJ != null && responseJ.containsKey(Constants.DATA)) {
JSONObject data = (JSONObject) responseJ.get(Constants.DATA); JSONObject data = (JSONObject) responseJ.get(Constants.DATA);
if(data != null && data.containsKey(Constants.TOKEN)){ if (data != null && data.containsKey(Constants.TOKEN)) {
token = String.valueOf(data.get(Constants.TOKEN)); token = String.valueOf(data.get(Constants.TOKEN));
} }
} }
HashMap<Object, Object> data = Maps.newHashMap(); HashMap<Object, Object> data = Maps.newHashMap();
Long loanId = orderMapping.getLoanId(); Long loanId = orderMapping.getLoanId();
if(Objects.nonNull(loanId)){ if (Objects.nonNull(loanId)) {
data.put("loanIds",loanId); data.put("loanIds", loanId);
result = clothoCenterService.cancelPreLoanHasLoanId(data,token); result = clothoCenterService.cancelPreLoanHasLoanId(data, token);
}else{ } else {
data.put("data",id); data.put("data", id);
data.put("remark","贷前关单"); data.put("remark", "贷前关单");
result = clothoCenterService.cancelPreLoan(data,token); result = clothoCenterService.cancelPreLoan(data, token);
} }
JSONObject resp = JSONObject.parseObject(result); JSONObject resp = JSONObject.parseObject(result);
if(Objects.isNull(resp) || Objects.isNull(resp.get(Constants.SUCCESS)) || !Constants.TRUE.equals(String.valueOf(resp.get(Constants.SUCCESS)))){ if (Objects.isNull(resp) || Objects.isNull(resp.get(Constants.SUCCESS)) || !Constants.TRUE.equals(String.valueOf(resp.get(Constants.SUCCESS)))) {
cancel = false; cancel = false;
} }
}catch (Exception e){ } catch (Exception e) {
cancel = false; cancel = false;
log.error(e.getMessage(),e); log.error(e.getMessage(), e);
} }
return new Tuple<>(cancel,cancel?"贷前关单成功":"贷前关单失败"); return new Tuple<>(cancel, cancel ? "贷前关单成功" : "贷前关单失败");
} }
/** /**
...@@ -481,37 +501,39 @@ public class OrderServiceImpl implements OrderService{ ...@@ -481,37 +501,39 @@ public class OrderServiceImpl implements OrderService{
*/ */
@OperationAnno(channelNo = "#this[0]", opt = OptEnumName.LOAN_CANCEL, succSPEL = "#this.key", optDetailSPEL = "#this.value") @OperationAnno(channelNo = "#this[0]", opt = OptEnumName.LOAN_CANCEL, succSPEL = "#this.key", optDetailSPEL = "#this.value")
@Override @Override
public Tuple<Boolean,String> cancelAfterLoan(String channelOrderNumber) { public Tuple<Boolean, String> cancelAfterLoan(String channelOrderNumber) {
return huijinsuoCloseOrder72(channelOrderNumber); return huijinsuoCloseOrder72(channelOrderNumber);
} }
/** /**
* 惠金所 72 小时提现超时 * 惠金所 72 小时提现超时
*
* @param channelOrderNumber * @param channelOrderNumber
* @return * @return
*/ */
private Tuple<Boolean,String> huijinsuoCloseOrder72(String channelOrderNumber) { private Tuple<Boolean, String> huijinsuoCloseOrder72(String channelOrderNumber) {
ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber); ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
if (orderMapping == null) { if (orderMapping == null) {
log.info("cancelAfterLoan,贷后关单失败,无订单 ={}", channelOrderNumber); log.info("cancelAfterLoan,贷后关单失败,无订单 ={}", channelOrderNumber);
return new Tuple<>(false,"贷后关单失败,无订单"); return new Tuple<>(false, "贷后关单失败,无订单");
} }
if (orderMapping.getLoanId() == null) { if (orderMapping.getLoanId() == null) {
log.info("cancelAfterLoan,贷后关单失败,loanId为空,channelOrderNumber={}", channelOrderNumber); log.info("cancelAfterLoan,贷后关单失败,loanId为空,channelOrderNumber={}", channelOrderNumber);
return new Tuple<>(false,"贷后关单失败,loanId为空"); return new Tuple<>(false, "贷后关单失败,loanId为空");
} }
ConcurrentMap<Object, Object> data = Maps.newConcurrentMap(); ConcurrentMap<Object, Object> data = Maps.newConcurrentMap();
data.put("loanId",orderMapping.getLoanId()); data.put("loanId", orderMapping.getLoanId());
data.put("userId",orderMapping.getQgUserId()); data.put("userId", orderMapping.getQgUserId());
data.put("flowNo", UUID.randomUUID()); data.put("flowNo", UUID.randomUUID());
String id = clothoCenterService.cancelAfterLoan(data); String id = clothoCenterService.cancelAfterLoan(data);
return new Tuple<>(true,"贷后关单成功"); return new Tuple<>(true, "贷后关单成功");
} }
/** /**
* 查询订单历史推送记录 * 查询订单历史推送记录
*
* @param channelOrderNumber * @param channelOrderNumber
* @return * @return
*/ */
...@@ -576,6 +598,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -576,6 +598,7 @@ public class OrderServiceImpl implements OrderService{
/** /**
* 查询还款计划 * 查询还款计划
*
* @param channelOrderNumber * @param channelOrderNumber
* @param loanId * @param loanId
* @return * @return
...@@ -613,7 +636,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -613,7 +636,7 @@ public class OrderServiceImpl implements OrderService{
@OperationAnno(channelNo = "#this[0]", opt = OptEnumName.ALL_REPAID, succSPEL = "#this.key", optDetailSPEL = "#this.value") @OperationAnno(channelNo = "#this[0]", opt = OptEnumName.ALL_REPAID, succSPEL = "#this.key", optDetailSPEL = "#this.value")
@Override @Override
public Tuple<Boolean,String> settle(String channelOrderNumber) { public Tuple<Boolean, String> settle(String channelOrderNumber) {
ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber); ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber);
if (orderMapping != null && StringUtils.isNotEmpty(orderMapping.getApplyNo())) { if (orderMapping != null && StringUtils.isNotEmpty(orderMapping.getApplyNo())) {
...@@ -635,6 +658,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -635,6 +658,7 @@ public class OrderServiceImpl implements OrderService{
/** /**
* 查询订单状态 * 查询订单状态
*
* @param currentStatus * @param currentStatus
* @param orderMapping * @param orderMapping
* @return * @return
...@@ -648,25 +672,25 @@ public class OrderServiceImpl implements OrderService{ ...@@ -648,25 +672,25 @@ public class OrderServiceImpl implements OrderService{
buttonBeforeCancel.setAction(OrderVo.OptButtonAction.cancel.name()); buttonBeforeCancel.setAction(OrderVo.OptButtonAction.cancel.name());
buttonBeforeCancel.setName(OrderVo.OptButtonAction.cancel.getDesc()); buttonBeforeCancel.setName(OrderVo.OptButtonAction.cancel.getDesc());
switch (currentStatus.getStatus()) { switch (currentStatus.getStatus()) {
case "CREDIT_SUCC" : case "CREDIT_SUCC":
return getCreditSuccessTuple(tuple, buttonList); return getCreditSuccessTuple(tuple, buttonList);
case "APPROVE_ING" : case "APPROVE_ING":
return getApprovingTuple(orderMapping, tuple, buttonList); return getApprovingTuple(orderMapping, tuple, buttonList);
case "REJECT" : case "REJECT":
tuple.setKey("审批拒绝"); tuple.setKey("审批拒绝");
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "FUAD_ASSIFN_SUCC" : case "FUAD_ASSIFN_SUCC":
tuple.setKey("审批通过,待提现"); tuple.setKey("审批通过,待提现");
buttonList.add(buttonBeforeCancel); buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "WITHDRAW_APPROVING" : case "WITHDRAW_APPROVING":
return getWithdrawApprovingTuple(tuple, buttonList, buttonBeforeCancel); return getWithdrawApprovingTuple(tuple, buttonList, buttonBeforeCancel);
case "WITHDRAW" : case "WITHDRAW":
case "PAY_ING" : case "PAY_ING":
return getWithdrawTuple(orderMapping, tuple, buttonList, buttonBeforeCancel); return getWithdrawTuple(orderMapping, tuple, buttonList, buttonBeforeCancel);
case "FUND_WAITING_WITHDRAW" : case "FUND_WAITING_WITHDRAW":
tuple.setKey("放款到存管账户,待存管提现"); tuple.setKey("放款到存管账户,待存管提现");
OrderVo.OptButton cancelAfterButton0 = new OrderVo.OptButton(); OrderVo.OptButton cancelAfterButton0 = new OrderVo.OptButton();
cancelAfterButton0.setAction(OrderVo.OptButtonAction.cancel_after.name()); cancelAfterButton0.setAction(OrderVo.OptButtonAction.cancel_after.name());
...@@ -674,26 +698,26 @@ public class OrderServiceImpl implements OrderService{ ...@@ -674,26 +698,26 @@ public class OrderServiceImpl implements OrderService{
buttonList.add(cancelAfterButton0); buttonList.add(cancelAfterButton0);
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "FUND_SUCC" : case "FUND_SUCC":
tuple.setKey("放款成功"); tuple.setKey("放款成功");
return tuple; return tuple;
case "FUND_WITHDRAW_SUCC" : case "FUND_WITHDRAW_SUCC":
tuple.setKey("存管提现成功"); tuple.setKey("存管提现成功");
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "FUND_FAIL" : case "FUND_FAIL":
tuple.setKey("放款失败"); tuple.setKey("放款失败");
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "ALL_REPAID" : case "ALL_REPAID":
tuple.setKey("已结清"); tuple.setKey("已结清");
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "CANCEL_LOAN" : case "CANCEL_LOAN":
tuple.setKey("已关单"); tuple.setKey("已关单");
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "CANCEL_AFTER_LOAN" : case "CANCEL_AFTER_LOAN":
tuple.setKey("存管提现超时或贷后关单"); tuple.setKey("存管提现超时或贷后关单");
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
...@@ -789,14 +813,16 @@ public class OrderServiceImpl implements OrderService{ ...@@ -789,14 +813,16 @@ public class OrderServiceImpl implements OrderService{
return calendar; return calendar;
} }
private Map<String, Object> getApproveObjectMap(ApproveVo approveVo, ClfOrderMapping orderMapping, XUser xUser, String fundFormat, QuotaProduct quotaProduct) { private Map<String, Object> getApproveObjectMap(ApproveVo approveVo, ClfOrderMapping orderMapping, XUser xUser, String fundFormat, Integer bizType) {
Map<String, Object> data = new HashMap<>(16); Map<String, Object> data = new HashMap<>(16);
data.put("code", 0); data.put("code", 0);
data.put("msg", "success"); data.put("msg", "success");
data.put("bizChannel", orderMapping.getRegisteredFrom()); data.put("bizChannel", orderMapping.getRegisteredFrom());
data.put("uuid", xUser.getUuid()); data.put("uuid", xUser.getUuid());
data.put("bizNo", orderMapping.getApplyNo()); data.put("bizNo", orderMapping.getApplyNo());
data.put("bizType", quotaProduct.getProductType());
data.put("bizType", bizType);
data.put("auditResult", approveVo.getIsPass()); data.put("auditResult", approveVo.getIsPass());
data.put("amount", approveVo.getAmount()); data.put("amount", approveVo.getAmount());
data.put("deadLine", getCalendar().getTime().getTime()); data.put("deadLine", getCalendar().getTime().getTime());
......
...@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; ...@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects;
/** /**
* Created by WeiWei on 2019/8/12. * Created by WeiWei on 2019/8/12.
...@@ -72,8 +73,8 @@ public class KoalaCenterService { ...@@ -72,8 +73,8 @@ public class KoalaCenterService {
put("peopleLimit", pepoleLimit); put("peopleLimit", pepoleLimit);
}}); }});
JsonResult jsonObject = JSONObject.parseObject(data, JsonResult.class); //JsonResult jsonObject = JSONObject.parseObject(data, JsonResult.class);
return jsonObject.isSuccess(); return Objects.nonNull(data) && "success".equalsIgnoreCase(data);
} else { } else {
return false; return false;
} }
......
...@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map; import java.util.Map;
import java.util.Objects;
/** /**
* @author Wang Xiangwei * @author Wang Xiangwei
...@@ -33,8 +34,9 @@ public class MoClothoServiceImpl implements MoClothoService{ ...@@ -33,8 +34,9 @@ public class MoClothoServiceImpl implements MoClothoService{
paramMap.put("payStatus", expectPayResult ? 3 : 4); paramMap.put("payStatus", expectPayResult ? 3 : 4);
String result = moClothoCenter.pushLendingResult(paramMap); String result = moClothoCenter.pushLendingResult(paramMap);
log.info("[放款结果通知]moClotho返回结果result={}", result); log.info("[放款结果通知]moClotho返回结果result={}", result);
JsonResult jsonResult = JSONObject.parseObject(result,JsonResult.class); //JsonResult jsonResult = JSONObject.parseObject(result,JsonResult.class);
return jsonResult.isSuccess(); //return jsonResult.isSuccess();
return Objects.nonNull(result) && "success".equalsIgnoreCase(result);
} else { } else {
return false; 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