From 11dd8e755fc03de304d3193495eccf9a403511d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9A=93=E6=9C=88=E5=BD=92=E5=B0=98?= Date: Sat, 22 Feb 2025 14:02:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8C=89=E9=92=AE=E7=BA=A7=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/config.py | 33 +++++++++++++++++++++------------ config/get_redis.py | 2 +- schemas/config.py | 7 ------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/api/config.py b/api/config.py index 66f2f2f..4dcfb09 100644 --- a/api/config.py +++ b/api/config.py @@ -11,13 +11,14 @@ from typing import Optional from fastapi import APIRouter, Depends, Path, Request, Query from fastapi.responses import JSONResponse +from annotation.auth import Auth from annotation.log import Log from config.constant import BusinessType from config.get_redis import Redis from controller.login import LoginController from models import Config -from schemas.common import BaseResponse -from schemas.config import AddConfigParams, DeleteConfigListParams, GetConfigInfoResponse, GetConfigListResponse +from schemas.common import BaseResponse, DeleteListParams +from schemas.config import AddConfigParams, GetConfigInfoResponse, GetConfigListResponse from utils.response import Response configApi = APIRouter( @@ -28,8 +29,9 @@ configApi = APIRouter( @configApi.post("/add", response_class=JSONResponse, response_model=BaseResponse, summary="新增配置") @Log(title="新增配置", business_type=BusinessType.INSERT) +@Auth(permission_list=["config:btn:add"]) async def add_config(request: Request, params: AddConfigParams): - if await Config.get_or_none(name=params.name, key=params.key): + if await Config.get_or_none(name=params.name, key=params.key, del_flag=1): return Response.error(msg="配置已存在") config = await Config.create( name=params.name, @@ -48,9 +50,11 @@ async def add_config(request: Request, params: AddConfigParams): @configApi.delete("/delete/{id}", response_class=JSONResponse, response_model=BaseResponse, summary="删除配置") @configApi.post("/delete/{id}", response_class=JSONResponse, response_model=BaseResponse, summary="删除配置") @Log(title="删除配置", business_type=BusinessType.DELETE) +@Auth(permission_list=["config:btn:delete"]) async def delete_config(request: Request, id: str = Path(description="配置ID")): - if config := await Config.get_or_none(id=id): - await config.delete() + if config := await Config.get_or_none(id=id, del_flag=1): + config.del_flag = 0 + await config.save() await Redis.init_system_config(request.app) return Response.success(msg="删除成功") else: @@ -60,10 +64,12 @@ async def delete_config(request: Request, id: str = Path(description="配置ID") @configApi.delete("/deleteList", response_class=JSONResponse, response_model=BaseResponse, summary="批量删除配置") @configApi.post("/deleteList", response_class=JSONResponse, response_model=BaseResponse, summary="批量删除配置") @Log(title="批量删除配置", business_type=BusinessType.DELETE) -async def delete_config_list(request: Request, params: DeleteConfigListParams): +@Auth(permission_list=["config:btn:delete"]) +async def delete_config_list(request: Request, params: DeleteListParams): for id in set(params.ids): - if config := await Config.get_or_none(id=id): - await config.delete() + if config := await Config.get_or_none(id=id, del_flag=1): + config.del_flag = 0 + await config.save() await Redis.init_system_config(request.app) return Response.success(msg="删除成功") @@ -71,8 +77,9 @@ async def delete_config_list(request: Request, params: DeleteConfigListParams): @configApi.put("/update/{id}", response_class=JSONResponse, response_model=BaseResponse, summary="修改配置") @configApi.post("/update/{id}", response_class=JSONResponse, response_model=BaseResponse, summary="修改配置") @Log(title="修改配置", business_type=BusinessType.UPDATE) +@Auth(permission_list=["config:btn:update"]) async def update_config(request: Request, params: AddConfigParams, id: str = Path(description="配置ID")): - if config := await Config.get_or_none(id=id): + if config := await Config.get_or_none(id=id, del_flag=1): config.name = params.name config.key = params.key config.value = params.value @@ -87,8 +94,9 @@ async def update_config(request: Request, params: AddConfigParams, id: str = Pat @configApi.get("/info/{id}", response_class=JSONResponse, response_model=GetConfigInfoResponse, summary="获取配置信息") @Log(title="获取配置信息", business_type=BusinessType.SELECT) +@Auth(permission_list=["config:btn:info"]) async def get_config_info(request: Request, id: str = Path(description="配置ID")): - if config := await Config.get_or_none(id=id): + if config := await Config.get_or_none(id=id, del_flag=1): data = { "id": config.id, "name": config.name, @@ -108,6 +116,7 @@ async def get_config_info(request: Request, id: str = Path(description="配置ID @configApi.get("/list", response_class=JSONResponse, response_model=GetConfigListResponse, summary="获取配置列表") @Log(title="获取配置列表", business_type=BusinessType.SELECT) +@Auth(permission_list=["config:btn:list"]) async def get_config_list(request: Request, page: int = Query(default=1, description="当前页码"), pageSize: int = Query(default=10, description="每页数量"), @@ -122,8 +131,8 @@ async def get_config_list(request: Request, 'type': type, }.items() if v } - total = await Config.filter(**filterArgs).count() - data = await Config.filter(**filterArgs).offset((page - 1) * pageSize).limit(pageSize).values( + total = await Config.filter(**filterArgs, del_flag=1).count() + data = await Config.filter(**filterArgs, del_flag=1).offset((page - 1) * pageSize).limit(pageSize).values( id="id", name="name", key="key", diff --git a/config/get_redis.py b/config/get_redis.py index 8d2a803..980c783 100644 --- a/config/get_redis.py +++ b/config/get_redis.py @@ -79,7 +79,7 @@ class Redis: # 删除匹配的键 if keys: await app.state.redis.delete(*keys) - config = await Config.all().values() + config = await Config.filter(del_flag=1).values() for item in config: await app.state.redis.set(f"{RedisKeyConfig.SYSTEM_CONFIG.key}:{item.get('key')}", item.get('value'), ) diff --git a/schemas/config.py b/schemas/config.py index 96698fa..67cc99b 100644 --- a/schemas/config.py +++ b/schemas/config.py @@ -42,13 +42,6 @@ class AddConfigParams(BaseModel): remark: Optional[str] = Field(default=None, max_length=255, description="备注信息") -class DeleteConfigListParams(BaseModel): - """ - 批量删除配置参数模型 - """ - ids: List[str] = Field(default=[], description="配置ID") - - class GetConfigInfoResponse(BaseResponse): """ 获取配置模型信息响应