跳转至

系统辅助(DetailController)

提供运行时三类辅助能力:获取新数列(UUID)、按企业域 secret + 账号换取前台用户 accessToken、按模块清除对应缓存(配置/用户/部门/文档/流程状态/微信)。

  • 接口类型:REST 资源(@RestController + 类级 @RequestMapping(produces = APPLICATION_JSON_VALUE),继承自 AbstractRuntimeController
  • 基址${myapps.context-path.runtime:}/api
  • Tag:系统辅助模块

公共说明

  • 鉴权(据源码 RuntimeMvcConfig + RestSecurityHandlerInterceptor:本控制器方法级路径前缀拼上类级 /api 后落在 /api/runtime/** 覆盖范围内,但豁免判定按 URI 字面匹配——
  • GET /api/runtime/sequence不在豁免名单需 accessToken(据源码)。拦截器走 Security.getUserIdFromToken(request),未取到再尝试 Security.getDebugUserIdFromToken(request),两者皆无则拒绝访问;可通过 Cookie / 请求头 / query 参数任一方式传递。
  • GET /api/runtime/secrets/{secret}/accessToken据源码豁免——拦截器 uri.indexOf("/accessToken") >= 0 命中,无需 accessToken(用于服务端到端换取前台用户令牌)。
  • GET /api/runtime/{module}/clear据源码豁免——拦截器 uri.endsWith("/clear") 命中,无需 accessToken(供运维/定时清理缓存调用)。
  • 豁免规则全集详见 login.md「公共说明 · 鉴权」。
  • 响应结构
  • 端点 1、2:统一 Resource(见 ../index.md「统一响应结构」)。
  • 端点 3(清除缓存):非统一 Resource,控制器返回 void,HTTP 200,无响应体
  • HTTP 状态码:所有端点类级标注 @ResponseStatus(HttpStatus.OK),成功统一返回 200。

1. 获取一个新数列

服务端生成并返回一个新的 UUID 字符串。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/runtime/sequence(完整:{runtime-context}/api/runtime/sequence
  • 鉴权:是(需 accessToken,据源码)
  • Tag:系统辅助模块

请求参数

无。

请求示例

GET /api/runtime/sequence HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 Resourcedatastring,UUID 字符串。

{
  "errcode": 0,
  "errmsg": "ok",
  "data": "8a8b8c9d-1234-5678-9abc-def012345678",
  "errors": null
}

2. 获取前台用户accessToken

按企业域 secret 与登录账号 loginNo 换取该前台用户的 accessToken(JWT)。遍历所有企业域匹配 secret,命中且账号存在时返回 Security.generateToken(userId) 生成的令牌;任一条件不满足返回 errcode=500

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/runtime/secrets/{secret}/accessToken(完整:{runtime-context}/api/runtime/secrets/{secret}/accessToken
  • 鉴权:否(据源码:拦截器 uri.indexOf("/accessToken") >= 0 豁免)
  • Tag:系统辅助模块

请求参数

参数名 位置 类型 必填 说明
secret path string 企业域 secret key
loginNo query string 用户登录账号

请求示例

GET /api/runtime/secrets/__SECRET__/accessToken?loginNo=admin HTTP/1.1

响应

结构:统一 Resourcedatastring,accessToken(JWT)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6Il9fWFhYWFhYIn0.xxxxxxxx",
  "errors": null
}

失败示例(secret 或账号不匹配)

{ "errcode": 500, "errmsg": "获取失败", "data": null, "errors": null }


3. 清除配置缓存

按模块名清除对应缓存:configPropertyUtil)/userUserProcessBean)/deptDepartmentProcessBean)/document(按 docId)/flowstate(按 stateId)/wechat(微信 secret 缓存)。无响应体;内部异常被吞仅打印堆栈。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/runtime/{module}/clear(完整:{runtime-context}/api/runtime/{module}/clear
  • 鉴权:否(据源码:拦截器 uri.endsWith("/clear") 豁免)
  • Tag:系统辅助模块

请求参数

参数名 位置 类型 必填 说明
module path string 模块名:config/user/dept/document/flowstate/wechat
applicationId query string 软件 Id(document/flowstate 等模块按需使用,源码未直接消费)
datasourceId query string 数据源 Id(保留参数,源码未直接消费)
docId query string 文档 Id(module=document 时由 DocumentDAOAspect.clearCache(docId) 使用)
stateId query string 流程状态 Id(module=flowstate 时由 FlowStateRTDAOAspect.clearCache(stateId) 使用)

请求示例

GET /api/runtime/document/clear?docId=__DOCID__ HTTP/1.1

响应

结构非统一 Resource。控制器返回 void,HTTP 200,无响应体