接口流程拉通方案文档变更记录序号变更(+/-)说明作者版本号日期批准1接口流程拉通方案方浩1.02016.9.621.引言1.1编写目的和范围美的消费金融整个流程是通过把各个业务做成接口通过dubbo对外提供服务。各个模块之间是通过调用接口来实现业务的。对于开发人员:此文档例出接口提供方应实现哪些接口和接口调用方对应的调用接口的方法,以及各模块接口调用的关系。对于业务人员帮助熟悉理解整个流程,更好理解各业务模块之间的关系。2.接口设计总体概述2.1流程概述本方案涉及的接口有产品,渠道,风控,贷前贷中,核算,涉及到的系统有EDP,渠道,cmis,核算.系统之间通过互调接口实现业务.整个业务流程接口,渠道调产品的接口得到相关的产品信息然后调风控的接口进行信用的评估,评估通过后在cmis中进行美的贷审批,审批后调用核算接口进行放款结算相关业务,流程图如下:3.各个模块之间接口互相调用关系各个模块之间接口提供者和调用分开,各个模块接口由各组成员开发实现,对外通过duboo暴露接口注入zookeeper.当业务需要调用接口的时候直接调用暴露的接口实现业务.各接口调用关系如下:3.1产品组3.2风控组3.3核算组3.4渠道组3.5贷前贷中组4.接口串连demo4.1Web容器加载dubbo启动类Tomcat启动时读取配置文件web.xml,web.xml所在目录:/cmismd/WebContent/WEB-INF/web.xml;在web里增加servletservletservlet-nameProviderInit/servlet-nameservlet-classcom.yucheng.cmis.dubbo.start.Provider/servlet-classload-on-startup6/load-on-startup/servlet类Providerinit()方类启动dubbo4.2Dubbo接口参数配制Dubbo启动时加载参数配制:applicationContextService.xml所在目录:/cmismd/src/main/config/applicationContextService.xml参数解析:dubbo:application:提供方应用信息,用于计算依赖关系dubbo:registry:使用注册中心暴露服务地址dubbo:protocol:用dubbo协议在端口暴露服务dubbo:service:声明需要暴露的服务接口4.3渠道调用产品接口:门店信息查询applicationContextService.xml产品服务提供配制:!--根据店员代码取得其所在门店或商户的信息--beanid=sCooprExternalServiceclass=com.yucheng.cmis.dubbo.service.scoopr.impl.SCooprExternalServiceInterfaceImpl/dubbo:serviceinterface=com.yucheng.cmis.dubbo.service.scoopr.SCooprExternalServiceInterfaceref=sCooprExternalService/服务接口类:目录:/cmismd/src/main/java/com/yucheng/cmis/dubbo/service/scoopr定义接口示例:SCooprExternalServiceInterfacepackagecom.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接口实现类示例:SCooprExternalServiceInterfaceImplpackagecom.yucheng.cmis.dubbo.service.scoopr.impl;importjava.math.BigDecimal;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.ob.SCooprBO;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;/***p门店信息查询:/p*@authoryusys*@moduleIdcom.yucheng.cmis.dubbo.service*@createDate2016-8-2310:09:59*/@ServicepublicclassSCooprExternalServiceInterfaceImplimplementsSCooprExternalServiceInterface{/***根据门店员工代码查询门店信息*@paramusrCode门店员工代码*@returnSCooprBO门店信息*/@OverridepublicSCooprBOgetSCooprByUsrCode(StringusrCode){SCooprsCoopr=getDBData(usrCode,getSCooprByUsrCode);SCooprBOdest=newSCooprBO();dest.putData(sCoopr.getDataMap());returndest;}/***根据门店员工代码查询门店信息*@paramusrCde*@returnSCooprBO*/publicSCooprBOqueryStoreInfo(StringusrCde){SCooprsCoopr=getDBData(usrCde,getSCooprByUsrCode);SCooprBOdest=newSCooprBO();dest.putData(sCoopr.getDataMap());returndest;}/***根据合作机构代码查询付款间隔*@paramcooprCode*@return*/@OverridepublicIntegergetCooprPayInterval(StringcooprCode){returngetDBData(cooprCode,getCooprPayIntervalByCooprCode);}/***根据合作机构代码查询付款阈值*@paramcooprCode*@return*/@OverridepublicBigDecimalgetCooprPayThreshold(StringcooprCode){returngetDBData(cooprCode,getCooprPayThresholdByCooprCode);}/***根据合作机构代码查询日放款上限*@paramcooprCode*@return*/@OverridepublicBigDecimalgetUpperLimitForDay(StringcooprCode){returngetDBData(cooprCode,getUpperLimitForDayByCooprCode);}/**根据合作机构代码查询付款延期天数**@paramcooprCode*@return*/@OverridepublicIntegergeMaxDeferDays(StringcooprCode){returngetDBData(cooprCode,getMaxDeferDaysByCooprCode);}@SuppressWarnings(unchecked)privateTTgetDBData(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,EMPLog.ERROR,0,String.format(getDBData:sqlId:%s,singleValue:%s,catcherromsg:%s,sqlId,singleValue,e.getMessage()));}finally{if(connection!=null){try{connection.close();}catch(SQLExceptione){e.printStackTrace();EMPLog.log(SCooprExternalServiceInterfaceImpl,EMPLog.ERROR,0,String.format(getDBData:sqlId:%s,singleValue:%s,finallyerromsg:%s,sqlId,singleValue,e.getMessage()));}}}returnret;}}服务接口javabeen:packagecom.yucheng.cmis.dubbo.ob;importjava.util.Map;/***门店信息*@paramusrCde**/publicclassSCooprBOextendsCMISBO{/***构造函数*/publicSCooprBO(){init();}/***构造函数*/publicSCooprBO(MapinitData){init();this.dataPool.putAll(initData);}/***构造函数,初始化表名和主键字段名*/publicvoidinit(){this.tableName=S_COOPR;this.primaryKey=newString[]{coopr_seq,};}/***p获取合作机构代码的值/p*@return返回String合作机构代码*/publicStringgetCooprCde(){returnthis.dataPool.get(coopr_cde)==null?null:(String)this.data