JMI-OPENATOM System 是一个面向高校开源社团的全栈管理系统,旨在提供高效的成员管理、招新流程、活动组织及文书审批功能。系统采用前后端分离架构,后端基于 Spring Boot 3 + JDK 21,前端基于 Vue 3 + Vite,并集成了 QQ 群机器人(AstrBot + NapCat)实现消息通知与群管理能力。
| 技术 | 版本 | 用途 |
|---|
| Spring Boot | 3.3.12 | 核心框架 |
| JDK | 21 | 运行时 |
| Sa-Token | 1.37.0 | 认证与权限校验(JWT 模式) |
| MyBatis Plus | 3.5.5 | ORM / 持久层 |
| MySQL | 8.0 | 关系型数据库 |
| Flyway | 随 Spring Boot | 数据库版本迁移 |
| Redis | 7 | 缓存、限流、分布式锁 |
| Apache POI | 5.3.0 | Excel 导入导出 |
| Lombok | 1.18.34 | 样板代码消除 |
| 技术 | 版本 | 用途 |
|---|
| Vue | 3.5+ | 核心框架(组合式 API) |
| Vite | 6.0+ | 构建工具 |
| Element Plus | 2.9+ | UI 组件库 |
| TailwindCSS | 3.4 | 原子化 CSS |
| Vue Router | 4.5+ | 路由管理 |
| Axios | 1.7+ | HTTP 请求 |
| GSAP | 3.15+ | 动画引擎 |
| TypeScript | 5.8 | 类型安全 |
| 技术 | 用途 |
|---|
| UniApp | 跨端框架,编译到微信小程序 |
| Vant Weapp | 微信小程序 UI 组件库 |
| Pinia | 状态管理 |
| 技术 | 用途 |
|---|
| Docker / Docker Compose | 容器化部署 |
| GitHub Actions | CI/CD 自动化 |
| Nginx | 反向代理、静态资源服务 |
| AstrBot + NapCat | QQ 群机器人系统 |
- 社团基础信息维护
- 部门架构管理
- 岗位设置与角色分配
- 社团规章制度管理
- 自定义报名表单(动态表单引擎)
- 多级审批流程
- 面试安排与反馈
- 批量录用 / 淘汰
- 成员全生命周期管理(入会 → 在会 → 退会)
- 往届成员/校友分组
- 成员状态变更与批量操作
- 退社申请与强制退社
- 活动发布与在线报名
- 内部签到系统(扫码签到)
- 获奖记录管理
- 晚自习签到与考勤
- 文书模板与生成(Word 导出)
- 通知推送系统
- 校历管理
- 请假申请与审批
- 博客系统(文章发布、评论、点赞)
- 投票活动
- 抽奖活动
- 积分系统(签到奖励、兑换商城)
- RBAC 权限模型(角色 → 权限点)
- OAuth2 认证中心(OIDC)
- 操作日志与登录日志
- 图床服务
- 数据开放平台
- 群消息收发与群管理
- 请假审批通知推送
- 群公告管理
- 入群申请处理
┌──────────────────────────────────────────────────────────┐
│ 用户浏览器 / 微信小程序 │
│ www.jmi-openatom.cn │
└──────────────────────┬───────────────────────────────────┘
│ HTTPS
▼
┌──────────────────────────────────────────────────────────┐
│ 宝塔 Nginx 反向代理 │
│ www.jmi-openatom.cn → 127.0.0.1:18080 (Frontend) │
│ api.jmi-openatom.cn → 127.0.0.1:8921 (Backend) │
└──────────┬───────────────────────┬───────────────────────┘
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────────────────────┐
│ Frontend │ │ Backend (Spring Boot) │
│ Vue 3 + Vite │ │ Port: 8921 Context: /api/v1 │
│ Port: 18080 │ │ │
│ Nginx 静态服务 │ │ ┌─────────┐ ┌──────────────┐ │
└──────────────────┘ │ │Sa-Token │ │ MyBatis Plus │ │
│ │ JWT │ │ ORM │ │
│ └─────────┘ └──────┬───────┘ │
│ │ │
│ ┌──────────────────┐│ │
│ │ Redis Cache ││ │
│ │ Port: 6379 ││ │
│ └──────────────────┘│ │
└──────────────────────┼──────────┘
│
┌───────────────────┼───────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌──────────┐
│ MySQL 8.0 │ │ AstrBot │ │ NapCat │
│ 宝塔 MySQL │ │ Port: 6185 │ │ Port:3000│
│ 127.0.0.1 │ │ Port: 6198 │ │ │
└─────────────┘ └──────────────┘ └──────────┘
│ │
└────── OneBot ────┘
v11
│
▼
QQ / QQ群
openatom-system/
├── backend/ # 后端 Spring Boot 项目
│ ├── db/ # 手工初始化 SQL 脚本
│ ├── src/main/java/ # Java 源代码
│ ├── src/main/resources/ # 配置文件、Flyway 迁移脚本
│ └── pom.xml # Maven 依赖配置
├── frontend/
│ ├── web_pc/ # PC 端 Vue 3 项目
│ │ ├── src/
│ │ │ ├── api/ # API 请求封装
│ │ │ ├── components/ # 公共组件
│ │ │ ├── composables/ # 组合式函数
│ │ │ ├── layouts/ # 布局组件
│ │ │ ├── router/ # 路由配置
│ │ │ ├── views/ # 页面视图
│ │ │ │ ├── admin/ # 管理后台页面
│ │ │ │ └── site/ # 前台展示页面
│ │ │ └── ...
│ │ └── package.json
│ ├── uni_app/ # UniApp 微信小程序
│ └── ios_app/ # iOS 原生项目(预留)
├── astrbot/ # AstrBot QQ 机器人配置
│ ├── data/ # AstrBot 数据目录
│ └── napcat/ # NapCat 配置
├── lab-management-system/ # 实验室管理系统(独立子系统)
├── lab-ui-web/ # 实验室管理系统前端
├── docs/ # PRD 及 API 文档
├── docs-site/ # VuePress 开发文档(本目录)
├── docker-compose.yml # 全栈 Docker 编排
├── Dockerfile # 后端容器化配置
└── .github/workflows/ # CI/CD 工作流