# fortress-admin
**Repository Path**: libingquan/fortress-admin
## Basic Information
- **Project Name**: fortress-admin
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-09
- **Last Updated**: 2026-06-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Fortress Admin — 后台管理系统
> RBAC 权限模型后台管理系统,Java Web 学习路线项目一。
---
## 项目定位
这是 Java Web 转行学习路线中的第一个项目,目标是在 2 周内(第 5-6 周)完成一个**可用 RBAC 权限模型的后台管理系统**,作为简历上的基础工程能力展示。
## 核心功能
| 模块 | 功能 | 说明 |
|------|------|------|
| 用户管理 | 增删改查、禁用/启用 | 系统用户的基础 CRUD |
| 角色管理 | 创建角色、分配菜单权限 | 角色是权限的集合 |
| 菜单管理 | 树形菜单(目录→菜单→按钮三级) | 动态菜单,前端根据权限渲染 |
| 登录鉴权 | JWT Token + 接口拦截器 | 无状态认证,Token 含用户信息和角色 |
## 技术栈
| 技术 | 版本 | 用途 |
|------|------|------|
| Java | 17+ | 主力语言 |
| Spring Boot | 3.x | 应用框架 |
| Spring Security | 6.x | 安全框架(可选,也可手写拦截器) |
| MyBatis-Plus | 3.5+ | ORM,简化 CRUD |
| MySQL | 8.0+ | 关系数据库 |
| Redis | 7.x | Token 缓存、权限缓存 |
| JWT | jjwt 0.12+ | 无状态认证令牌 |
| Maven | 3.9+ | 构建工具 |
## 环境要求
| 环境 | 版本 | 必须 | 说明 |
|------|------|------|------|
| JDK | 17+ | ✅ | `java -version` 确认 |
| Maven | 3.9+ | ✅ | `mvn -version` 确认 |
| MySQL | 8.0+ | ✅ | Docker 或本地安装 |
| Redis | 7.x | ✅ | Docker 或本地安装 |
| Docker | 最新 | 推荐 | 用于运行 MySQL 和 Redis |
> 💡 首次配置建议使用 SDKMAN 安装 JDK 和 Maven,MySQL 和 Redis 用 Docker 运行。
### 环境检查
```bash
# 运行环境检测脚本,一键确认所有依赖是否就绪
bash scripts/check-env.sh
```
### 环境安装参考
**JDK 17(SDKMAN 方式)**
```bash
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 17.0.12-tem
```
**Maven(SDKMAN 方式)**
```bash
sdk install maven 3.9.6
```
**Maven 国内镜像加速(可选)**
编辑 `~/.m2/settings.xml`:
```xml
aliyun
central
Aliyun Maven
https://maven.aliyun.com/repository/public
```
**MySQL + Redis(Docker 方式)**
```bash
docker run -d --name mysql-fortress \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=fortress_admin \
-p 3306:3306 mysql:8.0
docker run -d --name redis-fortress \
-p 6379:6379 redis:7-alpine
```
## 项目结构
```
fortress-admin/
├── sql/
│ └── schema.sql # 数据库初始化脚本
├── src/main/java/com/fortress/
│ ├── FortressAdminApplication.java
│ ├── config/
│ │ ├── WebMvcConfig.java # 拦截器注册
│ │ └── MyBatisPlusConfig.java # 分页插件等
│ ├── common/
│ │ ├── Result.java # 统一返回格式
│ │ ├── ResultCode.java # 状态码枚举
│ │ └── GlobalExceptionHandler.java # 全局异常处理
│ ├── security/
│ │ ├── JwtUtil.java # JWT 生成/解析工具
│ │ ├── AuthInterceptor.java # 登录拦截器
│ │ └── PermissionInterceptor.java # 权限拦截器
│ ├── controller/
│ │ ├── AuthController.java # 登录/登出
│ │ ├── UserController.java # 用户管理
│ │ ├── RoleController.java # 角色管理
│ │ └── MenuController.java # 菜单管理
│ ├── service/
│ │ ├── UserService.java
│ │ ├── RoleService.java
│ │ └── MenuService.java
│ ├── mapper/
│ │ ├── UserMapper.java
│ │ ├── RoleMapper.java
│ │ └── MenuMapper.java
│ └── entity/
│ ├── SysUser.java
│ ├── SysRole.java
│ ├── SysMenu.java
│ ├── SysUserRole.java
│ └── SysRoleMenu.java
├── src/main/resources/
│ ├── application.yml
│ └── db/
│ └── data.sql # 初始化数据(管理员账号等)
├── docs/
│ ├── architecture.md # 架构设计
│ └── api-design.md # 接口设计
└── pom.xml
```
## 快速开始
### 1. 环境检查
```bash
bash scripts/check-env.sh
```
### 2. 一键启动
```bash
bash scripts/start.sh
```
该脚本会自动完成:启动 MySQL/Redis 容器 → 初始化数据库 → 编译并启动应用。
### 3. 测试
```bash
# 登录
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
# 获取用户列表(需替换 TOKEN)
curl http://localhost:8080/api/users \
-H "Authorization: Bearer "
```
### 4. 停止
```bash
bash scripts/stop.sh
```
## 阶段一验收标准
- [ ] 用户管理 CRUD 完整可用
- [ ] 角色管理 + 菜单权限分配可用
- [ ] 树形菜单接口正常返回
- [ ] JWT 登录/鉴权流程完整
- [ ] 不同角色登录后,接口权限隔离生效
- [ ] 代码已推送到 GitHub(公开仓库)
- [ ] 能对着代码讲清楚:请求从浏览器到数据库再返回的完整链路
## 设计文档
- [数据库设计](sql/schema.sql)
- [架构设计](docs/architecture.md)
- [接口设计](docs/api-design.md)
## 来源
本项目设计来自 [Java Web 转行学习路线](../../projects/learning-java-web/学习路线.md) 第一阶段项目一。