接口流程拉通方案.docx
- 文档编号:29486802
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:32
- 大小:24.23KB
接口流程拉通方案.docx
《接口流程拉通方案.docx》由会员分享,可在线阅读,更多相关《接口流程拉通方案.docx(32页珍藏版)》请在冰豆网上搜索。
接口流程拉通方案
接口流程拉通方案
文档变更记录
序号
变更(+/-)说明
作者
版本号
日期
批准
1
接口流程拉通方案
方浩
1.引言
1.1编写目的和范围
美的消费金融整个流程是通过把各个业务做成接口通过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启动时读取配置文件,所在目录:
/cmismd/WebContent/WEB-INF/;
在web里增加servlet
类Provider init()方类启动dubbo
4.2Dubbo接口参数配制
Dubbo启动时加载参数配制:
所在目录:
/cmismd/src/main/config/
参数解析:
dubbo:
application:
提供方应用信息,用于计算依赖关系
dubbo:
registry:
使用注册中心暴露服务地址
dubbo:
protocol:
用dubbo协议在端口暴露服务
dubbo:
service:
声明需要暴露的服务接口
4.3渠道调用产品接口:
门店信息查询
产品服务提供配制:
--根据店员代码取得其所在门店或商户的信息-->
serviceinterface=ref="sCooprExternalService"/> 服务接口类: 目录: /cmismd/src/main/java/com/yucheng/cmis/dubbo/service/scoopr 定义接口示例: SCooprExternalServiceInterface package import import /** * 门店信息查询:
*@authoryusys
*@moduleId
*@createDate2016-8-2310:
09:
59
*/
publicinterfaceSCooprExternalServiceInterface{
/**
*根据门店员工代码查询门店信息
*@paramusrCde
*@returnSCooprBO
*/
publicSCooprBOqueryStoreInfo(StringusrCde);}
服务接口实现类:
目录:
/cmismd/src/main/java/com/yucheng/cmis/dubbo/service/scoopr/impl
接口实现类示例:
SCooprExternalServiceInterfaceImpl
package
import
import
import
import
import
import
import
import
import
import
import;
/**
*
门店信息查询:
*@authoryusys
*@moduleId
*@createDate2016-8-2310:
09:
59
*/
@Service
publicclassSCooprExternalServiceInterfaceImplimplementsSCooprExternalServiceInterface{
/**
*根据门店员工代码查询门店信息
*@paramusrCode门店员工代码
*@returnSCooprBO门店信息
*/
@Override
publicSCooprBOgetSCooprByUsrCode(StringusrCode){
SCooprsCoopr=getDBData(usrCode,"getSCooprByUsrCode");
SCooprBOdest=newSCooprBO();
());
returndest;
}
/**
*根据门店员工代码查询门店信息
*@paramusrCde
*@returnSCooprBO
*/
publicSCooprBOqueryStoreInfo(StringusrCde){
SCooprsCoopr=getDBData(usrCde,"getSCooprByUsrCode");
SCooprBOdest=newSCooprBO();
());
returndest;
}
/**
*根据合作机构代码查询付款间隔
*@paramcooprCode
*@return
*/
@Override
publicIntegergetCooprPayInterval(StringcooprCode){
returngetDBData(cooprCode,"getCooprPayIntervalByCooprCode");
}
/**
*根据合作机构代码查询付款阈值
*@paramcooprCode
*@return
*/
@Override
publicBigDecimalgetCooprPayThreshold(StringcooprCode){
returngetDBData(cooprCode,"getCooprPayThresholdByCooprCode");
}
/**
*根据合作机构代码查询日放款上限
*@paramcooprCode
*@return
*/
@Override
publicBigDecimalgetUpperLimitForDay(StringcooprCode){
returngetDBData(cooprCode,"getUpperLimitForDayByCooprCode");
}
/**根据合作机构代码查询付款延期天数
*
*@paramcooprCode
*@return
*/
@Override
publicIntegergeMaxDeferDays(StringcooprCode){
returngetDBData(cooprCode,"getMaxDeferDaysByCooprCode");
}
@SuppressWarnings("unchecked")
private
Connectionconnection=null;
Tret=null;
try{
connection=();
ret=(T)(sqlId,singleValue,connection);
}catch(Exceptione){
();
try{
();
}catch(SQLExceptione1){
();
}
("SCooprExternalServiceInterfaceImpl",,0,("getDBData:
sqlId:
%s,singleValue:
%s,catcherromsg:
%s",sqlId,singleValue,()));
}finally{
if(connection!
=null){
try{
();
}catch(SQLExceptione){
();
("SCooprExternalServiceInterfaceImpl",,0,("getDBData:
sqlId:
%s,singleValue:
%s,finallyerromsg:
%s",sqlId,singleValue,()));
}
}
}
returnret;
}
}
服务接口javabeen:
package
import
/**
*门店信息
*@paramusrCde
*
*/
publicclassSCooprBOextendsCMISBO{
/**
*构造函数
*/
publicSCooprBO(){
init();
}
/**
*构造函数
*/
publicSCooprBO(MapinitData){
init();
}
/**
*构造函数,初始化表名和主键字段名
*/
publicvoidinit(){
="S_COOPR";
=newString[]{"coopr_seq",};
}
/**
*
获取合作机构代码的值
*@return返回String合作机构代码
*/
publicStringgetCooprCde(){
return"coopr_cde")==null?
null:
(String)"coopr_cde");
}
/**
*
设置合作机构代码的值
*@paramCooprCdeString合作机构代码
*/
publicvoidsetCooprCde(StringCooprCde){
"coopr_cde",CooprCde);
}
/**
*
获取合作机构名称的值
*@return返回String合作机构名称
*/
publicStringgetCooprName(){
return"coopr_name")==null?
null:
(String)"coopr_name");
}
/**
*
设置合作机构名称的值
*@paramCooprNameString合作机构名称
*/
publicvoidsetCooprName(StringCooprName){
"coopr_name",CooprName);
}
/**
*
获取合作状态的值
*@return返回String合作状态
*/
publicStringgetCooprSts(){
return"coopr_sts")==null?
null:
(String)"coopr_sts");
}
/**
*
设置合作状态的值
*@paramCooprStsString合作状态
*/
publicvoidsetCooprSts(StringCooprSts){
"coopr_sts",CooprSts);
}
/**
*
获取登录用户名的值
*@return返回String登录用户名
*/
publicStringgetUsrCde(){
return"usr_cde")==null?
null:
(String)"usr_cde");
}
/**
*
设置登录用户名的值
*@paramUsrCdeString登录用户名
*/
publicvoidsetUsrCde(StringUsrCde){
"usr_cde",UsrCde);
}
/**
*
获取用户姓名的值
*@return返回String用户姓名
*/
publicStringgetUsrName(){
return"usr_name")==null?
null:
(String)"usr_name");
}
/**
*
设置用户姓名的值
*@paramUsrNameString用户姓名
*/
publicvoidsetUsrName(StringUsrName){
"usr_name",UsrName);
}
/**
*
获取证件类型的值
*@return返回String证件类型
*/
publicStringgetUsrIdTyp(){
return"usr_id_typ")==null?
null:
(String)"usr_id_typ");
}
/**
*
设置证件类型的值
*@paramUsrIdTypString证件类型
*/
publicvoidsetUsrIdTyp(StringUsrIdTyp){
"usr_id_typ",UsrIdTyp);
}
/**
*
获取证件号码的值
*@return返回String证件号码
*/
publicStringgetUsrIdNo(){
return"usr_id_no")==null?
null:
(String)"usr_id_no");
}
/**
*
设置证件号码的值
*@paramUsrIdNoString证件号码
*/
publicvoidsetUsrIdNo(StringUsrIdNo){
"usr_id_no",UsrIdNo);
}
/**
*
获取A-生效,I-失效,W-待生效的值
*@return返回StringA-生效,I-失效,W-待生效
*/
publicStringgetUsrSts(){
return"usr_sts")==null?
null:
(String)"usr_sts");
}
/**
*
设置A-生效,I-失效,W-待生效的值
*@paramUsrStsStringA-生效,I-失效,W-待生效
*/
publicvoidsetUsrSts(StringUsrSts){
"usr_sts",UsrSts);
}
}
渠道调用产品配制:
--首次登陆获取门店信息-->
渠道调用接口实现:
@Autowired
privateSCooprExternalServiceInterfaceecfStoreService;
4.4渠道调风控接口:
芝麻信用
渠道调EDP芝麻信用接口:
授权
产品服务提供配制:
服务接口类:
目录:
l\commons\
接口报文解析示例:
AbstractPhaseInterceptor
;
publicclassMideaInterceptorextendsAbstractPhaseInterceptor
privatestaticfinalLoggerLOG=;
publicMideaInterceptor(){
super;
}
publicvoidhandleMessage(SoapMessagemessage)throwsFault{
解析报文的命名空================================*/
StringschemaNamespace="";
try{
reateXMLStreamReader(pis,encoding);
DepthXMLStreamReaderxmlReader=newDepthXMLStreamReader(reader);
if()=={
Stringns=();
SoapVersionsoapVersion=().getSoapVersion(ns);
(xmlReader,());
();
}
schemaNamespace=().getNamespaceURI();
("schemaNamespace:
"+schemaNamespace);
();
}catch(Exceptione){
("不合法报文,解析获取报文schemaNamespace错误");
();
thrownewRuntimeException("不合法报文,解析获取报文schemaNamespace错误");
}
根据Namespace选取对应的Endpoint==================================*/
Busbus=();
ServerRegistryserverRegistry=;
List
Endpointep=null;
for(Serverserver:
servers){
ep=();
if().getName().getNamespaceURI())){
break;
}else{
ep=null;
}
}
if(ep==null){
return;
}
/*=======================设置新Endpoint==================================*/
Exchangeex=();
ep);
());
());
etInInterceptors());
().getInInterceptors());
());
}
}
风控调EDP接口:
芝麻信用分
产品服务提供配制:
--根据店员代码取得其所在门店或商户的信息-->
<
--芝麻信用接口-->
referenceid="zmxyService"timeout="30000"version="" interface=/> 服务接口类: 目录: 定义接口示例: zmxyRule --使用zookeeper注册中心暴露服务地址--> registryprotocol="zookeeper"address=/> --提供方应用信息,用于计算依赖关系--> applicationname=/> publicclassDubboSpringUtil{ privatevolatilestaticApplicationContextact=null; publicstaticApplicationContextgetInstance(){ if(act==null){ synchronized{ if(act==null){ ,0, "-----------进入了DubooSpringUtil等于null-----------"); String[]configLocations=newString[1]; configLocations[0]="classpath: "; act=newClassPathXmlApplicationContext(configLocations); } } } returnact; } /** *获取芝麻信用分 *@paramreqMap *@paramconn *@return *@throwsException */ @SuppressWarnings({"rawtypes","unchecked"}) publicMap StringapplSeq=("appl_seq")); Stringid_no=("id_no")); Stringid_typ=("id_typ")); (id_no,"证件号码为空! "); etInstance().getModuleServiceById("lcApplServices","lcappl"); ZmxyServicezmxyService=(ZmxyService)().getBean("zmxyService"); ResponseData if(res! =null){ ("IN_芝麻信用分",()); ueryLcApplApptByApplSeqAndTyp(newBigDecimal(applSeq), "01",conn); (newBigDecimal())); (lcApplApplt,conn); ("zhiMaScore",()); heckZmxyScore(engInMap); if("02".equals("OUT_信用分是否准入").toString())){ ("id_typ",i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 接口 流程 方案