From a12907f4b88f15c08c883a45278cb55ff8a0ff16 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Fri, 26 Jan 2024 08:59:17 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/controller/log_controller.py | 20 ++++++------------- .../module_admin/dao/log_dao.py | 18 ++++++++++------- .../module_admin/service/log_service.py | 14 +++++++------ 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/controller/log_controller.py b/ruoyi-fastapi-backend/module_admin/controller/log_controller.py index bf00fd8..095ca5e 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/log_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/log_controller.py @@ -17,11 +17,8 @@ logController = APIRouter(prefix='/monitor', dependencies=[Depends(LoginService. @logController.get("/operlog/list", response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('monitor:operlog:list'))]) async def get_system_operation_log_list(request: Request, operation_log_page_query: OperLogPageQueryModel = Depends(OperLogPageQueryModel.as_query), query_db: Session = Depends(get_db)): try: - operation_log_query = OperLogQueryModel(**operation_log_page_query.model_dump(by_alias=True)) - # 获取全量数据 - operation_log_query_result = OperationLogService.get_operation_log_list_services(query_db, operation_log_query) - # 分页操作 - operation_log_page_query_result = get_page_obj(operation_log_query_result, operation_log_page_query.page_num, operation_log_page_query.page_size) + # 获取分页数据 + operation_log_page_query_result = OperationLogService.get_operation_log_list_services(query_db, operation_log_page_query, is_page=True) logger.info('获取成功') return ResponseUtil.success(model_content=operation_log_page_query_result) except Exception as e: @@ -66,9 +63,8 @@ async def delete_system_operation_log(request: Request, oper_ids: str, query_db: @log_decorator(title='操作日志管理', business_type=5) async def export_system_operation_log_list(request: Request, operation_log_page_query: OperLogPageQueryModel = Depends(OperLogPageQueryModel.as_form), query_db: Session = Depends(get_db)): try: - operation_log_query = OperLogQueryModel(**operation_log_page_query.model_dump(by_alias=True)) # 获取全量数据 - operation_log_query_result = OperationLogService.get_operation_log_list_services(query_db, operation_log_query) + operation_log_query_result = OperationLogService.get_operation_log_list_services(query_db, operation_log_page_query, is_page=False) operation_log_export_result = await OperationLogService.export_operation_log_list_services(request, operation_log_query_result) logger.info('导出成功') return ResponseUtil.streaming(data=bytes2file_response(operation_log_export_result)) @@ -80,11 +76,8 @@ async def export_system_operation_log_list(request: Request, operation_log_page_ @logController.get("/logininfor/list", response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('monitor:logininfor:list'))]) async def get_system_login_log_list(request: Request, login_log_page_query: LoginLogPageQueryModel = Depends(LoginLogPageQueryModel.as_query), query_db: Session = Depends(get_db)): try: - login_log_query = LoginLogQueryModel(**login_log_page_query.model_dump(by_alias=True)) - # 获取全量数据 - login_log_query_result = LoginLogService.get_login_log_list_services(query_db, login_log_query) - # 分页操作 - login_log_page_query_result = get_page_obj(login_log_query_result, login_log_page_query.page_num, login_log_page_query.page_size) + # 获取分页数据 + login_log_page_query_result = LoginLogService.get_login_log_list_services(query_db, login_log_page_query, is_page=True) logger.info('获取成功') return ResponseUtil.success(model_content=login_log_page_query_result) except Exception as e: @@ -146,9 +139,8 @@ async def clear_system_login_log(request: Request, user_name: str, query_db: Ses @log_decorator(title='登录日志管理', business_type=5) async def export_system_login_log_list(request: Request, login_log_page_query: LoginLogPageQueryModel = Depends(LoginLogPageQueryModel.as_form), query_db: Session = Depends(get_db)): try: - login_log_query = LoginLogQueryModel(**login_log_page_query.model_dump(by_alias=True)) # 获取全量数据 - login_log_query_result = LoginLogService.get_login_log_list_services(query_db, login_log_query) + login_log_query_result = LoginLogService.get_login_log_list_services(query_db, login_log_page_query, is_page=False) login_log_export_result = LoginLogService.export_login_log_list_services(login_log_query_result) logger.info('导出成功') return ResponseUtil.streaming(data=bytes2file_response(login_log_export_result)) diff --git a/ruoyi-fastapi-backend/module_admin/dao/log_dao.py b/ruoyi-fastapi-backend/module_admin/dao/log_dao.py index b6fdaac..7fefc8f 100644 --- a/ruoyi-fastapi-backend/module_admin/dao/log_dao.py +++ b/ruoyi-fastapi-backend/module_admin/dao/log_dao.py @@ -1,7 +1,7 @@ from sqlalchemy.orm import Session from module_admin.entity.do.log_do import SysOperLog, SysLogininfor from module_admin.entity.vo.log_vo import * -from utils.time_format_util import object_format_datetime, list_format_datetime +from utils.page_util import PageUtil from datetime import datetime, time @@ -10,14 +10,15 @@ class OperationLogDao: 操作日志管理模块数据库操作层 """ @classmethod - def get_operation_log_list(cls, db: Session, query_object: OperLogQueryModel): + def get_operation_log_list(cls, db: Session, query_object: OperLogPageQueryModel, is_page: bool = False): """ 根据查询参数获取操作日志列表信息 :param db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 操作日志列表信息对象 """ - operation_log_list = db.query(SysOperLog) \ + query = db.query(SysOperLog) \ .filter(SysOperLog.title.like(f'%{query_object.title}%') if query_object.title else True, SysOperLog.oper_name.like(f'%{query_object.oper_name}%') if query_object.oper_name else True, SysOperLog.business_type == query_object.business_type if query_object.business_type else True, @@ -27,7 +28,8 @@ class OperationLogDao: datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time(23, 59, 59))) if query_object.begin_time and query_object.end_time else True )\ - .distinct().all() + .distinct() + operation_log_list = PageUtil.paginate(query, query_object.page_num, query_object.page_size, is_page) return operation_log_list @@ -74,14 +76,15 @@ class LoginLogDao: """ @classmethod - def get_login_log_list(cls, db: Session, query_object: LoginLogQueryModel): + def get_login_log_list(cls, db: Session, query_object: LoginLogPageQueryModel, is_page: bool = False): """ 根据查询参数获取登录日志列表信息 :param db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 登录日志列表信息对象 """ - login_log_list = db.query(SysLogininfor) \ + query = db.query(SysLogininfor) \ .filter(SysLogininfor.ipaddr.like(f'%{query_object.ipaddr}%') if query_object.ipaddr else True, SysLogininfor.user_name.like(f'%{query_object.user_name}%') if query_object.user_name else True, SysLogininfor.status == query_object.status if query_object.status else True, @@ -90,7 +93,8 @@ class LoginLogDao: datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time(23, 59, 59))) if query_object.begin_time and query_object.end_time else True )\ - .distinct().all() + .distinct() + login_log_list = PageUtil.paginate(query, query_object.page_num, query_object.page_size, is_page) return login_log_list diff --git a/ruoyi-fastapi-backend/module_admin/service/log_service.py b/ruoyi-fastapi-backend/module_admin/service/log_service.py index a4546e5..cbbb94e 100644 --- a/ruoyi-fastapi-backend/module_admin/service/log_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/log_service.py @@ -10,16 +10,17 @@ class OperationLogService: """ @classmethod - def get_operation_log_list_services(cls, query_db: Session, query_object: OperLogQueryModel): + def get_operation_log_list_services(cls, query_db: Session, query_object: OperLogPageQueryModel, is_page: bool = False): """ 获取操作日志列表信息service :param query_db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 操作日志列表信息对象 """ - operation_log_list_result = OperationLogDao.get_operation_log_list(query_db, query_object) + operation_log_list_result = OperationLogDao.get_operation_log_list(query_db, query_object, is_page) - return CamelCaseUtil.transform_result(operation_log_list_result) + return operation_log_list_result @classmethod def add_operation_log_services(cls, query_db: Session, page_object: OperLogModel): @@ -131,16 +132,17 @@ class LoginLogService: """ @classmethod - def get_login_log_list_services(cls, query_db: Session, query_object: LoginLogQueryModel): + def get_login_log_list_services(cls, query_db: Session, query_object: LoginLogPageQueryModel, is_page: bool = False): """ 获取登录日志列表信息service :param query_db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 登录日志列表信息对象 """ - operation_log_list_result = LoginLogDao.get_login_log_list(query_db, query_object) + operation_log_list_result = LoginLogDao.get_login_log_list(query_db, query_object, is_page) - return CamelCaseUtil.transform_result(operation_log_list_result) + return operation_log_list_result @classmethod def add_login_log_services(cls, query_db: Session, page_object: LogininforModel):