消息
站内消息和订阅。
查询消息列表与当前用户阅读状态
分页查询站内消息摘要和当前查询用户的已读状态,按 sort 降序、消息 ID 降序返回。普通用户只可查询展示中的、按当前服务端 receive 条件归属自己的消息;管理员可查询全部消息,也可用 receive 切换为指定接收用户视角。列表响应不包含消息正文 content,正文需通过 GET /v1/messages/{message_id} 获取。
创建站内消息
以当前管理员身份创建一条或多条站内消息。仅管理员可调用;发布者自动取当前登录用户,不能由请求指定。请求可为一个消息对象或非空消息对象数组,服务端依次创建并返回逗号分隔的消息 ID。当前实现仅允许消息类型 announcement。
标记消息已读
将一条或多条消息标记为当前登录用户已读。接口要求登录。对同一消息重复调用不会新增重复已读记录;服务端只校验消息是否存在,不会额外校验消息是否属于当前用户可见范围。
查询当前用户的消息订阅设置
查询当前登录用户的消息订阅记录。接口要求登录,不支持筛选参数;每条记录对应一个消息类型的邮件和短信接收开关。没有订阅记录时返回空数组。
更新当前用户的消息订阅开关
更新当前登录用户已有消息类型订阅记录的邮件或短信开关。接口要求登录,请求可为单个对象或对象数组。每一项都必须提供 `msg_type`;`phone`、`email` 可任选或同时提供。服务端仅执行 UPDATE:若当前用户没有对应订阅记录,请求仍成功但不会新增记录。
删除一条或多条消息
删除指定消息及其全部 `message_read` 已读记录。接口要求管理员身份。路径参数是字符串,可传单个消息 ID 或用英文逗号分隔多个 ID;服务端逐个验证 ID 格式和消息存在性,任一项失败时整个事务回滚。
获取消息完整详情
按 ID 返回 `message` 表的完整消息记录(包含正文及发送状态字段)。接口要求登录。若消息指定了 `receive` 且其值不是当前用户 ID,则仅管理员可查看;服务端不额外检查 `is_show`,因此已登录用户可读取未指定接收者的隐藏消息详情。
更新指定消息
更新指定消息的可编辑字段。接口要求管理员身份,路径中的 `message_id` 会覆盖请求体可能携带的 `id`。请求体必须为对象;所有业务字段均可省略,空对象也会成功并只更新 `update_at`。更新后的站内消息必须保有非空 `content`,外部链接消息必须保有非空 `url`。