跳转至

MessageController(消息/公告 CRUD)

2026-08-16 已下线。 MessageController 与 /api/message/messages*(含公告发布/查询)已删除,调用一律 404。事项提醒走 /api/message/notice*,见 java/obpm-message/message-api.md 与 变更文档。MESSAGE.queryAnnouncement / publishAnnouncement / getAnnouncement 已从 iScript 删除。下文仅作历史对照。

cn.myapps.message.message.controller.MessageController(@Controller("MessageAction"))— 站内消息/公告的发布、查询、删除、已阅与附件预览。继承 BaseController<Message>,方法返回 Map<String, Object> 经 Jackson 序列化。

  • 基址:${myapps.context-path.message:}/api/message/messages(完整:{message-context}/api/message/messages)
  • Tag:消息模块
  • 鉴权:是(需 accessToken;详见 index.md「鉴权说明」)
  • 响应结构:Map(status/message/data,详见 index.md「响应结构与错误码 - 风格一」)。其中 POST /create 返回 void 无响应体。

Message 模型主要字段:id、title、content、attachment、createTime、sender、senderId、senderDept、senderDeptId、scope(范围 int)、type(类型 int)、sticky(置顶 boolean)、comment(允许评论 boolean)、commentCount、receiverInfo、receiverId、receiverDeptId、module、domainid。


1. 获取消息以及评论内容

按 messageId 取一条消息详情,并附加该消息下前 100 条评论。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/api/message/messages(完整:{message-context}/api/message/messages)
  • 鉴权:是
  • Tag:消息模块

请求参数

参数名 位置 类型 必填 说明
messageId query string 是 消息 id(Swagger 标注 required=true)

请求示例

GET /api/message/messages?accessToken=<token>&messageId=<mid> HTTP/1.1

响应

结构:Map。 data:JSON 对象 { "message": <Message>, "comments": <DataPackage<Comment>> }。

成功示例:

{
  "status": 1,
  "message": "ok",
  "data": {
    "message": { "id": "<mid>", "title": "...", "content": "...", "senderId": "..." },
    "comments": { "datas": [ { "id": "<cid>", "content": "..." } ], "rowCount": 3, "linesPerPage": 100, "pageNo": 1 }
  }
}
失败示例:
{ "status": 0, "message": "error" }


2. 发布消息

发布一条站内消息,发布后调用 messageProcess.addRead(message) 写入待阅/已阅中间表。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/api/message/messages(完整:{message-context}/api/message/messages)
  • 鉴权:是
  • Tag:消息模块

请求参数

参数名 位置 类型 必填 说明
content.content query/body string 否 消息正文
content.attachment query/body string 否 附件标识
content.scope query/body int 否 范围(0=公开/部门/指定等,业务侧约定)
content.type query/body int 否 类型(业务侧约定)

参数经 ParamsTable 收集,可放 query 或 form body。

请求示例

POST /api/message/messages?accessToken=<token>&content.content=通知正文&content.type=0&content.scope=1 HTTP/1.1

响应

结构:Map。 data:发布后的 Message 对象(含生成的 id、senderId 等)。

成功示例:

{
  "status": 1,
  "message": "ok",
  "data": { "id": "<mid>", "content": "通知正文", "type": 0, "scope": 1, "senderId": "<uid>" }
}
失败示例:
{ "status": 0, "message": "error" }


3. 发布公告(已删除)

已下线。 原 POST /api/message/messages/announcement 与 iScript MESSAGE.publishAnnouncement 已删除。公司公告请用业务表单(如 OA TLK_NOTICE)。事项提醒见 /api/message/notice*。


4. 创建站内消息

按 receiverids(接收人 id 列表)创建一条站内消息。返回 void,无响应体;服务端异常时抛出(HTTP 500)。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/api/message/messages/create(完整:{message-context}/api/message/messages/create)
  • 鉴权:是
  • Tag:消息模块

注:源码 @Operation(summary) 误写为「发布公告」,实际方法名为 doCreateMessage,按 Javadoc「创建站内消息」记述。

请求参数

参数名 位置 类型 必填 说明
receiverids query/body string 是 接收人 id 列表(按业务约定分隔符)
title query/body string 否 标题
content query/body string 否 内容
userId query/body string 否 发送用户 id(缺省取 token 用户)

请求示例

POST /api/message/messages/create?accessToken=<token>&receiverids=u1,u2&title=你好&content=欢迎 HTTP/1.1

响应

结构:无(void,HTTP 200,无响应体)。服务端异常时抛出 Exception 由 Spring 默认异常处理(HTTP 500)。


5. 删除信息

按 messageId 删除消息及对应的站内消息待阅/已阅数据;applicationId 经 ParamsTable 取。

  • 接口类型:REST 资源
  • 请求方式:DELETE
  • 请求路径:/api/message/messages(完整:{message-context}/api/message/messages)
  • 鉴权:是
  • Tag:消息模块

请求参数

参数名 位置 类型 必填 说明
messageId query string 是 消息 id(@RequestParam,Swagger 标注 required=true)
applicationId query string 是 应用 id(经 ParamsTable 取,Swagger 标注 required=true)

请求示例

DELETE /api/message/messages?accessToken=<token>&messageId=<mid>&applicationId=<aid> HTTP/1.1

响应

结构:Map。 data:null(不写入 data 字段)。

成功示例:

{ "status": 1, "message": "ok" }
失败示例:
{ "status": 0, "message": "error" }


6. 查询消息列表(首页查询)

按关键字分页查询消息列表。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/api/message/messages/list(完整:{message-context}/api/message/messages/list)
  • 鉴权:是
  • Tag:消息模块

请求参数

参数名 位置 类型 必填 说明
content query string 否 关键字
_currpage query int 否 页码,默认 1
_rowcount query int 否 每页条数,默认 30

请求示例

GET /api/message/messages/list?accessToken=<token>&content=通知&_currpage=1&_rowcount=20 HTTP/1.1

响应

结构:Map。 data:DataPackage<Message> 分页对象。

成功示例:

{
  "status": 1,
  "message": "ok",
  "data": { "datas": [ { "id": "...", "title": "...", "content": "..." } ], "rowCount": 18, "linesPerPage": 20, "pageNo": 1 }
}
失败示例:
{ "status": 0, "message": "error" }


7. 站内消息已阅

批量将指定消息标记为当前用户已阅。请求体为 JSON 数组,元素含 messageid 字段。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/api/message/messages/messageReadOver(完整:{message-context}/api/message/messages/messageReadOver)
  • 鉴权:是
  • Tag:消息模块

请求体

[
  { "messageid": "<mid1>" },
  { "messageid": "<mid2>" }
]

请求示例

POST /api/message/messages/messageReadOver?accessToken=<token> HTTP/1.1
Content-Type: application/json

[{"messageid":"<mid1>"},{"messageid":"<mid2>"}]

响应

结构:Map。 data:null(不写入 data 字段)。

成功示例:

{ "status": 1, "message": "ok" }
失败示例:
{ "status": 0, "message": "error" }


8. 公告型消息列表(已删除)

已下线。 原 GET /api/message/messages/announcement 与 iScript MESSAGE.queryAnnouncement / getAnnouncement 已删除。公司公告请查业务表或 OA「公告入口」。


9. 查看预览文件

判断指定附件是否存在 swf/pdf 转换文件;若 swf 不存在则写入一条转换任务。返回原文件路径、swf 路径与是否已转 swf 的标记。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/api/message/messages/attachement/preview(完整:{message-context}/api/message/messages/attachement/preview)
  • 鉴权:是
  • Tag:消息模块

请求参数

参数名 位置 类型 必填 说明
id query string 是 文件 id
extName query string 是 后缀名
url query string 是 文件相对路径

请求示例

GET /api/message/messages/attachement/preview?accessToken=<token>&id=<fid>&extName=pdf&url=/uploads/<fid>.pdf HTTP/1.1

响应

结构:Map。 data:Map<String,String>,固定三项:

字段 类型 说明
origPath string 原文件绝对路径;不存在时为 ""
swfPath string swf 文件绝对路径;不存在时为 ""
is2SWF string "true"=已转 swf;"false"=未转(已写入转换任务或参数缺失)

成功示例:

{
  "status": 1,
  "message": "ok",
  "data": {
    "origPath": "/data/workspace/uploads/<fid>.pdf",
    "swfPath": "/data/workspace/uploads/swf/<fid>.swf",
    "is2SWF": "true"
  }
}
失败示例:
{ "status": 0, "message": "error" }