# 单应用脚手架后端 **Repository Path**: zmd1992/single-application-scaffolding-api ## Basic Information - **Project Name**: 单应用脚手架后端 - **Description**: 单应用脚手架后端 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-04 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RBAC 权限管理脚手架 ## 项目简介 本项目是一套**生产级全栈 RBAC 权限管理脚手架**,面向管理系统场景,提供完整的前后端分离解决方案。后端基于 Spring Boot 3.1.5,前端基于 Vue 3 + Element Plus,覆盖用户、角色、菜单、部门、岗位、字典、配置、文件、定时任务、消息通知、操作审计、系统监控等核心管理功能。 ## 技术栈 ### 后端 (single-application-scaffolding-api) | 组件 | 技术 | 版本 | |------|------|------| | 语言 | Java | 17 | | 框架 | Spring Boot | 3.1.5 | | 安全 | Spring Security + JWT (jjwt) | 0.12.3 | | ORM | MyBatis-Plus | 3.5.5 | | 数据库 | MySQL | 8.0 | | 缓存 | Redis + Redisson | 3.26.0 | | 接口文档 | Knife4j (OpenAPI 3) | 4.5.0 | | Excel | EasyExcel | 3.3.2 | | 调度 | Quartz | — | | 对象存储 | MinIO | 8.5.17 | | PDF | iText 7 | 7.2.5 | | 系统监控 | OSHI | 6.6.0 | | IP 地理 | ip2region | 2.7.0 | | 构建 | Maven | — | ### 前端 (single-application-scaffolding-ui) | 组件 | 技术 | 版本 | |------|------|------| | 语言 | TypeScript | ~5.9 | | 框架 | Vue 3 (Composition API) | ^3.5 | | UI 库 | Element Plus | ^2.13 | | 状态管理 | Pinia | ^3.0 | | 路由 | Vue Router 4 | ^4.6 | | 构建 | Vite | ^8.0 | | HTTP | Axios | ^1.14 | | 图表 | ECharts + vue-echarts | ^6.0 | | CSS | Tailwind CSS | ^4.2 | | 富文本 | vue-quill | ^1.2 | ## 功能模块 ### 系统管理 - **用户管理** — 用户 CRUD、角色分配、密码重置、多条件搜索 - **角色管理** — RBAC 角色维护、菜单权限分配(角色-菜单-用户) - **菜单管理** — 动态菜单树、图标选择、路由绑定 - **部门管理** — 树形组织机构管理 - **岗位管理** — 职务/岗位维护 ### 系统配置 - **字典管理** — 字典类型 + 字典数据(键值对) - **参数配置** — 系统级可配置参数(登录尝试次数、锁定时间、会话超时、验证码开关等) ### 日志审计 - **登录日志** — 记录登录成功/失败、IP 归属地(离线 ip2region) - **操作日志** — 记录用户操作行为、请求参数、耗时 ### 文件管理 - 文件上传/下载,支持**分片上传** + MD5 校验 - 支持本地存储和 MinIO 对象存储 ### 定时任务 - Quartz 动态任务管理,支持 CRON 表达式 - 任务执行日志查看 ### 消息通知 - **系统消息** — 管理员发送给指定用户 - **公告管理** — 系统公告发布 - **用户消息** — 用户个人消息中心 ### 系统监控 - **服务器监控** — CPU、内存、磁盘、系统信息 (OSHI) - **Redis 监控** — Key 数量、内存使用、命令统计 - **接口监控** — API 访问统计、Top 接口耗时 - **在线用户** — 当前在线会话管理、强制下线 ### 安全防护 - JWT 身份认证 + Token 自动续期 - Spring Security 方法级权限控制 (`@PreAuthorize`) - XSS 过滤、SQL 注入过滤 - Redis Lua 限流脚本(接口防刷) - 数据权限过滤(按部门数据范围) - 登录失败锁定机制 ### 代码生成 - MyBatis-Plus 代码生成器(Controller、Service、Mapper、Entity) - 前端代码生成器(API、View、Type) ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - Node.js 18+ / npm - MySQL 8.0+ - Redis 5.x+ - MinIO(可选,用于文件存储) ### 1. 初始化数据库 ```sql CREATE DATABASE `single-application-scaffolding` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; mysql -u root -p single-application-scaffolding < single-application-scaffolding-api/sql.sql ``` ### 2. 配置后端 编辑 `single-application-scaffolding-api/src/main/resources/application-dev.yml`,修改: - MySQL 数据库连接信息(用户名、密码) - Redis 连接信息(host、port) - MinIO 配置(如使用本地存储可忽略) ### 3. 启动后端 ```bash cd single-application-scaffolding-api mvn spring-boot:run ``` API 地址:`http://localhost:8080/api` 接口文档:`http://localhost:8080/api/doc.html`(Knife4j) ### 4. 启动前端 ```bash cd single-application-scaffolding-ui npm install npm run dev ``` 前端地址:`http://localhost:3000` ### 默认账号 | 用户名 | 密码 | 角色 | |--------|------|------| | admin | admin123 | 超级管理员 | | test | test123 | 普通用户 | ## 生产部署 ### 后端 ```bash cd single-application-scaffolding-api mvn clean package -P prod java -jar target/signle-system-1.0.0.jar ``` ### 前端 ```bash cd single-application-scaffolding-ui npm run build # 输出目录:dist/ # 部署到 Nginx / Caddy 等 Web 服务器即可 ``` ## 项目结构 ``` ├── single-application-scaffolding-api/ # 后端服务 │ ├── src/main/java/com/single/ │ │ ├── config/ # 配置类(Security、JWT、MyBatis-Plus、Redis、MinIO、Jackson) │ │ ├── controller/ # REST 控制器(18 个模块) │ │ ├── entity/ # 数据实体 │ │ ├── mapper/ # MyBatis Mapper 接口 │ │ ├── service/ # 业务逻辑层 │ │ ├── dto/ # 数据传输对象 │ │ ├── vo/ # 视图对象 │ │ ├── filter/ # JWT 认证过滤器 │ │ ├── handler/ # 全局异常处理、自动填充 │ │ ├── interceptor/ # 数据权限拦截器 │ │ ├── util/ # 工具类(Excel、代码生成、文件、监控、Quartz 等) │ │ └── task/ # Quartz 动态任务代理 │ ├── src/main/resources/ │ │ ├── application.yml # 主配置文件 │ │ ├── application-dev.yml # 开发环境配置 │ │ ├── application-prod.yml # 生产环境配置 │ │ ├── mapper/ # MyBatis XML 映射(16 个) │ │ ├── lua/rate_limit.lua # Redis 限流脚本 │ │ └── ip2region/ # IP 离线数据库 │ ├── sql.sql # 数据库初始化脚本 │ └── pom.xml # Maven 构建文件 │ ├── single-application-scaffolding-ui/ # 前端界面 │ ├── src/ │ │ ├── api/ # API 请求层(Axios,16 个模块) │ │ ├── components/ # 公共组件(上传、侧栏、头部、图标选择、SVG) │ │ ├── views/ # 页面视图 │ │ │ ├── system/ # 系统管理页面 │ │ │ ├── monitor/ # 监控页面 │ │ │ └── ... │ │ ├── router/ # 路由配置 + 动态路由 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── directives/ # 自定义指令(v-permission) │ │ ├── utils/ # 工具函数 │ │ └── types/ # TypeScript 类型定义 │ ├── package.json # NPM 依赖 │ └── vite.config.ts # Vite 构建配置 │ └── README.md # 本文件 ``` ## 开发说明 ### 代码风格 - 后端遵循阿里巴巴 Java 开发规范 - 前端使用 Composition API + `