# 消息通知模块 - 集成说明

## 模块概述

消息通知模块已经完成开发，包含完整的前后端功能。该模块支持系统消息、邮件和短信通知，具有定时发送、重试机制、权限控制等特性。

## 已完成的文件

### 后端（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. 支持附件上传
