跳转至

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「鉴权说明」)
  • 响应结构Mapstatus/message/data,详见 index.md「响应结构与错误码 - 风格一」)。其中 POST /create 返回 void 无响应体

Message 模型主要字段:idtitlecontentattachmentcreateTimesendersenderIdsenderDeptsenderDeptIdscope(范围 int)、type(类型 int)、sticky(置顶 boolean)、comment(允许评论 boolean)、commentCountreceiverInforeceiverIdreceiverDeptIdmoduledomainid


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

响应

结构Mapdata: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

响应

结构Mapdata:发布后的 Message 对象(含生成的 idsenderId 等)。

成功示例

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


3. 发布公告

发布一条公告型消息,titlecontentfilterScript 过滤尖角号;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

响应

结构Mapdata:发布后的 Message 对象。

成功示例

{
  "status": 1,
  "message": "ok",
  "data": { "id": "<mid>", "title": "系统升级", "content": "今晚22点", "sticky": true, "type": 1 }
}
失败示例
{ "status": 0, "message": "error" }


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 删除消息及对应的站内消息待阅/已阅数据;applicationIdParamsTable 取。

  • 接口类型: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

响应

结构Mapdatanull(不写入 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

响应

结构MapdataDataPackage<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>"}]

响应

结构Mapdatanull(不写入 data 字段)。

成功示例

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


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

请求示例

GET /api/message/messages/announcement?accessToken=<token>&_currpage=1&_rowcount=10 HTTP/1.1

响应

结构MapdataDataPackage<Message> 分页对象(仅含公告型消息)。

成功示例

{
  "status": 1,
  "message": "ok",
  "data": { "datas": [ { "id": "...", "title": "系统升级", "sticky": true } ], "rowCount": 2, "linesPerPage": 10, "pageNo": 1 }
}
失败示例
{ "status": 0, "message": "error" }


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

响应

结构MapdataMap<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" }