# SaaS Admin
基于 **Spring Boot 3.5 + Vue 3 + PostgreSQL + Redis** 的 SaaS 管理后台系统。
## 技术栈
| 层级 | 技术 | 版本 |
|------|------|------|
| 后端框架 | Spring Boot | 3.5.12 |
| Java | Eclipse Temurin (JDK) | 25 |
| ORM | MyBatis-Plus | 3.5.12 |
| 权限认证 | Sa-Token | 1.40.0 |
| API 文档 | Knife4j (OpenAPI 3) | 4.5.0 |
| 缓存 | Redis + Caffeine | - |
| 前端框架 | Vue 3 + Vite 7 | 3.5 / 7.3 |
| UI 组件库 | Element Plus | 2.13 |
| 状态管理 | Pinia | 3.0 |
| 数据库 | PostgreSQL | 17 |
| 邮件服务 | Spring Mail (SMTP) | - |
## 效果图



## 项目结构
```
saas-admin/
├── docker/ # Docker 部署配置
│ ├── Dockerfile.backend # 后端镜像构建
│ ├── Dockerfile.frontend # 前端镜像构建
│ ├── nginx.conf # Nginx 反向代理配置
│ └── docker-compose.yml # 一键编排启动
├── saas-boot/ # Spring Boot 后端启动入口
├── saas-generator/ # 代码生成器
├── saas-service/ # 后端服务模块
└── saas-ui/ # Vue 3 前端
├── package.json
├── vite.config.js
└── src/
├── api/ # 接口请求模块
├── assets/ # 静态资源
├── components/ # 公共组件
├── config/ # 全局配置
├── router/ # 路由 (静态 + 动态)
├── stores/ # Pinia 状态管理
├── views/ # 页面视图
└── packages/ # 表单设计器等扩展包
```
## 快速开始
### 环境要求
- JDK 25+
- Node.js ≥ 20.19 或 ≥ 22.12
- PostgreSQL 17+
- Redis 7+
### 本地开发
**1. 启动数据库和缓存**
确保本地已安装并运行 PostgreSQL 和 Redis,或使用 Docker 快速启动:
```bash
docker run -d --name pg \
-e POSTGRES_DB=db_saas_admin \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgresql \
-p 5432:5432 postgres:17-alpine
docker run -d --name rd \
redis:7-alpine redis-server --requirepass 123456
```
**2. 启动后端**
```bash
cd saas-boot
mvn spring-boot:run
```
后端默认运行在 `http://localhost:9999`,API 文档:[http://localhost:9999/doc.html](http://localhost:9999/doc.html)
**3. 启动前端**
```bash
cd saas-vue
npm install
npm run dev
```
前端默认运行在 `http://localhost:9998`
### Docker 一键部署(推荐)
```bash
cd docker
docker compose up -d --build
```
启动后访问:
| 服务 | 地址 |
|------|------|
| 🌐 前端页面 | http://localhost |
| 🔧 后端 API | http://localhost:9999 |
| 📖 API 文档 | http://localhost:9999/doc.html |
| 🗄️ PostgreSQL | localhost:5432 |
| ⚡ Redis | localhost:6379 |
Docker 默认账号密码:
| 服务 | 用户名 | 密码 |
|------|--------|------|
| PostgreSQL | `postgres` | `postgresql` |
| Redis | - | `123456` |
## 功能模块
- **用户管理** — 用户 CRUD、角色分配
- **角色管理** — 角色定义、权限绑定
- **权限管理** — 菜单/按钮级别权限控制
- **动态路由** — 根据用户权限动态加载前端路由
- **表单设计器** — 可视化拖拽表单构建(`packages/form-design`)
- **代码生成器** — 支持 MySQL / PostgreSQL 数据库表逆向生成代码
- **邮件服务** — 基于 SMTP 的邮件发送功能
- **主题切换** — 支持多套 UI 主题配置
## 配置说明
### 后端配置文件
| 文件 | 说明 |
|------|------|
| `application.yml` | 主配置(端口、Sa-Token、MyBatis-Plus 等) |
| `application-dev.yml` | 开发环境(数据库/Redis 连接) |
| `application-prod.yml` | 生产环境(数据库/Redis 连接) |
### 前端环境变量
| 文件 | 用途 |
|------|------|
| `.env.development` | 开发环境代理地址 |
| `.env.production` | 生产环境 API 地址 |
| `.env.test` | 测试环境 |
## 常用命令
```bash
# 后端
cd saas-boot
mvn clean package -DskipTests # 打包(跳过测试)
# 前端
cd saas-vue
npm run dev # 开发模式
npm run build # 生产构建
npm run build:test # 测试环境构建
npm run lint # 代码检查
# Docker
cd docker
docker compose up -d --build # 构建并启动所有服务
docker compose down # 停止并移除容器
docker compose logs -f saas-boot # 查看后端日志
```
## License
Apache License