Skip to content

Commit ab0bd8f

Browse files
insistencegitee-org
authored andcommitted
!14 Dash-FastAPI-Admin v1.0.8
Merge pull request !14 from insistence/develop
2 parents c4f6e41 + ff39306 commit ab0bd8f

File tree

26 files changed

+73
-46
lines changed

26 files changed

+73
-46
lines changed

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<p align="center">
22
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
33
</p>
4-
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Dash-FastAPI-Admin v1.0.7</h1>
4+
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Dash-FastAPI-Admin v1.0.8</h1>
55
<h4 align="center">基于Dash+FastAPI前后端分离的纯Python快速开发框架</h4>
66
<p align="center">
77
<a href="https://gitee.com/insistence2022/dash-fastapi-admin/stargazers"><img src="https://gitee.com/insistence2022/dash-fastapi-admin/badge/star.svg?theme=dark"></a>
88
<a href="https://github.com/insistence/Dash-FastAPI-Admin"><img src="https://img.shields.io/github/stars/insistence/Dash-FastAPI-Admin?style=social"></a>
9-
<a href="https://gitee.com/insistence2022/dash-fastapi-admin"><img src="https://img.shields.io/badge/DashFastAPIAdmin-v1.0.7-brightgreen.svg"></a>
9+
<a href="https://gitee.com/insistence2022/dash-fastapi-admin"><img src="https://img.shields.io/badge/DashFastAPIAdmin-v1.0.8-brightgreen.svg"></a>
1010
<a href="https://gitee.com/insistence2022/dash-fastapi-admin/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
1111
<img src="https://img.shields.io/badge/python-3.8 | 3.9-blue">
1212
<img src="https://img.shields.io/badge/MySQL-≥5.7-blue">
@@ -85,6 +85,11 @@ Dash-FastAPI-Admin是一套全部开源的快速开发平台,毫无保留给
8585
</tr>
8686
</table>
8787

88+
## 在线体验
89+
- *账号:admin*
90+
- *密码:admin123*
91+
- 演示地址:<a href="https://dfadmin.insistence.tech">dfadmin管理系统<a>
92+
8893
## 项目运行相关
8994

9095
```bash

dash-fastapi-backend/module_admin/annotation/log_annotation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ async def wrapper(*args, **kwargs):
136136
else:
137137
current_user = await get_current_user(request, token, query_db)
138138
oper_name = current_user.user.user_name
139-
dept_name = current_user.dept.dept_name
139+
dept_name = current_user.dept.dept_name if current_user.dept else None
140140
operation_log = dict(
141141
title=title,
142142
business_type=business_type,

dash-fastapi-backend/module_admin/controller/login_controller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ async def login(request: Request, form_data: CustomOAuth2PasswordRequestForm = D
3838
data={
3939
"user_id": str(result[0].user_id),
4040
"user_name": result[0].user_name,
41-
"dept_name": result[1].dept_name,
41+
"dept_name": result[1].dept_name if result[1] else None,
4242
"session_id": session_id,
4343
"login_info": user.login_info
4444
},

dash-fastapi-backend/module_admin/controller/user_controller.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,10 @@ async def export_system_user_template(request: Request, query_db: Session = Depe
201201

202202
@userController.post("/user/export", dependencies=[Depends(CheckUserInterfaceAuth('system:user:export'))])
203203
@log_decorator(title='用户管理', business_type=5)
204-
async def export_system_user_list(request: Request, user_query: UserQueryModel, query_db: Session = Depends(get_db)):
204+
async def export_system_user_list(request: Request, user_query: UserQueryModel, query_db: Session = Depends(get_db), data_scope_sql: str = Depends(GetDataScope('SysUser'))):
205205
try:
206206
# 获取全量数据
207-
user_query_result = UserService.get_user_list_services(query_db, user_query)
207+
user_query_result = UserService.get_user_list_services(query_db, user_query, data_scope_sql)
208208
user_export_result = UserService.export_user_list_services(user_query_result)
209209
logger.info('导出成功')
210210
return streaming_response_200(data=bytes2file_response(user_export_result))

dash-fastapi-backend/module_admin/dao/user_dao.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from module_admin.entity.do.post_do import SysPost
77
from module_admin.entity.do.menu_do import SysMenu
88
from module_admin.entity.vo.user_vo import UserModel, UserRoleModel, UserPostModel, CurrentUserInfo, UserQueryModel, UserRoleQueryModel
9-
from utils.time_format_util import list_format_datetime, format_datetime_dict_list
9+
from utils.time_format_util import object_format_datetime, list_format_datetime, format_datetime_dict_list
1010
from datetime import datetime, time
1111
from typing import Union, List
1212

@@ -55,11 +55,11 @@ def get_user_by_id(cls, db: Session, user_id: int):
5555
"""
5656
query_user_basic_info = db.query(SysUser) \
5757
.filter(SysUser.status == 0, SysUser.del_flag == 0, SysUser.user_id == user_id) \
58-
.distinct().all()
58+
.distinct().first()
5959
query_user_dept_info = db.query(SysDept).select_from(SysUser) \
6060
.filter(SysUser.status == 0, SysUser.del_flag == 0, SysUser.user_id == user_id) \
6161
.join(SysDept, and_(SysUser.dept_id == SysDept.dept_id, SysDept.status == 0, SysDept.del_flag == 0)) \
62-
.distinct().all()
62+
.distinct().first()
6363
query_user_role_info = db.query(SysRole).select_from(SysUser) \
6464
.filter(SysUser.status == 0, SysUser.del_flag == 0, SysUser.user_id == user_id) \
6565
.outerjoin(SysUserRole, SysUser.user_id == SysUserRole.user_id) \
@@ -85,8 +85,8 @@ def get_user_by_id(cls, db: Session, user_id: int):
8585
.order_by(SysMenu.order_num) \
8686
.distinct().all()
8787
results = dict(
88-
user_basic_info=list_format_datetime(query_user_basic_info),
89-
user_dept_info=list_format_datetime(query_user_dept_info),
88+
user_basic_info=object_format_datetime(query_user_basic_info),
89+
user_dept_info=object_format_datetime(query_user_dept_info),
9090
user_role_info=list_format_datetime(query_user_role_info),
9191
user_post_info=list_format_datetime(query_user_post_info),
9292
user_menu_info=list_format_datetime(query_user_menu_info)
@@ -104,11 +104,11 @@ def get_user_detail_by_id(cls, db: Session, user_id: int):
104104
"""
105105
query_user_basic_info = db.query(SysUser) \
106106
.filter(SysUser.del_flag == 0, SysUser.user_id == user_id) \
107-
.distinct().all()
107+
.distinct().first()
108108
query_user_dept_info = db.query(SysDept).select_from(SysUser) \
109109
.filter(SysUser.del_flag == 0, SysUser.user_id == user_id) \
110110
.join(SysDept, and_(SysUser.dept_id == SysDept.dept_id, SysDept.status == 0, SysDept.del_flag == 0)) \
111-
.distinct().all()
111+
.distinct().first()
112112
query_user_role_info = db.query(SysRole).select_from(SysUser) \
113113
.filter(SysUser.del_flag == 0, SysUser.user_id == user_id) \
114114
.outerjoin(SysUserRole, SysUser.user_id == SysUserRole.user_id) \
@@ -127,8 +127,8 @@ def get_user_detail_by_id(cls, db: Session, user_id: int):
127127
.join(SysMenu, and_(SysRoleMenu.menu_id == SysMenu.menu_id, SysMenu.status == 0)) \
128128
.distinct().all()
129129
results = dict(
130-
user_basic_info=list_format_datetime(query_user_basic_info),
131-
user_dept_info=list_format_datetime(query_user_dept_info),
130+
user_basic_info=object_format_datetime(query_user_basic_info),
131+
user_dept_info=object_format_datetime(query_user_dept_info),
132132
user_role_info=list_format_datetime(query_user_role_info),
133133
user_post_info=list_format_datetime(query_user_post_info),
134134
user_menu_info=list_format_datetime(query_user_menu_info)

dash-fastapi-backend/module_admin/entity/vo/user_vo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,8 @@ class CurrentUserInfo(BaseModel):
128128
"""
129129
数据库返回当前用户信息
130130
"""
131-
user_basic_info: List[Union[UserModel, None]]
132-
user_dept_info: List[Union[DeptModel, None]]
131+
user_basic_info: Union[UserModel, None]
132+
user_dept_info: Union[DeptModel, None]
133133
user_role_info: List[Union[RoleModel, None]]
134134
user_post_info: List[Union[PostModel, None]]
135135
user_menu_info: Union[List, None]

dash-fastapi-backend/module_admin/service/login_service.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,16 @@ async def get_current_user(request: Request = Request, token: str = Depends(oaut
7575
raise AuthException(data="", message="用户token不合法")
7676
redis_token = await request.app.state.redis.get(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{session_id}")
7777
# 此方法可实现同一账号同一时间只能登录一次
78-
# redis_token = await request.app.state.redis.get(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info[0].user_id}")
78+
# redis_token = await request.app.state.redis.get(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info.user_id}")
7979
if token == redis_token:
8080
await request.app.state.redis.set(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{session_id}", redis_token,
8181
ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
82-
# await request.app.state.redis.set(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info[0].user_id}", redis_token,
82+
# await request.app.state.redis.set(f"{RedisInitKeyConfig.ACCESS_TOKEN.get('key')}:{user.user_basic_info.user_id}", redis_token,
8383
# ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
8484

8585
return CurrentUserInfoServiceResponse(
86-
user=user.user_basic_info[0],
87-
dept=user.user_dept_info[0],
86+
user=user.user_basic_info,
87+
dept=user.user_dept_info,
8888
role=user.user_role_info,
8989
post=user.user_post_info,
9090
menu=user.user_menu_info

dash-fastapi-backend/module_admin/service/user_service.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ def detail_user_services(cls, result_db: Session, user_id: int):
139139
user = UserDao.get_user_detail_by_id(result_db, user_id=user_id)
140140

141141
return UserDetailModel(
142-
user=user.user_basic_info[0],
143-
dept=user.user_dept_info[0],
142+
user=user.user_basic_info,
143+
dept=user.user_dept_info,
144144
role=user.user_role_info,
145145
post=user.user_post_info
146146
)
@@ -155,7 +155,7 @@ def reset_user_services(cls, result_db: Session, page_object: ResetUserModel):
155155
"""
156156
reset_user = page_object.dict(exclude_unset=True)
157157
if page_object.old_password:
158-
user = UserDao.get_user_detail_by_id(result_db, user_id=page_object.user_id).user_basic_info[0]
158+
user = UserDao.get_user_detail_by_id(result_db, user_id=page_object.user_id).user_basic_info
159159
if not PwdUtil.verify_password(page_object.old_password, user.password):
160160
result = dict(is_success=False, message='旧密码不正确')
161161
return CrudUserResponse(**result)

dash-fastapi-frontend/callbacks/app_c.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ def check_api_response(data):
2828

2929
# api拦截器——退出登录二次确认
3030
@app.callback(
31-
Output('redirect-container', 'children', allow_duplicate=True),
31+
[Output('redirect-container', 'children', allow_duplicate=True),
32+
Output('token-container', 'data', allow_duplicate=True)],
3233
Input('token-invalid-modal', 'okCounts'),
3334
prevent_initial_call=True
3435
)
@@ -41,10 +42,11 @@ def redirect_page(okCounts):
4142
dcc.Location(
4243
pathname='/login',
4344
id='index-redirect'
44-
)
45+
),
46+
None
4547
]
4648

47-
return dash.no_update
49+
return [dash.no_update] * 2
4850

4951

5052
# 应用初始化主题颜色

dash-fastapi-frontend/callbacks/layout_c/head_c.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545

4646
# 退出登录回调
4747
@app.callback(
48-
Output('redirect-container', 'children', allow_duplicate=True),
48+
[Output('redirect-container', 'children', allow_duplicate=True),
49+
Output('token-container', 'data', allow_duplicate=True)],
4950
Input('logout-modal', 'okCounts'),
5051
prevent_initial_call=True
5152
)
@@ -60,9 +61,10 @@ def logout_confirm(okCounts):
6061
pathname='/login',
6162
id='index-redirect'
6263
),
64+
None
6365
]
6466

65-
return dash.no_update
67+
return [dash.no_update] * 2
6668

6769

6870
# 全局页面重载回调

0 commit comments

Comments
 (0)