设计时模块管理(ModuleDesignTimeController)¶
模块(应用下的子节点)设计时资源管理:按上级获取模块列表、获取/新建/更新/删除模块,以及获取树形结构的全量模块清单(用于「上级模块」下拉)。
- 接口类型:REST 资源
- 基址:
${myapps.context-path.designer:}/api/designtime(类级@RequestMapping,@Component继承AbstractDesignTimeController) - Tag:设计时-模块模块
公共说明¶
- 鉴权:是(需 designerToken)。继承自
AbstractDesignTimeController,通过Security.getDesignerIdFromToken(request)从 designerToken JWT 中解析设计器用户。鉴权机制详见 index.md「鉴权说明」。 - 路径变量:
{applicationId}、{moduleId}均为**明文设计时 ID**(与 designer 其他控制器一致,非 runtime 的 DES 加密密文)。 - 响应:统一
Resource(见 ../index.md「统一响应结构」)。成功errcode=0;异常默认errcode=500,errmsg为异常信息;保存类接口校验失败(重名、名称为空等)返回errcode=40001。 - HTTP 方法:受
CommonSecurityFilter限制,仅允许GET/POST/HEAD/OPTIONS。 - 请求体约定:POST/PUT 接收原始 JSON 字符串(
@RequestBody String content);DELETE 接收String[](JSON 数组反序列化为字符串数组)。 - 模块校验规则(据源码
validate): - 模块名称不能为空;
- 同级模块(同
parentId)名称不能重复; - 模块名称不能与上级模块同名;
- 更新时下级也不能存在同名模块。
1. 根据上级获取模块列表¶
按 parentId 获取其直接子模块列表。parentId 缺省时回退为 applicationId(即获取软件下的顶层模块)。每项额外附带 hasChild 字段(注意取反:有子集时为 false,无子集时为 true,配合前端渲染)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/applications/{applicationId}/modules(完整:{designer-context}/api/designtime/applications/{applicationId}/modules) - 鉴权:是(需 designerToken)
- Tag:设计时-模块模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件Id |
| parentId | query | string | 否 | 上级Id(缺省时取 applicationId) |
说明:
parentId形参未标注@RequestParam,由 Spring MVC 按请求参数绑定,可缺省。
请求示例¶
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:List<Map>,每项 {name, id, superior, uri, applicationId, hasChild}。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": [
{ "name": "行政部", "id": "...", "superior": "<applicationId>", "uri": "", "applicationId": "<applicationId>", "hasChild": true }
],
"errors": null
}
2. 获取模块详情¶
按 moduleId 查询模块详情,返回精简字段集(id、name、orderNo、description、uri、superior、superiorName)。superiorName 由上级模块名解析;无上级时为空字符串。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/applications/{applicationId}/modules/{moduleId} - 鉴权:是(需 designerToken)
- Tag:设计时-模块模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件Id |
| moduleId | path | string | 是 | 模块Id |
请求示例¶
响应¶
data:Map,结构如上字段集。
{
"errcode": 0,
"errmsg": "ok",
"data": {
"id": "...",
"name": "行政部",
"orderNo": 1,
"description": "...",
"uri": "",
"superior": "<applicationId>",
"superiorName": "OA"
},
"errors": null
}
3. 新建模块¶
在指定软件下新建模块。请求体反序列化为 Module 后,superior 缺省时 parentId 取 applicationId,否则取 superior;经校验通过后分配设计时序列号并保存。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/applications/{applicationId}/modules - 鉴权:是(需 designerToken)
- Tag:设计时-模块模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件Id |
| content | body | string(JSON) | 是 | 模块对象 JSON |
请求体¶
对应 Module 对象 JSON(name 必填;可选 description、orderNo、superior 等)。
响应¶
data:JSONObject,仅含 id(新建模块Id)。校验失败时 errcode=40001,errmsg 为「模块名称不能为空!」、「同级模块名称已存在!」、「名称不可以跟上级相同!」等。
4. 更新模块¶
按 moduleId 更新模块基本字段(基于旧模块 clone 后修改,避免脏字段写回)。name/description/orderNo/superior 来自请求体;parentId 按 superior 是否为空自动推导。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/applications/{applicationId}/modules/{moduleId} - 鉴权:是(需 designerToken)
- Tag:设计时-模块模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件Id |
| moduleId | path | string | 是 | 模块Id |
| content | body | string(JSON) | 是 | 模块对象 JSON(须含 name/description/orderNo/superior) |
请求体¶
响应¶
data:null(成功)。校验失败时 errcode=40001(含「下级存在相同名称!」等更新专属校验)。
5. 删除模块(可批量)¶
按模块 Id 数组批量删除模块(含子模块),并收集每个模块的 path 用于日志。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/applications/{applicationId}/modules - 鉴权:是(需 designerToken)
- Tag:设计时-模块模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件Id |
| ids | body | string | 是 | 模块Id字符串数组(JSON 数组反序列化为 String[]) |
请求体¶
响应¶
data:null(成功)。
6. 获取树形结构所有模块列表¶
返回该软件下全部模块(按 applicationId 列出顶层后递归 deepSearchModuleTree),用于「上级模块」选择下拉。返回前会排除 currentModuleId(编辑当前模块时避免自引用)。每项 value 为带缩进前缀的模块名(深度每加一层前缀增 2 个字符)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/applications/{applicationId}/allmodules - 鉴权:是(需 designerToken)
- Tag:设计时-模块模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件Id |
| currentModuleId | query | string | 否 | 当前模块Id(编辑场景下传入,返回列表中会排除该 Id 避免自引用) |
说明:
currentModuleId形参未标注@RequestParam,由 Spring MVC 按请求参数绑定,可缺省。
请求示例¶
响应¶
data:List<Map>,每项 {id, value}。id 为模块Id;value 为带 |--... 缩进前缀的模块名(首项恒为 {id:"", value:"无"})。
{
"errcode": 0,
"errmsg": "ok",
"data": [
{ "id": "", "value": "无" },
{ "id": "...", "value": "行政部" },
{ "id": "...", "value": "|--人事组" }
],
"errors": null
}