refactor(module_system): 重命名配置模块为参数模块

将系统配置模块重命名为参数模块,包括模型、路由、服务层及相关前端代码的修改
更新了数据库表名及字段引用,确保功能一致
This commit is contained in:
zhangtao
2025-09-15 01:05:55 +08:00
parent e159b31e62
commit 693a521c9b
15 changed files with 76 additions and 77 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ from .module_system.user.controller import UserRouter
from .module_system.log.controller import LogRouter
from .module_system.position.controller import PositionRouter
from .module_system.notice.controller import NoticeRouter
from .module_system.config.controller import ConfigRouter
from .module_system.params.controller import ParamsRouter
from .module_system.dict.controller import DictRouter
from .module_monitor.cache.controller import CacheRouter
@@ -41,7 +41,7 @@ SYSTEM_MODULES = [
{"router": LogRouter},
{"router": PositionRouter},
{"router": NoticeRouter},
{"router": ConfigRouter},
{"router": ParamsRouter},
{"router": DictRouter},
]
@@ -13,19 +13,19 @@ from app.core.dependencies import AuthPermission, redis_getter
from app.core.router_class import OperationLogRoute
from app.core.logger import logger
from ..auth.schema import AuthSchema
from .param import ConfigQueryParams
from .schema import ConfigCreateSchema, ConfigUpdateSchema
from .service import ConfigService
from .param import ParamsQueryParams
from .schema import ParamsCreateSchema, ParamsUpdateSchema
from .service import ParamsService
ConfigRouter = APIRouter(route_class=OperationLogRoute, prefix="/param", tags=["参数管理"])
ParamsRouter = APIRouter(route_class=OperationLogRoute, prefix="/param", tags=["参数管理"])
@ConfigRouter.get("/detail/{id}", summary="获取参数详情", description="获取参数详情")
@ParamsRouter.get("/detail/{id}", summary="获取参数详情", description="获取参数详情")
async def get_type_detail_controller(
id: int = Path(..., description="参数ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:query"]))
) -> JSONResponse:
result_dict = await ConfigService.get_obj_detail_service(id=id, auth=auth)
result_dict = await ParamsService.get_obj_detail_service(id=id, auth=auth)
logger.info(f"获取参数详情成功 {id}")
return SuccessResponse(data=result_dict, msg="获取参数详情成功")
@@ -34,9 +34,9 @@ async def get_type_detail_controller(
async def get_obj_list_controller(
auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:query"])),
page: PaginationQueryParams = Depends(),
search: ConfigQueryParams = Depends(),
search: ParamsQueryParams = Depends(),
) -> JSONResponse:
result_dict_list = await ConfigService.get_obj_list_service(auth=auth, search=search, order_by=page.order_by)
result_dict_list = await ParamsService.get_obj_list_service(auth=auth, search=search, order_by=page.order_by)
result_dict = await PaginationService.get_page_obj(data_list= result_dict_list, page_no= page.page_no, page_size = page.page_size)
logger.info(f"获取配置成功")
return SuccessResponse(data=result_dict, msg="查询配置列表成功")
@@ -44,23 +44,23 @@ async def get_obj_list_controller(
@ConfigRouter.post("/create", summary="创建参数", description="创建参数")
async def create_obj_controller(
data: ConfigCreateSchema,
data: ParamsCreateSchema,
redis: Redis = Depends(redis_getter),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:create"]))
) -> JSONResponse:
result_dict = await ConfigService.create_obj_service(auth=auth, redis=redis, data=data)
result_dict = await ParamsService.create_obj_service(auth=auth, redis=redis, data=data)
logger.info(f"创建参数成功: {result_dict}")
return SuccessResponse(data=result_dict, msg="创建参数成功")
@ConfigRouter.put("/update/{id}", summary="修改配置", description="修改配置")
async def update_objs_controller(
data: ConfigUpdateSchema,
data: ParamsUpdateSchema,
id: int = Path(..., description="参数ID"),
redis: Redis = Depends(redis_getter),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:update"]))
) -> JSONResponse:
result_dict = await ConfigService.update_obj_service(auth=auth, redis=redis, id=id, data=data)
result_dict = await ParamsService.update_obj_service(auth=auth, redis=redis, id=id, data=data)
logger.info(f"更新配置成功 {result_dict}")
return SuccessResponse(data=result_dict, msg="更新配置成功")
@@ -71,7 +71,7 @@ async def delete_obj_controller(
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:delete"]))
) -> JSONResponse:
await ConfigService.delete_obj_service(auth=auth, redis=redis, ids=ids)
await ParamsService.delete_obj_service(auth=auth, redis=redis, ids=ids)
logger.info(f"删除参数成功: {ids}")
return SuccessResponse(msg="删除参数成功")
@@ -82,8 +82,8 @@ async def export_obj_list_controller(
auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:export"]))
) -> StreamingResponse:
# 获取全量数据
result_dict_list = await ConfigService.get_obj_list_service(search=search, auth=auth)
export_result = await ConfigService.export_obj_service(data_list=result_dict_list)
result_dict_list = await ParamsService.get_obj_list_service(search=search, auth=auth)
export_result = await ParamsService.export_obj_service(data_list=result_dict_list)
logger.info('导出参数成功')
return StreamResponse(
@@ -100,7 +100,7 @@ async def upload_file_controller(
file: UploadFile,
request: Request
) -> JSONResponse:
result_str = await ConfigService.upload_service(base_url=str(request.base_url), file=file)
result_str = await ParamsService.upload_service(base_url=str(request.base_url), file=file)
logger.info(f"上传文件: {result_str}")
return SuccessResponse(data=result_str, msg='上传文件成功')
@@ -109,6 +109,6 @@ async def upload_file_controller(
async def get_init_obj_controller(
redis: Redis = Depends(redis_getter),
) -> JSONResponse:
result_dict = await ConfigService.get_init_config_service(redis=redis)
result_dict = await ParamsService.get_init_config_service(redis=redis)
logger.info(f"获取初始化缓存参数成功 {result_dict}")
return SuccessResponse(data=result_dict, msg="获取初始化缓存参数成功")
@@ -4,35 +4,35 @@ from typing import Dict, List, Optional, Sequence
from app.core.base_crud import CRUDBase
from ..auth.schema import AuthSchema
from .model import ConfigModel
from .schema import ConfigCreateSchema,ConfigUpdateSchema
from .model import ParamsModel
from .schema import ParamsCreateSchema,ParamsUpdateSchema
class ConfigCRUD(CRUDBase[ConfigModel, ConfigCreateSchema, ConfigUpdateSchema]):
class ParamsCRUD(CRUDBase[ParamsModel, ParamsCreateSchema, ParamsUpdateSchema]):
"""配置管理数据层"""
def __init__(self, auth: AuthSchema) -> None:
"""初始化配置CRUD"""
self.auth = auth
super().__init__(model=ConfigModel, auth=auth)
super().__init__(model=ParamsModel, auth=auth)
async def get_obj_by_id_crud(self, id: int) -> Optional[ConfigModel]:
async def get_obj_by_id_crud(self, id: int) -> Optional[ParamsModel]:
"""获取配置管理型详情"""
return await self.get(id=id)
async def get_obj_by_key_crud(self, key: str) -> Optional[ConfigModel]:
async def get_obj_by_key_crud(self, key: str) -> Optional[ParamsModel]:
"""根据key获取配置管理型详情"""
return await self.get(key=key)
async def get_obj_list_crud(self, search: Dict = None, order_by: List[Dict[str, str]] = None) -> Sequence[ConfigModel]:
async def get_obj_list_crud(self, search: Dict = None, order_by: List[Dict[str, str]] = None) -> Sequence[ParamsModel]:
"""获取配置管理型列表"""
return await self.list(search=search, order_by=order_by)
async def create_obj_crud(self, data: ConfigCreateSchema) -> Optional[ConfigModel]:
"""创配置管理型"""
async def create_obj_crud(self, data: ParamsCreateSchema) -> Optional[ParamsModel]:
"""配置管理型"""
return await self.create(data=data)
async def update_obj_crud(self, id: int, data: ConfigUpdateSchema) -> Optional[ConfigModel]:
async def update_obj_crud(self, id: int, data: ParamsUpdateSchema) -> Optional[ParamsModel]:
"""更新配置管理型"""
return await self.update(id=id, data=data)
@@ -7,7 +7,7 @@ from sqlalchemy.orm import Mapped, mapped_column
from app.core.base_model import CreatorMixin
class ConfigModel(CreatorMixin):
class ParamsModel(CreatorMixin):
"""
系统配置表
"""
@@ -6,7 +6,7 @@ from fastapi import Query
from app.core.validator import DateTimeStr
class ConfigQueryParams:
class ParamsQueryParams:
"""配置管理查询参数"""
def __init__(
@@ -6,7 +6,7 @@ from pydantic import BaseModel, ConfigDict, Field
from app.core.base_schema import BaseSchema
class ConfigCreateSchema(BaseModel):
class ParamsCreateSchema(BaseModel):
"""配置创建模型"""
config_name: str = Field(..., max_length=255, description="参数名称")
config_key: str = Field(..., max_length=255, description="参数键名")
@@ -15,17 +15,17 @@ class ConfigCreateSchema(BaseModel):
description: Optional[str] = Field(default=None, max_length=255, description="描述")
class ConfigUpdateSchema(ConfigCreateSchema):
class ParamsUpdateSchema(ParamsCreateSchema):
"""配置更新模型"""
...
class ConfigOutSchema(ConfigCreateSchema, BaseSchema):
class ParamsOutSchema(ParamsCreateSchema, BaseSchema):
"""配置响应模型"""
model_config = ConfigDict(from_attributes=True)
class UpdataSystemConfigSchema(BaseModel):
class UpdateSystemParamsSchema(BaseModel):
"""更新系统配置"""
sys_web_title: str = Field(description="网站标题")
sys_web_description: str = Field(description="网站描述")
@@ -1,11 +1,10 @@
# -*- coding: utf-8 -*-
import json
from typing import Any, Dict, List, Union
from typing import Any, Dict, List
from redis.asyncio.client import Redis
from fastapi import UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
from redis.asyncio.client import Redis
from app.common.enums import RedisInitKeyConfig
@@ -17,40 +16,40 @@ from app.core.base_schema import UploadResponseSchema
from app.core.exceptions import CustomException
from app.core.logger import logger
from ..auth.schema import AuthSchema
from .param import ConfigQueryParams
from .schema import ConfigOutSchema, ConfigUpdateSchema, ConfigCreateSchema, UpdataSystemConfigSchema
from .crud import ConfigCRUD
from .param import ParamsQueryParams
from .schema import ParamsOutSchema, ParamsUpdateSchema, ParamsCreateSchema, UpdateSystemParamsSchema
from .crud import ParamsCRUD
class ConfigService:
class ParamsService:
"""
配置管理模块服务层
"""
@classmethod
async def get_obj_detail_service(cls, auth: AuthSchema, id: int) -> Dict:
obj = await ConfigCRUD(auth).get_obj_by_id_crud(id=id)
return ConfigOutSchema.model_validate(obj).model_dump()
obj = await ParamsCRUD(auth).get_obj_by_id_crud(id=id)
return ParamsOutSchema.model_validate(obj).model_dump()
@classmethod
async def get_obj_list_service(cls, auth: AuthSchema, search: ConfigQueryParams = None, order_by: List[Dict[str, str]] = None) -> List[Dict]:
async def get_obj_list_service(cls, auth: AuthSchema, search: ParamsQueryParams = None, order_by: List[Dict[str, str]] = None) -> List[Dict]:
if order_by:
order_by = eval(order_by)
obj_list = None
if search:
obj_list = await ConfigCRUD(auth).get_obj_list_crud(search=search.__dict__, order_by=order_by)
obj_list = await ParamsCRUD(auth).get_obj_list_crud(search=search.__dict__, order_by=order_by)
else:
obj_list = await ConfigCRUD(auth).get_obj_list_crud()
return [ConfigOutSchema.model_validate(obj).model_dump() for obj in obj_list]
obj_list = await ParamsCRUD(auth).get_obj_list_crud()
return [ParamsOutSchema.model_validate(obj).model_dump() for obj in obj_list]
@classmethod
async def create_obj_service(cls, auth: AuthSchema, redis: Redis, data: ConfigCreateSchema) -> Dict:
exist_obj = await ConfigCRUD(auth).get(config_key=data.config_key)
async def create_obj_service(cls, auth: AuthSchema, redis: Redis, data: ParamsCreateSchema) -> Dict:
exist_obj = await ParamsCRUD(auth).get(config_key=data.config_key)
if exist_obj:
raise CustomException(msg='创建失败,该配置key已存在')
obj = await ConfigCRUD(auth).create_obj_crud(data=data)
obj = await ParamsCRUD(auth).create_obj_crud(data=data)
new_obj_dict = ConfigOutSchema.model_validate(obj).model_dump()
new_obj_dict = ParamsOutSchema.model_validate(obj).model_dump()
# 同步redis
redis_key = f"{RedisInitKeyConfig.SYSTEM_CONFIG.key}:{data.config_key}"
@@ -69,15 +68,15 @@ class ConfigService:
return new_obj_dict
@classmethod
async def update_obj_service(cls, auth: AuthSchema, redis: Redis, id:int, data: ConfigUpdateSchema) -> Dict:
exist_obj = await ConfigCRUD(auth).get_obj_by_id_crud(id=id)
async def update_obj_service(cls, auth: AuthSchema, redis: Redis, id:int, data: ParamsUpdateSchema) -> Dict:
exist_obj = await ParamsCRUD(auth).get_obj_by_id_crud(id=id)
if not exist_obj:
raise CustomException(msg='更新失败,该数系统配置不存在')
if exist_obj.config_key != data.config_key:
raise CustomException(msg='更新失败,系统配置key不允许修改')
new_obj = await ConfigCRUD(auth).update_obj_crud(id=id, data=data)
new_obj_dict = ConfigOutSchema.model_validate(new_obj).model_dump()
new_obj = await ParamsCRUD(auth).update_obj_crud(id=id, data=data)
new_obj_dict = ParamsOutSchema.model_validate(new_obj).model_dump()
# 同步redis
redis_key = f"{RedisInitKeyConfig.SYSTEM_CONFIG.key}:{new_obj.config_key}"
@@ -101,7 +100,7 @@ class ConfigService:
if len(ids) < 1:
raise CustomException(msg='删除失败,删除对象不能为空')
for id in ids:
exist_obj = await ConfigCRUD(auth).get_obj_by_id_crud(id=id)
exist_obj = await ParamsCRUD(auth).get_obj_by_id_crud(id=id)
if not exist_obj:
raise CustomException(msg='删除失败,该数据字典类型不存在')
# 检查是否是否初始化类型
@@ -109,7 +108,7 @@ class ConfigService:
# 如果有字典数据,不能删除
raise CustomException(msg=f'{exist_obj.config_name} 删除失败,系统初始化配置不可以删除')
await ConfigCRUD(auth).delete_obj_crud(ids=ids)
await ParamsCRUD(auth).delete_obj_crud(ids=ids)
# 同步删除Redis缓存
redis_key = f"{RedisInitKeyConfig.SYSTEM_CONFIG.key}:{exist_obj.config_key}"
try:
@@ -163,14 +162,14 @@ class ConfigService:
async with AsyncSessionLocal() as session:
async with session.begin():
auth = AuthSchema(db=session)
config_obj = await ConfigCRUD(auth).get_obj_list_crud()
config_obj = await ParamsCRUD(auth).get_obj_list_crud()
if not config_obj:
raise CustomException(msg="系统配置不存在")
try:
# 保存到Redis并设置过期时间
for config in config_obj:
redis_key = (f"{RedisInitKeyConfig.SYSTEM_CONFIG.key}:{config.config_key}")
config_obj_dict = ConfigOutSchema.model_validate(config).model_dump()
config_obj_dict = ParamsOutSchema.model_validate(config).model_dump()
value = json.dumps(config_obj_dict, ensure_ascii=False)
result = await RedisCURD(redis).set(
key=redis_key,