Skip to content

Commit 8d94e8a

Browse files
insistencegitee-org
authored andcommitted
!1 Dash-FastAPI-Admin v1.0.0
Merge pull request !1 from insistence/develop
2 parents 418b0ee + b84a662 commit 8d94e8a

File tree

196 files changed

+44884
-3152
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

196 files changed

+44884
-3152
lines changed

README.en.md

Lines changed: 0 additions & 36 deletions
This file was deleted.

README.md

Lines changed: 115 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,127 @@
1-
# Dash-FastAPI
1+
<p align="center">
2+
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
3+
</p>
4+
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Dash-FastAPI-Admin v1.0.0</h1>
5+
<h4 align="center">基于Dash+FastAPI前后端分离的纯Python快速开发框架</h4>
6+
<p align="center">
7+
<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/insistence2022/dash-fastapi/badge/star.svg?theme=dark"></a>
8+
<a href="https://gitee.com/insistence2022/dash-fastapi"><img src="https://img.shields.io/badge/DashFastAPIAdmin-v1.0.0-brightgreen.svg"></a>
9+
<a href="https://gitee.com/insistence2022/dash-fastapi/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
10+
</p>
211

3-
#### 介绍
4-
基于Dash+FastAPI开发的一个通用中后台管理系统
12+
## 平台简介
513

6-
#### 软件架构
7-
软件架构说明
14+
Dash-FastAPI-Admin是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
815

16+
* 前端采用Dash、feffery-antd-components、feffery-utils-components。
17+
* 后端采用FastAPI、sqlalchemy、MySQL、Redis、OAuth2 & Jwt。
18+
* 权限认证使用OAuth2 & Jwt,支持多终端认证系统。
19+
* 支持加载动态权限菜单,多方式轻松权限控制。
20+
* 特别鸣谢:<u>[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)</u> ,<u>[feffery-antd-components](https://github.com/CNFeffery/feffery-antd-components)</u>,<u>[feffery-utils-components](https://github.com/CNFeffery/feffery-utils-components)</u>。
921

10-
#### 安装教程
22+
## 内置功能
1123

12-
1. xxxx
13-
2. xxxx
14-
3. xxxx
24+
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
25+
2. 角色管理:角色菜单权限分配。
26+
3. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
27+
4. 部门管理:配置系统组织机构(公司、部门、小组)。
28+
5. 岗位管理:配置系统用户所属担任职务。
29+
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
30+
7. 参数管理:对系统动态配置常用参数。
31+
8. 通知公告:系统通知公告信息发布维护。
32+
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
33+
10. 登录日志:系统登录日志记录查询包含登录异常。
34+
11. 在线用户:当前系统中活跃用户状态监控。
35+
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
36+
13. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
37+
14. 缓存监控:对系统的缓存信息查询,命令统计等。
38+
15. 系统接口:根据业务代码自动生成相关的api接口文档。
1539

16-
#### 使用说明
40+
## 演示图
1741

18-
1. xxxx
19-
2. xxxx
20-
3. xxxx
42+
<table>
43+
<tr>
44+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E7%99%BB%E5%BD%95.png"/></td>
45+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E5%BF%98%E8%AE%B0%E5%AF%86%E7%A0%81.png"/></td>
46+
</tr>
47+
<tr>
48+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86.png"/></td>
49+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E8%A7%92%E8%89%B2%E7%AE%A1%E7%90%86.png"/></td>
50+
</tr>
51+
<tr>
52+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E8%8F%9C%E5%8D%95%E7%AE%A1%E7%90%86.png"/></td>
53+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E9%83%A8%E9%97%A8%E7%AE%A1%E7%90%86.png"/></td>
54+
</tr>
55+
<tr>
56+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E5%B2%97%E4%BD%8D%E7%AE%A1%E7%90%86.png"/></td>
57+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E5%AD%97%E5%85%B8%E7%AE%A1%E7%90%86.png"/></td>
58+
</tr>
59+
<tr>
60+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE.png"/></td>
61+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E9%80%9A%E7%9F%A5%E5%85%AC%E5%91%8A.png"/></td>
62+
</tr>
63+
<tr>
64+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E6%93%8D%E4%BD%9C%E6%97%A5%E5%BF%97.png"/></td>
65+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E7%99%BB%E5%BD%95%E6%97%A5%E5%BF%97.png"/></td>
66+
</tr>
67+
<tr>
68+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E5%9C%A8%E7%BA%BF%E7%94%A8%E6%88%B7.png"/></td>
69+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1.png"/></td>
70+
</tr>
71+
<tr>
72+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E6%9C%8D%E5%8A%A1%E7%9B%91%E6%8E%A7.png"/></td>
73+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E7%BC%93%E5%AD%98%E7%9B%91%E6%8E%A7.png"/></td>
74+
</tr>
75+
<tr>
76+
<td><img src="https://gitee.com/insistence2022/dash-fastapi/blob/develop/demo-pictures/%E7%B3%BB%E7%BB%9F%E6%8E%A5%E5%8F%A3.png"/></td>
77+
</tr>
78+
</table>
2179

22-
#### 参与贡献
80+
## 项目运行相关
2381

24-
1. Fork 本仓库
25-
2. 新建 Feat_xxx 分支
26-
3. 提交代码
27-
4. 新建 Pull Request
82+
```bash
83+
# 克隆项目
84+
git clone https://gitee.com/insistence2022/dash-fastapi-admin.git
2885

86+
# 进入项目根目录
87+
cd Dash-FastAPI-Admin
2988

30-
#### 特技
89+
# 安装项目依赖环境
90+
pip3 install -r requirements.txt
91+
```
3192

32-
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
33-
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
34-
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
35-
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
36-
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
37-
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
93+
### 前端
94+
```bash
95+
# 进入前端目录
96+
cd dash-fastapi-frontend
97+
98+
# 运行前端
99+
python3 wsgi.py
100+
```
101+
102+
### 后端
103+
```bash
104+
# 进入后端目录
105+
cd dash-fastapi-backend
106+
107+
# 配置环境
108+
1.在config/env.py的DataBaseConfig类中配置数据库环境
109+
2.在config/env.py的RedisConfig类中配置redis环境
110+
111+
# 运行sql文件
112+
1.新建数据库dash-fastapi(默认,可修改)
113+
2.使用命令或数据库连接工具运行sql文件夹下的dash-fastapi.sql
114+
115+
# 运行后端
116+
python3 app.py
117+
```
118+
119+
### 访问
120+
```bash
121+
# 默认账号密码
122+
账号:admin
123+
密码:admin123
124+
125+
# 浏览器访问
126+
地址:http://127.0.0.1:8088
127+
```

dash-fastapi-backend/app.py

Lines changed: 51 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,40 @@
11
from fastapi import FastAPI, Request
22
import uvicorn
3-
import aioredis
4-
from fastapi.responses import JSONResponse
5-
from fastapi.encoders import jsonable_encoder
63
from fastapi.exceptions import HTTPException
74
from fastapi.middleware.cors import CORSMiddleware
85
from module_admin.controller.login_controller import loginController
6+
from module_admin.controller.captcha_controller import captchaController
97
from module_admin.controller.user_controller import userController
108
from module_admin.controller.menu_controller import menuController
119
from module_admin.controller.dept_controller import deptController
1210
from module_admin.controller.role_controller import roleController
1311
from module_admin.controller.post_controler import postController
14-
from config.env import RedisConfig
15-
from module_admin.utils.response_util import response_401, AuthException
16-
17-
18-
app = FastAPI()
12+
from module_admin.controller.dict_controller import dictController
13+
from module_admin.controller.config_controller import configController
14+
from module_admin.controller.notice_controller import noticeController
15+
from module_admin.controller.log_controller import logController
16+
from module_admin.controller.online_controller import onlineController
17+
from module_admin.controller.job_controller import jobController
18+
from module_admin.controller.server_controller import serverController
19+
from module_admin.controller.cache_controller import cacheController
20+
from module_admin.controller.common_controller import commonController
21+
from config.get_redis import RedisUtil
22+
from config.get_db import init_create_table
23+
from config.get_scheduler import SchedulerUtil
24+
from utils.response_util import *
25+
from utils.log_util import logger
26+
from utils.common_util import worship
27+
28+
app = FastAPI(
29+
title='Dash-FastAPI',
30+
description='Dash-FastAPI接口文档',
31+
version='1.0.0',
32+
)
1933

2034
# 前端页面url
2135
origins = [
2236
"http://localhost:8088",
37+
"http://127.0.0.1:8088",
2338
]
2439

2540
# 后台api允许跨域
@@ -32,29 +47,24 @@
3247
)
3348

3449

35-
async def create_redis_pool() -> aioredis.Redis:
36-
redis = await aioredis.from_url(
37-
url=f"redis://{RedisConfig.HOST}",
38-
port=RedisConfig.PORT,
39-
username=RedisConfig.USERNAME,
40-
password=RedisConfig.PASSWORD,
41-
db=RedisConfig.DB,
42-
encoding="utf-8",
43-
decode_responses=True
44-
)
45-
return redis
46-
47-
4850
@app.on_event("startup")
4951
async def startup_event():
50-
app.state.redis = await create_redis_pool()
52+
logger.info("Dash-FastAPI开始启动")
53+
worship()
54+
await init_create_table()
55+
app.state.redis = await RedisUtil.create_redis_pool()
56+
await RedisUtil.init_sys_dict(app.state.redis)
57+
await RedisUtil.init_sys_config(app.state.redis)
58+
await SchedulerUtil.init_system_scheduler()
59+
logger.info("Dash-FastAPI启动成功")
5160

5261

5362
@app.on_event("shutdown")
5463
async def shutdown_event():
55-
await app.state.redis.close()
56-
57-
64+
await RedisUtil.close_redis_pool(app)
65+
await SchedulerUtil.close_system_scheduler()
66+
67+
5868
# 自定义token检验异常
5969
@app.exception_handler(AuthException)
6070
async def auth_exception_handler(request: Request, exc: AuthException):
@@ -69,13 +79,22 @@ async def http_exception_handler(request: Request, exc: HTTPException):
6979
)
7080

7181

72-
app.include_router(loginController, prefix="/login", tags=['login'])
73-
app.include_router(userController, prefix="/system", tags=['system/user'])
74-
app.include_router(menuController, prefix="/system", tags=['system/menu'])
75-
app.include_router(deptController, prefix="/system", tags=['system/dept'])
76-
app.include_router(roleController, prefix="/system", tags=['system/role'])
77-
app.include_router(postController, prefix="/system", tags=['system/post'])
78-
82+
app.include_router(loginController, prefix="/login", tags=['登录模块'])
83+
app.include_router(captchaController, prefix="/captcha", tags=['验证码模块'])
84+
app.include_router(userController, prefix="/system", tags=['系统管理-用户管理'])
85+
app.include_router(menuController, prefix="/system", tags=['系统管理-菜单管理'])
86+
app.include_router(deptController, prefix="/system", tags=['系统管理-部门管理'])
87+
app.include_router(roleController, prefix="/system", tags=['系统管理-角色管理'])
88+
app.include_router(postController, prefix="/system", tags=['系统管理-岗位管理'])
89+
app.include_router(dictController, prefix="/system", tags=['系统管理-字典管理'])
90+
app.include_router(configController, prefix="/system", tags=['系统管理-参数管理'])
91+
app.include_router(noticeController, prefix="/system", tags=['系统管理-通知公告管理'])
92+
app.include_router(logController, prefix="/system", tags=['系统管理-日志管理'])
93+
app.include_router(onlineController, prefix="/monitor", tags=['系统监控-在线用户'])
94+
app.include_router(jobController, prefix="/monitor", tags=['系统监控-定时任务'])
95+
app.include_router(serverController, prefix="/monitor", tags=['系统监控-服务监控'])
96+
app.include_router(cacheController, prefix="/monitor", tags=['系统监控-缓存监控'])
97+
app.include_router(commonController, prefix="/common", tags=['通用模块'])
7998

8099
if __name__ == '__main__':
81100
uvicorn.run(app='app:app', host="127.0.0.1", port=9099, reload=True)
151 KB
Binary file not shown.
207 KB
Loading
211 KB
Loading

dash-fastapi-backend/config/env.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
import os
2+
3+
14
class JwtConfig:
25
"""
36
Jwt配置
47
"""
58
SECRET_KEY = "b01c66dc2c58dc6a0aabfe2144256be36226de378bf87f72c0c795dda67f4d55"
69
ALGORITHM = "HS256"
710
ACCESS_TOKEN_EXPIRE_MINUTES = 1440
11+
REDIS_TOKEN_EXPIRE_MINUTES = 30
812

913

1014
class DataBaseConfig:
@@ -27,3 +31,11 @@ class RedisConfig:
2731
USERNAME = ''
2832
PASSWORD = ''
2933
DB = 2
34+
35+
36+
class CachePathConfig:
37+
"""
38+
缓存目录配置
39+
"""
40+
PATH = os.path.join(os.path.abspath(os.getcwd()), 'caches')
41+
PATHSTR = 'caches'

dash-fastapi-backend/config/get_db.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from config.database import *
2+
from utils.log_util import logger
23

34

45
def get_db_pro():
@@ -13,4 +14,14 @@ def get_db_pro():
1314
current_db.close()
1415

1516

17+
async def init_create_table():
18+
"""
19+
应用启动时初始化数据库连接
20+
:return:
21+
"""
22+
logger.info("初始化数据库连接...")
23+
Base.metadata.create_all(bind=engine)
24+
logger.info("数据库连接成功")
25+
26+
1627
get_db = get_db_pro

0 commit comments

Comments
 (0)