# 开源管理系统
**Repository Path**: dashu-03/open-sys
## Basic Information
- **Project Name**: 开源管理系统
- **Description**: 🎉🎉🎉一套开源、轻量级,基于SpringBoot & Vue 3 前后端分离管理系统。
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 2
- **Created**: 2025-01-28
- **Last Updated**: 2026-04-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 开源, 管理系统
## README
# Open-Sys 企业级后台管理系统
[](https://spring.io/projects/spring-boot)
[](https://vuejs.org/)
[](LICENSE)
[](https://www.oracle.com/java/)
## 📋 项目简介
Open-Sys 是一个基于 **Spring Boot 2.7** + **Vue 3** 开发的现代化企业级后台管理系统。采用前后端分离架构,提供完整的 RBAC 权限管理、用户管理、菜单管理、代码生成器、定时任务、系统通知、在线用户、日志管理等核心能力。
项目主定位是 **开源管理系统**,同时在当前仓库中也沉淀了一套可复用的技术组件,既适合直接作为后台管理系统使用,也适合在此基础上继续做业务扩展。
### ✨ 核心特性
- 🎯 **前后端分离**: Spring Boot RESTful API + Vue3 SPA
- 🔐 **安全认证**: JWT Token + Redis 缓存 + Spring Security 权限控制
- 👥 **RBAC权限**: 用户-角色-菜单多级权限控制
- 🔧 **代码生成器**: 数据库表一键生成全套 CRUD 代码
- 📊 **系统监控**: 在线用户、操作日志、服务器日志、任务日志
- 🎨 **现代UI**: Element Plus + 响应式设计
- 📱 **主题定制**: 支持亮色/暗色侧边栏与主题色配置
- 🧩 **组件复用**: 内置 open-framework 技术组件体系,可单独复用
## 🏗️ 项目架构
```text
open-sys/
├── pom.xml # 根聚合模块,统一聚合业务模块与 open-framework
├── open-server/ # 应用启动模块,整合所有业务模块并提供系统主入口
├── open-base/ # 基础业务模块,提供配置管理、基础模型、业务枚举等能力
├── open-system/ # 系统管理模块,提供用户、角色、菜单、通知、字典和日志管理功能
├── open-tool/ # 系统工具模块,提供代码生成、定时任务、日志管理等功能
├── open-framework/ # 技术组件聚合/BOM 模块
│ ├── pom.xml # open-framework BOM
│ ├── open-parent/ # 技术组件父 POM,统一依赖与构建配置
│ ├── open-common/ # 公共模块,提供通用工具类、异常处理和响应封装
│ ├── open-generate/ # 代码生成核心模块
│ ├── open-job/ # 定时任务模块,提供基于 Quartz 的任务调度功能
│ ├── open-mybatis/ # MyBatis 增强模块,提供拦截器和字段处理扩展
│ ├── open-redis/ # Redis 模块,提供 Redis 配置、序列化和操作封装
│ ├── open-security/ # 安全认证模块,提供 JWT 认证、权限控制和用户会话管理
│ ├── open-websocket/ # WebSocket 模块,提供 WebSocket 通用配置和会话能力
│ ├── open-excel/ # Excel 模块,提供 Excel 读写和导入导出功能
│ └── open-file/ # 文件模块,提供本地/S3 文件存储能力
├── open-vue/ # 前端模块 (Vue3 + Vite)
├── sql/ # 数据库脚本
└── docs/ # 设计与改造文档
```
### 核心模块职责
| 模块 | 职责 | 主要技术 |
|------|------|----------|
| **open-server** | 应用启动入口,整合所有业务模块并提供系统主入口 | Spring Boot Web |
| **open-base** | 提供基础配置、基础模型、业务枚举和公共业务能力 | Spring AOP |
| **open-system** | 提供用户、角色、菜单、通知、字典和日志管理功能 | MyBatis、业务逻辑 |
| **open-tool** | 提供代码生成、定时任务和日志管理功能 | Velocity、Quartz |
| **open-common** | 提供通用工具类、异常处理和响应封装 | 工具类、全局异常处理 |
| **open-generate** | 提供根据数据库表自动生成代码功能 | 元数据解析、模板处理 |
| **open-job** | 提供基于 Quartz 的任务调度功能 | Quartz 定时任务 |
| **open-mybatis** | 提供 MyBatis 扩展能力 | MyBatis 拦截器 |
| **open-redis** | 提供 Redis 配置、序列化和操作工具 | RedisTemplate |
| **open-security** | 提供 JWT 认证、权限控制和用户会话管理 | Spring Security、JWT |
| **open-websocket** | 提供 WebSocket 配置、会话注册和心跳支持 | WebSocket |
| **open-excel** | 提供 Excel 读写和导入导出功能 | EasyExcel |
| **open-file** | 提供文件上传、存储与客户端扩展能力 | Local/S3 |
| **open-vue** | 前端界面、交互逻辑 | Vue3、Element Plus、Pinia |
## 🛠️ 技术栈
### 后端技术栈
- **框架**: Spring Boot 2.7.16
- **安全**: Spring Security + JWT + 自定义权限校验
- **数据库**: MySQL 8.0 + MyBatis 2.1.4
- **缓存**: Redis
- **连接池**: Druid 1.2.20
- **模板引擎**: Velocity 1.7 (代码生成)
- **JSON**: FastJSON2 2.0.53
- **日志**: Log4j2 + Disruptor (异步日志)
- **定时任务**: Quartz
- **Excel**: EasyExcel 3.3.2
- **文件存储**: Local / AWS S3
### 前端技术栈
- **框架**: Vue 3.3.4
- **构建工具**: Vite 4.4.5
- **UI组件**: Element Plus 2.3.14
- **状态管理**: Pinia 2.1.6
- **路由**: Vue Router 4.2.5
- **HTTP客户端**: Axios 1.5.1
- **样式**: SCSS + 响应式设计
## 🚀 快速开始
### 环境要求
- **JDK**: 8+
- **Node.js**: 16+
- **MySQL**: 8.0+
- **Redis**: 6.0+
- **Maven**: 3.6+
### 后端部署
1. **克隆项目**
```bash
git clone https://gitee.com/dashu-03/open-sys.git
cd open-sys
```
2. **数据库初始化**
```bash
# 创建数据库
mysql -u root -p
CREATE DATABASE open_sys CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 导入业务数据
mysql -u root -p open_sys < sql/open_sys.sql
```
如果需要使用 JDBC 模式的 Quartz,请额外导入:
```bash
mysql -u root -p open_sys < sql/quartz.sql
```
3. **配置修改**
默认激活环境在 `open-server/src/main/resources/application.yml` 中:
```yaml
spring:
profiles:
active: dev
```
开发环境请编辑 `open-server/src/main/resources/application-dev.yml`:
```yaml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/open_sys?allowMultiQueries=true
username: root
password: 123456
redis:
host: localhost
port: 6379
```
4. **启动服务**
```bash
mvn clean install
mvn -pl open-server spring-boot:run
```
启动成功后访问: `http://localhost:9090`
### 前端部署
1. **安装依赖**
```bash
cd open-vue
npm install
```
2. **开发模式**
```bash
npm run dev
```
3. **生产构建**
```bash
npm run build
```
## 👨💻 使用指南
### 默认账号
- **超级管理员**: `admin / admin123`
- **普通用户示例**: `dashu`(密码请以本地初始化数据或自行重置后的数据为准)
如你的本地初始化数据已调整,请以实际数据库数据为准。
---
## 🎯 功能模块详细介绍
### 🔐 1. 用户认证与安全模块
#### 🔑 登录认证功能
- **多重验证机制**
- 用户名/密码登录
- 图形验证码验证(可系统配置开关)
- 记住密码功能
- **JWT Token 安全**
- JWT Token 生成与验证
- Redis 缓存 Token 信息
- Token 自动续期机制
- **用户注册功能**
- 新用户注册
- 密码强度校验
- 注册开关控制
#### 🚪 会话管理
- **安全退出**
- 清除 Token 缓存
- 记录退出日志
- **多端登录控制**
- 在线用户管理
- 强制踢下线功能
### 👥 2. 用户管理模块
#### 👤 用户信息管理
- **基础信息维护**
- 用户名、昵称、邮箱、手机号
- 头像上传与管理
- 个人资料编辑
- 密码修改功能
- **用户状态管理**
- 用户启用/禁用
- 用户信息导入导出
#### 🔍 用户查询与搜索
- **多条件搜索**
- 用户名模糊查询
- 状态筛选
- 角色筛选
- **分页展示**
- 自定义分页大小
- 总数统计显示
### 🎭 3. 角色权限管理模块
#### 🏷️ 角色管理
- **角色 CRUD 操作**
- 角色创建、编辑、删除
- 角色状态管理
- 超级管理员角色保护机制
- **权限分配**
- 角色与菜单权限绑定
- 权限树形结构展示
#### 👑 RBAC 权限模型
- **用户-角色-权限**
- 用户多角色支持
- 角色多权限分配
- 权限动态加载
- **权限控制粒度**
- 菜单级权限控制
- 按钮级权限控制
- 接口级权限验证
### 📋 4. 菜单管理模块
#### 🌳 菜单结构管理
- **树形菜单**
- 无限级菜单树
- 父子菜单关联
- **菜单类型**
- **目录**: 菜单组织结构
- **菜单**: 具体页面入口
- **按钮**: 操作权限控制
#### ⚙️ 菜单配置
- **基础配置**
- 菜单名称、图标、路径
- 显示顺序控制
- 权限字符串配置
### 📊 5. 系统监控模块
#### 👥 在线用户管理
- **实时监控**
- 当前在线用户列表
- 在线用户数量统计
- **管理操作**
- 强制用户下线
- 用户搜索过滤
#### 📋 操作日志管理
- **日志记录**
- 用户登录日志
- 操作行为记录
- 系统异常日志
- **日志查询**
- 多维度日志搜索
- 时间范围查询
### 📢 6. 通知公告模块
#### 📨 通知管理
- **通知类型**
- **公告通知**: 系统公告发布
- **弹窗通知**: 系统弹窗提醒
- **通知操作**
- 通知创建、编辑、删除
- 通知状态管理
- 指定用户发送
#### 📤 消息推送
- **发送机制**
- 立即发送
- 已读/未读状态管理
- **接收管理**
- 未读数量推送
- WebSocket 实时提醒
### ⚙️ 7. 系统配置模块
#### 🔧 通用配置
- **系统参数**
- 验证码开关控制
- 注册开关控制
- 新用户默认密码配置
- **配置管理**
- 配置项增删改查
- 配置分类管理
#### 🎨 个人设置
- **个人信息**
- 个人资料维护
- 头像上传更换
- 密码修改功能
- 主题风格配置
### 🛠️ 8. 代码生成器模块
#### 🏭 代码生成功能
- **数据库连接**
- 支持 MySQL 数据库连接
- 数据库连接测试功能
- **表结构解析**
- 自动读取数据库表结构
- 字段类型智能映射
#### 📝 模板代码生成
- **生成内容**
- **后端代码**: Entity、Mapper、Service、Controller
- **前端代码**: Vue 页面、API 接口
- **模板定制**
- Velocity 模板引擎
- 自定义代码模板
### 🛠️ 9. 系统工具模块
#### 📜 服务器日志管理
- **日志操作**
- 服务器日志预览
- 日志文件下载
- 日志清空功能
#### ⏰ 定时任务管理
- **任务配置**
- CRON 表达式配置
- 任务启停控制
- 任务执行日志
---
## 🎨 前端功能特性
### 💫 用户体验
- **响应式设计**: 适配各种屏幕尺寸
- **主题定制**: 支持亮色/暗色侧边栏切换与主题色配置
- **懒加载**: 路由和组件按需加载
### 核心页面
- **登录/注册**: 用户认证入口
- **首页**: 数据概览和快捷操作
- **用户管理**: 用户 CRUD 和角色分配
- **角色管理**: 角色权限分配
- **菜单管理**: 动态菜单配置
- **字典管理**: 数据字典维护
- **系统日志**: 操作日志查询
- **代码生成器**: 一键生成代码
- **定时任务**: 任务调度和监控
- **通知公告**: 消息发送与状态查看
---
## 🔒 安全特性
### 🛡️ 安全防护
- **XSS 防护**: 输入内容转义处理
- **SQL 注入防护**: MyBatis 参数化查询
- **敏感信息加密**: 密码加密存储
### 📊 权限安全
- **接口权限**: 基于注解的方法级权限控制
- **前端权限**: 基于权限标识的页面与按钮控制
- **菜单权限**: 动态菜单权限分配
---
## 🔧 开发指南
### 权限控制
```java
@RestController
@RequestMapping("/api/users")
public class UserController {
@PostMapping("/create")
@PreAuthorize("@ss.hasPermi('user_add')")
public Result createUser(@RequestBody User user) {
return Result.success(userService.save(user));
}
}
```
### 全局异常处理
```java
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ServiceException.class)
public Result handleServiceException(ServiceException e) {
return Result.error(e.getCode(), e.getMessage());
}
}
```
### 前端权限控制
```vue
编辑用户
```
---
## 📁 数据库设计
### 核心表结构
- **sys_user**: 用户表
- **sys_role**: 角色表
- **sys_menu**: 菜单表
- **sys_user_role**: 用户角色关联表
- **sys_role_menu**: 角色菜单关联表
- **sys_log**: 操作日志表
- **sys_config**: 系统配置表
- **sys_notice**: 系统通知表
- **sys_user_notice**: 用户通知关联表
- **sys_job_config**: 定时任务配置表
- **sys_job_log**: 定时任务执行日志表
### RBAC 权限模型
```text
用户(User) ←→ 用户角色(UserRole) ←→ 角色(Role) ←→ 角色菜单(RoleMenu) ←→ 菜单(Menu)
```
---
## 🛣️ 功能对照表
| 模块分类 | 功能名称 | 实现状态 | 技术栈 |
|---------|---------|---------|--------|
| **认证安全** | JWT认证 | ✅ 已实现 | JWT + Redis |
| **认证安全** | 权限控制 | ✅ 已实现 | Spring Security |
| **认证安全** | 登录验证码 | ✅ 已实现 | 图形验证码 |
| **认证安全** | 用户注册 | ✅ 已实现 | 开关控制 |
| **用户管理** | 用户CRUD | ✅ 已实现 | Spring Boot |
| **用户管理** | 角色分配 | ✅ 已实现 | 多对多关系 |
| **角色权限** | 角色管理 | ✅ 已实现 | RBAC模型 |
| **菜单管理** | 动态菜单 | ✅ 已实现 | Vue Router |
| **系统监控** | 在线用户 | ✅ 已实现 | Token 会话管理 |
| **系统监控** | 操作日志 | ✅ 已实现 | MyBatis |
| **通知公告** | 消息推送 | ✅ 已实现 | 数据库 + WebSocket |
| **系统配置** | 参数配置 | ✅ 已实现 | 配置管理 |
| **代码生成** | 代码生成器 | ✅ 已实现 | Velocity |
| **工具模块** | 服务器日志 | ✅ 已实现 | 文件操作 |
| **工具模块** | 定时任务 | ✅ 已实现 | Quartz |
| **界面功能** | 响应式设计 | ✅ 已实现 | Element Plus |
---
## 🧩 技术组件说明
除了作为完整后台系统使用,当前仓库还内置了一套可复用的技术组件体系 `open-framework`,可供其他项目直接依赖使用。
### 技术组件列表
- **open-parent**: 技术组件父 POM,统一依赖版本与构建配置
- **open-common**: 通用工具、统一返回、异常体系
- **open-generate**: 代码生成核心能力
- **open-job**: Quartz 任务调度能力
- **open-mybatis**: MyBatis 拦截器与字段处理扩展
- **open-redis**: RedisTemplate 封装与序列化能力
- **open-security**: Token、安全上下文、权限校验能力
- **open-websocket**: WebSocket 配置、会话注册、心跳支持
- **open-excel**: Excel 导入导出能力
- **open-file**: 本地/S3 文件存储能力
### 复用方式
`open-framework` 当前作为 `pom` 打包模块维护,可以作为 Maven BOM 引入:
```xml
com.open
open-framework
1.0.0
pom
import
```
引入后可直接按需使用具体模块,无需重复指定版本:
```xml
com.open
open-security
```
---
## 📄 许可证
本项目采用 [MIT](LICENSE) 许可证。
## 🤝 贡献指南
欢迎贡献代码和提出建议!
1. **Fork 项目**
2. **创建功能分支**: `git checkout -b feature/amazing-feature`
3. **提交更改**: `git commit -m 'Add some amazing feature'`
4. **推送分支**: `git push origin feature/amazing-feature`
5. **创建 Pull Request**
---
### 🌟 如果这个项目对你有帮助,请给一个 Star!
**Made with ❤️ by Open-Sys Team**
**📞 联系我们 | 🤝 参与贡献 | 📚 查看文档 | ⭐ 给个Star**