# pyadmin **Repository Path**: vvaa/pyadmin ## Basic Information - **Project Name**: pyadmin - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-25 - **Last Updated**: 2025-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastAPI 多租户后台管理系统 基于 FastAPI 构建的现代化多租户后台管理系统,支持完整的 RBAC 权限管理、用户管理、部门管理等核心功能。 ## 项目特性 - 🚀 **现代化技术栈**: FastAPI + SQLAlchemy + MySQL + Redis - 🏢 **多租户架构**: 支持 SaaS 多租户数据隔离 - 🔐 **完整权限系统**: RBAC 权限模型,支持角色和权限管理 - 👥 **用户管理**: 完整的用户生命周期管理 - 🏛️ **组织架构**: 支持部门层级管理 - 📊 **系统监控**: 操作日志、登录日志等审计功能 - 📁 **文件管理**: 文件上传、下载、预览功能 - 🔧 **系统配置**: 动态配置管理和字典管理 - 🐳 **Docker 支持**: 容器化部署 - 📖 **API 文档**: 自动生成的 OpenAPI 文档 - 🎨 **Plus-UI 前端**: 兼容 Plus-UI 前端框架的 API 接口设计 ## 技术栈 ### 后端框架 - **FastAPI**: 高性能异步 Web 框架 - **SQLAlchemy 2.0**: 现代化 ORM - **Alembic**: 数据库迁移工具 - **Pydantic**: 数据验证和设置管理 ### 数据库 - **MySQL 8.0+**: 主数据库 - **Redis**: 缓存和会话存储 ### 认证授权 - **JWT**: 无状态认证 - **OAuth2**: 标准授权协议 - **bcrypt**: 密码哈希 ### 开发工具 - **Docker**: 容器化部署 - **pytest**: 测试框架 - **Black**: 代码格式化 - **isort**: 导入排序 ## 项目结构 ``` pyadmin/ ├── app/ # 应用主目录 │ ├── api/ # API 路由 │ │ └── v1/ # API v1版本 │ │ ├── auth/ # 认证相关 (/auth/*) │ │ ├── system/ # 系统管理 (/system/*) │ │ │ ├── user/ # 用户管理 │ │ │ ├── menu/ # 菜单管理 │ │ │ ├── dept/ # 部门管理 │ │ │ ├── role/ # 角色管理 │ │ │ └── ... # 其他系统管理模块 │ │ ├── resource/ # 资源管理 (/resource/*) │ │ ├── monitor/ # 监控管理 (/monitor/*) │ │ ├── tool/ # 工具管理 (/tool/*) │ │ ├── workflow/ # 工作流管理 (/workflow/*) │ │ └── demo/ # 演示模块 (/demo/*) │ │ └── system/ # 系统管理 │ ├── core/ # 核心配置 │ │ ├── config.py # 应用配置 │ │ ├── database.py # 数据库配置 │ │ ├── security.py # 安全配置 │ │ └── deps.py # 依赖注入 │ ├── models/ # 数据模型 │ │ ├── base.py # 基础模型 │ │ ├── user.py # 用户模型 │ │ ├── tenant.py # 租户模型 │ │ └── system.py # 系统模型 │ ├── schemas/ # Pydantic 模型 │ ├── services/ # 业务逻辑层 │ ├── utils/ # 工具函数 │ └── main.py # 应用入口 ├── migrations/ # 数据库迁移 ├── tests/ # 测试文件 ├── docs/ # 项目文档 ├── docker/ # Docker配置 │ ├── mysql/ # MySQL配置 │ └── redis/ # Redis配置 ├── requirements.txt # Python依赖 ├── docker-compose.yml # Docker编排 ├── alembic.ini # Alembic配置 └── README.md # 项目说明 ``` ## 快速开始 ### 环境要求 - Python 3.9+ - MySQL 8.0+ - Redis 6.0+ - Docker (可选) ### 安装依赖 ```bash # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac # or venv\\Scripts\\activate # Windows # 安装依赖 pip install -r requirements.txt ``` ### 配置环境 ```bash # 复制环境配置文件 cp .env.example .env # 编辑配置文件 # 配置数据库连接、Redis连接等 ``` ### 使用 Docker 启动 ```bash # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f api ``` ### 手动启动 1. 启动 MySQL 和 Redis 服务 2. 运行数据库迁移: ```bash alembic upgrade head ``` 3. 启动应用: ```bash # 开发模式 uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 # 生产模式 uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` ## API 接口说明 系统 API 基于 RESTful 设计,完全兼容 Plus-UI 前端框架。API 按功能模块组织: ### 认证相关接口 (`/auth/*`) - `POST /auth/login` - 用户登录 - `POST /auth/register` - 用户注册 - `POST /auth/logout` - 用户登出 - `GET /auth/code` - 获取验证码 - `GET /auth/tenant/list` - 获取租户列表 - `POST /auth/social/callback` - 第三方登录回调 ### 系统管理接口 (`/system/*`) #### 用户管理 (`/system/user/*`) - `GET /system/user/list` - 查询用户列表 - `GET /system/user/{userId}` - 获取用户详情 - `POST /system/user` - 新增用户 - `PUT /system/user` - 修改用户 - `DELETE /system/user/{userId}` - 删除用户 - `PUT /system/user/resetPwd` - 重置用户密码 - `PUT /system/user/changeStatus` - 修改用户状态 - `GET /system/user/profile` - 获取个人信息 - `PUT /system/user/profile` - 修改个人信息 - `POST /system/user/profile/avatar` - 上传头像 - `GET /system/user/getInfo` - 获取当前用户信息 #### 菜单管理 (`/system/menu/*`) - `GET /system/menu/list` - 查询菜单列表 - `GET /system/menu/{menuId}` - 获取菜单详情 - `POST /system/menu` - 新增菜单 - `PUT /system/menu` - 修改菜单 - `DELETE /system/menu/{menuId}` - 删除菜单 - `GET /system/menu/treeselect` - 获取菜单树结构 - `GET /system/menu/getRouters` - 获取路由信息 ### 完整 API 文档 启动服务后,访问以下地址查看完整的 API 文档: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ### 访问应用 - API 文档: http://localhost:8000/docs - ReDoc 文档: http://localhost:8000/redoc - 健康检查: http://localhost:8000/health ## 核心功能 ### 多租户支持 - 基于 `tenant_id` 的数据隔离 - 租户配置管理 - 租户状态控制 ### RBAC 权限系统 - 用户 -> 角色 -> 权限的三层权限模型 - 菜单权限和按钮权限 - 数据权限控制 ### 用户管理 - 用户注册、登录、登出 - 用户信息管理 - 密码策略 - 用户状态管理 ### 部门管理 - 树形组织架构 - 部门人员管理 - 部门权限继承 ### 系统管理 - 系统配置管理 - 数据字典管理 - 操作日志记录 - 文件上传管理 ## 数据库设计 ### 核心表结构 - `sys_tenant`: 租户信息表 - `sys_user`: 用户信息表 - `sys_role`: 角色信息表 - `sys_permission`: 权限信息表 - `sys_dept`: 部门信息表 - `sys_user_role`: 用户角色关联表 - `sys_role_permission`: 角色权限关联表 ### 多租户设计 - 所有业务表包含 `tenant_id` 字段 - 基于中间件的租户自动过滤 - 支持租户级别的数据隔离 ## API 接口 ### 认证接口 - `POST /api/v1/auth/login` - 用户登录 - `POST /api/v1/auth/logout` - 用户登出 - `POST /api/v1/auth/refresh` - 刷新令牌 - `GET /api/v1/auth/me` - 获取当前用户信息 ### 用户管理 - `GET /api/v1/users` - 获取用户列表 - `POST /api/v1/users` - 创建用户 - `GET /api/v1/users/{user_id}` - 获取用户详情 - `PUT /api/v1/users/{user_id}` - 更新用户信息 - `DELETE /api/v1/users/{user_id}` - 删除用户 ### 角色管理 - `GET /api/v1/roles` - 获取角色列表 - `POST /api/v1/roles` - 创建角色 - `PUT /api/v1/roles/{role_id}/permissions` - 分配权限 详细的 API 文档请访问 `/docs` 端点。 ## 开发指南 ### 代码风格 ```bash # 格式化代码 black . # 排序导入 isort . # 代码检查 flake8 . ``` ### 运行测试 ```bash # 运行所有测试 pytest # 运行特定测试 pytest tests/test_auth.py # 生成覆盖率报告 pytest --cov=app ``` ### 数据库迁移 ```bash # 创建迁移文件 alembic revision --autogenerate -m "Add new table" # 执行迁移 alembic upgrade head # 回滚迁移 alembic downgrade -1 ``` ## 部署指南 ### Docker 部署 ```bash # 构建镜像 docker build -t fastapi-admin . # 使用 docker-compose 部署 docker-compose -f docker-compose.prod.yml up -d ``` ### 生产环境配置 - 设置强密码和安全密钥 - 配置 CORS 允许的域名 - 启用 HTTPS - 配置日志轮转 - 设置监控和告警 ## 许可证 MIT License ## 贡献指南 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 联系方式 如有问题或建议,请提交 Issue 或联系项目维护者。