Commit abd84ff5 authored by xiaozhe.chen's avatar xiaozhe.chen

v

parent ca6c9738
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.3.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.30" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.0.6" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.3.0.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.3.0.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.3.0.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.3.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.10" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.10" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.3.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.6.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.7.0" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -66,12 +66,12 @@ public class FreemarkerTool {
}
public void processFile(){
String modelPath = System.getProperty("user.dir") + "\\src\\main\\resources\\templates\\code-generator\\model";
String servicePath = System.getProperty("user.dir") + "\\src\\main\\resources\\templates\\code-generator\\service";
String callbackPath = System.getProperty("user.dir") + "\\src\\main\\resources\\templates\\code-generator\\callback";
String eventHandlerPath = System.getProperty("user.dir") + "\\src\\main\\resources\\templates\\code-generator\\eventhandler";
String enumsPath = System.getProperty("user.dir") + "\\src\\main\\resources\\templates\\code-generator\\enums";
String utilPath = System.getProperty("user.dir") + "\\src\\main\\resources\\templates\\code-generator\\util";
String modelPath = System.getProperty("user.dir") + "/src/main/resources/templates/code-generator/model";
String servicePath = System.getProperty("user.dir") + "/src/main/resources/templates/code-generator/service";
String callbackPath = System.getProperty("user.dir") + "/src/main/resources/templates/code-generator/callback";
String eventHandlerPath = System.getProperty("user.dir") + "/src/main/resources/templates/code-generator/eventhandler";
String enumsPath = System.getProperty("user.dir") + "/src/main/resources/templates/code-generator/enums";
String utilPath = System.getProperty("user.dir") + "/src/main/resources/templates/code-generator/util";
try {
......
......@@ -22,7 +22,7 @@ public class XmlParseUtil {
Map<String,String> node = new HashMap<>();
File xmlFile = new File(System.getProperty("user.dir"), "\\src\\main\\resources\\GenerateConf.xml");
File xmlFile = new File(System.getProperty("user.dir"), "/src/main/resources/GenerateConf.xml");
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document doc = builder.parse(xmlFile);
......
......@@ -6,27 +6,27 @@
<author>WangXiangwei</author>
<prefix>TestChannel</prefix>
<model path="E:\testchannel\dto\model">
<model path="/Users/chenxiaozhe/quantgroup/ka-code-generator/testchannel/dto/model">
<packageName>cn.quantgroup.clf.api.testchannel.dto.model</packageName>
</model>
<util path="E:\testchannel\dto\util">
<util path="/Users/chenxiaozhe/quantgroup/ka-code-generator/testchannel/dto/util">
<packageName>cn.quantgroup.clf.api.testchannel.dto.util</packageName>
</util>
<enums path="E:\testchannel\dto\enums">
<enums path="/Users/chenxiaozhe/quantgroup/ka-code-generator/testchannel/dto/enums">
<packageName>cn.quantgroup.clf.api.testchannel.dto.enums</packageName>
</enums>
<callback path="E:\testchannel\dto\callback">
<callback path="/Users/chenxiaozhe/quantgroup/ka-code-generator/testchannel/dto/callback">
<packageName>cn.quantgroup.clf.api.testchannel.dto.callback</packageName>
</callback>
<service path="E:\testchannel\service">
<service path="/Users/chenxiaozhe/quantgroup/ka-code-generator/testchannel/service">
<packageName>cn.quantgroup.clf.api.testchannel.service</packageName>
</service>
<eventHandler path="E:\testchannel\eventhandler">
<eventHandler path="/Users/chenxiaozhe/quantgroup/ka-code-generator/testchannel/eventhandler">
<packageName>cn.quantgroup.clf.api.testchannel.eventhandler</packageName>
</eventHandler>
......
package ${enumsPackage};
/**
* 绑卡状态:
* SUCCESS:成功;
* FAIL:失败
*
* @author ${author}
* @date ${.now?string('yyyy-MM-dd HH:mm:ss')}
*/
public enum ${prefix}SignStatusEnum {
SUCCESS,
FAIL
}
\ No newline at end of file
package ${enumsPackage};
/**
* 准入接口返回值
* 包括 CONTINUE BREAK 两种返回结果。
* CONTINUE代表该用户可以继续进行后面的注册等操作,
* BREAK代表该用户不予以接受,不能进行后续的注册等操作
* @author ${author}
* @date ${.now?string('yyyy-MM-dd HH:mm:ss')}
*/
public enum ${prefix}UserAccessResultEnum {
CONTINUE,
BREAK;
}
\ No newline at end of file
package ${eventhandlerPackage};
import ${enumsPackage}.${prefix}CreditResultEnum;
import ${enumsPackage}.${prefix}CreditStatusCallBackEnum;
import ${enumsPackage}.${prefix}RepayStatusEnum;
import ${callbackPackage}.${prefix}QueryCreditApplyCallback;
import ${callbackPackage}.${prefix}QueryRepayCallback;
import ${callbackPackage}.${prefix}QueryLoanCallback;
import ${callbackPackage}.${prefix}QuotaExpired;
import ${callbackPackage}.${prefix}QuotaExpiredCallback;
import ${enumsPackage}.${prefix}LoanApplyStatusEnum;
import cn.quantgroup.cashloanflow.entity.cashloanflow.LoanMapping;
import cn.quantgroup.cashloanflow.entity.cashloanflow.LoanOrderMapping;
import cn.quantgroup.cashloanflow.entity.cashloanflow.RepayFlowNoMapping;
......@@ -24,7 +15,6 @@ import cn.quantgroup.cashloanflow.service.cashloanflow.ILoanOrderMappingService;
import cn.quantgroup.cashloanflow.service.cashloanflow.IUserMappingService;
import cn.quantgroup.cashloanflow.service.cashloanflow.LoanMappingService;
import cn.quantgroup.cashloanflow.util.DateUtil;
import cn.quantgroup.clf.api.jinshan.dto.callback.OrderAndUserMapping;
import cn.quantgroup.clf.util.JSONTools;
import cn.quantgroup.loanflow.application.StandardApplicationService;
import cn.quantgroup.loanflow.asynctask.executor.config.BizAppId;
......@@ -91,29 +81,24 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
KANoticeType noticeType = auditRejectEvent.getNoticeType();
String applyNo = extraDto.getData().getApplyNo();
String channelOrderNo = auditRejectEvent.getChannelOrderNo();
QuotaRefuseNoticeExtraData extraData = JSONTools.deserialize(extraDto.getExtraData(), QuotaRefuseNoticeExtraData.class);
Long nextApplyTime = auditRejectEvent.getNextApplyTime();
String reason = auditRejectEvent.getReason();
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
LoanOrderMapping orderMapping = orderAndUserMapping.getOrderMapping();
UserMapping userMapping = orderAndUserMapping.getUserMapping();
String channelUserId = userMapping.getChannelUserId();
String callbackUrl = getOrderCallbackUrl(channelId, noticeType);
if (StringUtils.isEmpty(callbackUrl)) {
log.error("{},回调地址无配置,channelId:{},applyNo:{},noticeType:{}", logPrefix, channelId, applyNo, noticeType.name());
throw new CommonBizException("回调地址无配置");
}
${prefix}QueryCreditApplyCallback callback = new ${prefix}QueryCreditApplyCallback();
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
callback.setChannelUserId(channelUserId);
callback.setChannelOrderNo(orderMapping.getChannelOrderNo());
callback.setApplyNo(orderMapping.getApplyNo());
callback.setCreditResult(${prefix}CreditResultEnum.REFUSE);
callback.setNextApplyTime(DateUtil.format(extraData.getNextOperateDate(), DateUtil.YYYY_MM_DD));
callback.setCreditInfo(extraData.getRefuseReason());
Map<String, String> postParam = getPostParam(callback, channelUserId);
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(postParam, callbackUrl, queueNotice);
publishTask(callbackParam, callbackUrl, queueNotice);
}
@Override
......@@ -132,9 +117,12 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
throw new CommonBizException("回调地址无配置");
}
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
LoanOrderMapping orderMapping = orderAndUserMapping.getOrderMapping();
UserMapping userMapping = orderAndUserMapping.getUserMapping();
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
ChannelOrder channelOrderQueryCreditStatus = ChannelOrder.builder()
.channelOrderNo(channelOrderNo)
.channelId(channelId)
......@@ -148,11 +136,11 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
throw new CommonBizException("审批推送,查询授信结果失败或无数据");
}
${prefix}QueryCreditApplyCallback callback = ${prefix}QueryCreditApplyCallback.getSuccessResult(orderMapping, userMapping, creditInfo);
Map<String, String> postParam = getPostParam(callback, userMapping.getChannelUserId());
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(postParam, callbackUrl, queueNotice);
publishTask(callbackParam, callbackUrl, queueNotice);
}
......@@ -179,25 +167,24 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
throw new CommonBizException("回调地址无配置");
}
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
UserMapping userMapping = orderAndUserMapping.getUserMapping();
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
LoanMapping loanMapping = loanMappingService.findByLoanIdAndChannelId(loanId, channelId);
if (Objects.isNull(loanMapping)) {
log.error("{}通过loanId查询LoanMapping为空, loanId={}, channelId={}", logPrefix, loanId, channelId);
throw new CommonBizException("通过loanId查询LoanMapping为空");
}
${prefix}QueryLoanCallback callback = new ${prefix}QueryLoanCallback();
callback.setChannelUserId(channelUserId);
callback.setLoanNo(String.valueOf(loanMapping.getLoanId()));
callback.setChannelLoanNo(loanMapping.getChannelLoanNo());
callback.setLoanApplyStatus(${prefix}LoanApplyStatusEnum.SUCCESS);
Map<String, String> postParam = getPostParam(callback, channelUserId);
String channelLoanNo = loanMapping.getChannelLoanNo();
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(postParam, callbackUrl, queueNotice);
publishTask(callbackParam, callbackUrl, queueNotice);
}
......@@ -213,41 +200,31 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
String applyNo = extraDto.getData().getApplyNo();
String channelOrderNo = fundFailEvent.getChannelOrderNo();
Long changeTime = fundFailEvent.getChangeTime();
String reason = fundFailEvent.getReason();
String callbackUrl = getOrderCallbackUrl(channelId, noticeType);
if (StringUtils.isEmpty(callbackUrl)) {
log.error("{},回调地址无配置,channelId:{},applyNo:{},noticeType:{}", logPrefix, channelId, applyNo, noticeType.name());
throw new CommonBizException("回调地址无配置");
}
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
UserMapping userMapping = orderAndUserMapping.getUserMapping();
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
LoanMapping loanMapping = loanMappingService.findByLoanIdAndChannelId(loanId, channelId);
if (Objects.isNull(loanMapping)) {
log.error("{}通过loanId查询LoanMapping为空, loanId={}, channelId={}", logPrefix, loanId, channelId);
throw new CommonBizException("通过loanId查询LoanMapping为空");
}
${prefix}QueryLoanCallback callback = new ${prefix}QueryLoanCallback();
String channelLoanNo = loanMapping.getChannelLoanNo();
callback.setChannelUserId(channelUserId);
callback.setLoanNo(String.valueOf(loanMapping.getLoanId()));
callback.setChannelLoanNo(loanMapping.getChannelLoanNo());
callback.setLoanApplyStatus(${prefix}LoanApplyStatusEnum.FAIL);
callback.setApplyResult(fundFailEvent.getReason());
Map<String, String> postParam = getPostParam(callback, channelUserId);
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(postParam, callbackUrl, queueNotice);
// 通知渠道额度失效
${prefix}QuotaExpired quotaExpired = new ${prefix}QuotaExpired();
quotaExpired.setChannelId(channelId);
quotaExpired.setChannelUserId(channelUserId);
quotaExpired.setExtraDto(extraDto);
quotaExpired.setLimitExpireDate(changeTime);
quotaExpiredPublishTask(quotaExpired);
publishTask(callbackParam, callbackUrl, queueNotice);
}
@Override
......@@ -258,18 +235,24 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
Long channelId = cancelLoanEvent.getChannelId();
String channelOrderNo = cancelLoanEvent.getChannelOrderNo();
Long closeTime = cancelLoanEvent.getChangeTime();
KANoticeType noticeType = cancelLoanEvent.getNoticeType();
String applyNo = extraDto.getData().getApplyNo();
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
UserMapping userMapping = orderAndUserMapping.getUserMapping();
String callbackUrl = getOrderCallbackUrl(channelId, noticeType);
if (StringUtils.isEmpty(callbackUrl)) {
log.error("{},回调地址无配置,channelId:{},applyNo:{},noticeType:{}", logPrefix, channelId, applyNo, noticeType.name());
throw new CommonBizException("回调地址无配置");
}
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
// 通知渠道额度失效
${prefix}QuotaExpired quotaExpired = new ${prefix}QuotaExpired();
quotaExpired.setChannelId(channelId);
quotaExpired.setChannelUserId(channelUserId);
quotaExpired.setExtraDto(extraDto);
quotaExpired.setLimitExpireDate(closeTime);
quotaExpiredPublishTask(quotaExpired);
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(callbackParam, callbackUrl, queueNotice);
}
......@@ -282,20 +265,30 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
Long channelId = settleUpEvent.getChannelId();
String channelOrderNo = settleUpEvent.getChannelOrderNo();
Long changeTime = settleUpEvent.getChangeTime();
KANoticeType noticeType = settleUpEvent.getNoticeType();
Long loanId = settleUpEvent.getLoanId();
String applyNo = extraDto.getData().getApplyNo();
String callbackUrl = getOrderCallbackUrl(channelId, noticeType);
if (StringUtils.isEmpty(callbackUrl)) {
log.error("{},回调地址无配置,channelId:{},loanId:{},noticeType:{}", logPrefix, channelId, loanId, noticeType.name());
throw new CommonBizException("回调地址无配置");
}
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
UserMapping userMapping = orderAndUserMapping.getUserMapping();
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
// 通知渠道额度失效
${prefix}QuotaExpired quotaExpired = new ${prefix}QuotaExpired();
quotaExpired.setChannelId(channelId);
quotaExpired.setChannelUserId(channelUserId);
quotaExpired.setExtraDto(extraDto);
quotaExpired.setLimitExpireDate(changeTime);
quotaExpiredPublishTask(quotaExpired);
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(callbackParam, callbackUrl, queueNotice);
processSettleUp(settleUpEvent);
}
@Override
public void repaySuccessPublish(RepaySuccessEvent repaySuccessEvent) {
String logPrefix = "[${prefix}EventHandler][repaySuccessPublish]";
......@@ -314,8 +307,10 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
throw new CommonBizException("回调地址无配置");
}
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
UserMapping userMapping = orderAndUserMapping.getUserMapping();
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
// 查询借据信息
......@@ -326,10 +321,12 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
}
String channelLoanNo = loanMapping.getChannelLoanNo();
// 查询渠道的还款流水号
String kingsoftRepaymentNo = null;
String channelRepaymentNo = null;
BigDecimal repaymentAmount = null;
RepayFlowNoMapping repayFlowNoMapping = repayFlowNoMappingRepository.findByXyqbRepayFlowNoOne(businessFlowNo);
if (Objects.nonNull(repayFlowNoMapping)) {
kingsoftRepaymentNo = repayFlowNoMapping.getChannelRepayFlowNo();
channelRepaymentNo = repayFlowNoMapping.getChannelRepayFlowNo();
repaymentAmount = new BigDecimal(repayFlowNoMapping.getRepayAmount());
}
// 查询还款计划
ServiceResult<OrderRepaymentRepresentation> serviceResult = standardApplicationService.repaymentPlanQueryByCycleQuota(loanId);
......@@ -340,10 +337,10 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
throw new CommonBizException("还款成功,查询还款计划返回错误或无数据");
}
List<RepaymentPlanItem> repaymentPlans = serviceResult.getData().getRepaymentPlans();
${prefix}QueryRepayCallback callback = ${prefix}QueryRepayCallback.getSuccessResult(channelUserId, repaySuccessEvent, channelLoanNo, kingsoftRepaymentNo, repaymentPlans);
Map<String, String> postParam = getPostParam(callback, channelUserId);
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(postParam, callbackUrl, queueNotice);
publishTask(callbackParam, callbackUrl, queueNotice);
super.processRepay(repaySuccessEvent.getQueueNotice());
}
......@@ -365,8 +362,10 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
throw new CommonBizException("回调地址无配置");
}
OrderAndUserMapping orderAndUserMapping = getOrderAndUserMapping(channelOrderNo, channelId);
UserMapping userMapping = orderAndUserMapping.getUserMapping();
LoanOrderMapping orderMapping = getOrderMapping(channelOrderNo, channelId);
Long userId = orderMapping.getQgUserId();
UserMapping userMapping = getUserMapping(userId, channelId);
String channelUserId = userMapping.getChannelUserId();
// 根据核心系统还款流水号查询渠道的还款流水号
......@@ -377,18 +376,10 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
channelRepayFlowNo = repayFlowNoMapping.getChannelRepayFlowNo();
repaymentAmount = new BigDecimal(repayFlowNoMapping.getRepayAmount());
}
${prefix}QueryRepayCallback callback = new ${prefix}QueryRepayCallback();
callback.setChannelUserId(channelUserId);
callback.setBusinessFlowNo(businessFlowNo);
callback.setChannelRepayFlowNo(channelRepayFlowNo);
callback.setRepaymentAmount(repaymentAmount);
callback.setRepayStatus(${prefix}RepayStatusEnum.FAIL);
callback.setFailMsg(failMsg);
callback.setFailCode("2000000");
Map<String, String> postParam = getPostParam(callback, channelUserId);
Map<String, String> callbackParam = new HashMap<>();
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(postParam, callbackUrl, queueNotice);
publishTask(callbackParam, callbackUrl, queueNotice);
super.processRepay(repayFailEvent.getQueueNotice());
}
......@@ -419,28 +410,36 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
}
/**
* 根据channelOrderNo+channelId 查询出渠道授信信息和渠道用户信息
* 根据channelOrderNo,channelId 查询出渠道授信订单
*
* @param channelOrderNo
* @param channelId
* @return
*/
private OrderAndUserMapping getOrderAndUserMapping(String channelOrderNo, Long channelId) {
OrderAndUserMapping mappingReturn = new OrderAndUserMapping();
private LoanOrderMapping getOrderMapping(String channelOrderNo, Long channelId) {
LoanOrderMapping orderMapping = orderMappingService.findByChannelOrderNoAndRegisteredFromLastOne(channelOrderNo, channelId);
if (Objects.isNull(orderMapping)) {
log.error("${prefix}渠道回调通知,查询授信订单为空, channelOrderNo={}, channelId={}", channelOrderNo, channelId);
throw new CommonBizException("查询授信订单为空");
}
Long userId = orderMapping.getQgUserId();
return orderMapping;
}
/**
* 根据userId,channelId 查询UserMapping
*
* @param userId
* @param channelId
* @return
*/
private UserMapping getUserMapping(Long userId, Long channelId) {
UserMapping userMapping = userMappingService.findByQgUserIdAndRegisteredFrom(userId, channelId);
if (Objects.isNull(userMapping)) {
log.error("${prefix}渠道回调通知,通过qgUserId查询渠道用户id为空, qgUserId={}, channelId={}", userId, channelId);
throw new CommonBizException("通过qgUserId查询渠道用户id为空");
}
mappingReturn.setOrderMapping(orderMapping);
mappingReturn.setUserMapping(userMapping);
return mappingReturn;
return userMapping;
}
/**
......@@ -470,11 +469,11 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
*/
private HttpTaskBody buildTaskBody(Map<String, String> paraMap, String url, QueueNotice queueNotice) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("success", "Y");
jsonObject.put("", "");
String assetRule = jsonObject.toJSONString();
Map<String, String> header = new HashMap<>(2);
header.put("Content-Type", "application/json");
header.put("Content-Type", "");
HttpTaskBody taskBody = new HttpTaskBody();
taskBody.setHeaders(header);
taskBody.setUrl(url);
......@@ -484,39 +483,5 @@ public class ${prefix}EventHandler extends AbstractEventHandler implements IEven
return taskBody;
}
/**
* 额度失效通知
*
* @param quotaExpired
*/
private void quotaExpiredPublishTask(${prefix}QuotaExpired quotaExpired) {
String logPrefix = "[${prefix}EventHandler][quotoExpiredPublishTask]";
QuotaNoticeExtraDto extraDto = quotaExpired.getExtraDto();
String channelUserId = quotaExpired.getChannelUserId();
Long channelId = quotaExpired.getChannelId();
Long limitExpireDate = quotaExpired.getLimitExpireDate();
KANoticeType noticeType = KANoticeType.QUOTA_EXPIRED;
String callbackUrl = getOrderCallbackUrl(channelId, noticeType);
if (StringUtils.isEmpty(callbackUrl)) {
log.error("{},回调地址无配置,channelId:{},applyNo:{},noticeType:{}", logPrefix, channelId, noticeType.name());
throw new CommonBizException("回调地址无配置");
}
${prefix}QuotaExpiredCallback callback = new ${prefix}QuotaExpiredCallback();
callback.setCreditStatus(${prefix}CreditStatusCallBackEnum.EXPIRED);
callback.setChannelUserId(channelUserId);
callback.setCreditAmount(BigDecimal.ZERO);
callback.setLimitExpireDate(DateUtil.format(limitExpireDate, DateUtil.YYYY_MM_DD));
Map<String, String> postParam = getPostParam(callback, channelUserId);
QueueNotice queueNotice = new QueueNotice(noticeType, extraDto);
publishTask(postParam, callbackUrl, queueNotice);
}
private HashMap<String,String> getPostParam(Object param, String channelUserId){
HashMap<String, String> paramMap = new HashMap<>(12);
String paramJsonStr = JSON.toJSONString(param);
paramMap.put("channelUserId", channelUserId);
paramMap.put("requestId", DateUtil.format(new Date(), DateUtil.YYYYMMDDHHMMSS));
paramMap.put("timestamp", DateUtil.get13LongTimeFormLong());
paramMap.put("data", paramJsonStr);
return paramMap;
}
}
......@@ -24,6 +24,11 @@ public class ${prefix}ApplyLoanRequest {
*/
private String channelOrderNo;
/**
* 渠道借款订单号
*/
private String channelLoanNo;
/**
* 绑卡Id
*/
......
......@@ -5,7 +5,7 @@ import cn.quantgroup.cashloanflow.model.standard.apply.StandardApplyLoanData;
import cn.quantgroup.cashloanflow.model.standard.apply.StandardpicModelTypeEnum;
import cn.quantgroup.cashloanflow.util.RegisterFrom;
import cn.quantgroup.cashloanflow.util.Utils;
import cn.quantgroup.loanflow.application.model.ApplyLoanData;
import cn.quantgroup.loanflow.risk.model.RiskInfo;
import cn.quantgroup.loanflow.risk.model.StandardOcrData;
......@@ -184,15 +184,14 @@ public class ${prefix}CreditApplyRequest {
/**
* 标准API 转换
*
* @param registerFrom
* @param data
*/
public static ApplyLoanData getApplyLoanData(${prefix}CreditApplyRequest data) {
ApplyLoanData applyLoanData = new ApplyLoanData();
applyLoanData.setRegisterFrom(RegisterFrom.JINSHAN)
applyLoanData.setRegisterFrom(RegisterFrom.JINSHAN);
applyLoanData.setUserName(data.getUserName());
applyLoanData.setPhone(data.getPhone());
applyLoanData.setPhoneNo(data.getPhoneNo());
applyLoanData.setIdNo(data.getIdNo());
applyLoanData.setChannelUserId(data.getChannelUserId());
applyLoanData.setQq(data.getQq());
......@@ -219,6 +218,7 @@ public class ${prefix}CreditApplyRequest {
applyLoanData.setPurposeEnum(data.getPurposeEnum());
applyLoanData.setOrderExtData(data.getOrderExtData());
applyLoanData.setRiskInfo(data.getRiskInfo());
return applyLoanData;
}
......
package ${modelPackage};
import ${enumsPackage}.${prefix}SignStatusEnum;
import lombok.Data;
/**
......@@ -12,7 +11,6 @@ import lombok.Data;
@Data
public class ${prefix}VerifyBindSmsResult {
private ${prefix}SignStatusEnum signStatus;
private String bindId;
}
\ No newline at end of file
package ${servicePackage};
import ${modelPackage}.${prefix}CreditApplyRequest;
import ${modelPackage}.${prefix}QueryCreditApplyRequest;
import ${modelPackage}.${prefix}UserAccessRequest;
import ${modelPackage}.${prefix}QuerySupportBankcardsRequest;
......@@ -28,7 +28,7 @@ public interface ${prefix}Service {
* @param userAccessRequest
* @return
*/
String userAccess(${prefix}UserAccessRequest userAccessRequest);
void userAccess(${prefix}UserAccessRequest userAccessRequest);
/**
* 提交授信
......@@ -36,7 +36,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String creditApply(ApplyLoanData request);
void creditApply(${prefix}CreditApplyRequest request);
......@@ -46,7 +46,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String queryCreditApply(${prefix}QueryCreditApplyRequest request);
void queryCreditApply(${prefix}QueryCreditApplyRequest request);
/**
......@@ -55,7 +55,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String querySupportBankcards(${prefix}QuerySupportBankcardsRequest request);
void querySupportBankcards(${prefix}QuerySupportBankcardsRequest request);
/**
* 借款试算
......@@ -63,7 +63,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String queryLoanTrial(${prefix}QueryLoanTrialRequest request);
void queryLoanTrial(${prefix}QueryLoanTrialRequest request);
/**
......@@ -72,7 +72,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String bindBankCardSms(${prefix}BindBankCardSmsRequest request);
void bindBankCardSms(${prefix}BindBankCardSmsRequest request);
/**
* 验卡
......@@ -80,7 +80,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String verifyBindSms(${prefix}VerifyBindSmsRequest request);
void verifyBindSms(${prefix}VerifyBindSmsRequest request);
/**
......@@ -89,7 +89,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String applyWithdraw(${prefix}ApplyLoanRequest request);
void applyWithdraw(${prefix}ApplyLoanRequest request);
/**
......@@ -98,7 +98,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String queryLoanResult(${prefix}QueryLoanRequest request);
void queryLoanResult(${prefix}QueryLoanRequest request);
/**
......@@ -107,7 +107,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String repayByPlan(${prefix}RepayByPlanRequest request);
void repayByPlan(${prefix}RepayByPlanRequest request);
/**
* 查询还款结果
......@@ -115,7 +115,7 @@ public interface ${prefix}Service {
* @param request
* @return
*/
String queryRepayResult(${prefix}QueryRepayRequest request);
void queryRepayResult(${prefix}QueryRepayRequest request);
}
......
......@@ -16,10 +16,10 @@ import ${modelPackage}.${prefix}QueryLoanRequest;
import ${modelPackage}.${prefix}RepayByPlanRequest;
import ${modelPackage}.${prefix}QueryRepayRequest;
import ${modelPackage}.${prefix}CreditApplyRequest;
import ${enumsPackage}.${prefix}SignStatusEnum;
import ${enumsPackage}.${prefix}UserAccessResultEnum;
import ${utilPackage}.${prefix}ResultUtils;
import ${utilPackage}.${prefix}CodeEnum;
import ${enumsPackage}.${prefix}LoanPurposesEnum;
import cn.quantgroup.cashloanflow.model.standard.response.credit.CreditStatusEnum;
import cn.quantgroup.loanflow.application.model.ApplyLoanRequestData;
import cn.quantgroup.cashloanflow.entity.cashloanflow.LoanMapping;
import cn.quantgroup.cashloanflow.entity.cashloanflow.LoanOrderMapping;
import cn.quantgroup.cashloanflow.model.standard.apply.ApplyLoanCheckData;
......@@ -34,9 +34,8 @@ import cn.quantgroup.cashloanflow.util.DateUtil;
import cn.quantgroup.cashloanflow.util.IpUtil;
import cn.quantgroup.cashloanflow.util.JsonUtil;
import cn.quantgroup.cashloanflow.util.loan.ProductUtil;
import cn.quantgroup.clf.api.jinshan.util.JinShanUtil;
import cn.quantgroup.clf.applyloancheck.CheckResponse;
import cn.quantgroup.loanflow.infrastructure.utils.ChannelUtils;
import cn.quantgroup.loanflow.exception.CommonBizException;
import cn.quantgroup.loanflow.application.StandardApplicationService;
import cn.quantgroup.loanflow.application.model.ApplyLoanData;
import cn.quantgroup.loanflow.infrastructure.code.UserCode;
......@@ -100,13 +99,12 @@ import java.util.Objects;
*/
@Service
@Slf4j
public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService{
public class ${prefix}ServiceImpl implements ${prefix}Service{
private static final String LOG_PRE = "[${prefix}ServiceImpl]";
@Resource(name = "standardApplicationMoService")
private StandardApplicationService standardApplicationService;
@Autowired
private MoOrderRepresentationService moOrderRepresentationService;
@Autowired
......@@ -115,11 +113,7 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
private LoanMappingService loanMappingService;
@Autowired
private ILoanOrderMappingService loanOrderMappingService;
@Autowired
@Qualifier("rabbitDelaySenderImpl")
private DelaySender delaySender;
@Value("1,30000,60000")
private String scheduleStr;
/**
* 预审
......@@ -127,7 +121,8 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param userAccessRequest
* @return
*/
public String userAccess(${prefix}UserAccessRequest userAccessRequest){
@Override
public void userAccess(${prefix}UserAccessRequest userAccessRequest){
String logPre = LOG_PRE + "[userAccess][${prefix}预审]";
log.info("{} userAccessRequest={}",logPre,userAccessRequest);
PretrialAuditQuery query = new PretrialAuditQuery();
......@@ -137,17 +132,11 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ServiceResult<PretrialAuditRepresentation> serviceResult = standardApplicationService.queryPretrialAudit(query);
if (!serviceResult.isSuccess()) {
log.error("{},错误{}", logPre, serviceResult.getMessage());
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.getUserAccessCode(serviceResult.getCode().getCode())).toString();
throw new CommonBizException("调用预审服务异常");
}
PretrialAuditRepresentation pretrialAuditRepresentation = serviceResult.getData();
${prefix}UserAccessResult result = new ${prefix}UserAccessResult();
if (serviceResult.getData().getAuditResult()) {
result.setAccessResult(${prefix}UserAccessResultEnum.CONTINUE.name());
} else {
result.setAccessResult(${prefix}UserAccessResultEnum.BREAK.name());
}
return ${prefix}ResultUtils.success(result).toString();
}
/**
......@@ -156,17 +145,18 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String creditApply(${prefix}CreditApplyRequest request){
@Override
public void creditApply(${prefix}CreditApplyRequest request){
String logPre = LOG_PRE +"[creditApply][授信申请]";
log.info("{} request={}",logPre,request);
ApplyLoanData applyLoanData = ${prefix}CreditApplyRequest.getApplyLoanData(request);
ServiceResult<ApplyLoanRequestData> serviceResult = standardApplicationService.applyLoan(applyLoanData);
if (!serviceResult.isSuccess()) {
log.error("{},进件失败,result={}", logPre, serviceResult);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), serviceResult.getMessage()).toString();
throw new CommonBizException("调用进件服务异常");
}
${prefix}CreditApplyResult result = new ${prefix}CreditApplyResult(serviceResult.getData().getApplyNo());
return ${prefix}ResultUtils.success(result).toString();
ApplyLoanRequestData applyResult = serviceResult.getData();
}
......@@ -178,7 +168,8 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String queryCreditApply(${prefix}QueryCreditApplyRequest request){
@Override
public void queryCreditApply(${prefix}QueryCreditApplyRequest request){
String logPre = LOG_PRE + "[queryCreditApply][${prefix}查询授信结果]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
......@@ -186,46 +177,50 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ServiceResult<LoanOrderMapping> orderMappingServiceResult = moOrderRepresentationService.queryChannelOrderByOrderNoAndChannelId(channelOrderNo, channelId);
if (!orderMappingServiceResult.isSuccess() || Objects.isNull(orderMappingServiceResult.getData())) {
log.error("{}查询授信订单失败, result={}, request={}", logPre, orderMappingServiceResult, request);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),orderMappingServiceResult.getMessage()).toString();
throw new CommonBizException("查询授信订单失败");
}
LoanOrderMapping orderMapping = orderMappingServiceResult.getData();
${prefix}QueryCreditApplyResult result = new ${prefix}QueryCreditApplyResult();
ServiceResult<OrderStatus> orderStatusServiceResult = standardApplicationService.queryOrderStatus(orderMapping.getChannelOrderNo(), null, channelId, null);
LoanMapping loanMapping = loanMappingService.findByOrderMappingIdAndChannelId(orderMapping.getId(), channelId);
String channelLoanNo = null;
if (loanMapping != null) {
channelLoanNo = loanMapping.getChannelLoanNo();
}
ServiceResult<OrderStatus> orderStatusServiceResult = standardApplicationService.queryOrderStatus(orderMapping.getChannelOrderNo(), channelLoanNo, channelId, null);
if (!orderStatusServiceResult.isSuccess()) {
log.error("{},查询订单状态错误., serviceResult={}, channelOrderNo={}", logPre, orderStatusServiceResult, orderMapping.getChannelOrderNo());
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),orderStatusServiceResult.getMessage()).toString();
log.error("{},查询订单状态错误 , serviceResult={}, channelOrderNo={}", logPre, orderStatusServiceResult, orderMapping.getChannelOrderNo());
throw new CommonBizException("查询订单状态错误");
}
OrderStatus orderStatus = orderStatusServiceResult.getData();
OrderStatusEnums orderStatusEnums = orderStatusServiceResult.getData().getStatus();
Long updateTime = orderStatus.getUpdateTime();
if (JinShanUtil.finalStatus(orderStatusEnums)) {
// 放款失败、关单、结清的订单返回授信已失效
result.setCreditResult(${prefix}CreditResultEnum.CREDIT_INVALID);
result.setCreditExpireDate(DateUtil.format(updateTime, DateUtil.YYYY_MM_DD));
return ${prefix}ResultUtils.success(result).toString();
if (ChannelUtils.finalStatus(orderStatusEnums)) {
// 放款失败、关单、结清的订单情况
}
if (OrderStatusEnums.APPROVE_ING.equals(orderStatusEnums) || OrderStatusEnums.CREDIT_ORDER_SUBMITTING.equals(orderStatusEnums)) {
result.setCreditResult(${prefix}CreditResultEnum.CREDIT_APPROVAL);
return ${prefix}ResultUtils.success(result).toString();
// 审核中的情况
}
if (OrderStatusEnums.REJECT.equals(orderStatusEnums)) {
result.setCreditResult(${prefix}CreditResultEnum.REFUSE);
result.setNextApplyTime(DateUtil.format(updateTime * 1000 + JinShanUtil.LIMIT_EXPIRE_DAY * DateUtil.ONE_DAY_MILLISECONDS, DateUtil.YYYY_MM_DD));
result.setCreditInfo("授信拒绝");
return ${prefix}ResultUtils.success(result).toString();
// 审核拒绝的情况
}
String productId = ProductUtil.getProductId(channelId);
ChannelOrder channelOrderQueryCreditStatus = ChannelOrder.builder()
.channelOrderNo(channelOrderNo)
.channelId(channelId)
.build();
ServiceResult<QueryCreditStatusResponseModel> creditStatus = standardApplicationService.queryCreditStatus(channelOrderQueryCreditStatus);
if (!creditStatus.isSuccess()) {
log.error("{}查询失败,serviceResult={}, userId={}, productId={}", logPre, creditStatus, orderMapping.getQgUserId(), productId);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),creditStatus.getMessage()).toString();
ServiceResult<QueryCreditStatusResponseModel> creditStatusServiceResult = standardApplicationService.queryCreditStatus(channelOrderQueryCreditStatus);
if (!creditStatusServiceResult.isSuccess()) {
log.error("{}查询失败,serviceResult={}, userId={}, productId={}", logPre, creditStatusServiceResult, orderMapping.getQgUserId(), productId);
throw new CommonBizException("查询授信订单状态服务异常");
}
QueryCreditStatusResponseModel queryCreditStatusResponse = creditStatusServiceResult.getData();
String creditStatus = queryCreditStatusResponse.getCreditStatus();
if (CreditStatusEnum.CANCEL_LOAN.getValue().equals(creditStatus)) {
// 授信订单为取消的情况
}
result = ${prefix}QueryCreditApplyResult.getSuccessResult(creditStatus.getData());
return ${prefix}ResultUtils.success(result).toString();
}
......@@ -235,7 +230,8 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String querySupportBankcards(${prefix}QuerySupportBankcardsRequest request){
@Override
public void querySupportBankcards(${prefix}QuerySupportBankcardsRequest request){
String logPre = LOG_PRE + "[querySupportBankcards][${prefix}查询支持的银行列表]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
......@@ -246,10 +242,10 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ServiceResult<List<MoSimpleBank>> serviceResult = standardApplicationService.querySupportBank(channelOrder);
if (!serviceResult.isSuccess()) {
log.error("{},查询失败,result={} param={}", logPre, serviceResult,channelOrder);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),serviceResult.getMessage()).toString();
throw new CommonBizException("查询支持的银行列表服务异常");
}
${prefix}QuerySupportBankcardsResult result = ${prefix}QuerySupportBankcardsResult.getSuccessResult(serviceResult.getData());
return ${prefix}ResultUtils.success(result).toString();
List<MoSimpleBank> supportBankList = serviceResult.getData();
}
/**
......@@ -258,7 +254,8 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String queryLoanTrial(${prefix}QueryLoanTrialRequest request){
@Override
public void queryLoanTrial(${prefix}QueryLoanTrialRequest request){
String logPre = LOG_PRE + "[queryLoanTrial][${prefix}查询试算数据]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
......@@ -269,10 +266,10 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ServiceResult<TrialRepaymentRepresentation> serviceResult = standardApplicationService.trialRepayment(channelOrder, request.getLoanAmount(), request.getLoanTerm());
if (!serviceResult.isSuccess()) {
log.error("{}失败,serviceResult={},request={}", logPre, serviceResult, request);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),serviceResult.getMessage()).toString();
throw new CommonBizException("借款试算服务异常");
}
${prefix}QueryLoanTrialResult result = ${prefix}QueryLoanTrialResult.getCoverResult(serviceResult.getData());
return ${prefix}ResultUtils.success(result).toString();
TrialRepaymentRepresentation trialRepaymentRepresentation = serviceResult.getData();
}
......@@ -282,7 +279,8 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String bindBankCardSms(${prefix}BindBankCardSmsRequest request){
@Override
public void bindBankCardSms(${prefix}BindBankCardSmsRequest request){
String logPre = LOG_PRE + "[bindBankCardSms][${prefix}绑卡发短信]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
......@@ -293,10 +291,10 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ServiceResult<BindCardVerifyInfo> serviceResult = standardApplicationService.bindCard(channelId, request.getChannelOrderNo(), command);
if (!serviceResult.isSuccess()) {
log.error("{}错误,serviceResult={}, request={}", logPre, serviceResult, request);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), serviceResult.getMessage()).toString();
throw new CommonBizException("绑卡服务异常");
}
${prefix}BindBankCardSmsResult result = new ${prefix}BindBankCardSmsResult(serviceResult.getData().getVerificationId());
return ${prefix}ResultUtils.success(result).toString();
BindCardVerifyInfo bindCardVerifyInfo = serviceResult.getData();
}
/**
......@@ -305,7 +303,8 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String verifyBindSms(${prefix}VerifyBindSmsRequest request){
@Override
public void verifyBindSms(${prefix}VerifyBindSmsRequest request){
String logPre = LOG_PRE + "[verifyBindSms][${prefix}验卡]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
......@@ -313,16 +312,13 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
command.setVerificationId(request.getVerifyId());
command.setVerificationCode(request.getSmsCode());
ServiceResult<BindCardConfirm> serviceResult = standardApplicationService.bindCardVerify(channelId, request.getChannelOrderNo(), command);
${prefix}VerifyBindSmsResult result = new ${prefix}VerifyBindSmsResult();
if (!serviceResult.isSuccess()) {
log.error("{},错误, serviceResult={}, request={}", logPre, serviceResult, request);
result.setSignStatus(${prefix}SignStatusEnum.FAIL);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), serviceResult.getMessage(), result).toString();
throw new CommonBizException("验卡服务异常");
}
result.setSignStatus(${prefix}SignStatusEnum.SUCCESS);
result.setBindId(serviceResult.getData().getBankCardId());
return ${prefix}ResultUtils.success(result).toString();
BindCardConfirm bindCardConfirm = serviceResult.getData();
}
......@@ -332,14 +328,15 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String applyWithdraw(${prefix}ApplyLoanRequest request){
@Override
public void applyWithdraw(${prefix}ApplyLoanRequest request){
String logPre = LOG_PRE + "[applyWithdraw][${prefix}申请提现]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
ServiceResult<MoBankCardInfoOutput> bankInfoResult = moOrderRepresentationService.queryBankCardInfoByBindCardId(request.getBindId());
if (!bankInfoResult.isSuccess()) {
log.error("{},错误,bankInfoResult={} bindId={}", logPre, bankInfoResult,request.getBindId());
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), "根据bindId未查询到银行卡信息").toString();
throw new CommonBizException("查询卡信息服务异常");
}
MoBankCardInfoOutput bankCardInfoOutput = bankInfoResult.getData();
WithDrawCommand command = new WithDrawCommand();
......@@ -348,15 +345,15 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ChannelOrder order = ChannelOrder.builder()
.channelId(channelId)
.channelOrderNo(request.getChannelOrderNo())
.channelLoanNo(request.getChannelLoanNo())
.build();
ServiceResult<WithdrawResult> serviceResult = standardApplicationService.withdraw(order, command);
if (!serviceResult.isSuccess()) {
log.error("{},申请提现失败,serviceResult={}, request={}", logPre, serviceResult, command);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),serviceResult.getMessage()).toString();
throw new CommonBizException("申请提现服务异常");
}
${prefix}ApplyLoanResult result = new ${prefix}ApplyLoanResult();
result.setLoanNo(serviceResult.getData().getLoanId());
return ${prefix}ResultUtils.success(result).toString();
WithdrawResult withdrawResult = serviceResult.getData();
}
......@@ -367,7 +364,8 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String queryRepayResult(${prefix}QueryRepayRequest request){
@Override
public void queryRepayResult(${prefix}QueryRepayRequest request){
String logPre = LOG_PRE + "[queryRepayResult][${prefix}查询还款结果]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
......@@ -377,7 +375,7 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ServiceResult<QueryNormalRepayRepresentation> serviceResult = standardApplicationService.normalRepayResultQuery(channelOrder, request.getBusinessFlowNo());
if (!serviceResult.isSuccess()) {
log.error("{},失败,serviceResult={}, request={}", logPre, serviceResult, request);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),serviceResult.getMessage()).toString();
throw new CommonBizException("查询还款结果服务异常");
}
QueryNormalRepayRepresentation repayResult = serviceResult.getData();
Long loanId = Long.valueOf(repayResult.getLoanId());
......@@ -385,20 +383,51 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
LoanMapping loanMapping = loanMappingService.findByLoanIdAndChannelId(loanId, channelId);
if (Objects.isNull(loanMapping)) {
log.error("{}通过loanId查询LoanMapping为空, loanId={}, channelId={}", logPre, loanId, channelId);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), "通过loanId查询LoanMapping为空").toString();
throw new CommonBizException("查询借据信息异常");
}
String channelLoanNo = loanMapping.getChannelLoanNo();
// 查询还款计划
ServiceResult<OrderRepaymentRepresentation> repaymentServiceResult = standardApplicationService.repaymentPlanQueryByCycleQuota(loanId);
if (!repaymentServiceResult.isSuccess()) {
log.error("{},查询还款计划返回错误或无数据,loanId={}", logPre, loanId);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(),repaymentServiceResult.getMessage()).toString();
throw new CommonBizException("查询还款计划异常");
}
List<RepaymentPlanItem> repaymentPlans = repaymentServiceResult.getData().getRepaymentPlans();
${prefix}QueryRepayResult result = ${prefix}QueryRepayResult.getSuccessResult(channelLoanNo, repayResult, repaymentPlans);
return ${prefix}ResultUtils.success(result).toString();
}
/**
* 借款结果查询
*
* @param request
* @return
*/
public void queryLoanResult(${prefix}QueryLoanRequest request){
String logPre = LOG_PRE + "[queryLoanResult][${prefix}查询借款结果]";
log.info("{} request={}",logPre,request);
Long channelId =request.getChannelId();
String channelLoanNo = request.getChannelLoanNo();
LoanMapping loanMapping = loanMappingService.findByChannelLoanNoAndChannelId(channelLoanNo, channelId);
if (Objects.isNull(loanMapping)) {
log.error("{},查询借款订单为空,channelLoan={}", logPre, channelLoanNo);
throw new CommonBizException("查询借据信息异常");
}
LoanOrderMapping orderMapping = loanOrderMappingService.findById(loanMapping.getOrderMappingId());
if (Objects.isNull(orderMapping)) {
log.error("{}查询授信订单失败, result为空, request={}", logPre, request);
throw new CommonBizException("查询授信订单异常");
}
ServiceResult<OrderStatus> serviceResult = standardApplicationService.queryOrderStatus(orderMapping.getChannelOrderNo(), channelLoanNo, channelId, null);
if (!serviceResult.isSuccess()) {
log.error("{}查询订单状态失败, result={}, request={}", logPre, serviceResult, request);
throw new CommonBizException("查询订单状态服务异常");
}
OrderStatus orderStatus = serviceResult.getData();
}
/**
* 主动还款
......@@ -406,14 +435,15 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
* @param request
* @return
*/
public String repayByPlan(${prefix}RepayByPlanRequest request){
@Override
public void repayByPlan(${prefix}RepayByPlanRequest request){
String logPre = LOG_PRE + "[repayByPlan][{prefix}发起主动还款]";
log.info("{} request={}",logPre,request);
Long channelId = request.getChannelId();
ServiceResult<MoBankCardInfoOutput> bankInfoResult = moOrderRepresentationService.queryBankCardInfoByBindCardId(request.getBindId());
if (!bankInfoResult.isSuccess()) {
log.error("{},错误,bankInfoResult={}", logPre, bankInfoResult);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), bankInfoResult.getMessage()).toString();
throw new CommonBizException("查询卡信息服务异常");
}
MoBankCardInfoOutput bankCardInfoOutput = bankInfoResult.getData();
......@@ -432,58 +462,14 @@ public class ${prefix}ServiceImpl implements ${prefix}Service,IAsyncApplyService
ServiceResult<RepayResultRepresentation> serviceResult = standardApplicationService.normalRepayByCycleQuota(channelOrder, command);
if (!serviceResult.isSuccess()) {
log.error("{},失败, serviceResult={}, channelOrder={}, NormalRepayCommand={}", logPre, serviceResult, channelOrder, command);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), serviceResult.getMessage()).toString();
}
${prefix}RepayByPlanResult result = new ${prefix}RepayByPlanResult(serviceResult.getData().getRepaymentNo());
return ${prefix}ResultUtils.success(result).toString();
throw new CommonBizException("还款服务异常");
}
/**
* 借款结果查询
*
* @param request
* @return
*/
public String queryLoanResult(${prefix}QueryLoanRequest request){
String logPre = LOG_PRE + "[queryLoanResult][${prefix}查询借款结果]";
log.info("{} request={}",logPre,request);
Long channelId =request.getChannelId();
String channelLoanNo = request.getChannelLoanNo();
LoanMapping loanMapping = loanMappingService.findByChannelLoanNoAndChannelId(channelLoanNo, channelId);
if (Objects.isNull(loanMapping)) {
log.error("{},查询借款订单为空,channelLoan={}", logPre, channelLoanNo);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), "参数错误").toString();
}
LoanOrderMapping orderMapping = loanOrderMappingService.findById(loanMapping.getOrderMappingId());
if (Objects.isNull(orderMapping)) {
log.error("{}查询授信订单失败, result为空, request={}", logPre, request);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), "参数错误").toString();
}
ServiceResult<OrderStatus> serviceResult = standardApplicationService.queryOrderStatus(orderMapping.getChannelOrderNo(), channelLoanNo, channelId, null);
if (!serviceResult.isSuccess()) {
log.error("{}查询订单状态失败, result={}, request={}", logPre, serviceResult, request);
return ${prefix}ResultUtils.fail(${prefix}CodeEnum.ERROR.getCode(), "参数错误").toString();
RepayResultRepresentation repayResultRepresentation = serviceResult.getData();
}
return ${prefix}ResultUtils.success(serviceResult.getData()).toString();
}
@Override
public ApplyLoanData getApplyLoanData(Object taskBody) {
${prefix}CreditApplyRequest request = (${prefix}CreditApplyRequest) taskBody;
return ${prefix}CreditApplyRequest.getApplyLoanData(request);
}
@Override
public void failCallBack(Object taskBody) {
}
@Override
public StandardApplicationService getStandardApplicationService() {
return standardApplicationService;
}
}
\ No newline at end of file
......@@ -9,181 +9,16 @@ import org.apache.commons.lang3.StringUtils;
* @date ${.now?string('yyyy-MM-dd HH:mm:ss')}
*/
public enum ${prefix}CodeEnum implements ApplicationServiceCode {
SUCCESS("100000", "成功"),
ERROR("200000", "异常"),
SIGN_ERROR("200001", "加签失败"),
VERIFY_SIGN_ERROR("200002", "验签失败"),
DECRYPT_ERROR("200003", "解密失败"),
ENCRYPTION_ERROR("200004", "加密失败"),
TIME_OUT_ERROR("200005", "系统超时"),
SYSTEM_ERROR("200006", "系统异常"),
PARAM_ERROR("200007", "无效的请求参数"),
AGREEMENT_NULL("200900", "查询没有数据"),
// 准入
USER_ACCESS_NO("200100", "准入失败"),
USER_REPEAT("200101", "重复用户"),
// 联合注册
USER_REGISTER_ERROR("200200", "注册失败(非准入失败导致)"),
USER_REGISTER_ACCESS_ERROR("200201", "注册失败(准入失败导致)"),
//绑卡
BIND_PHONE_ERROR("200300", "预留手机号错误"),
BIND_IDNO_ERROR("200301", "身份证验证失败"),
BIND_BANKCARDNO_ERROR("200302", "银行卡已绑定"),
BIND_OVERDUE_ERROR("200303", "验证码过期"),
BIND_NAME_ERROR("301204", "实名认证不通过"),
BIND_NAME_AND_ID_ERROR("301205", "姓名身份证号码不一致"),
BIND_BANKCARDNO_PHONE_ERROR("301206", "银行卡预留手机不一致"),
BIND_BANKCARDNO_SUPPORT_ERROR("301207", "银行卡不支持"),
BIND_SEND_FREQUENTLY_ERROR("301208", "发送短信过于频繁"),
// 提现
;
@Getter
private String code;
@Getter
private String msg;
${prefix}CodeEnum(String value, String msg) {
this.code = value;
this.msg = msg;
@Override
public String getCode() {
return null;
}
/**
* 预审
* REVIEW_USER_ERROR("0100", "复申用户"),
* BLACKLIST_USER_ERROR("0200", "黑名单用户"),
* EXIST_LOAN_USER_ERROR("0300", "在贷用户,不允许进件"),
* OVERDUE_ERROR("0400", "逾期记录"),
* REFUSE_ERROR("0500", "30天内拒绝"),
* EXIST_LOANING_ERROR("0600", "存在申请订单"),
* AGE_ERROR("0701", "年龄不符合要求"),
* NOT_WITHDRAW_ERROR("0702", "审核已通过未提现"),
* BLACKLIST_USERS_ERROR("0703", "黑名单用户"),
*
* @param code
* @return
*/
public static ApplicationServiceCode getUserAccessCode(String code) {
if (StringUtils.isEmpty(code)) {
return USER_ACCESS_NO;
}
switch (code) {
case "0300":
return USER_REPEAT;
case "0100":
case "0200":
case "0400":
case "0500":
case "0600":
case "0701":
case "0702":
case "0703":
return USER_ACCESS_NO;
default:
return USER_ACCESS_NO;
}
@Override
public String getMsg() {
return null;
}
/**
* 绑卡
*
* @param code
* @return
*/
public static ApplicationServiceCode getBindSmsCode(String code) {
if (StringUtils.isEmpty(code)) {
return ERROR;
}
switch (code) {
case "0010":
return ERROR;
case "0011":
return ERROR;
case "0100":
return ERROR;
case "0101":
return BIND_BANKCARDNO_SUPPORT_ERROR;
case "0102":
return BIND_PHONE_ERROR;
case "0103":
return ERROR;
default:
return ERROR;
}
}
/**
* 验卡
*
* @param code
* @return
*/
public static ApplicationServiceCode getVerifySmsCode(String code) {
if (StringUtils.isEmpty(code)) {
return ERROR;
}
switch (code) {
case "0101":
return ERROR;
case "0010":
return BIND_OVERDUE_ERROR;
default:
return ERROR;
}
}
/**
* 提现
* 200500
* 借款金额超限
* <p>
* 200501
* 当日放款总额超限
* <p>
* 200502
* 贷款期数不支持
* <p>
* 200503
* 额度审批未通过
*
* @param code
* @return
*/
public static ApplicationServiceCode getApplyWithdraw(String code) {
switch (code) {
case "0003":
case "1001":
return ERROR;
case "0004":
return ERROR;
case "0101":
return ERROR;
case "0200":
return ERROR;
default:
return ERROR;
}
}
/**
* 如果 code == ERROR("200000", "异常"), 则取内部系统具体的错误信息
*
* @param code 根据内部系统返回的code转换成金山的code
* @param msg 内部系统详细的msg
* @return 返回给金山的msg
*/
public static String getReturnMsg(ApplicationServiceCode code, String msg) {
if (${prefix}CodeEnum.ERROR.equals(code)) {
return msg;
}
return code.getMsg();
}
}
}
package ${utilPackage};
import cn.quantgroup.loanflow.infrastructure.code.ApplicationServiceCode;
import lombok.Data;
import java.io.Serializable;
public class ${prefix}ResultUtils {
public static ResultDTO success(String msg, Object data) {
return new ResultDTO(msg, data);
}
public static ResultDTO success(Object data) {
return new ResultDTO(data);
}
public static ResultDTO success() {
return new ResultDTO();
}
public static ResultDTO fail(String code, String msg, Object data) {
return new ResultDTO(code, msg, data);
}
public static ResultDTO fail(String code, String msg) {
return new ResultDTO(code, msg, null);
}
public static ResultDTO fail(ApplicationServiceCode code) {
return new ResultDTO(code.getCode(), code.getMsg(), null);
}
@Data
public static class ResultDTO implements Serializable {
private String code;
private String message;
private Object data;
public ResultDTO() {
this.code = "100000";
this.message = "成功";
}
public ResultDTO(Object data) {
this.data = data;
this.code = "100000";
this.message = "成功";
}
public ResultDTO(String msg) {
this.code = "100000";
this.message = msg;
}
public ResultDTO(String message, Object data) {
this.code = "100000";
this.message = message;
this.data = data;
}
public ResultDTO(String code, String message, Object data) {
this.code = code;
this.message = message;
this.data = data;
}
public boolean checkSuccess() {
return "100000".equals(code);
}
}
}
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