From 2c86992cacdbfef46c0179d6d5e1a4ca1326d6a8 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Fri, 12 Jul 2024 09:50:10 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E4=BD=BF=E7=94=A8ruff=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96=E9=80=9A=E7=9F=A5=E5=85=AC=E5=91=8A=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=EF=BC=8C=E4=BC=98=E5=8C=96=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/notice_controller.py | 57 +++++++++++------ .../module_admin/dao/notice_dao.py | 62 ++++++++++--------- .../module_admin/entity/do/notice_do.py | 5 +- .../module_admin/entity/vo/notice_vo.py | 10 ++- .../module_admin/service/notice_service.py | 12 ++-- 5 files changed, 90 insertions(+), 56 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py b/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py index 7e75306..4dbef45 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py @@ -1,22 +1,31 @@ -from fastapi import APIRouter, Request -from fastapi import Depends +from datetime import datetime +from fastapi import APIRouter, Depends, Request from pydantic_validation_decorator import ValidateFields -from config.get_db import get_db -from module_admin.service.login_service import LoginService, CurrentUserModel -from module_admin.service.notice_service import * -from module_admin.aspect.interface_auth import CheckUserInterfaceAuth -from module_admin.annotation.log_annotation import log_decorator +from sqlalchemy.ext.asyncio import AsyncSession from config.enums import BusinessType -from utils.response_util import * -from utils.log_util import * -from utils.page_util import * +from config.get_db import get_db +from module_admin.annotation.log_annotation import log_decorator +from module_admin.aspect.interface_auth import CheckUserInterfaceAuth +from module_admin.entity.vo.notice_vo import DeleteNoticeModel, NoticeModel, NoticePageQueryModel +from module_admin.entity.vo.user_vo import CurrentUserModel +from module_admin.service.login_service import LoginService +from module_admin.service.notice_service import NoticeService +from utils.log_util import logger +from utils.page_util import PageResponseModel +from utils.response_util import ResponseUtil noticeController = APIRouter(prefix='/system/notice', dependencies=[Depends(LoginService.get_current_user)]) -@noticeController.get("/list", response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:notice:list'))]) -async def get_system_notice_list(request: Request, notice_page_query: NoticePageQueryModel = Depends(NoticePageQueryModel.as_query), query_db: AsyncSession = Depends(get_db)): +@noticeController.get( + '/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:notice:list'))] +) +async def get_system_notice_list( + request: Request, + notice_page_query: NoticePageQueryModel = Depends(NoticePageQueryModel.as_query), + query_db: AsyncSession = Depends(get_db), +): # 获取分页数据 notice_page_query_result = await NoticeService.get_notice_list_services(query_db, notice_page_query, is_page=True) logger.info('获取成功') @@ -24,10 +33,15 @@ async def get_system_notice_list(request: Request, notice_page_query: NoticePage return ResponseUtil.success(model_content=notice_page_query_result) -@noticeController.post("", dependencies=[Depends(CheckUserInterfaceAuth('system:notice:add'))]) +@noticeController.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:notice:add'))]) @ValidateFields(validate_model='add_notice') @log_decorator(title='通知公告管理', business_type=BusinessType.INSERT) -async def add_system_notice(request: Request, add_notice: NoticeModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): +async def add_system_notice( + request: Request, + add_notice: NoticeModel, + query_db: AsyncSession = Depends(get_db), + current_user: CurrentUserModel = Depends(LoginService.get_current_user), +): add_notice.create_by = current_user.user.user_name add_notice.create_time = datetime.now() add_notice.update_by = current_user.user.user_name @@ -38,10 +52,15 @@ async def add_system_notice(request: Request, add_notice: NoticeModel, query_db: return ResponseUtil.success(msg=add_notice_result.message) -@noticeController.put("", dependencies=[Depends(CheckUserInterfaceAuth('system:notice:edit'))]) +@noticeController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:notice:edit'))]) @ValidateFields(validate_model='edit_notice') @log_decorator(title='通知公告管理', business_type=BusinessType.UPDATE) -async def edit_system_notice(request: Request, edit_notice: NoticeModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): +async def edit_system_notice( + request: Request, + edit_notice: NoticeModel, + query_db: AsyncSession = Depends(get_db), + current_user: CurrentUserModel = Depends(LoginService.get_current_user), +): edit_notice.update_by = current_user.user.user_name edit_notice.update_time = datetime.now() edit_notice_result = await NoticeService.edit_notice_services(query_db, edit_notice) @@ -50,7 +69,7 @@ async def edit_system_notice(request: Request, edit_notice: NoticeModel, query_d return ResponseUtil.success(msg=edit_notice_result.message) -@noticeController.delete("/{notice_ids}", dependencies=[Depends(CheckUserInterfaceAuth('system:notice:remove'))]) +@noticeController.delete('/{notice_ids}', dependencies=[Depends(CheckUserInterfaceAuth('system:notice:remove'))]) @log_decorator(title='通知公告管理', business_type=BusinessType.DELETE) async def delete_system_notice(request: Request, notice_ids: str, query_db: AsyncSession = Depends(get_db)): delete_notice = DeleteNoticeModel(noticeIds=notice_ids) @@ -60,7 +79,9 @@ async def delete_system_notice(request: Request, notice_ids: str, query_db: Asyn return ResponseUtil.success(msg=delete_notice_result.message) -@noticeController.get("/{notice_id}", response_model=NoticeModel, dependencies=[Depends(CheckUserInterfaceAuth('system:notice:query'))]) +@noticeController.get( + '/{notice_id}', response_model=NoticeModel, dependencies=[Depends(CheckUserInterfaceAuth('system:notice:query'))] +) async def query_detail_system_post(request: Request, notice_id: int, query_db: AsyncSession = Depends(get_db)): notice_detail_result = await NoticeService.notice_detail_services(query_db, notice_id) logger.info(f'获取notice_id为{notice_id}的信息成功') diff --git a/ruoyi-fastapi-backend/module_admin/dao/notice_dao.py b/ruoyi-fastapi-backend/module_admin/dao/notice_dao.py index d680aa7..534c26c 100644 --- a/ruoyi-fastapi-backend/module_admin/dao/notice_dao.py +++ b/ruoyi-fastapi-backend/module_admin/dao/notice_dao.py @@ -1,9 +1,9 @@ -from sqlalchemy import select, update, delete +from datetime import datetime, time +from sqlalchemy import delete, select, update from sqlalchemy.ext.asyncio import AsyncSession from module_admin.entity.do.notice_do import SysNotice -from module_admin.entity.vo.notice_vo import * +from module_admin.entity.vo.notice_vo import NoticeModel, NoticePageQueryModel from utils.page_util import PageUtil -from datetime import datetime, time class NoticeDao: @@ -19,10 +19,7 @@ class NoticeDao: :param notice_id: 通知公告id :return: 通知公告信息对象 """ - notice_info = (await db.execute( - select(SysNotice) - .where(SysNotice.notice_id == notice_id) - )).scalars().first() + notice_info = (await db.execute(select(SysNotice).where(SysNotice.notice_id == notice_id))).scalars().first() return notice_info @@ -34,12 +31,19 @@ class NoticeDao: :param notice: 通知公告参数对象 :return: 通知公告信息对象 """ - notice_info = (await db.execute( - select(SysNotice) - .where(SysNotice.notice_title == notice.notice_title, - SysNotice.notice_type == notice.notice_type, - SysNotice.notice_content == notice.notice_content) - )).scalars().first() + notice_info = ( + ( + await db.execute( + select(SysNotice).where( + SysNotice.notice_title == notice.notice_title, + SysNotice.notice_type == notice.notice_type, + SysNotice.notice_content == notice.notice_content, + ) + ) + ) + .scalars() + .first() + ) return notice_info @@ -52,15 +56,21 @@ class NoticeDao: :param is_page: 是否开启分页 :return: 通知公告列表信息对象 """ - query = select(SysNotice) \ - .where(SysNotice.notice_title.like(f'%{query_object.notice_title}%') if query_object.notice_title else True, - SysNotice.create_by.like(f'%{query_object.create_by}%') if query_object.create_by else True, - SysNotice.notice_type == query_object.notice_type if query_object.notice_type else True, - SysNotice.create_time.between( - datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(00, 00, 00)), - 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) \ + query = ( + select(SysNotice) + .where( + SysNotice.notice_title.like(f'%{query_object.notice_title}%') if query_object.notice_title else True, + SysNotice.create_by.like(f'%{query_object.create_by}%') if query_object.create_by else True, + SysNotice.notice_type == query_object.notice_type if query_object.notice_type else True, + SysNotice.create_time.between( + datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(00, 00, 00)), + 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() + ) notice_list = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) return notice_list @@ -87,10 +97,7 @@ class NoticeDao: :param notice: 需要更新的通知公告字典 :return: """ - await db.execute( - update(SysNotice), - [notice] - ) + await db.execute(update(SysNotice), [notice]) @classmethod async def delete_notice_dao(cls, db: AsyncSession, notice: NoticeModel): @@ -100,7 +107,4 @@ class NoticeDao: :param notice: 通知公告对象 :return: """ - await db.execute( - delete(SysNotice) - .where(SysNotice.notice_id.in_([notice.notice_id])) - ) + await db.execute(delete(SysNotice).where(SysNotice.notice_id.in_([notice.notice_id]))) diff --git a/ruoyi-fastapi-backend/module_admin/entity/do/notice_do.py b/ruoyi-fastapi-backend/module_admin/entity/do/notice_do.py index 3856658..125a40a 100644 --- a/ruoyi-fastapi-backend/module_admin/entity/do/notice_do.py +++ b/ruoyi-fastapi-backend/module_admin/entity/do/notice_do.py @@ -1,12 +1,13 @@ -from sqlalchemy import Column, Integer, String, DateTime, LargeBinary -from config.database import Base from datetime import datetime +from sqlalchemy import Column, DateTime, Integer, LargeBinary, String +from config.database import Base class SysNotice(Base): """ 通知公告表 """ + __tablename__ = 'sys_notice' notice_id = Column(Integer, primary_key=True, autoincrement=True, comment='公告ID') diff --git a/ruoyi-fastapi-backend/module_admin/entity/vo/notice_vo.py b/ruoyi-fastapi-backend/module_admin/entity/vo/notice_vo.py index 75ef99c..bbf0a07 100644 --- a/ruoyi-fastapi-backend/module_admin/entity/vo/notice_vo.py +++ b/ruoyi-fastapi-backend/module_admin/entity/vo/notice_vo.py @@ -1,15 +1,16 @@ +from datetime import datetime from pydantic import BaseModel, ConfigDict, Field from pydantic.alias_generators import to_camel from pydantic_validation_decorator import NotBlank, Size, Xss -from typing import Union, Optional, List, Literal -from datetime import datetime -from module_admin.annotation.pydantic_annotation import as_query, as_form +from typing import Literal, Optional +from module_admin.annotation.pydantic_annotation import as_form, as_query class NoticeModel(BaseModel): """ 通知公告表对应pydantic模型 """ + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) notice_id: Optional[int] = Field(default=None, description='公告ID') @@ -37,6 +38,7 @@ class NoticeQueryModel(NoticeModel): """ 通知公告管理不分页查询模型 """ + begin_time: Optional[str] = Field(default=None, description='开始时间') end_time: Optional[str] = Field(default=None, description='结束时间') @@ -47,6 +49,7 @@ class NoticePageQueryModel(NoticeQueryModel): """ 通知公告管理分页查询模型 """ + page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') @@ -55,6 +58,7 @@ class DeleteNoticeModel(BaseModel): """ 删除通知公告模型 """ + model_config = ConfigDict(alias_generator=to_camel) notice_ids: str = Field(description='需要删除的公告ID') diff --git a/ruoyi-fastapi-backend/module_admin/service/notice_service.py b/ruoyi-fastapi-backend/module_admin/service/notice_service.py index 1926ed7..d9e5594 100644 --- a/ruoyi-fastapi-backend/module_admin/service/notice_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/notice_service.py @@ -1,8 +1,10 @@ -from module_admin.dao.notice_dao import * -from module_admin.entity.vo.common_vo import CrudResponseModel +from sqlalchemy.ext.asyncio import AsyncSession from config.constant import CommonConstant from exceptions.exception import ServiceException -from utils.common_util import export_list2excel, CamelCaseUtil +from module_admin.dao.notice_dao import NoticeDao +from module_admin.entity.vo.common_vo import CrudResponseModel +from module_admin.entity.vo.notice_vo import DeleteNoticeModel, NoticeModel, NoticePageQueryModel +from utils.common_util import CamelCaseUtil class NoticeService: @@ -11,7 +13,9 @@ class NoticeService: """ @classmethod - async def get_notice_list_services(cls, query_db: AsyncSession, query_object: NoticePageQueryModel, is_page: bool = True): + async def get_notice_list_services( + cls, query_db: AsyncSession, query_object: NoticePageQueryModel, is_page: bool = True + ): """ 获取通知公告列表信息service :param query_db: orm对象