Skip to content

l2314800304/Notification

Repository files navigation

📢 通知管理中心 (Notification Center)

一个功能强大的多渠道通知管理系统,支持 WebSocket 实时推送、短信、以及主流手机厂商推送通道。采用 DDD 分层架构设计,配备现代化的科技感管理界面。

Java Spring Boot Vue Element Plus License

✨ 特性

  • 🎯 多渠道推送:支持 WebSocket、阿里云短信、iOS、华为、小米、OPPO、VIVO、荣耀、一加等 9 种推送通道
  • 📥 RabbitMQ 集成:支持通过消息队列接收推送请求,实现异步解耦
  • 🔄 循环发送:支持消息循环发送,可实时启停控制
  • 🔁 失败重试:自动重试机制,可配置重试次数和间隔
  • 📊 实时监控:WebSocket 实时推送消息状态更新
  • 🎨 科技感 UI:深色主题、流光动画、毛玻璃效果
  • 🏗️ DDD 架构:清晰的分层设计,易于扩展和维护
  • 📱 响应式设计:适配不同屏幕尺寸

🏗️ 技术栈

后端

  • Java 21 - 编程语言
  • Spring Boot 3.3.5 - 应用框架
  • MyBatis-Plus - ORM 框架
  • MySQL 8.0+ - 数据库
  • RabbitMQ - 消息队列
  • Maven - 构建工具
  • Lombok - 代码简化
  • WebSocket - 实时通信

前端

  • Vue 3.5 - 前端框架
  • Vite 8.0 - 构建工具
  • Element Plus - UI 组件库
  • Axios - HTTP 客户端
  • Vue Router - 路由管理

📦 项目结构

notification/
├── notification-common/          # 公共模块(工具类、常量、异常等)
├── notification-domain/          # 领域层(实体、枚举、领域服务)
├── notification-infrastructure/  # 基础设施层(数据访问、外部服务)
├── notification-service/         # 应用服务层(业务逻辑)
├── notification-application/     # 应用层(用例、DTO)
├── notification-web/             # Web 层(控制器、配置)
├── notification-admin/           # 前端管理界面(Vue 3)
├── start/                        # 启动模块(应用入口)
├── sql/                          # 数据库脚本
│   └── schema.sql               # 建表脚本
└── pom.xml                       # Maven 父 POM

🚀 快速开始

环境要求

  • JDK 21+
  • Maven 3.6+
  • MySQL 8.0+
  • RabbitMQ 3.8+(可选,用于消息队列功能)
  • Node.js 18+
  • npm 9+

1. 克隆项目

git clone https://github.com/your-username/notification.git
cd notification

2. 数据库初始化

# 登录 MySQL
mysql -u root -p

# 执行建表脚本
source sql/schema.sql

3. 配置数据库和 RabbitMQ 连接

编辑 start/src/main/resources/application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/notification?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: your-password
  
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: /

4. 启动后端

# 编译项目
mvn clean install

# 启动应用
cd start
mvn spring-boot:run

后端服务将在 http://localhost:8080 启动

5. 启动前端

# 进入前端目录
cd notification-admin

# 安装依赖
npm install

# 启动开发服务器
npm run dev

前端管理界面将在 http://localhost:5173 启动

📖 功能说明

消息管理

  • 发送消息:选择消息类型、填写内容和目标,支持循环发送
  • 消息列表:查看所有消息,支持按状态筛选
  • 循环控制:为成功的消息开启/停止循环发送
  • 消息重发:对失败的消息进行重发
  • 发送记录:查看每条消息的详细发送历史

推送配置

  • 通道配置:配置各推送通道的密钥和参数
  • 启用/禁用:灵活控制各通道的开关状态

短信模板

  • 模板管理:管理阿里云短信模板
  • 模板参数:配置模板变量说明

实时推送

  • WebSocket 连接:自动连接 WebSocket 接收实时通知
  • 状态同步:消息状态实时更新
  • 队列监控:实时查看消息队列状态

RabbitMQ 消息队列

  • 异步接收:通过 RabbitMQ 接收外部系统的推送请求
  • 消息验证:自动验证消息格式和必填字段
  • 可靠处理:支持消息确认和失败重试
  • 多通道支持:所有推送通道都支持通过 RabbitMQ 发送

🎨 界面预览

消息管理

  • 统计卡片:实时展示各状态消息数量
  • 消息列表:支持筛选、循环控制、重发、删除
  • 记录弹窗:查看消息详情和发送历史

科技感设计

  • 深色主题:护眼的深色配色方案
  • 流光动画:卡片悬停流光效果
  • 发光效果:按钮和图标发光动画
  • 毛玻璃效果:半透明背景模糊

🔧 配置说明

RabbitMQ 配置

系统已集成 RabbitMQ,支持通过消息队列接收推送请求。

架构设计:

外部系统 → RabbitMQ → NotificationListener → Database → NotificationService → 推送通道

核心组件:

  • Exchange: notification.exchange (Direct类型)
  • Queue: notification.queue
  • RoutingKey: notification.send

消息格式:

{
  "messageType": "WEBSOCKET",  // 必填:消息类型
  "targetId": "user_001",       // 必填:目标标识
  "content": "消息内容",        // 必填:消息内容
  "title": "消息标题",          // 可选
  "maxRetry": 3,               // 可选:最大重试次数,默认3
  "templateId": 1,             // 可选:短信模板ID
  "templateParams": "{}"       // 可选:模板参数JSON
}

快速测试:

# 发送 WebSocket 消息
curl -X POST 'http://localhost:8080/api/rabbitmq/test/websocket' \
  -d 'accountId=user_001' \
  -d 'content=Hello RabbitMQ!' \
  -d 'title=测试消息'

# 批量发送测试
curl -X POST 'http://localhost:8080/api/rabbitmq/test/batch?count=5'

📖 详细使用文档请查看:RABBITMQ_USAGE.md

推送通道配置

系统支持以下推送通道:

通道 类型 配置项
WebSocket WEBSOCKET 无需额外配置
阿里云短信 SMS AccessKeyId, AccessKeySecret, 签名
iOS 推送 IOS P8 文件路径, TeamId, KeyId, BundleId
华为推送 HUAWEI AppId, AppSecret
小米推送 XIAOMI AppSecret, PackageName
OPPO 推送 OPPO AppKey, MasterSecret
VIVO 推送 VIVO AppId, AppKey, AppSecret
荣耀推送 HONOR AppId, AppSecret
一加推送 ONEPLUS AppKey, MasterSecret

循环发送配置

  • 发送间隔:5-3600 秒(默认 10 秒)
  • 最大重试:0-10 次(默认 3 次)
  • 循环控制:可随时启停

📊 数据库设计

核心表结构

  1. notification_message - 通知消息表

    • 存储所有消息及其状态
    • 支持重试和循环发送
  2. push_config - 推送配置表

    • 各推送通道的配置信息
    • 支持动态启用/禁用
  3. sms_template - 短信模板表

    • 阿里云短信模板管理
    • 模板参数配置
  4. notification_send_log - 发送记录表

    • 记录每次发送尝试
    • 包含成功/失败状态和错误信息

🔌 API 文档

主要接口

消息管理

接口 方法 路径 说明
发送消息 POST /api/notifications 创建并发送消息
获取列表 GET /api/notifications 获取消息列表
重发消息 POST /api/notifications/{id}/retry 重发消息
删除消息 DELETE /api/notifications/{id} 删除消息
获取记录 GET /api/notifications/{id}/send-logs 获取发送记录
启动循环 POST /api/notifications/{id}/loop/start 启动循环发送
停止循环 POST /api/notifications/{id}/loop/stop 停止循环发送
队列状态 GET /api/notifications/queue/stats 获取队列统计

RabbitMQ 测试接口

接口 方法 路径 说明
测试WebSocket POST /api/rabbitmq/test/websocket 发送WebSocket测试消息
测试短信 POST /api/rabbitmq/test/sms 发送短信测试消息
自定义消息 POST /api/rabbitmq/test/custom 发送自定义JSON消息
批量发送 POST /api/rabbitmq/test/batch 批量发送测试消息
全类型测试 POST /api/rabbitmq/test/all-types 发送所有类型消息

🛠️ 开发指南

添加新的推送通道

  1. notification-domain 中添加新的消息类型枚举
  2. notification-infrastructure 中实现推送客户端
  3. notification-service 中注册推送策略
  4. 在前端添加对应的选项

扩展功能

项目采用 DDD 分层架构,各层职责清晰:

  • Domain 层:添加新的领域对象和业务规则
  • Infrastructure 层:实现新的数据访问或外部服务
  • Service 层:编排业务逻辑
  • Application 层:定义新的用例和 DTO
  • Web 层:添加新的 REST API

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📝 更新日志

v1.0.0 (2026-05-31)

  • ✨ 初始版本发布
  • 🎯 支持 9 种推送通道
  • 📥 集成 RabbitMQ 消息队列
  • 🔄 循环发送和失败重试
  • 🎨 科技感管理界面
  • 📊 实时监控和统计

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

👤 作者

Your Name

🙏 致谢


⭐ 如果这个项目对你有帮助,请给它一个星标!