1. 目录
1.1. 资源说明
1.1.1. 目录定义
目录是衡石系统内为方便用户管理应用
及应用下的资源
而设定的系统功能,展示为树形结构,通过该功能可实现业务区域划分、资源与资源使用权限的集中管理
目录结构说明
字段 | 类型 | 描述 | |
---|---|---|---|
id | BIGINT | 目录id | |
title | STRING | 目录标题 | |
parentId | BIGINT | 父目录id | |
area | STRING | 目录所在区域: PERSONAL_AREA 、PUBLIC_AREA 、 DATA_MART 、 APP_MART | |
options | OBJECT | 目录配置信息 | |
options.rootType | STRING | 区域级根节点的类型: PUBLIC_ROOT_FOLDER 、PERSONAL_ROOT_FOLDER | |
updatedAt | DATETIME | 目录最后更新时间 | |
updatedBy | DATETIME | 目录最后修改者的userId | |
createdAt | DATETIME | 目录创建时间 | |
updatedBy | DATETIME | 目录最后修改者的userId | |
tenantId | LONG | 否 | 租户id |
区域说明
状态值 | 意义 |
---|---|
PERSONAL_AREA | 个人区,用户私有(3.0版本未实现目录功能) |
PUBLIC_AREA | 共享区,该区域属于系统公有区域,所有被赋予目录权限的系统内用户均可管理/编辑/读取 |
DATA_MART | 数据集市,与共享区性质相同,区别在于该区域目录下的应用内,只能创建数据集,供其他区域使用 |
APP_MART | 应用集市,即发布区(3.0版本未实现目录功能) |
目录/应用授权说明
状态值 | 意义 | ||
---|---|---|---|
read | 查看者 :可查看目录/应用 及目录下的资源 |
||
read\ | write | 编辑者 :拥有目录的编辑者权限时,可在目录下创建、查看、修改目录/应用 |
|
admin\ | read\ | write | 管理者 :除拥有编辑者权限外,还可管理目录/应用为其他用户赋予/删除权限 |
目录权限说明
- 同时拥有
数据管理员
和系统管理员
角色的用户为目录系统管理员,对所有区域的所有目录及目录下的资源拥有管理者
权限。 - 普通用户的权限范围:若用户拥有某目录的某项权限,则同时拥有该目录下子目录与资源的对应权限,以最大权限为准
1.2. 接口说明
1.2.1. 1、创建目录
- 创建者需要同时拥有
数据管理员
和系统管理员
角色 或 拥有上层任意父目录的编辑者
权限 - 区域根目录由系统默认生成,因此用户创建的目录
parent_id
不可为空请求URL
需要认证:是POST /api/v1/folders
请求参数
Request Body 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
title | STRING | 是 | 目录名称 |
parentId | BIGINT | 是 | 父目录id |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 每种目录的共同结构见目录结构说明。 |
接口示例1: 创建目录
POST /api/v1/folders
{
"title": "test",
"parentId": 1
}
返回:
{
"version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
"code": 0,
"msg": "success",
"data": {
"id": 2,
"parentId": 1,
"title": "test",
"createdBy": 1,
"createdAt": "2019-12-08 23:35:54",
"updatedBy": 1,
"updatedAt": "2019-12-08 23:35:54",
"area": "PUBLIC_AREA"
}
}
1.2.2. 2、修改(移动)目录
- 修改者需要同时拥有
数据管理员
和系统管理员
角色 或 拥有上层任意父目录的编辑者
权限 - 移动目录需遵循以下规则:
1、区域根目录不可移动 2、目录不可跨区域移动 3、移动目录需要用户同时拥有被移动目录和目标目录的
编辑者
权限 4、若移动目录需要保留权限配置,则用户需拥有目标目录的管理者
权限请求URL
PUT /api/v1/folders/{folderId}
需要认证:是
请求参数
Request Body 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
title | STRING | 否 | 目录名称 |
parentId | BIGINT | 否 | 父目录id(移动操作时表示目标目录id) |
keepAuthConfig | BOOL | 否 | 是否保留权限配置(默认为true) |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 每种目录的共同结构见目录结构说明。 |
接口示例1: 修改/移动目录
PUT /api/v1/folders/{folderId}
{
"title": "test",
"parentId": 3,
"keepAuthConfig":false
}
返回:
{
"version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
"code": 0,
"msg": "success",
"data": {
"id": 2,
"parentId": 3,
"title": "test",
"createdBy": 1,
"createdAt": "2019-12-08 23:35:54",
"updatedBy": 1,
"updatedAt": "2019-12-08 23:35:54",
"area": "PUBLIC_AREA"
}
}
1.2.3. 3、删除目录
- 修改者需要同时拥有
数据管理员
和系统管理员
角色 或 拥有上层任意父目录的编辑者
权限 - 区域根目录不可删除
- 为防止误操作,只能删除空目录(目录下无子目录或应用)
请求URL
需要认证:是DELETE /api/v1/folders/{folderId}
请求参数
无返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 每种目录的共同结构见目录结构说明。 |
接口示例1: 删除目录
DELETE /api/v1/folders/{folderId}
返回:
{
"version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
"code": 0,
"msg": "success"
}
1.2.4. 4、根据id获取目录
- 修改者需要同时拥有
数据管理员
和系统管理员
角色 或 拥有上层任意父目录的查看者
权限 - 返回值中包含被查询目录下一级的子目录和app(children/apps),以及被查询目录所有父目录的id和title(parents)
请求URL
需要认证:是GET /api/v1/folders/{folderId}
请求参数
无返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 每种目录的共同结构见目录结构说明。 |
接口示例1: 根据id获取目录
GET /api/v1/folders/{folderId}
返回:
{
"version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
"code": 0,
"msg": "success",
"data": {
"id": 3,
"parentId": 2,
"title": "b",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:24:24",
"updatedBy": 3,
"updatedAt": "2019-12-04 18:15:18",
"visible": true,
"children": [
{"id":4,"title":"c"},
{"id":5,"title":"d"}
],
"parents": [
{"id":1,"title":"root"}
{"id":2,"title":"a"}
]
"area": "PUBLIC_AREA",
"apps": [
{
"id": 2,
"title": "app2",
"cover": "",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:08:36",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:08:36",
"visible": true,
"isDelete": false,
"isPublish": false,
"hsVersion": 0,
"publicPublish": false,
"publish": false
}
],
"delete": false
}
}
1.2.5. 5、获取目录列表
- 修改者需要同时拥有
数据管理员
和系统管理员
角色 或 拥有上层任意父目录的查看者
权限 - 返回结果为当前用户在指定区域,有权限查看的所有目录的树形结构,并包含各目录下的应用
- 同时拥有
数据管理员
和系统管理员
角色的用户,可看到指定区域下的所有目录信息请求URL
需要认证:是GET /api/v1/folders
请求参数
URL 参数
| 字段 | 类型 |是否必须| 说明 | |-------|---------|-------|-----------------------------------| | queryMeta | BOOL | 否 | 是否只查询目录元信息(不包含应用信息),默认为false
| | area | STRING | 否 | 指定查询区域,默认为PUBLIC_AREA
|
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 每种目录的共同结构见目录结构说明。 |
接口示例1: 获取目录列表
GET /api/v1/folders?queryMeta=false&area=PUBLIC_AREA
返回:
{
"version": "2.7-SNAPSHOT@@git.commit.id.abbrev@#null",
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"title": "public_area_root_folder",
"options": {
"rootType": "PUBLIC_ROOT_FOLDER"
},
"createdAt": "2019-12-01 21:06:15",
"updatedAt": "2019-12-01 21:06:15",
"visible": true,
"area": "PUBLIC_AREA",
"children": [
{
"id": 2,
"parentId": 1,
"title": "a",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:11:41",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:11:41",
"visible": true,
"area": "PUBLIC_AREA",
"children": [
{
"id": 3,
"parentId": 2,
"title": "b",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:24:24",
"updatedBy": 3,
"updatedAt": "2019-12-04 18:15:18",
"visible": true,
"area": "PUBLIC_AREA",
"children": [
{
"id": 5,
"parentId": 3,
"title": "d",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:25:23",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:25:23",
"visible": true,
"area": "PUBLIC_AREA",
"apps": [
{
"id": 4,
"title": "app4",
"cover": "",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:08:46",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:08:46",
"visible": true,
"isDelete": false,
"isPublish": false,
"hsVersion": 0,
"folderId": 5,
"publicPublish": false,
"publish": false
}
],
"delete": false
},
{
"id": 6,
"parentId": 3,
"title": "e",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:25:30",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:25:30",
"visible": true,
"area": "PUBLIC_AREA",
"children": [
{
"id": 16,
"parentId": 6,
"title": "test3F",
"options": {},
"createdBy": 3,
"createdAt": "2019-12-05 11:43:14",
"updatedBy": 3,
"updatedAt": "2019-12-05 12:09:48",
"visible": true,
"area": "PUBLIC_AREA",
"delete": false
}
],
"delete": false
}
],
"apps": [
{
"id": 2,
"title": "app2",
"cover": "",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:08:36",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:08:36",
"visible": true,
"isDelete": false,
"isPublish": false,
"hsVersion": 0,
"folderId": 3,
"publicPublish": false,
"publish": false
}
],
"delete": false
},
{
"id": 4,
"parentId": 2,
"title": "c",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:24:50",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:24:50",
"visible": true,
"area": "PUBLIC_AREA",
"children": [
{
"id": 7,
"parentId": 4,
"title": "f",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:25:52",
"updatedBy": 3,
"updatedAt": "2019-12-04 17:26:14",
"visible": true,
"area": "PUBLIC_AREA",
"children": [
{
"id": 8,
"parentId": 7,
"title": "g",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:26:09",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:26:09",
"visible": true,
"area": "PUBLIC_AREA",
"children": [
{
"id": 17,
"parentId": 8,
"title": "areaT",
"options": {},
"createdBy": 3,
"createdAt": "2019-12-05 14:17:53",
"updatedBy": 3,
"updatedAt": "2019-12-05 14:19:43",
"visible": true,
"area": "PUBLIC_AREA",
"delete": false
}
],
"apps": [
{
"id": 3,
"title": "app3",
"cover": "",
"options": {},
"createdBy": 1,
"createdAt": "2019-12-01 21:08:41",
"updatedBy": 1,
"updatedAt": "2019-12-01 21:08:41",
"visible": true,
"isDelete": false,
"isPublish": false,
"hsVersion": 0,
"folderId": 8,
"publicPublish": false,
"publish": false
}
],
"delete": false
}
],
"delete": false
}
],
"delete": false
}
],
"apps": [],
"delete": false
}
],
"delete": false
}
]
}