189 lines
5.2 KiB
Markdown
189 lines
5.2 KiB
Markdown
|
|
# 消息通知模块 - 集成说明
|
|||
|
|
|
|||
|
|
## 模块概述
|
|||
|
|
|
|||
|
|
消息通知模块已经完成开发,包含完整的前后端功能。该模块支持系统消息、邮件和短信通知,具有定时发送、重试机制、权限控制等特性。
|
|||
|
|
|
|||
|
|
## 已完成的文件
|
|||
|
|
|
|||
|
|
### 后端(Java)
|
|||
|
|
- 24个Java文件(DTO、Mapper、Service、Controller、Scheduler、配置类)
|
|||
|
|
- 位置:`schoolNewsServ/message/` 和 `schoolNewsServ/api/api-message/`
|
|||
|
|
- SQL文件:`schoolNewsServ/.bin/mysql/sql/createTableMessage.sql` 和 `initMenuData.sql`
|
|||
|
|
|
|||
|
|
### 前端(Vue)
|
|||
|
|
1. **类型定义**
|
|||
|
|
- `schoolNewsWeb/src/types/message/index.ts`
|
|||
|
|
|
|||
|
|
2. **API接口**
|
|||
|
|
- `schoolNewsWeb/src/apis/message/message.ts`
|
|||
|
|
- `schoolNewsWeb/src/apis/message/index.ts`
|
|||
|
|
|
|||
|
|
3. **通用组件**(4个)
|
|||
|
|
- `schoolNewsWeb/src/components/message/MessagePriorityBadge.vue`
|
|||
|
|
- `schoolNewsWeb/src/components/message/MessageStatusBadge.vue`
|
|||
|
|
- `schoolNewsWeb/src/components/message/MessageSendMethodSelector.vue`
|
|||
|
|
- `schoolNewsWeb/src/components/message/MessageTargetSelector.vue` (已删除,功能集成到列表页)
|
|||
|
|
- `schoolNewsWeb/src/components/message/index.ts`
|
|||
|
|
|
|||
|
|
4. **管理端页面**(2个)
|
|||
|
|
- `schoolNewsWeb/src/views/admin/manage/message/MessageListView.vue` (集成创建功能)
|
|||
|
|
- `schoolNewsWeb/src/views/admin/manage/message/MessageDetailView.vue`
|
|||
|
|
- `schoolNewsWeb/src/views/admin/manage/message/index.ts`
|
|||
|
|
|
|||
|
|
5. **用户端页面**(2个)
|
|||
|
|
- `schoolNewsWeb/src/views/user/message/MyMessageListView.vue`
|
|||
|
|
- `schoolNewsWeb/src/views/user/message/MyMessageDetailView.vue`
|
|||
|
|
- `schoolNewsWeb/src/views/user/message/index.ts`
|
|||
|
|
|
|||
|
|
## 需要配置的内容
|
|||
|
|
|
|||
|
|
### 1. 前端路由配置
|
|||
|
|
|
|||
|
|
在 Vue Router 配置文件中添加以下路由:
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
// 管理端路由
|
|||
|
|
{
|
|||
|
|
path: '/admin/manage/message',
|
|||
|
|
component: AdminLayout, // 或您的布局组件
|
|||
|
|
children: [
|
|||
|
|
{
|
|||
|
|
path: 'list',
|
|||
|
|
name: 'MessageManagement',
|
|||
|
|
component: () => import('@/views/admin/manage/message/MessageListView.vue'),
|
|||
|
|
meta: { title: '消息管理', requiresAuth: true, permission: 'message:manage' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'detail/:id',
|
|||
|
|
name: 'MessageDetail',
|
|||
|
|
component: () => import('@/views/admin/manage/message/MessageDetailView.vue'),
|
|||
|
|
meta: { title: '消息详情', requiresAuth: true, permission: 'message:manage' }
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 用户端路由
|
|||
|
|
{
|
|||
|
|
path: '/user/message',
|
|||
|
|
component: UserLayout, // 或您的用户布局组件
|
|||
|
|
children: [
|
|||
|
|
{
|
|||
|
|
path: 'list',
|
|||
|
|
name: 'MyMessages',
|
|||
|
|
component: () => import('@/views/user/message/MyMessageListView.vue'),
|
|||
|
|
meta: { title: '我的消息', requiresAuth: true }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'detail/:id',
|
|||
|
|
name: 'MyMessageDetail',
|
|||
|
|
component: () => import('@/views/user/message/MyMessageDetailView.vue'),
|
|||
|
|
meta: { title: '消息详情', requiresAuth: true }
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 后端配置
|
|||
|
|
|
|||
|
|
确保以下配置已添加到 `application.yml`:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
spring:
|
|||
|
|
task:
|
|||
|
|
scheduling:
|
|||
|
|
enabled: true
|
|||
|
|
execution:
|
|||
|
|
pool:
|
|||
|
|
core-size: 10
|
|||
|
|
max-size: 20
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 数据库初始化
|
|||
|
|
|
|||
|
|
执行以下SQL文件:
|
|||
|
|
1. `schoolNewsServ/.bin/mysql/sql/createTableMessage.sql` - 创建表结构
|
|||
|
|
2. `schoolNewsServ/.bin/mysql/sql/initMenuData.sql` - 初始化菜单和权限数据
|
|||
|
|
|
|||
|
|
### 4. Maven依赖
|
|||
|
|
|
|||
|
|
确保父pom.xml中的modules包含:
|
|||
|
|
```xml
|
|||
|
|
<modules>
|
|||
|
|
<module>message</module>
|
|||
|
|
</modules>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
确保api/pom.xml中的modules包含:
|
|||
|
|
```xml
|
|||
|
|
<modules>
|
|||
|
|
<module>api-message</module>
|
|||
|
|
</modules>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 功能说明
|
|||
|
|
|
|||
|
|
### 管理端功能
|
|||
|
|
1. **消息列表**
|
|||
|
|
- 筛选(标题、类型、状态、优先级)
|
|||
|
|
- 分页展示
|
|||
|
|
- 创建消息(对话框模式)
|
|||
|
|
- 立即发送、重试、改期、取消、删除
|
|||
|
|
|
|||
|
|
2. **消息详情**
|
|||
|
|
- 完整信息展示
|
|||
|
|
- 发送统计(进度、成功率、已读率)
|
|||
|
|
- 接收对象列表
|
|||
|
|
- 用户接收详情
|
|||
|
|
|
|||
|
|
### 用户端功能
|
|||
|
|
1. **我的消息**
|
|||
|
|
- 卡片式列表
|
|||
|
|
- 未读标识
|
|||
|
|
- 批量标记已读
|
|||
|
|
- 筛选功能
|
|||
|
|
|
|||
|
|
2. **消息详情**
|
|||
|
|
- 自动标记已读
|
|||
|
|
- 精美展示
|
|||
|
|
- 响应式设计
|
|||
|
|
|
|||
|
|
## 权限说明
|
|||
|
|
|
|||
|
|
数据库中已配置以下权限:
|
|||
|
|
- `message:manage` - 消息管理权限(管理端)
|
|||
|
|
- `message:send` - 消息发送权限
|
|||
|
|
- `message:view` - 消息查看权限(用户端)
|
|||
|
|
|
|||
|
|
默认绑定到:
|
|||
|
|
- superadmin - 所有权限
|
|||
|
|
- admin - 管理和发送权限
|
|||
|
|
- freedom - 查看权限
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **EmailUtils和SmsUtils**:确保这两个工具类在common模块中存在且可用
|
|||
|
|
2. **定时任务**:消息定时发送由`MessageScheduler`处理,每分钟扫描一次
|
|||
|
|
3. **权限控制**:用户只能向当前部门及子部门发送消息
|
|||
|
|
4. **重试机制**:发送失败后会自动重试,默认最多3次,间隔5分钟
|
|||
|
|
|
|||
|
|
## 测试建议
|
|||
|
|
|
|||
|
|
1. 先测试立即发送功能
|
|||
|
|
2. 测试定时发送功能(设置1-2分钟后的时间)
|
|||
|
|
3. 测试权限控制(不同角色的访问)
|
|||
|
|
4. 测试用户端的消息查看和已读标记
|
|||
|
|
|
|||
|
|
## 已知问题
|
|||
|
|
|
|||
|
|
1. MessageDetailView中的用户接收详情列表需要后端补充接口:`GET /message/users/{messageID}`
|
|||
|
|
2. 如果EmailUtils或SmsUtils不存在,需要先实现这两个工具类
|
|||
|
|
|
|||
|
|
## 后续优化建议
|
|||
|
|
|
|||
|
|
1. 添加富文本编辑器支持
|
|||
|
|
2. 添加消息模板功能
|
|||
|
|
3. 添加消息统计报表
|
|||
|
|
4. 添加消息分类功能
|
|||
|
|
5. 支持附件上传
|