站内信
站内信是 RuoYi Office 内部消息通知能力,适合审批提醒、系统公告、任务待办、流程抄送等不依赖外部通道的场景。它由站内信模板、站内信消息和“我的站内信”三部分组成。
本地实现位置
| 层 | 位置 |
|---|---|
| 模板页面 | ruoyi-office-vben/apps/web-antd/src/views/system/notify/template |
| 消息页面 | views/system/notify/message |
| 我的站内信 | views/system/notify/my |
| 后端 Controller | NotifyTemplateController.java、NotifyMessageController.java |
| 发送服务 | NotifySendService |
能力链路
站内信模板
模板页面支持新增、编辑、删除、批量删除、导出和测试发送。测试发送会调用 /system/notify-template/send-notify。
| 操作 | 接口 | 权限标识 |
|---|---|---|
| 创建模板 | POST /system/notify-template/create | system:notify-template:create |
| 更新模板 | PUT /system/notify-template/update | system:notify-template:update |
| 删除模板 | DELETE /system/notify-template/delete | system:notify-template:delete |
| 模板分页 | GET /system/notify-template/page | 页面查询使用 |
| 测试发送 | POST /system/notify-template/send-notify | system:notify-template:send-notify |
测试发送支持管理员和会员两类用户:当 userType 为会员时调用 sendSingleNotifyToMember,否则调用 sendSingleNotifyToAdmin。
站内信消息
消息管理页面用于管理员查看所有站内信记录,主要用于排查业务触发是否成功、模板参数是否渲染正确。
| 操作 | 接口 | 说明 |
|---|---|---|
| 查询消息 | GET /system/notify-message/page | 管理员查看全量消息分页 |
| 消息详情 | GET /system/notify-message/get | 查看标题、内容、接收人、读取状态等 |
我的站内信
“我的站内信”面向当前登录管理员,提供分页、详情、标记已读、全部已读,并结合 OA/流程通知支持跳转审批详情或发起沟通。
| 操作 | 接口 | 说明 |
|---|---|---|
| 我的分页 | GET /system/notify-message/my-page | 当前用户站内信列表 |
| 标记已读 | PUT /system/notify-message/update-read | 支持单条或多条 |
| 全部已读 | PUT /system/notify-message/update-all-read | 清空未读状态 |
二开建议
- 模板 code 作为稳定契约:业务代码触发通知时通常按模板 code 查找,线上不要随意修改。
- 参数要可读可回溯:模板参数建议使用业务含义清晰的 key,例如
processName、starterName。 - 业务跳转信息放在扩展元数据:审批详情、流程实例、IM 会话等跳转信息应结构化保存,避免只拼接文本。
- 站内信不替代短信/邮件:站内信适合系统内提醒;强触达场景可叠加短信或邮件。
排查清单
| 现象 | 排查方向 |
|---|---|
| 用户没收到站内信 | 检查模板 code、用户类型、用户 ID 和发送服务调用 |
| 内容参数没替换 | 检查模板变量名与 templateParams key 是否一致 |
| 我的站内信无法跳转审批 | 检查通知扩展元数据是否包含流程实例和路由信息 |
| 消息已发送但仍未读 | 用户是否进入“我的站内信”并标记已读,或是否调用全部已读接口 |
