Files
schoolNews/消息通知模块集成说明.md
2025-11-13 19:00:27 +08:00

5.2 KiB
Raw Blame History

消息通知模块 - 集成说明

模块概述

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

已完成的文件

后端Java

  • 24个Java文件DTO、Mapper、Service、Controller、Scheduler、配置类
  • 位置:schoolNewsServ/message/schoolNewsServ/api/api-message/
  • SQL文件schoolNewsServ/.bin/mysql/sql/createTableMessage.sqlinitMenuData.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 配置文件中添加以下路由:

// 管理端路由
{
  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

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包含

<modules>
    <module>message</module>
</modules>

确保api/pom.xml中的modules包含

<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. 支持附件上传