mirror of
https://github.com/insistence/RuoYi-Vue3-FastAPI.git
synced 2026-09-20 20:39:55 +00:00
perf: controller层全部使用新依赖项
This commit is contained in:
@@ -3,16 +3,17 @@ from datetime import datetime
|
||||
from typing import Annotated, Literal, Optional, Union
|
||||
|
||||
import aiofiles
|
||||
from fastapi import APIRouter, Depends, File, Form, Path, Query, Request, Response, UploadFile
|
||||
from fastapi import APIRouter, File, Form, Path, Query, Request, Response, UploadFile
|
||||
from pydantic_validation_decorator import ValidateFields
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from common.annotation.log_annotation import Log
|
||||
from common.aspect.data_scope import GetDataScope
|
||||
from common.aspect.interface_auth import CheckUserInterfaceAuth
|
||||
from common.aspect.data_scope import DataScopeDependency
|
||||
from common.aspect.db_seesion import DBSessionDependency
|
||||
from common.aspect.interface_auth import UserInterfaceAuthDependency
|
||||
from common.aspect.pre_auth import CurrentUserDependency, PreAuthDependency
|
||||
from common.enums import BusinessType
|
||||
from config.env import UploadConfig
|
||||
from config.get_db import get_db
|
||||
from module_admin.entity.vo.dept_vo import DeptModel
|
||||
from module_admin.entity.vo.user_vo import (
|
||||
AddUserModel,
|
||||
@@ -31,7 +32,6 @@ from module_admin.entity.vo.user_vo import (
|
||||
UserRoleResponseModel,
|
||||
)
|
||||
from module_admin.service.dept_service import DeptService
|
||||
from module_admin.service.login_service import LoginService
|
||||
from module_admin.service.role_service import RoleService
|
||||
from module_admin.service.user_service import UserService
|
||||
from utils.common_util import bytes2file_response
|
||||
@@ -41,14 +41,17 @@ from utils.pwd_util import PwdUtil
|
||||
from utils.response_util import ResponseUtil
|
||||
from utils.upload_util import UploadUtil
|
||||
|
||||
user_controller = APIRouter(prefix='/system/user', dependencies=[Depends(LoginService.get_current_user)])
|
||||
user_controller = APIRouter(prefix='/system/user', dependencies=[PreAuthDependency()])
|
||||
|
||||
|
||||
@user_controller.get('/deptTree', dependencies=[Depends(CheckUserInterfaceAuth('system:user:list'))])
|
||||
@user_controller.get(
|
||||
'/deptTree',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:list')],
|
||||
)
|
||||
async def get_system_dept_tree(
|
||||
request: Request,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
data_scope_sql: Annotated[str, Depends(GetDataScope('SysDept'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
data_scope_sql: Annotated[str, DataScopeDependency('SysDept')],
|
||||
) -> Response:
|
||||
dept_query_result = await DeptService.get_dept_tree_services(query_db, DeptModel(), data_scope_sql)
|
||||
logger.info('获取成功')
|
||||
@@ -57,13 +60,15 @@ async def get_system_dept_tree(
|
||||
|
||||
|
||||
@user_controller.get(
|
||||
'/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:user:list'))]
|
||||
'/list',
|
||||
response_model=PageResponseModel,
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:list')],
|
||||
)
|
||||
async def get_system_user_list(
|
||||
request: Request,
|
||||
user_page_query: Annotated[UserPageQueryModel, Query()],
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
) -> Response:
|
||||
# 获取分页数据
|
||||
user_page_query_result = await UserService.get_user_list_services(
|
||||
@@ -74,16 +79,19 @@ async def get_system_user_list(
|
||||
return ResponseUtil.success(model_content=user_page_query_result)
|
||||
|
||||
|
||||
@user_controller.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:user:add'))])
|
||||
@user_controller.post(
|
||||
'',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:add')],
|
||||
)
|
||||
@ValidateFields(validate_model='add_user')
|
||||
@Log(title='用户管理', business_type=BusinessType.INSERT)
|
||||
async def add_system_user(
|
||||
request: Request,
|
||||
add_user: AddUserModel,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
dept_data_scope_sql: Annotated[str, Depends(GetDataScope('SysDept'))],
|
||||
role_data_scope_sql: Annotated[str, Depends(GetDataScope('SysDept'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
dept_data_scope_sql: Annotated[str, DataScopeDependency('SysDept')],
|
||||
role_data_scope_sql: Annotated[str, DataScopeDependency('SysDept')],
|
||||
) -> Response:
|
||||
if not current_user.user.admin:
|
||||
await DeptService.check_dept_data_scope_services(query_db, add_user.dept_id, dept_data_scope_sql)
|
||||
@@ -101,17 +109,20 @@ async def add_system_user(
|
||||
return ResponseUtil.success(msg=add_user_result.message)
|
||||
|
||||
|
||||
@user_controller.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:user:edit'))])
|
||||
@user_controller.put(
|
||||
'',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:edit')],
|
||||
)
|
||||
@ValidateFields(validate_model='edit_user')
|
||||
@Log(title='用户管理', business_type=BusinessType.UPDATE)
|
||||
async def edit_system_user(
|
||||
request: Request,
|
||||
edit_user: EditUserModel,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
user_data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
dept_data_scope_sql: Annotated[str, Depends(GetDataScope('SysDept'))],
|
||||
role_data_scope_sql: Annotated[str, Depends(GetDataScope('SysDept'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
user_data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
dept_data_scope_sql: Annotated[str, DataScopeDependency('SysDept')],
|
||||
role_data_scope_sql: Annotated[str, DataScopeDependency('SysDept')],
|
||||
) -> Response:
|
||||
await UserService.check_user_allowed_services(edit_user)
|
||||
if not current_user.user.admin:
|
||||
@@ -128,14 +139,17 @@ async def edit_system_user(
|
||||
return ResponseUtil.success(msg=edit_user_result.message)
|
||||
|
||||
|
||||
@user_controller.delete('/{user_ids}', dependencies=[Depends(CheckUserInterfaceAuth('system:user:remove'))])
|
||||
@user_controller.delete(
|
||||
'/{user_ids}',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:remove')],
|
||||
)
|
||||
@Log(title='用户管理', business_type=BusinessType.DELETE)
|
||||
async def delete_system_user(
|
||||
request: Request,
|
||||
user_ids: Annotated[str, Path(description='需要删除的用户ID')],
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
) -> Response:
|
||||
user_id_list = user_ids.split(',') if user_ids else []
|
||||
if user_id_list:
|
||||
@@ -154,14 +168,17 @@ async def delete_system_user(
|
||||
return ResponseUtil.success(msg=delete_user_result.message)
|
||||
|
||||
|
||||
@user_controller.put('/resetPwd', dependencies=[Depends(CheckUserInterfaceAuth('system:user:resetPwd'))])
|
||||
@user_controller.put(
|
||||
'/resetPwd',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:resetPwd')],
|
||||
)
|
||||
@Log(title='用户管理', business_type=BusinessType.UPDATE)
|
||||
async def reset_system_user_pwd(
|
||||
request: Request,
|
||||
reset_user: EditUserModel,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
) -> Response:
|
||||
await UserService.check_user_allowed_services(reset_user)
|
||||
if not current_user.user.admin:
|
||||
@@ -180,14 +197,17 @@ async def reset_system_user_pwd(
|
||||
return ResponseUtil.success(msg=edit_user_result.message)
|
||||
|
||||
|
||||
@user_controller.put('/changeStatus', dependencies=[Depends(CheckUserInterfaceAuth('system:user:edit'))])
|
||||
@user_controller.put(
|
||||
'/changeStatus',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:edit')],
|
||||
)
|
||||
@Log(title='用户管理', business_type=BusinessType.UPDATE)
|
||||
async def change_system_user_status(
|
||||
request: Request,
|
||||
change_user: EditUserModel,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
) -> Response:
|
||||
await UserService.check_user_allowed_services(change_user)
|
||||
if not current_user.user.admin:
|
||||
@@ -208,8 +228,8 @@ async def change_system_user_status(
|
||||
@user_controller.get('/profile', response_model=UserProfileModel)
|
||||
async def query_detail_system_user_profile(
|
||||
request: Request,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
) -> Response:
|
||||
profile_user_result = await UserService.user_profile_services(query_db, current_user.user.user_id)
|
||||
logger.info(f'获取user_id为{current_user.user.user_id}的信息成功')
|
||||
@@ -218,16 +238,20 @@ async def query_detail_system_user_profile(
|
||||
|
||||
|
||||
@user_controller.get(
|
||||
'/{user_id}', response_model=UserDetailModel, dependencies=[Depends(CheckUserInterfaceAuth('system:user:query'))]
|
||||
'/{user_id}',
|
||||
response_model=UserDetailModel,
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:query')],
|
||||
)
|
||||
@user_controller.get(
|
||||
'/', response_model=UserDetailModel, dependencies=[Depends(CheckUserInterfaceAuth('system:user:query'))]
|
||||
'/',
|
||||
response_model=UserDetailModel,
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:query')],
|
||||
)
|
||||
async def query_detail_system_user(
|
||||
request: Request,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
user_id: Optional[Union[int, Literal['']]] = '',
|
||||
) -> Response:
|
||||
if user_id and not current_user.user.admin:
|
||||
@@ -243,8 +267,8 @@ async def query_detail_system_user(
|
||||
async def change_system_user_profile_avatar(
|
||||
request: Request,
|
||||
avatarfile: Annotated[bytes, File()],
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
) -> Response:
|
||||
if avatarfile:
|
||||
relative_path = (
|
||||
@@ -278,8 +302,8 @@ async def change_system_user_profile_avatar(
|
||||
async def change_system_user_profile_info(
|
||||
request: Request,
|
||||
user_info: UserInfoModel,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
) -> Response:
|
||||
edit_user = EditUserModel(
|
||||
**user_info.model_dump(exclude_unset=True, by_alias=True, exclude={'role_ids', 'post_ids'}),
|
||||
@@ -302,8 +326,8 @@ async def change_system_user_profile_info(
|
||||
async def reset_system_user_password(
|
||||
request: Request,
|
||||
reset_password: ResetPasswordModel,
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
) -> Response:
|
||||
reset_user = ResetUserModel(
|
||||
userId=current_user.user.user_id,
|
||||
@@ -319,16 +343,19 @@ async def reset_system_user_password(
|
||||
return ResponseUtil.success(msg=reset_user_result.message)
|
||||
|
||||
|
||||
@user_controller.post('/importData', dependencies=[Depends(CheckUserInterfaceAuth('system:user:import'))])
|
||||
@user_controller.post(
|
||||
'/importData',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:import')],
|
||||
)
|
||||
@Log(title='用户管理', business_type=BusinessType.IMPORT)
|
||||
async def batch_import_system_user(
|
||||
request: Request,
|
||||
file: Annotated[UploadFile, File(...)],
|
||||
update_support: Annotated[bool, Query(alias='updateSupport')],
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
user_data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
dept_data_scope_sql: Annotated[str, Depends(GetDataScope('SysDept'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
user_data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
dept_data_scope_sql: Annotated[str, DataScopeDependency('SysDept')],
|
||||
) -> Response:
|
||||
batch_import_result = await UserService.batch_import_user_services(
|
||||
request, query_db, file, update_support, current_user, user_data_scope_sql, dept_data_scope_sql
|
||||
@@ -338,21 +365,29 @@ async def batch_import_system_user(
|
||||
return ResponseUtil.success(msg=batch_import_result.message)
|
||||
|
||||
|
||||
@user_controller.post('/importTemplate', dependencies=[Depends(CheckUserInterfaceAuth('system:user:import'))])
|
||||
async def export_system_user_template(request: Request, query_db: Annotated[AsyncSession, Depends(get_db)]) -> Response:
|
||||
@user_controller.post(
|
||||
'/importTemplate',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:import')],
|
||||
)
|
||||
async def export_system_user_template(
|
||||
request: Request, query_db: Annotated[AsyncSession, DBSessionDependency()]
|
||||
) -> Response:
|
||||
user_import_template_result = await UserService.get_user_import_template_services()
|
||||
logger.info('获取成功')
|
||||
|
||||
return ResponseUtil.streaming(data=bytes2file_response(user_import_template_result))
|
||||
|
||||
|
||||
@user_controller.post('/export', dependencies=[Depends(CheckUserInterfaceAuth('system:user:export'))])
|
||||
@user_controller.post(
|
||||
'/export',
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:export')],
|
||||
)
|
||||
@Log(title='用户管理', business_type=BusinessType.EXPORT)
|
||||
async def export_system_user_list(
|
||||
request: Request,
|
||||
user_page_query: Annotated[UserPageQueryModel, Form()],
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
) -> Response:
|
||||
# 获取全量数据
|
||||
user_query_result = await UserService.get_user_list_services(
|
||||
@@ -367,12 +402,12 @@ async def export_system_user_list(
|
||||
@user_controller.get(
|
||||
'/authRole/{user_id}',
|
||||
response_model=UserRoleResponseModel,
|
||||
dependencies=[Depends(CheckUserInterfaceAuth('system:user:query'))],
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:query')],
|
||||
)
|
||||
async def get_system_allocated_role_list(
|
||||
request: Request,
|
||||
user_id: Annotated[int, Path(description='用户ID')],
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
) -> Response:
|
||||
user_role_query = UserRoleQueryModel(userId=user_id)
|
||||
user_role_allocated_query_result = await UserService.get_user_role_allocated_list_services(
|
||||
@@ -386,17 +421,17 @@ async def get_system_allocated_role_list(
|
||||
@user_controller.put(
|
||||
'/authRole',
|
||||
response_model=UserRoleResponseModel,
|
||||
dependencies=[Depends(CheckUserInterfaceAuth('system:user:edit'))],
|
||||
dependencies=[UserInterfaceAuthDependency('system:user:edit')],
|
||||
)
|
||||
@Log(title='用户管理', business_type=BusinessType.GRANT)
|
||||
async def update_system_role_user(
|
||||
request: Request,
|
||||
user_id: Annotated[int, Query(alias='userId')],
|
||||
role_ids: Annotated[str, Query(alias='roleIds')],
|
||||
query_db: Annotated[AsyncSession, Depends(get_db)],
|
||||
current_user: Annotated[CurrentUserModel, Depends(LoginService.get_current_user)],
|
||||
user_data_scope_sql: Annotated[str, Depends(GetDataScope('SysUser'))],
|
||||
role_data_scope_sql: Annotated[str, Depends(GetDataScope('SysDept'))],
|
||||
query_db: Annotated[AsyncSession, DBSessionDependency()],
|
||||
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
|
||||
user_data_scope_sql: Annotated[str, DataScopeDependency('SysUser')],
|
||||
role_data_scope_sql: Annotated[str, DataScopeDependency('SysDept')],
|
||||
) -> Response:
|
||||
if not current_user.user.admin:
|
||||
await UserService.check_user_data_scope_services(query_db, user_id, user_data_scope_sql)
|
||||
|
||||
Reference in New Issue
Block a user