diff --git a/backend/app/admin/api/v1/sys/config.py b/backend/app/admin/api/v1/sys/config.py index a13de7de6..7a65447b1 100644 --- a/backend/app/admin/api/v1/sys/config.py +++ b/backend/app/admin/api/v1/sys/config.py @@ -22,7 +22,7 @@ @router.get('/website', summary='获取网站配置信息', dependencies=[DependsJwtAuth]) -async def get_website_config() -> ResponseSchemaModel[GetConfigDetail]: +async def get_website_config() -> ResponseSchemaModel[list[GetConfigDetail]]: config = await config_service.get_built_in_config('website') return response_base.success(data=config) @@ -41,7 +41,7 @@ async def save_website_config(objs: list[SaveBuiltInConfigParam]) -> ResponseMod @router.get('/protocol', summary='获取用户协议', dependencies=[DependsJwtAuth]) -async def get_protocol_config() -> ResponseSchemaModel[GetConfigDetail]: +async def get_protocol_config() -> ResponseSchemaModel[list[GetConfigDetail]]: config = await config_service.get_built_in_config('protocol') return response_base.success(data=config) @@ -60,7 +60,7 @@ async def save_protocol_config(objs: list[SaveBuiltInConfigParam]) -> ResponseMo @router.get('/policy', summary='获取用户政策', dependencies=[DependsJwtAuth]) -async def get_policy_config() -> ResponseSchemaModel[GetConfigDetail]: +async def get_policy_config() -> ResponseSchemaModel[list[GetConfigDetail]]: config = await config_service.get_built_in_config('policy') return response_base.success(data=config) diff --git a/backend/app/admin/crud/crud_config.py b/backend/app/admin/crud/crud_config.py index 9e6eda2e7..db0b66d5a 100644 --- a/backend/app/admin/crud/crud_config.py +++ b/backend/app/admin/crud/crud_config.py @@ -43,7 +43,7 @@ async def get_by_key_and_type(self, db: AsyncSession, key: str, type: str) -> Co """ return await self.select_model_by_column(db, key=key, type=type) - async def get_by_key(self, db: AsyncSession, key: str, built_in: bool = False) -> Config | None: + async def get_by_key(self, db: AsyncSession, key: str) -> Config | None: """ 通过 key 获取系统配置参数 @@ -52,10 +52,7 @@ async def get_by_key(self, db: AsyncSession, key: str, built_in: bool = False) - :param built_in: :return: """ - filters = {'key': key} - if not built_in: - filters.update({'type__not_in': admin_settings.CONFIG_BUILT_IN_TYPES}) - return await self.select_model_by_column(db, **filters) + return await self.select_model_by_column(db, key=key) async def get_list(self, name: str = None, type: str = None) -> Select: """ diff --git a/backend/app/admin/service/config_service.py b/backend/app/admin/service/config_service.py index 8af41dda4..6cf6d001a 100644 --- a/backend/app/admin/service/config_service.py +++ b/backend/app/admin/service/config_service.py @@ -28,7 +28,7 @@ async def save_built_in_config(objs: list[SaveBuiltInConfigParam], type: str) -> for obj in objs: config = await config_dao.get_by_key_and_type(db, obj.key, type) if config is None: - if await config_dao.get_by_key(db, obj.key, built_in=True): + if await config_dao.get_by_key(db, obj.key): raise errors.ForbiddenError(msg=f'参数配置 {obj.key} 已存在') await config_dao.create_model(db, obj, flush=True, type=type) else: @@ -62,6 +62,10 @@ async def update(*, pk: int, obj: UpdateConfigParam) -> int: config = await config_dao.get(db, pk) if not config: raise errors.NotFoundError(msg='参数配置不存在') + if config.key != obj.key: + config = await config_dao.get_by_key(db, obj.key) + if config: + raise errors.ForbiddenError(msg=f'参数配置 {obj.key} 已存在') count = await config_dao.update(db, pk, obj) return count