跳转至

应用执行(ApplicationController)

应用执行接口:获取当前用户可见的软件列表(含调试标记、企业域系统模块开关)与单个软件详情。{applicationId} 仅在路径中出现,详情接口源码未单独 DES 解密(按原值传 service.findById)。

  • 接口类型:REST 资源(@Component 继承 AbstractRuntimeController;类级 produces = MediaType.APPLICATION_JSON_VALUE,方法返回类型为 Resource,由 Spring Jackson 序列化为 JSON,据源码)
  • 基址${myapps.context-path.runtime:}/api/runtime
  • Tag:runtime

范围说明:本文档为 cn.myapps.runtime.application.controller.ApplicationController(REST 版,基址 /api/runtime)。另有同名移动端 REST 版 cn.myapps.runtime.mobile.application.controller.ApplicationController(基址 /runtime/app/applications,移动端 list.action,返回 {status, message, data} JSON),见 mobile-application.md

公共说明

  • 鉴权(据源码):类级基址位于 /api/runtime/**,在 RestSecurityHandlerInterceptor 覆盖范围内,且不在豁免名单(豁免仅覆盖 /api/runtime/login.*/api/runtime/dingding/authlogin/api/runtime/synchronization.*、URI 以 /showjrxml 结尾、含 /getCustomColumnsInfos、含 /accessToken、含 /macro、以 /clear 结尾、含 /pages/ 等,详见 login.md「公共说明 · 鉴权」)。拦截器走 Security.getUserIdFromToken(request),未取到再尝试 Security.getDebugUserIdFromToken(request),两者皆无则拒绝。故需 accessToken(或 debugToken),可通过 Cookie / 请求头 / query 参数任一方式传递。控制器内 getUser()(继承自 AbstractRuntimeController)必须能取到非空 WebUser
  • 响应结构:本控制器响应使用统一 Resource(见 ../index.md「统一响应结构」)。
  • Id 加密:返回前对软件实体的 id/applicationid 字段经 DesUtil.encryptTextByUserId(..., getUser().getId()) 加密。

1. 获取软件详情

applicationId 查询单个软件实体,返回前 clone 一份并对 id/applicationid 字段进行 DES 加密。注意源码未对该端点的 {applicationId} 路径变量做 DES 解密(直接传入 service.findById(applicationId, applicationId)),调用方需传入原始(未加密)软件 Id。

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

请求参数

参数名 位置 类型 必填 说明
applicationId path string 软件Id(注意:源码未做 DES 解密,传原始 Id

请求示例

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

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataApplication(克隆后),id/applicationid 字段已 DES 加密;找不到时为 null

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "id": "__ENC_APPID__",
    "applicationid": "__ENC_APPID__",
    "name": "OA",
    "description": "办公自动化"
  },
  "errors": null
}

未找到示例

{ "errcode": 0, "errmsg": "ok", "data": null, "errors": null }


2. 获取软件列表

返回当前前台用户在所有可见软件下的应用列表(仅保留该用户在其中持有角色的软件),并附带:每个软件的调试中标记(JavaScriptFactory.isDebugging)、DES 加密后的 Id;以及当前用户企业域启用的系统模块开关。

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

请求参数

参数名 位置 类型 必填 说明
isStateMenu query boolean 是否仅返回状态菜单相关标记,默认 false(参数被读取但源码未在过滤逻辑中使用)

请求示例

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

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataJSONObject,固定含 applications 字段(List<Application>,每项 id/applicationid 已 DES 加密、含 debugging 调试中标记),并按当前用户企业域 DomainVO.systemModuleConfigs 平铺多个 <systemModuleId>: <enable(boolean)> 键值对。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "applications": [
      {
        "id": "__ENC_APPID__",
        "applicationid": "__ENC_APPID__",
        "name": "OA",
        "debugging": false
      }
    ],
    "__MODULEID_KMS__": true,
    "__MODULEID_REPORT__": false
  },
  "errors": null
}

失败示例

{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }