JMI-OPENATOMJMI-OPENATOM
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
  • 开始

    • 项目介绍
    • 快速开始
    • 项目结构详解
    • 常见问题

项目介绍

概述

JMI-OPENATOM System 是一个面向高校开源社团的全栈管理系统,旨在提供高效的成员管理、招新流程、活动组织及文书审批功能。系统采用前后端分离架构,后端基于 Spring Boot 3 + JDK 21,前端基于 Vue 3 + Vite,并集成了 QQ 群机器人(AstrBot + NapCat)实现消息通知与群管理能力。

技术栈

后端

技术版本用途
Spring Boot3.3.12核心框架
JDK21运行时
Sa-Token1.37.0认证与权限校验(JWT 模式)
MyBatis Plus3.5.5ORM / 持久层
MySQL8.0关系型数据库
Flyway随 Spring Boot数据库版本迁移
Redis7缓存、限流、分布式锁
Apache POI5.3.0Excel 导入导出
Lombok1.18.34样板代码消除

前端(PC 端)

技术版本用途
Vue3.5+核心框架(组合式 API)
Vite6.0+构建工具
Element Plus2.9+UI 组件库
TailwindCSS3.4原子化 CSS
Vue Router4.5+路由管理
Axios1.7+HTTP 请求
GSAP3.15+动画引擎
TypeScript5.8类型安全

前端(小程序)

技术用途
UniApp跨端框架,编译到微信小程序
Vant Weapp微信小程序 UI 组件库
Pinia状态管理

基础设施

技术用途
Docker / Docker Compose容器化部署
GitHub ActionsCI/CD 自动化
Nginx反向代理、静态资源服务
AstrBot + NapCatQQ 群机器人系统

核心功能

社团管理

  • 社团基础信息维护
  • 部门架构管理
  • 岗位设置与角色分配
  • 社团规章制度管理

招新系统

  • 自定义报名表单(动态表单引擎)
  • 多级审批流程
  • 面试安排与反馈
  • 批量录用 / 淘汰

成员管理

  • 成员全生命周期管理(入会 → 在会 → 退会)
  • 往届成员/校友分组
  • 成员状态变更与批量操作
  • 退社申请与强制退社

活动管理

  • 活动发布与在线报名
  • 内部签到系统(扫码签到)
  • 获奖记录管理
  • 晚自习签到与考勤

办公自动化

  • 文书模板与生成(Word 导出)
  • 通知推送系统
  • 校历管理
  • 请假申请与审批

互动功能

  • 博客系统(文章发布、评论、点赞)
  • 投票活动
  • 抽奖活动
  • 积分系统(签到奖励、兑换商城)

系统管理

  • RBAC 权限模型(角色 → 权限点)
  • OAuth2 认证中心(OIDC)
  • 操作日志与登录日志
  • 图床服务
  • 数据开放平台

QQ 机器人

  • 群消息收发与群管理
  • 请假审批通知推送
  • 群公告管理
  • 入群申请处理

系统架构图

┌──────────────────────────────────────────────────────────┐
│                     用户浏览器 / 微信小程序                  │
│                   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 工作流

相关文档

  • 快速开始 - 本地开发环境搭建
  • 后端架构 - 后端架构详解
  • 前端架构 - 前端架构详解
  • Docker 部署 - 生产环境部署指南
Next
快速开始