应用接入指南

[TOC]

1. 导入模块接入流程

导入模块

1.1 注册应用

  • 登录政企通后台管理系统

>>系统地址<<

账户:super 密码:super

  • 切换至政企通系统

切换至政企通系统

  • 新增应用配置

UFS配置中心 -> 应用配置

点击新增或者选择一个现有的应用配置点击克隆

新增应用配置

  • 填写应用信息

请保证填写的secKey唯一

名称 描述 举例 是否必须
应用名称 接入名称(唯一)
应用加密key 应用的唯一标识 ZQT-0001
应用状态 应用状态:启用/禁用
应用分类 使用用户属于政府还是企业
应用描述 应用描述
文件类型 限制上传的文件后缀格式(多个逗号分隔) xls,xlsx
文件大小 限制上传文件大小(暂未启用)
文件数量 限制上传文件数量(暂未启用)
  • 添加(导入)模块配置

开发时填写本机地址,上线记得改成线上环境地址

请确保url能可以访问,且无任何权限认证

名称 描述 举例 是否必须
标题 导入界面的标题
模板地址 导入模块的下载地址 https://abc/联系人导入模板.xlsx
模板名称 导入模板的名称 联系人导入模板.xlsx
注意事项 导入界面的提示内容 不能在本excel表中对信息类别进行增加、删除、修改;
回调地址 用户在导入界面上传文件后的触发的导入处理接口 https://abc/ufs/import/resolver
输入框1label 导入界面支持定义一个用户输入框 批次编号
输入框1Name 输入框name(用户后台导入处理接口接收参数) batchCode
输入框1是否必填(1/0) 输入框1是否必填(1/0) 1
测试用回调地址 用户在本地调试时导入界面上传文件后的触发的导入处理接口 http://localhost:8000/ufs/import/resolver

1.2 应用前端接入

  • iframe接入(推荐)

iframe的url支持添加自定义参数,在UFS触发回调导入处理接口是会一并带上
还支持添加配置好的输入框的默认值,参数名称与‘输入框1Name’的配置项一样(如输入框1Name是title,则url后面加&title=titleDefValue)
输入框启用下拉框,示例:&title=SELECT@key1,value1,key2,value2,key3,value3

 <iframe id="ufsIframe"
          title="ufsIframe"
          src="https://ufs.eazytec-cloud.com/ufs/import/index?secKey=你配置的应用secKey&userId=用户ID&自定义参数1=自定义值1&输入框1Name=默认值"
          frameBorder="0"
          scrolling="no"·
          width="95%"
          height="300px"  />

应用前端接入

  • 弹框接入

window.open()...略

1.3 应用后端接入

  • pom引入UFS依赖包

依赖包由jdk1.7编译

如果是非maven环境,请找我要完整的依赖包

   <dependency>
        <groupId>com.eazytec.middleware</groupId>
        <artifactId>ufs-core</artifactId>
        <version>1.1-SNAPSHOT</version>
    </dependency>

    <!--EFS 1.2以上版本 -->
     <dependency>
        <groupId>com.eazytec.efs</groupId>
        <artifactId>efs-sdk</artifactId>
        <version>1.2</version>
    </dependency>
  • 编写导入处理接口

接口请求为Http POST,最好不配置mapping的method

导入过程为异步执行

userId,fileId,filePath,eventCode为固定的回调参数

返回统一为"success"

导入接口示例

    @RequestMapping(value = "/import"/*, method = RequestMethod.POST*/)
    @ResponseBody
    public String import(String userId,String fileId, String filePath, String eventCode, String 自定义参数1,String 输入框1Name){
        UfsOpenClient client = UfsOpenClient.init();
        String secKey = "ZQT-0002";
        client.asyncExecute(new UfsOpenClient.Handler() {
            @Override
            public OpenRequest execute() {
                OpenRequest request = null;
                try {
                    Long createTime = System.currentTimeMillis();
                    request = [你的导入逻辑]
                    LOGGER.info("接口处理时间: {}ms", System.currentTimeMillis() - createTime);

                } catch (Exception e) {
                    LOGGER.error("import error",e);
                    request = new OpenRequest();
                    request.setSuccess(false);
                    request.setMsg("服务器错误,error code:101");
                }
                request.setSecKey(secKey);
                request.setUserId(userId);
                request.setFileId(fileId);
                request.setEventCode(eventCode);
                return request;
            }
        });
        return "success";
    }

OpenRequest属性说明

名称 描述 举例 是否必须
secKey 注册时填写的唯一标识
userId 用户ID,回调参数直接填入即可
eventCode 模块事件编号,回调参数直接填入即可
fileId 文件ID,回调参数直接填入即可
success 是否导入成功
partSuccess 是否为部分导入
msg 导入结果信息,若为错误建议通过error code反馈(0-100为UFS保留编号)
uploadFile 结果反馈文件,用于提供用户下载查看的结果文件
uploadFile.fileName 文件名称 导入结果.xlsx
uploadFile.filePath 文件路径 /tmp/导入结果.xlsx c:/tmp/导入结果.xlsx
uploadFile.fileDes 文件描述

你的导入逻辑

    public OpenRequest resolver(String filePath) throws Exception {
        OpenRequest openRequest = new OpenRequest();
        URL url = new URL(filePath);
        try (InputStream is = url.openStream()) {
            [获取导入文件并解析]
        }

        String resFileName = "导入结果.xlsx"; 
         [在本地生成导入结果文件]

        OpenRequest.UploadFile errorFile = openRequest.newFile();
        errorFile.setFileName(resFileName);
        errorFile.setFilePath(LOCAL_PATH + resFileName);
         openRequest.setSuccess(true);
        openRequest.setMsg("企业入园成功!");

        return openRequest;
    }

1.4 error code

编号 描述
0 success
1 UFS init error:%s
2 no module found for type[%s]!
3 module for type[%s] is disabled!
11 no event found for code[%s]!
12 event already exist for code[%s]!
21 no listener found for key[%s]!
22 listener register error,params invalid!
31 template[%s] paramDefine resolver error:%s!
40 no config for app,secKey:[%s]
41 missing ui config ,secKey[%s],module[%s]!
42 App[%s] params for UI[%s] resolver error:%s!
43 App[%s] for UI[%s] is miss param[%s]!
44 can not connect APP callback url!
45 APP has no response!
51 File local save error:%s!
52 EFS upload error:%s!
60 request is invalid!
100 biz error: %s

1.5 开发环境联调

先在管理后台中配置测试用回调地址(如http://127.0.0.1/ufsImport/user)

后端导入处理接口必须支持HTTP GET(直接去除method的配置最好)

前端嵌入的iframe的src中增加参数 &ufsMode=test(如https://ufs.eazytec-cloud.com/ufs/import/index?secKey=ZQT-0001&ufsMode=test&userId=user123)

上传的文件名不得携带中文或特殊字符 否则会导致本地读取文件失败

上线后切记将ufsMode参数删除

若已接入spring security,务必将回调处理接口排除

  protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/ufs/import/**").permitAll();
  }
江苏卓易信息科技股份有限公司-TNG基础平台组 all right reserved,powered by Gitbook该文件最后修改时间: 2021-01-27 06:23:28

results matching ""

    No results matching ""