MessageController(消息/公告 CRUD)¶
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) |
请求示例¶
响应¶
结构: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 }
}
}
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>" }
}
3. 发布公告¶
发布一条公告型消息,title 与 content 经 filterScript 过滤尖角号;sticky 控制是否置顶。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/api/message/messages/announcement(完整:{message-context}/api/message/messages/announcement) - 鉴权:是
- Tag:消息模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| content.title | query/body | string | 否 | 公告标题(自动做尖角号过滤) |
| content.content | query/body | string | 否 | 公告正文(自动做尖角号过滤) |
| content.scope | query/body | int | 否 | 范围 |
| content.type | query/body | int | 否 | 类型 |
| content.sticky | query/body | string | 否 | 是否置顶,布尔字符串("true"/"false"),经 Boolean.valueOf 解析 |
请求示例¶
POST /api/message/messages/announcement?accessToken=<token>&content.title=系统升级&content.content=今晚22点&content.sticky=true HTTP/1.1
响应¶
结构:Map。
data:发布后的 Message 对象。
成功示例:
{
"status": 1,
"message": "ok",
"data": { "id": "<mid>", "title": "系统升级", "content": "今晚22点", "sticky": true, "type": 1 }
}
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) |
请求示例¶
响应¶
结构:Map。
data:null(不写入 data 字段)。
成功示例:
失败示例: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 |
请求示例¶
响应¶
结构:Map。
data:DataPackage<Message> 分页对象。
成功示例:
{
"status": 1,
"message": "ok",
"data": { "datas": [ { "id": "...", "title": "...", "content": "..." } ], "rowCount": 18, "linesPerPage": 20, "pageNo": 1 }
}
7. 站内消息已阅¶
批量将指定消息标记为当前用户已阅。请求体为 JSON 数组,元素含 messageid 字段。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/api/message/messages/messageReadOver(完整:{message-context}/api/message/messages/messageReadOver) - 鉴权:是
- Tag:消息模块
请求体¶
请求示例¶
POST /api/message/messages/messageReadOver?accessToken=<token> HTTP/1.1
Content-Type: application/json
[{"messageid":"<mid1>"},{"messageid":"<mid2>"}]
响应¶
结构:Map。
data:null(不写入 data 字段)。
成功示例:
失败示例:8. 公告型消息列表(公告查询)¶
按关键字分页查询公告型消息列表。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/api/message/messages/announcement(完整:{message-context}/api/message/messages/announcement) - 鉴权:是
- Tag:消息模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| content | query | string | 否 | 关键字 |
| _currpage | query | int | 否 | 页码,默认 1 |
| _rowcount | query | int | 否 | 每页条数,默认 30 |
请求示例¶
响应¶
结构:Map。
data:DataPackage<Message> 分页对象(仅含公告型消息)。
成功示例:
{
"status": 1,
"message": "ok",
"data": { "datas": [ { "id": "...", "title": "系统升级", "sticky": true } ], "rowCount": 2, "linesPerPage": 10, "pageNo": 1 }
}
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"=未转(已写入转换任务或参数缺失) |
成功示例:
失败示例: