实现了在任务创建、状态变更、分配用户时自动推送消息给相关人员的功能。
# 进入项目sql目录
cd d:\project\急救转运\code\Api\RuoYi-Vue-master\sql
# 执行消息表创建脚本
mysql -u root -p your_database < sys_message.sql
或者手动执行SQL:sql -- 在MySQL客户端中执行 source d:/project/急救转运/code/Api/RuoYi-Vue-master/sql/sys_message.sql;
# Windows
cd d:\project\急救转运\code\Api\RuoYi-Vue-master
bin\run.bat
# Linux
cd /path/to/RuoYi-Vue-master
sh bin/run.sh
| 类型 | 场景 | 接收人 | 内容 |
|---|---|---|---|
| 创建成功 | 创建任务 | 创建人 | 您创建的任务已成功提交 |
| 任务推送 | 分配执行人 | 执行人 | 您有新的任务,请及时处理 |
| 状态变更 | 更新状态 | 执行人+创建人 | 任务状态变更为:XXX |
sql/sys_message.sql - 数据库表SysMessage.java - 实体类SysMessageMapper.java - Mapper接口SysMessageMapper.xml - MyBatis映射ISysMessageService.java - Service接口SysMessageServiceImpl.java - Service实现SysMessageController.java - ControllerSysTaskServiceImpl.java - 任务服务(已集成消息推送)app/api/message.js - API接口app/pages/message/index.vue - 消息中心页面app/pages/index.vue - 首页(显示未读数量)GET /system/message/my - 获取当前用户消息列表
GET /system/message/unread/count - 获取未读消息数量
PUT /system/message/read/{id} - 标记消息为已读
PUT /system/message/read/all - 标记所有消息为已读
import { getMyMessages, getUnreadCount, markAsRead } from '@/api/message'
// 获取消息列表
const messages = await getMyMessages()
// 获取未读数量
const count = await getUnreadCount()
// 标记已读
await markAsRead(messageId)
// 推送创建成功消息(给创建人)
if (result > 0 && sysMessageService != null) {
sysMessageService.pushTaskCreateMessage(task);
}
// 推送任务分配消息(给执行人)
if (result > 0 && createVO.getAssignees() != null && !createVO.getAssignees().isEmpty()) {
List<Long> assigneeIds = createVO.getAssignees().stream()
.map(assignee -> assignee.getUserId())
.collect(Collectors.toList());
sysMessageService.pushTaskAssignMessage(task, assigneeIds);
}
// 推送任务分配消息
if (result > 0 && sysMessageService != null) {
List<Long> assigneeIds = new ArrayList<>();
assigneeIds.add(assigneeId);
sysMessageService.pushTaskAssignMessage(task, assigneeIds);
}
// 推送任务状态变更消息
if (result > 0 && sysMessageService != null) {
sysMessageService.pushTaskStatusChangeMessage(
oldTask,
oldTaskStatus.getCode(),
newStatus.getCode()
);
}
A: 检查以下几点:
1. 数据库表是否创建成功
2. 后端服务是否重启
3. 查看后端日志是否有异常
4. 确认 ISysMessageService 是否注入成功
A: 不会。消息推送使用 @Autowired(required = false),且所有异常都被捕获,不会影响任务的创建、分配和状态变更。
A: 查看后端日志,搜索关键字:
- "推送任务创建成功消息"
- "推送任务分配消息"
- "推送任务状态变更消息"
A:
1. 确认 app/pages/index.vue 已更新
2. 确认 app/api/message.js 已创建
3. 重新编译前端:npm run build:h5
请查看完整文档:prd/系统消息推送功能实现总结.md
更新时间: 2025-10-25
版本: v1.0