# 通用框架
**Repository Path**: dreamcz/tdadmin
## Basic Information
- **Project Name**: 通用框架
- **Description**: No description available
- **Primary Language**: PHP
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2026-07-20
- **Last Updated**: 2026-09-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ThinkDream 企业级后台管理系统
**基于 Laravel 13 API + React 19 SPA 的现代化企业级后台管理系统**
[](https://www.php.net/)
[](https://laravel.com/)
[](https://react.dev/)
[](https://www.typescriptlang.org/)
[](https://vitejs.dev/)
[](https://www.postgresql.org/)
[](https://redis.io/)
[](LICENSE)
---
## 项目简介
ThinkDream 是一款功能完善、架构清晰的企业级后台管理系统,采用前后端分离架构设计。项目基于 Laravel 13 构建高性能 API 服务,配合 React 19 SPA 实现现代化用户体验,为中大型管理系统提供坚实的技术基础。
**后端核心能力**:
- 基于 Laravel 13.x 框架,提供高性能 API 和复杂业务逻辑处理
- 集成 JWT 无状态认证,支持"记住我"长效 Token 方案
- 实现 RBAC 三级权限控制(菜单、按钮、API)
- 自研数据权限隔离方案,按组织/部门/岗位维度自动过滤查询
- 内置完善的缓存治理体系,避免缓存脏数据
**前端核心能力**:
- React 19.x + TypeScript + Vite 构建,类型安全且性能优异
- Tailwind CSS 4 + shadcn/ui 组件体系,界面美观可定制
- 动态路由由后端菜单树驱动,前端 SPA 独立部署
- 响应式设计,支持多终端适配
---
## 核心特性
### 架构与开发体验
- **前后端分离**:Laravel 纯 API + React SPA,前后端独立构建部署
- **自动化 API 文档**:集成 Scramble,访问 `/docs/api` 查看实时 OpenAPI 文档
- **类型安全**:前端全面 TypeScript,后端 PHP 8.3 强类型
- **热更新开发**:Vite HMR + Laravel 开发服务器,一键并行启动
### 安全与权限
- **三级权限控制**:菜单、按钮、API 三级权限,基于 RBAC 模型
- **数据权限隔离**:按组织/部门/岗位维度自动注入查询过滤
- **JWT 无状态认证**:Token 本体存 Redis,Cookie 仅存 token_id
- **登录安全**:限流、图形验证码、邮件验证码保护
- **密码安全**:bcrypt 12 轮哈希,支持强制重置
### 业务能力
- **组织架构**:公司(多类型树形)、部门(树形拖拽)、岗位(独立体系)
- **系统管理**:用户、角色、菜单、字典、配置、文件管理
- **行政区划**:全国 5 级行政区数据,含拼音与坐标
- **文件管理**:单文件上传、Range 206 流式下载、图片缩略图
### 性能与治理
- **双库 Redis 隔离**:db0 会话/验证码/限流,db1 业务缓存
- **缓存治理**:`CacheManager` 统一 Key 模板与表变更自动失效
- **队列系统**:Database 驱动,独立 Job 表
---
## 技术栈
### 后端技术
| 技术 | 版本 | 说明 |
|------|------|------|
| **PHP** | ≥ 8.3 | 运行时语言,强类型支持 |
| **Laravel** | ^13.8 | 后端核心框架 |
| **tymon/jwt-auth** | ^2.3 | JWT API 认证 |
| **dedoc/scramble** | ^0.13 | API 文档自动生成 |
| **PHPUnit** | ^12.5 | 单元测试 |
### 前端技术
| 技术 | 版本 | 说明 |
|------|------|------|
| **React** | ^19.2 | UI 框架 |
| **TypeScript** | ^6.0 | 类型安全开发 |
| **Vite** | ^8.1 | 构建工具 |
| **Tailwind CSS** | ^4.3 | 原子化 CSS |
| **react-router-dom** | ^7.18 | 前端路由 |
| **shadcn/ui** | — | 组件体系 |
### 基础设施
| 技术 | 版本 | 用途 |
|------|------|------|
| **PostgreSQL** | ≥ 14 | 主数据库 |
| **Redis** | ≥ 7 | 会话与缓存 |
| **Composer** | ≥ 2.x | PHP 依赖管理 |
| **pnpm** | ≥ 9.x | Node 包管理器 |
---
## 项目结构
```
tdadmin/
├── Backend-Admin-PHP/ # Laravel 后端项目
│ ├── app/
│ │ ├── Console/Commands/ # Artisan 命令
│ │ ├── Events/ # 事件类
│ │ ├── Http/
│ │ │ ├── Controllers/ # 控制器
│ │ │ │ ├── Admin/ # 后台管理控制器
│ │ │ │ └── Api/ # 公共 API 控制器
│ │ │ ├── Helpers/ # 辅助函数
│ │ │ ├── Middleware/ # 中间件
│ │ │ └── Requests/ # 表单请求验证
│ │ ├── Jobs/ # 队列任务
│ │ ├── Listeners/ # 事件监听器
│ │ ├── Models/ # Eloquent 模型
│ │ ├── Services/ # 业务逻辑层
│ │ └── Support/ # 支撑类
│ ├── config/ # 配置文件
│ ├── database/
│ │ ├── migrations/ # 数据库迁移
│ │ ├── seeders/ # 数据填充
│ │ └── data-source/ # 地区数据源
│ ├── routes/ # 路由定义
│ ├── tests/ # 测试用例
│ └── bootstrap/ # 引导程序
│
├── Backend-Admin-Web/ # React 前端项目
│ ├── src/
│ │ ├── components/ # 通用组件
│ │ ├── views/ # 页面视图
│ │ ├── layouts/ # 布局组件
│ │ ├── lib/ # 工具函数
│ │ ├── types/ # 类型定义
│ │ └── hooks/ # 自定义 Hooks
│ ├── public/ # 静态资源
│ └── config/ # 配置文件
│
├── docs/ # 项目文档
├── .kimi-code/ # AI 辅助开发配置
└── README.md # 项目说明
```
---
## 核心模块说明
### 认证与安全模块
认证系统集成 `tymon/jwt-auth` 实现无状态 Token 方案:
- **Token 存储**:Token 本体存 Redis,Cookie 仅存 token_id
- **Token 策略**:普通 Token 480 分钟,"记住我" Token 10080 分钟
- **安全保护**:登录限流、图形验证码、密码 bcrypt 12 轮哈希
### 组织架构模块
- **公司管理**:支持集团、项目、党委等多类型组织,树形结构
- **部门管理**:树形层级结构,支持拖拽排序
- **岗位管理**:独立岗位体系,配置数据范围规则
### 权限管理模块
- **RBAC 模型**:用户 → 角色 → 菜单/权限
- **动态菜单**:后端驱动前端路由与权限收敛
- **数据权限**:与岗位联动,实现行级数据隔离
### 数据权限服务
核心服务 `DataScopeService` 在查询构建阶段自动注入过滤条件:
- 全部数据(超管)
- 本公司及以下
- 本部门及以下
- 仅本人
### 缓存治理模块
`CacheManager` 组件提供:
- 注册表驱动,统一 Key 模板命名
- 业务缓存与运行时缓存分层
- 表变更自动失效协议
### 文件管理模块
- **上传**:单文件最大 50MB
- **播放**:Range 206 响应,支持视频和 PDF 预览
- **缩略图**:图片自动生成缩略图
- **存储**:默认 local 驱动,可扩展 OSS/S3
### 队列系统
- **驱动**:Database 队列驱动
- **独立表**:`td_sys_job`、`td_sys_job_batch`、`td_sys_job_failed`
- **用途**:异步邮件、数据导入、缓存预热等
---
## 环境要求
| 依赖 | 最低版本 | 推荐版本 |
|------|----------|----------|
| PHP | 8.3 | 8.3+ |
| Composer | 2.0 | 2.x |
| Node.js | 20.0 | 20 LTS / 22 |
| pnpm | 9.0 | 9.x |
| PostgreSQL | 14 | 16 / 17 |
| Redis | 7.0 | 7.x |
**PHP 扩展**:`pdo_pgsql`、`redis`、`mbstring`、`openssl`、`tokenizer`、`xml`、`ctype`、`json`、`bcmath`
---
## 快速开始
### 1. 克隆项目
```bash
git clone https://gitee.com/dreamcz/tdadmin.git
cd tdadmin
```
### 2. 后端安装
```bash
cd Backend-Admin-PHP
# 安装 PHP 依赖
composer install
# 复制环境配置
cp .env.example .env
# 生成应用密钥
php artisan key:generate
# 生成 JWT 密钥
php artisan jwt:secret
```
### 3. 配置数据库与 Redis
编辑 `.env` 文件:
```env
# PostgreSQL
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=thinkadmin
DB_SCHEMA=thinkadmin
DB_USERNAME=your_username
DB_PASSWORD=your_password
# Redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0
REDIS_CACHE_DB=1
CACHE_STORE=redis
```
### 4. 数据库初始化
```bash
# 创建数据表并填充基础数据
php artisan migrate --seed
# 导入全国行政区划数据
php artisan region:restore
```
### 5. 前端安装
```bash
cd ../Backend-Admin-Web
pnpm install
```
### 6. 启动开发环境
**一键启动(推荐)**:
```bash
cd Backend-Admin-PHP
composer dev
```
**分别启动**:
```bash
# 终端 1:后端
cd Backend-Admin-PHP
php artisan serve
# 终端 2:前端
cd Backend-Admin-Web
pnpm dev
```
### 7. 访问系统
- **管理后台**:http://localhost:8000/admin
- **API 文档**:http://localhost:8000/docs/api
- **前端开发服务器**:http://localhost:5173
---
## 配置说明
### 核心环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `APP_ENV` | 运行环境 | local |
| `DB_SCHEMA` | PostgreSQL Schema | thinkadmin |
| `REDIS_CACHE_DB` | 缓存 Redis 库号 | 1 |
| `JWT_TTL` | Token 有效期(分钟) | 480 |
| `JWT_TTL_REMEMBER` | 记住我 Token(分钟) | 10080 |
| `QUEUE_CONNECTION` | 队列驱动 | database |
### JWT 配置说明
项目采用 **Redis 存储 JWT + Cookie 存储 token_id** 方案:
1. 用户登录后,生成 JWT 存入 Redis(Key: `jwt:token:{token_id}`)
2. 响应设置 HttpOnly Cookie `token_id`,有效期与 Token TTL 一致
3. 后续请求携带 Cookie,中间件从 Redis 取出 JWT 验证
4. 登出时删除 Redis 中的 Token,实现即时失效
---
## 数据库约定
### 命名规范
- **表前缀**:统一使用 `td_`
- **系统表**:`td_sys_*`(如 `td_sys_user`、`td_sys_menu`)
- **迁移文件**:`YYYY_MM_DD_HHMMSS_create_{table}_table.php`
### 初始化命令
```bash
# 创建表结构 + 填充基础数据
php artisan migrate --seed
# 导入行政区划数据
php artisan region:restore
# 重置并重新填充(危险!)
php artisan migrate:fresh --seed
```
---
## API 文档
项目集成 **Scramble** 自动生成 OpenAPI 规范文档。
- **文档地址**:`http://localhost:8000/docs/api`
- **格式**:OpenAPI 3.0
- **更新方式**:根据控制器注释自动生成
### 路由分组
| 分组 | 前缀 | 认证 | 说明 |
|------|------|------|------|
| 公共接口 | `/api/public` | 无需 | 登录、验证码等 |
| 认证接口 | `/api/auth` | JWT | 需登录的业务接口 |
| 管理接口 | `/api/admin/*` | JWT | 后台管理接口 |
| 个人中心 | `/api/my/*` | JWT | 个人账户与文件 |
---
## 开发规范
### 后端规范
遵循 Laravel 最佳实践:
- 单用途 Action 类
- 依赖注入
- 代码对接口
- 使用 `mb_*` 字符串函数
- 数据库查询使用 `whereBelongsTo`
### 前端规范
- 组件 Props 类型完整
- 使用自定义 Hooks 抽取逻辑
- 样式遵循 Tailwind CSS 规范
- 条件类名使用 `clsx`/`tailwind-merge`
### 代码质量
```bash
# 后端代码格式化
cd Backend-Admin-PHP
./vendor/bin/pint
# 后端测试
php artisan test
# 前端代码检查
cd Backend-Admin-Web
pnpm lint
```
---
## 生产部署
### 推荐架构
```
Nginx ← HTTPS ← 用户
↓
PHP-FPM (Laravel) / Vite Build (dist/)
↓
PostgreSQL + Redis + Queue Worker
```
### 部署步骤
1. **构建前端**:`pnpm build`,部署 `dist/` 到静态资源目录
2. **配置后端**:设置 `.env` 为生产环境
3. **优化加载**:`composer install --optimize-autoloader --no-dev`
4. **缓存配置**:`php artisan config:cache`、`route:cache`、`view:cache`
5. **执行迁移**:`php artisan migrate --force`
6. **启动队列**:`php artisan queue:work`(建议使用 Supervisor 守护)
7. **配置 Nginx**:指向 Laravel `public/` 目录,配置 SSL
### 计划任务
```bash
# 每分钟执行
* * * * * cd /path/to/Backend-Admin-PHP && php artisan schedule:run >> /dev/null 2>&1
```
---
## 文档索引
| 文档 | 说明 |
|------|------|
| [API接口文档约定.md](docs/API接口文档约定.md) | API 设计规范 |
| [队列Job中心建设方案.md](docs/队列Job中心建设方案-2026-08-16.md) | 异步队列架构 |
| [命名与文件组织约定.md](docs/命名与文件组织约定.md) | 命名规范 |
| [后端开发与治理规范.md](docs/后端开发与治理规范.md) | 后端开发规范 |
| [前端样式标准.md](docs/前端样式标准.md) | 前端样式规范 |
| [生产部署与安全配置指南.md](docs/生产部署与安全配置指南.md) | 部署指南 |
---
## 贡献指南
### 提交 Issue
发现 Bug 或有功能建议,请在 [Gitee Issues](https://gitee.com/dreamcz/tdadmin/issues) 提交,请包含:
- 复现步骤
- 预期行为与实际行为
- 环境信息
- 相关日志或截图
### 提交 Pull Request
1. Fork 本仓库
2. 创建特性分支:`git checkout -b feature/your-feature`
3. 提交代码:`git commit -m 'feat: 描述你的改动'`
4. 推送分支:`git push origin feature/your-feature`
5. 发起 Pull Request
### 提交信息规范
```
feat: 新增功能
fix: 修复缺陷
docs: 文档更新
style: 代码格式
refactor: 重构
perf: 性能优化
test: 测试相关
chore: 构建/工具/依赖调整
```
---
## 许可证
本项目基于 [MIT 许可证](LICENSE) 开源,可自由使用、修改和分发。
---
## 相关链接
- **项目主页**:https://gitee.com/dreamcz/tdadmin
- **问题反馈**:https://gitee.com/dreamcz/tdadmin/issues
- **API 文档**:启动后访问 `/docs/api`
---
**如果这个项目对你有帮助,欢迎点个 Star ⭐ 支持一下!**
Made with ❤️ by ThinkDream Team