跳转至

移动端通知(mobile.NoticeController)

移动端事件通知接口:分页获取当前用户的通知列表、删除指定通知、批量标记已读。

  • 接口类型: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/notice
  • Tag:事件通知模块(源码类级 @Tag(name = "事件通知模块")

公共说明

  • 鉴权(据源码):基址 /runtime/app/notice 不在 RestSecurityHandlerInterceptor 覆盖范围(拦截器仅覆盖 /api/runtime/**/api/rest/bpm/**)。鉴权由 RuntimeMvcConfig 注册的全局过滤器 RuntimeSecurityFilter(URL 模式 /*)执行:过滤器解析 AuthTimeServiceManager.getWebUser(request),取不到登录用户则返回 401(或 SSO 模式下重定向到 /signon)。除显式说明外,端点均需 accessToken,可通过 Cookie / 请求头 / query 参数任一方式传递。#1 list 在控制器内显式调用 getUserId(),无登录态时直接返回失败结果。
  • 响应结构(据源码 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)约定不一致,本文档按源码如实记录。
  • 参数读取:参数通过 BaseController.getParams()(基于 ParamsTable.convertHTTP(request))统一从 query / form 读取,无 @RequestParam 注解。
  • Feign 调用:控制器通过 SpringApplicationContextUtil.getBean(NoticeApi.class)NoticeApi(Feign 客户端)调用消息服务,再包成移动端响应结构返回。

1. 获取通知

分页获取当前用户的事件通知列表(经 NoticeApi.getNotices("0", pageNum, pageSize) 拉取后转换为移动端格式)。

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

请求参数

参数名 位置 类型 必填 说明
access_token query string 访问令牌(亦可经 Cookie / 请求头传递)
pageNum query int 页码,默认 1
pageSize query int 每页条数,默认 Integer.MAX_VALUE(即全量)

请求示例

GET /runtime/app/notice/list.action?pageNum=1&pageSize=20 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构Map,固定字段见「公共说明 · 响应结构」。 dataList<Map>,元素字段 { id, content(JSONObject,空内容为空对象), linkParams(JSONObject,空内容为空对象), toUserId, createTime, read(恒为 false), module, subjectType, messageType(恒为 1) }

{
  "status": 0,
  "message": "ok",
  "data": [
    {
      "id": "__NOTICEID__",
      "content": { "title": "流程待办提醒", "body": "您有 1 条待办" },
      "linkParams": { "docId": "__DOCID__", "applicationId": "__APPID__" },
      "toUserId": "__USERID__",
      "createTime": "2026-08-01 10:00:00",
      "read": false,
      "module": "bpm",
      "subjectType": "todo",
      "messageType": 1
    }
  ]
}

2. 删除通知

按通知 id 删除指定通知(经 NoticeApi.removeNotice(id))。

  • 接口类型:REST 资源
  • 请求方式@RequestMapping(未限定 method)
  • 请求路径/delete.action(完整:{runtime-context}/runtime/app/notice/delete.action
  • 鉴权:是(需 accessToken;源码 @Parameter 标注的是 access_tokenid,但控制器内未显式校验登录态,依赖前置 RuntimeSecurityFilter
  • Tag:事件通知模块

请求参数

参数名 位置 类型 必填 说明
id query string 通知主键

请求示例

GET /runtime/app/notice/delete.action?id=__NOTICEID__ HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构Map,固定字段见「公共说明 · 响应结构」。 data:成功时缺省(业务数据为 null)。

{ "status": 0, "message": "ok" }

3. 标记已读

按通知 id 列表(分隔符未限定,由 NoticeApi.readNotice(ids) 解析)批量标记已读。

  • 接口类型:REST 资源
  • 请求方式@RequestMapping(未限定 method)
  • 请求路径/read.action(完整:{runtime-context}/runtime/app/notice/read.action
  • 鉴权:是(需 accessToken)
  • Tag:事件通知模块

请求参数

参数名 位置 类型 必填 说明
access_token query string 访问令牌
ids query string 通知主键集合(源码 @Parameter 描述误写为「联系人主键」,据方法语义应为通知 id)

请求示例

GET /runtime/app/notice/read.action?ids=__NOTICEID1__,__NOTICEID2__ HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构Map,固定字段见「公共说明 · 响应结构」。 data:成功时缺省(业务数据为 null)。

{ "status": 0, "message": "ok" }