接口流程拉通方案Word下载.docx
《接口流程拉通方案Word下载.docx》由会员分享,可在线阅读,更多相关《接口流程拉通方案Word下载.docx(49页珍藏版)》请在冰豆网上搜索。
美的消费金融整个流程是通过把各个业务做成接口通过dubbo对外提供服务。
各个模块之间是通过调用接口来实现业务的。
对于开发人员:
此文档例出接口提供方应实现哪些接口和接口调用方对应的调用接口的方法,以及各模块接口调用的关系。
对于业务人员帮助熟悉理解整个流程,更好理解各业务模块之间的关系。
2.接口设计总体概述
2.1流程概述
本方案涉及的接口有产品,渠道,风控,贷前贷中,核算,涉及到的系统有EDP,渠道,cmis,核算.系统之间通过互调接口实现业务.整个业务流程接口,渠道调产品的接口得到相关的产品信息然后调风控的接口进行信用的评估,评估通过后在cmis中进行美的贷审批,审批后调用核算接口进行放款结算相关业务,流程图如下:
3.各个模块之间接口互相调用关系
各个模块之间接口提供者和调用分开,各个模块接口由各组成员开发实现,对外通过duboo暴露接口注入zookeeper.当业务需要调用接口的时候直接调用暴露的接口实现业务.各接口调用关系如下:
3.1产品组
3.2风控组
3.3核算组
3.4渠道组
3.5贷前贷中组
4.接口串连demo
4.1Web容器加载dubbo启动类
Tomcat启动时读取配置文件web.xml,web.xml所在目录:
/cmismd/WebContent/WEB-INF/web.xml;
在web里增加servlet
<
servlet>
<
servlet-name>
ProviderInit<
/servlet-name>
servlet-class>
com.yucheng.cmis.dubbo.start.Provider<
/servlet-class>
load-on-startup>
6<
/load-on-startup>
<
/servlet>
类Provider init()方类启动dubbo
4.2Dubbo接口参数配制
Dubbo启动时加载参数配制:
applicationContextService.xml所在目录:
/cmismd/src/main/config/applicationContextService.xml
参数解析:
dubbo:
application:
提供方应用信息,用于计算依赖关系
registry:
使用注册中心暴露服务地址
protocol:
用dubbo协议在端口暴露服务
service:
声明需要暴露的服务接口
4.3渠道调用产品接口:
门店信息查询
applicationContextService.xml产品服务提供配制:
!
--根据店员代码取得其所在门店或商户的信息-->
<
beanid="
sCooprExternalService"
class="
com.yucheng.cmis.dubbo.service.scoopr.impl.SCooprExternalServiceInterfaceImpl"
/>
serviceinterface="
com.yucheng.cmis.dubbo.service.scoopr.SCooprExternalServiceInterface"
ref="
/>
服务接口类:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/service/scoopr
定义接口示例:
SCooprExternalServiceInterface
packagecom.yucheng.cmis.dubbo.service.scoopr;
importjava.math.BigDecimal;
importcom.yucheng.cmis.dubbo.ob.SCooprBO;
/**
*<
p>
门店信息查询:
/p>
*@authoryusys
*@moduleIdcom.yucheng.cmis.dubbo.service
*@createDate2016-8-2310:
09:
59
*/
publicinterfaceSCooprExternalServiceInterface{
/**
*根据门店员工代码查询门店信息
*@paramusrCde
*@returnSCooprBO
*/
publicSCooprBOqueryStoreInfo(StringusrCde);
}
服务接口实现类:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/service/scoopr/impl
接口实现类示例:
SCooprExternalServiceInterfaceImpl
packagecom.yucheng.cmis.dubbo.service.scoopr.impl;
importjava.sql.Connection;
importjava.sql.SQLException;
importcom.alibaba.dubbo.config.annotation.Service;
importcom.ecc.emp.log.EMPLog;
importcom.yucheng.cmis.dao.SqlClient;
importcom.yucheng.cmis.dubbo.service.scoopr.SCooprExternalServiceInterface;
importcom.yucheng.cmis.retailloan.manager.CooperationAgency.domain.SCoopr;
importcom.yucheng.cmis.dubbo.util.DbUtil;
importcom.yucheng.cmis.dubbo.util.JSONUtils;
@Service
publicclassSCooprExternalServiceInterfaceImplimplementsSCooprExternalServiceInterface{
*@paramusrCode门店员工代码
*@returnSCooprBO门店信息
@Override
publicSCooprBOgetSCooprByUsrCode(StringusrCode){
SCooprsCoopr=getDBData(usrCode,"
getSCooprByUsrCode"
);
SCooprBOdest=newSCooprBO();
dest.putData(sCoopr.getDataMap());
returndest;
}
*/
publicSCooprBOqueryStoreInfo(StringusrCde){
SCooprsCoopr=getDBData(usrCde,"
*根据合作机构代码查询付款间隔
*@paramcooprCode
*@return
publicIntegergetCooprPayInterval(StringcooprCode){
returngetDBData(cooprCode,"
getCooprPayIntervalByCooprCode"
*根据合作机构代码查询付款阈值
publicBigDecimalgetCooprPayThreshold(StringcooprCode){
getCooprPayThresholdByCooprCode"
*根据合作机构代码查询日放款上限
publicBigDecimalgetUpperLimitForDay(StringcooprCode){
getUpperLimitForDayByCooprCode"
/**根据合作机构代码查询付款延期天数
*
publicIntegergeMaxDeferDays(StringcooprCode){
getMaxDeferDaysByCooprCode"
@SuppressWarnings("
unchecked"
)
private<
T>
TgetDBData(StringsingleValue,StringsqlId){
Connectionconnection=null;
Tret=null;
try{
connection=DbUtil.getConnection();
ret=(T)SqlClient.queryFirst(sqlId,singleValue,connection);
}catch(Exceptione){
e.printStackTrace();
try{
connection.rollback();
}catch(SQLExceptione1){
e1.printStackTrace();
}
EMPLog.log("
SCooprExternalServiceInterfaceImpl"
EM