接口调用适配环境方案(二)

适用于没有前端的场景,此方法需要创建一个实体,用来存储获取到的地址信息,第一次调用多数据中心的地址,然后将结果存储到数据库中,后续先查看判断是否存在,如果存在直接返回,如果不存在再调用多数据中心接口

一、准备工作

二、公共参数函数

地址信息都写在此处,方便配置和调整


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});
Copyright © 用友 -【生态技术部】 2022-2023 all right reserved,powered by Gitbook修订时间: 2023-10-07 15:45:36

results matching ""

    No results matching ""