模板管理接口设计(后端管理接口)

2020-05-29  本文已影响0人  西城丶

接口分析

我们先来想想配置一个pdf模板需要什么接口

  1. 需要检查这个pdf模板之前是否已经有上传过了,也就是版本的叠加,如果是同一个pdf模板,需要增加版本以及设置默认版本信息
  2. 每一页模板上传上来,需要对这个模板进行分析,读取模板表单的字段以及字段属性(主要是为了简化一些输入,例如长度限制、字段名称等可以直接获取到pdf表单的文本域属性进行预填充)
  3. 对模板表单的字段需要进行合并或者针对不同类型的字段进行一些配置,比如说start__time_y,start_time_d,start_time_m,在模板表单里面是三个字段,但是这三个字段在移动端,只需要合并为一个字段start_time就够了,所以在每一页的表单配置完之后,需要对每一页的表单进行处理
  4. 需要对表单字段进行归类,例如title_dept_name,title_doc_no,表头部门名称和表头文本编号需要归类为【发文版头】,移动端可以根据这个分类信息进行分隔展示
  5. 需要提供删除模板的方法
  6. 保存模板

接口实现

  1. 获取模板版本号 GET /checkTemplate

根据模板名称,查找是否已经有同个名称的模板,如果有同个名称的模板,返回表名和版本号(递增的版本号),表名和版本号前端控制不可修改

请求参数:

字段 类型 是否必传 描述
name String Yes 模板名称

响应内容:

{
    "success": true, 
    "message": null, 
    "code": 200, 
    "timestamp": 1590649811153, 
    "data": {
        "isNew": true, 
        "version": "1.0.0", 
        "id": "", 
        "tableName": ""
    }, 
    "i18n": null
}
  1. 上传模板的每一页获取模板表单属性 POST /uploadTemplate

主要做了以下几步

请求参数:

字段 类型 是否必传 描述
file File Yes 模板文件
formData Object Yes {"version":"","tableName":""}主要是接收前一步骤的版本号和表名信息

响应内容:

{
    // 读取pdf文件的表单预填充内容 具体使用在pdf填充那边详细说明
    "fieldDatas": [
        {
            // 字段大小
            "fieldSize": 20, 
            // 输入提示
            "hintName": "请输入/选择其他联系方式", 
            "id": "e73d0629-684b-4dbf-83d0-80d8d7570da9", 
            // 字段数据库名称(这里建议pdf表单模板的字段名称和数据库一致)
            "name": "other_contact", 
            // 父级id
            "parentId": "b8caa4b5-4bca-4a93-b2b7-9a160e902f08", 
            // 移动端左侧输入字段提示
            "preName": "其他联系方式",
            // 字段类型  **具体有多少类型后续说明**
            "fieldType": 0, 
            // 分类名称
            "classifyName": "", 
            // 是否默认取值 
            "isDefaultTake": 0, 
            // 默认取值名称
            "defaultTakeName": "",
            // 字段备注
            "fieldRemark": "", 
            // 字段条件
            "condition": "", 
            // 是否必输
            "isRequired": 0, 
            // 字段排序号
            "displayNum": 0, 
            // 多行取值字段
            "multiLineField": "", 
            // 分类排序号
            "classifyDisplayNum": 0,
        }, 
    ], 
    "id": "123", 
    // 文件模板信息
    "item": {
        // 这个模板的所有字段,后续填充需要使用到
        "fields": "[\"other_contact\",\"title_dept_name\",\"end_d\",\"end_h\",\"check_person_one_m\",\"law_enforcement_num_second\",\"check_person_one_y\",\"end_m\",\"liaison_phone\",\"sum_page\",\"licence_name\",\"concerned_person_time_y\",\"check_person\",\"witness_time_m\",\"page1\",\"end_min\",\"concerned_person_sign\",\"end_y\",\"credit_code\",\"witness_time_y\",\"concerned_person_name\",\"place\",\"concerned_person_time_m\",\"check_person_one\",\"contact_address\",\"start_h\",\"legal_person\",\"concerned_person_time_d\",\"address\",\"start_d\",\"witness_time_d\",\"start_min\",\"investigators_first\",\"witness\",\"concerned_reply1\",\"check_person_two\",\"start_y\",\"id_num\",\"inform_party_presence1\",\"investigators_second\",\"inform_party_presence0\",\"start_m\",\"law_enforcement_num_first\",\"check_person_one_d\"]", 
        // 文件名
        "fileName": "live_transcript1.pdf", 
        // 文件存储路径
        "filePath": "\\doc1111\\live_transcript\\1.0.0\\b8caa4b5-4bca-4a93-b2b7-9a160e902f08.pdf", 
        // 文件大小
        "fileSize": 381762, 
        // 文件id,作为字段表的父id
        "id": "b8caa4b5-4bca-4a93-b2b7-9a160e902f08", 
        // 模板表的id 
        "parentId": "123",
        // 是否多页
        "isMulti": 0, 
        // 排序号
        "displayNum": 0,
        //多页条件判断字段
        "conditionField": "", 
        // 多页判断条件
        "multiCondition": "",
        
    }
}
  1. 处理模板数据 POST /dealTemplates

将每一页的数据填写完一些规则之后,调用这个方法进行处理,主要对字段进行合并并且设置字段取值规则。

字段合并的规则:

如果需要字段合并,那么在前面一个接口,获取到pdf表单属性后,需要设置多行取值字段multiLineField,比如说start_y,start_d,start_m,start_min,start_h 的取值字段都是start_time 那么最后这五个字段合并后的字段是start_time,并且最后的start_time字段长度为这几个字段的字段长度的合并值。

构造后的原先字段取值规则:

{
    "start_h": {
        "condition": "", 
        "size": 2
    }, 
    "start_y": {
        "condition": "", 
        "size": 4
    }, 
    "start_m": {
        "condition": "", 
        "size": 2
    }, 
    "start_d": {
        "condition": "", 
        "size": 2
    }, 
    "start_min": {
        "condition": "", 
        "size": 2
    }
}

记录这个规则主要是为了后续取值使用

循环表单字段的时候,什么时候结束这个字段的构造呢?

请求参数:

字段 类型 是否必传 描述
List<TemplateResultDTO> dataList List Yes 表单模板每一页的集合

TemplateResultDTO:这个数据传输对象就是上面一个接口返回的值

响应内容:

返回内容为处理后的数据,和上个接口一样

  1. 保存模板数据 POST /saveTemplate

这个接口主要做了以下事情:

请求参数:

字段 类型 是否必传 描述
SaveTemplateDTO Object Yes 表单模板

SaveTemplateDTO:

{
    // 这个是模板信息
    "formData": {
        "name": "", 
        "id": "", 
        "isNew": false, 
        "isDefault": 0, 
        "tableName": "", 
        "version": ""
    }, 
    // 这个就是TemplateResultDTO的集合
    "dataList": [
        {
            "id": "", 
            "item": null, 
            "fieldDatas": [ ]
        }
    ]
}

响应内容:

{
    "message": "", 
    "timestamp": 1590722343143, 
    "data": null, 
    "success": true, 
    "code": 200, 
    "i18n": null
}
  1. 删除模板 POST /delTemplate

这个删除模板,是一页页删除,如果需要删除整个模板,另起一个接口吧或者增加参数

请求参数:

字段 类型 是否必传 描述
DelTemplateDTO Object Yes 删除表单模板对象

DelTemplateDTO:

{
    "version": "版本", 
    "tableName": "表名", 
    "fileId": "文件id"
}

响应内容:

{
    "message": "", 
    "timestamp": 1590722343143, 
    "data": null, 
    "success": true, 
    "code": 200, 
    "i18n": null
}

结语

有些字段还未说明是怎么用的,我们后续文章继续讲解,有写的不对的欢迎指正。

下篇

模板管理接口定义好了,下面我们介绍下填充表单的接口

上一篇下一篇

猜你喜欢

热点阅读