跳转至

移动端应用列表(mobile.ApplicationController)

移动端工作台应用列表接口:返回当前用户可见的应用清单(含进入系统的跳转 URL,URL 中的 application 参数按当前用户密钥 DES 加密)。

范围说明:本控制器为移动端 cn.myapps.runtime.mobile.application.controller.ApplicationController,基址 /runtime/app/applications。另有同名 REST 版 cn.myapps.runtime.application.controller.ApplicationController(基址 /api/runtime/applications),见 application.md,两者独立、不共用路由。

  • 接口类型:REST 资源(@Controller 继承 mobile.common.controller.BaseController,方法标注 @ResponseBody,返回 Map<String, Object>,由 Spring Jackson 序列化为 JSON 对象;响应非统一 Resource,封装为 { "status": 0/1, "message": "ok"/"error", "data": <数据> },详见「公共说明 · 响应结构」)
  • 基址${myapps.context-path.runtime:}/runtime/app/applications
  • Tag:工作台模块(源码类级 @Tag(name = "工作台模块")

公共说明

  • 鉴权(据源码):基址 /runtime/app/applications 不在 RestSecurityHandlerInterceptor 覆盖范围(拦截器仅覆盖 /api/runtime/**/api/rest/bpm/**)。鉴权由 RuntimeMvcConfig 注册的全局过滤器 RuntimeSecurityFilter(URL 模式 /*)执行:过滤器解析 AuthTimeServiceManager.getWebUser(request),取不到登录用户则返回 401(或 SSO 模式下重定向到 /signon)。所有端点均需 accessToken,可通过 Cookie / 请求头 / query 参数任一方式传递。控制器内 getUserId() 通过 Security.getUserIdFromToken(request) 还原用户 id;无登录态时返回 null,控制器会直接返回失败结果(addActionResult(false, null))。
  • 响应结构(据源码 mobile.common.controller.BaseController.addActionResult:本控制器所有端点返回 Map<String, Object>,结构为:
    {
      "status": 0,
      "message": "ok",
      "data": <数据>
    }
    
  • status0 成功,1 失败;
  • message:成功 ok,失败 error
  • data:业务数据;当业务返回 nulldata 字段缺省;写入前由 ESAPI.encode(data) 做 XSS 编码。
  • 与统一 Resourceerrcode/errmsg/data/errors)约定不一致,本文档按源码如实记录。
  • DES 加密:返回 URL 中的 application 参数为应用 id 经 DesUtil.encryptTextByUserId(app.getId(), userId) 按当前用户密钥加密后的密文;知识管理应用(KMAPPID)走独立的 KMS 移动端入口并附带一次性 token。

1. 获取应用列表

返回当前用户可见的应用清单,每个应用附带「进入系统」的跳转 URL(URL 中的 application 参数为按当前用户密钥 DES 加密后的密文)。

  • 接口类型:REST 资源
  • 请求方式@RequestMapping(未限定 method,支持 GET / POST 等所有方法
  • 请求路径/list.action(完整:{runtime-context}/runtime/app/applications/list.action
  • 鉴权:是(需 accessToken;无登录态时 getUserId() 返回 null,控制器直接返回失败结果)
  • Tag:工作台模块

请求参数

无业务参数(仅 accessToken)。

请求示例

GET /runtime/app/applications/list.action HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构Map,固定字段见「公共说明 · 响应结构」。 dataList<Map>,元素结构 { id, name, description, logourl(固定为 "/uploads/app/oa.png"), jumpToUrl: { url1: { url, name } } }。 - 一般应用 url 形如 /mobile/index.html#/?application=<DES密文>&mode=app&jump=homepage&userId=<用户id>; - 知识管理应用(id=KMAPPIDurl 形如 /kms/kmsphone/index.html?application=km&mode=app&jump=homepage&userId=<用户id>&accessToken=<一次性token>

{
  "status": 0,
  "message": "ok",
  "data": [
    {
      "id": "__APPID__",
      "name": "OA 办公",
      "description": "OA 办公系统",
      "logourl": "/uploads/app/oa.png",
      "jumpToUrl": {
        "url1": {
          "url": "/mobile/index.html#/?application=__DES加密密文__&mode=app&jump=homepage&userId=__USERID__",
          "name": "进入系统"
        }
      }
    }
  ]
}