TreeviewCopyright © aleen42 all right reserved, powered by aleen42
接口调用适配环境方案(二)
适用于没有前端的场景,此方法需要创建一个实体,用来存储获取到的地址信息,第一次调用多数据中心的地址,然后将结果存储到数据库中,后续先查看判断是否存在,如果存在直接返回,如果不存在再调用多数据中心接口
一、准备工作
二、公共参数函数
地址信息都写在此处,方便配置和调整
let AbstractTrigger = require('AbstractTrigger');
class MyTrigger extends AbstractTrigger {
execute(context,param){
let appcode = "GT31545AT9";
let data = {
"appcode":appcode,
"apiurl":{
"salesDelegate":"/yonbip/digitalModel/salesDelegate/list",
}
}
return {"appcode":data.appcode,"apiurl":data["apiurl"][context]};
}
}
exports({"entryPoint":MyTrigger});
三、获取租户所在数据中心域名
创建后端函数
let AbstractTrigger = require('AbstractTrigger');
class MyTrigger extends AbstractTrigger {
execute(context,param){
var tenantId = JSON.parse(AppContext()).currentUser.tenantId;
var sql = "select gatewayUrl from GT31545AT9.GT31545AT9.datacenter where infTenantId='"+tenantId+"'";
var gatewayUrl = ObjectStore.queryByYonQL(sql);
var strResponse ;
var buzUrl = "";
if(gatewayUrl.length!=0){
//默认取第一条数据
buzUrl = gatewayUrl[0].gatewayUrl;
}else{
//查询多数据中心域名
var dataCenterUrl = "https://apigateway.yonyoucloud.com/open-auth/dataCenter/getGatewayAddress?tenantId="+tenantId;
strResponse = postman("get",dataCenterUrl,null,null);
var responseJson = JSON.parse(strResponse);
buzUrl = responseJson.data.gatewayUrl
//插入数据
var insertObject = {infTenantId:tenantId,gatewayUrl:buzUrl};
ObjectStore.insert("GT31545AT9.GT31545AT9.datacenter",insertObject,"2f88ee3b");
}
let openApiUrl = extrequire("GT31545AT9.backDesignerFunction.getOpenAPIUrl");
let res = openApiUrl.execute(context.apiurlKey);
return {url:buzUrl+res.apiurl,appcode:res.appcode};
}
}
exports({"entryPoint":MyTrigger});
四、接口调用示例-销售委托关系列表查询
前端函数调用此API函数,此API函数内获取当前环境的配置信息函数
let AbstractAPIHandler = require('AbstractAPIHandler');
class MyAPIHandler extends AbstractAPIHandler {
execute(request){
//获取接口调用地址
let envConfigFun = extrequire("GT31545AT9.backDesignerFunction.moreData");
request.apiurlKey="salesDelegate";
let envConfig = envConfigFun.execute(request);
let url = envConfig.url;
//接口传参
var pageIndex = "1";
var pageSize = "100";
let body = {
"pageIndex":pageIndex,
"pageSize":pageSize,
"salesOrg":request.params.salesOrgId
};
var salesDelegateDefaultData;
//执行接口调用
let apiResponse = openLinker("POST", url, envConfig.appcode, JSON.stringify(body));
apiResponse = JSON.parse(apiResponse);
if(apiResponse.data===undefined||apiResponse.data===null)return;
//判断如果存在多条记录,取默认值
if(apiResponse.data.recordCount>0){
for(let index = 0;index<apiResponse.data.recordCount;index++){
let currentData = apiResponse.data.recordList[index];
if(currentData.isDefault ==1){
salesDelegateDefaultData = currentData;
break;
}
}
}
return {salesDelegateDefaultData};
}
}
exports({"entryPoint":MyAPIHandler});