全民核酸采集综合管理平台适配说明书

1模板数据结构

1.1 类型定义

类型 表示 描述 对应Java类型 默认定义
字符串 STR、STRING 代表字符串类型。 java.lang.String 1、非空:“NOEMPTY” 2、允许空:“null” 3、允许串为null:“nullstr” 4、其他字符串即为默认值
短整数 INT、INTEGER 代表32位整形。 java.lang.Integer 1、非空:“NOEMPTY” 2、其他字符串即为默认值
长整数 LONG 代表64位整形。 java.lang.Long 1、非空:“NOEMPTY” 2、其他字符串即为默认值
浮点 FLOAT、DOUBLE 代表双精度、64 位、符合 IEEE 754 标准的浮点数。 java.lang.Double 1、非空:“NOEMPTY” 2、其他字符串即为默认值
布尔 BOOL、BOOLEAN 代表布尔类型,值为true 或 false,转换时非0且非false即为true(忽略大小写)。 java.lang.Boolean 1、非空:“NOEMPTY” 2、其他字符串即为默认值
日期 DATE:FORMAT 代表日期,定义时需紧跟格式化,并以英文冒号分隔,例如"DATE:yyyy-MM-dd HH:mm:ss",格式化遵循JAVA SimpleDateFormat。 java.text.SimpleDateFormat 1、非空:“NOEMPTY” 2、"NOW"表示当前时间戳 3、其他字符串即为默认值
键值对集合 {} 由多个键值对组成,以英文逗号分隔,英文花括号包裹的字符串,其中值只能为字符串,键可以为支持的任意类型。 org.json.JSONObject 仅支持模板声明,不支持模板使用
数组 [] 代表多个由同一类型组成的数组。 org.json.JSONArray 仅支持模板声明,不支持模板使用

1.2 模板定义

1.2.1 模板结构

模板是一个键值对集合,由以下键值对组成。

键名 描述
ApiTemplate 网络接口模板
DatabaseTemplate 数据库模板

1.2.2 网络接口结构(网络接口模板)

网络接口结构是一个键值对集合,由以下键值对组成。

键名 描述
Api 网络请求模板
ApiConfig 网络配置模板
1.2.2.3 网络请求结构(网络请求模板)

网络请求结构是一个数组,子类型是Api为键值对集合,数组长度固定为7,且个子类型应顺序放置,结构如下。

索引 描述
0 请求登录Api
1 获取社区信息Api
2 获取试管采样记录Api
3 获取用户身份信息Api
4 提交采样记录Api
5 删除采样记录Api
6 采样历史查询Api
1.2.2.3.1 网络接口(Api)结构

网络接口是一个键值对集合,由以下键值对组成。

键名 描述 类型
type 接口类型,对应网络结构索引 短整数
uri 请求地址 字符串
interval 两次请求间隔时间(毫秒) 字符串
request 定义请求方式,请求类型,请求参数,请求头等 ApiRequet
response 定义应答成功,应答解析,应答成员等 ApiResponse
1.2.2.3.2 ApiParam结构

ApiParam是一个数组,子类型为字符串,长度至少为4个,定义如下:

索引 描述
0 表示参数的键,或请求头的键,或应答参数的键,或数据库中的字段名
1 表示类型,仅支持类型定义中除键值对集合数组之外的类型
2 表示描述
3 表示默认值
4 转义定义
5+ 查询优先级

1.2.2.3.2.1 转义定义是一个由字符串组成的键值对集合,定义如下:

键名 描述 示例
String.format 格式化 “{“String.format”:“第%d页”}”,当值为1时,展示内容为:第1页
其他 自定义的其他转义 “{“1”:“男”,“0”:“女”}”,当值为1时,展示内容为:男

1.2.2.3.2.2 查询优先级是一个字符串,定义如下:

名称 描述 示例
datablock@字段名 本地数据,默认值 datablock@idCard 从本地数据中查找字段为idCard的值
Api[请求类型][字段名] 网络数据 Api[6][“id”] 请求查找采样历史,并从该返回数据中查找字段为id的值
1.2.2.3.3 Algorithm结构

Algorithm是一个数组,子类型为字符串,长度为3或5,定义如下:

索引 描述
0 算法类型:“ENCRYPT”、“DECRYPT”、“SIGN”
1 加解密签名密钥,非必须可为空
2 加解密签名类型,如:“AES/ECB/PKCS7Padding”
3 测试待转换字段
4 期望已转换字段

ENCRYPT,支持的加密算法:AES、DES、URL、BASE64
DECRYPT,支持的解密算法:AES、DES、URL、BASE64
SIGN ,支持的签名算法:HMAC、MD5、SHA

1.2.2.3.4 ApiRequet结构

ApiRequet是一个键值对集合,由以下键值对组成。

键名 描述 类型
type 请求方式,支持GET、POST、DELETE、PUT 字符串
uploading 上传方式,支持JSON、PARAM两种方式,GET不支持JSON 字符串
params 请求参数,是一个数组,子类型是ApiParam 数组
converts 需要加密、解密、签名的字段 数组
algorithms 加密解密签名相关配置 Algorithm
headers 请求头,是一个数组,子类型是ApiParam 数组
fillAuthorization 若头部没有Bearer,是否自动补全鉴权字段 布尔
authorization 指定鉴权字段 字符串
1.2.2.3.5 ApiResponse结构

ApiResponse是一个键值对集合,由以下键值对组成。

键名 描述 类型
assert 定义多个body判定,用于判断返回结果是否正确,如:[“R[\“code\”]==0”, “R[\“data\”]!=null”, “R[\“data”]!=\”\“”] ,其中R代表整个返回结果,将会判断"code"的值是否为0且"data"的值非空 数组
entity 用于定位返回实体,示例:“R[\“data\”]”,其中R代表整个返回结果,将会把"data"的值判为返回实体。 字符串
fields 请求实体字段列表 数组,子类型为ApiParam
converts 需要加密、解密、签名的字段 数组
algorithms 加密解密签名相关配置 Algorithm
1.2.2.4 网络配置结构(网络配置模板)

网络配置模板是一个键值对集合,由以下键值对组成。

键名 描述 类型
locate 本地网络配置 键值对集合
test 测试账号密码 键值对集合
permission 接口权限 键值对集合
1.2.2.4.1 本地网络配置结构

** 本地网络配置是一个键值对集合**,由以下键值对组成。

键名 描述 类型
authorization 鉴权字段指定,仅能取Api[0] 键值对集合
community_info 社区信息保留展示,可以取自Api[0]或Api[1] 键值对集合
scan 扫描字段指定 键值对集合
card 身份号字段支持 键值对集合
id 平台唯一字段指定 字符串数组
1.2.2.4.1.1 鉴权字段指定(authorization)
键名 描述 类型
token 鉴权令牌指定登录接口返回字段,如:“Api[0][\“token\”]” 字符串
expired 鉴权令牌过期时间指定登录接口返回字段,如:"Api[0][\“expireAt\”] 字符串
1.2.2.4.1.2 扫描字段指定(scan)
键名 描述 类型
barcode 用于指定哪些字段是条码字段 字符串数组
id card 用于指定哪些字段是身份号字段 字符串数组
1.2.2.4.1.3 身份号字段支持(card)
键名 描述 类型
normal 常规卡片支持类型:ID Card(身份证)、Passport Card(护照)、Officer Card(军官证)、HM Card(港澳通行证)、TW Card(台湾通行证)。按照数据顺序进行匹配。 字符串数组
other 用于匹配自定义字段,可为空,优先级低于normal。每一个键值对,包含两个键"name"(配置名,类型为字符串例如:户口簿号),“regex”(匹配正则表达式,类型为字符串)。 键值对集合数组
1.2.2.4.1.3 平台唯一字段指定(id)

平台唯一字段指定(id)是一个字符串数据,每一个字符串只能是Api[3]中的返回值。

1.2.2.4.2 测试(test)
键名 描述 类型
account 测试账号 字符串
password 测试密码 字符串
1.2.2.4.3 网络权限结构
键名 描述 类型
allow remember password 是否允许用户记住密码 布尔
allow auto login 是否允许用户自动登录 布尔
allow auto refresh token 是否允许用户自动刷新令牌 布尔

1.2.3 数据库模板

数据库模板是一个键值对集合,由以下键值对组成。

键名 描述 类型
DB 数据库类型模板列表 键值对集合数组
DBSetting 模板配置信息 键值对
1.2.3.1 数据库类型模板列表

数据库类型模板是一个数组,子类型是键值对集合,且长度为3,定义如下:

索引 描述
0 基础导入数据库
1 采样上传数据库
2 核酸检测分组
1.2.3.2 数据库类型模板

数据库类型模板是一个键值对集合,由以下键值对组成。

键名 描述 类型
type 数据库类型,见数据库类型模板列表 短整数
password 数据库创建密码 字符串
fields 数据库字段 ApiParam数组
usage 字段使用 键值对集合
updates 模板更新记录 键值对集合数组
1.2.3.2.1 字段使用(usage)

字段使用是一个键值对集合,由以下键值对组成。

键名 描述 类型
setter 接口返回字段设置配置 键值对集合
getter 接口请求字段获取配置 键值对集合
1.2.3.2.2 模板更新记录(updates)

数据库类型模板是一个数组,子类型是键值对集合,每条记录对应该模板升级时对应的字段,在配置好该字段后,一定要进行测试,执行顺序:删除–>添加–>改动–>移动,子项结构如下:

键名 描述 类型 格式 示例
version 更新的版本号 长整数 0
add 添加字段 ApiParam数组 [[ApiParam0],[ApiParam1]…] [[“idCard” , “STRING” , “身份证” , “NOEMPTY”]]
del 删除字段 字符串数组 [“要删除的字段名”] [“idCard”]
alter 改动字段 键值对集合数组 {“要改动的字段名”:ApiParam } {“idCard”:[“idCard” , “STRING” , “身份证” , “NOEMPTY”]}
move 移动字段 键值对集合 “要移动的字段名”:要移动的索引 {“idCard”:0}
usage 字段使用(增加字段时需要填写) 见1.2.3.2.1 字段使用(usage)
1.2.3.3 模板配置信息

模板配置信息是一个键值对集合,由以下键值对组成。
此部分信息将部分展示在【关于】页面

键名 描述 类型
group member num 核酸分组采样最大人数 短整数
region name 区域名,例如适配青岛市,填写青岛市 字符串
region code 区域码,区域名对应的区域码,例如370200 字符串
password 模板使用口令 字符串
net api provider 模板适配提供方,填写所在企业的机构名 字符串
unify social credit codes 模板适配企业的统一社会信用代码 字符串
net api version 模板版本号 长整数
net api introduce 模板提供方介绍 字符串数组

2 模板示例&快速适配

{
   
  "ApiTemplate": {
   
    "Api": [
      {
   
        "type": 0,//请求类型:登录
        "url": "https://hsjc.example.com/api/login",//请求主机地址
        "interval": "1000",//请求间隔时间(毫秒)
        "request": {
   //请求配置
          "type": "POST",//请求类型:POST
          "uploading": "PARAM",//请求方式get形式的参数组装 如 www.example.cm/api?a=dsd&b=10
          "params": [
            ["username", "STRING" , "登录账号", "NOEMPTY"],//ApiParam 字段名 类型 描述 默认值
            ["password", "STRING" , "登录密码", "NOEMPTY"]
          ],
          "converts": ["password","username"],//转换字段列表
          "algorithms": [
            [//对应 password
              ["ENCRYPT","SecretKeyOfData","AES/ECB/PKCS7Padding","TEST","+tbjC1wVysGsPjtIWAsW+A=="],//Algorithm 算法类型 秘钥 详细类型 测试字符串 期望加密后的字符串
              ["ENCRYPT",""                ,"URL"]//URL加密不需要秘钥 //该加密不作验证 //注意组装方式为Param方式默认对所有参数进行URLENCODE
            ],
            [//对应 username
              ["ENCRYPT","SecretKeyOfData","AES/ECB/PKCS7Padding"],//该加密不作验证
              ["ENCRYPT",""               ,"URL"]//该加密不作验证
            ]
          ]
		  //请求头可以为空,否则取其固定默认值
		  //登录页面若用户在1小时内有三次登录失败记录,则下一次调用与上一次调用时间至少需间隔60秒后调用,此处为APP端写死的逻辑。
        },
        "response": {
   
          "assert": ["R[\"code\"]==0", "R[\"data\"]!=null"],//正确body判定
          "entity": "R[\"data\"]",//实体定位
          "fields": [//若返回数组此作为数组子项解析列表,以下字段将会保留可供其他接口调用
            ["token"        , "STRING"                  , "令牌"        , ""],
            ["expireAt"     , "DATE:yyyy-MM-dd HH:mm:ss", "到期时间"    , ""],
            ["username"     , "STRING"                  , "登录用户名"  , ""],
            ["isAdmin"      , "BOOL"                    , "管理权限"    , ""],
            ["memberName"   , "STRING"                  , "管理员姓名"  , ""],
            ["mobile"       , "STRING"                  , "管理员手机号", ""],
            ["regionCode"   , "STRING"                  , "市区号"      , ""],
            ["regionName"   , "STRING"                  , "市区"        , ""],
            ["gridId"       , "STRING"                  , "乡镇号"      , ""],
            ["gridName"     , "STRING"                  , "乡镇"        , ""],
            ["samplingCode" , "STRING"                  , "采样点ID"    , ""],
            ["samplingName" , "STRING"                  , "采样点"      , ""],
            ["samplingId"   , "STRING"                  , "测试点ID"    , ""]
          ]
        }
      },
      {
   
        "type": 1,//获取社区信息
        "url": "https://hsjc.example.com/api/getCommunityInfo",
        "interval": "1000",
        "request": {
   
          "type": "POST",
          "uploading": "JSON",
          "params": [],
          "headers": [
            ["Authorization", "STRING", "接口访问令牌", ""]
          ],
          "fillAuthorization": true,
          "authorization": "Authorization"
        },
        "response": {
   
          "assert": ["R[\"code\"]==0", "R[\"data\"]!=null"],
          "entity": "R[\"data\"]",
          "fields": [//以下字段将会保留可供其他接口调用
            ["username"      , "STRING", "登录用户名"  , ""],
            ["mobile"        , "STRING", "管理员手机号", ""],
            ["regionCode"    , "STRING", "市区号"      , ""],
            ["regionName"    , "STRING", "市区"        , ""],
            ["gridId"        , "STRING", "乡镇号"      , ""],
            ["samplingCode"  , "STRING", "采样点ID"    , ""],
            ["samplingName"  , "STRING", "采样点"      , ""]
          ]
        }
      },
      {
   
        "type": 2,
        "url": "https://hsjc.example.com/api/getSamplingRecord",
        "interval": "1000",
        "request": {
   
          "type": "POST",
          "uploading": "JSON",
          "params": [
            ["tubeNo", "STRING", "采样管ID", "NOEMPTY", "" , "INPUT"]//必须是条码字段,且只能有一个参数,且参数获取类型只能为INPUT,否则会请求失败
          ],
          "headers": []
        },
        "response": {
   
          "assert": ["R[\"code\"]==0", "R[\"data\"]!=null"],
          "entity"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值