From d47375ae416c726b29734928bfd5564591addc2d Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Wed, 25 Jun 2025 10:41:09 +0800 Subject: [PATCH] Optimize dict create and update logic (#691) * Optimize dict create and update logic * Update version --- backend/plugin/dict/crud/crud_dict_data.py | 15 +++++++++++---- backend/plugin/dict/plugin.toml | 2 +- backend/plugin/dict/schema/dict_data.py | 2 +- backend/plugin/dict/service/dict_data_service.py | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/backend/plugin/dict/crud/crud_dict_data.py b/backend/plugin/dict/crud/crud_dict_data.py index 83cfe1bf..cdf16af7 100644 --- a/backend/plugin/dict/crud/crud_dict_data.py +++ b/backend/plugin/dict/crud/crud_dict_data.py @@ -70,26 +70,33 @@ class CRUDDictData(CRUDPlus[DictData]): """ return await self.select_model_by_column(db, label=label) - async def create(self, db: AsyncSession, obj: CreateDictDataParam) -> None: + async def create(self, db: AsyncSession, obj: CreateDictDataParam, type_code: str) -> None: """ 创建字典数据 :param db: 数据库会话 :param obj: 创建字典数据参数 + :param type_code: 字典类型编码 :return: """ - await self.create_model(db, obj) + dict_obj = obj.model_dump() + dict_obj.update({'type_code': type_code}) + new_data = self.model(**dict_obj) + db.add(new_data) - async def update(self, db: AsyncSession, pk: int, obj: UpdateDictDataParam) -> int: + async def update(self, db: AsyncSession, pk: int, obj: UpdateDictDataParam, type_code: str) -> int: """ 更新字典数据 :param db: 数据库会话 :param pk: 字典数据 ID :param obj: 更新字典数据参数 + :param type_code: 字典类型编码 :return: """ - return await self.update_model(db, pk, obj) + dict_obj = obj.model_dump() + dict_obj.update({'type_code': type_code}) + return await self.update_model(db, pk, dict_obj) async def delete(self, db: AsyncSession, pks: list[int]) -> int: """ diff --git a/backend/plugin/dict/plugin.toml b/backend/plugin/dict/plugin.toml index dac34ce5..6f9302b8 100644 --- a/backend/plugin/dict/plugin.toml +++ b/backend/plugin/dict/plugin.toml @@ -1,6 +1,6 @@ [plugin] summary = '数据字典' -version = '0.0.4' +version = '0.0.5' description = '通常用于约束前端工程数据展示' author = 'wu-clan' diff --git a/backend/plugin/dict/schema/dict_data.py b/backend/plugin/dict/schema/dict_data.py index ae4ce3b5..da2c27f9 100644 --- a/backend/plugin/dict/schema/dict_data.py +++ b/backend/plugin/dict/schema/dict_data.py @@ -12,7 +12,6 @@ class DictDataSchemaBase(SchemaBase): """字典数据基础模型""" type_id: int = Field(description='字典类型 ID') - type_code: str = Field(description='字典类型编码') label: str = Field(description='字典标签') value: str = Field(description='字典值') sort: int = Field(description='排序') @@ -40,5 +39,6 @@ class GetDictDataDetail(DictDataSchemaBase): model_config = ConfigDict(from_attributes=True) id: int = Field(description='字典数据 ID') + type_code: str = Field(description='字典类型编码') created_time: datetime = Field(description='创建时间') updated_time: datetime | None = Field(None, description='更新时间') diff --git a/backend/plugin/dict/service/dict_data_service.py b/backend/plugin/dict/service/dict_data_service.py index 2e0105dd..0fba2a52 100644 --- a/backend/plugin/dict/service/dict_data_service.py +++ b/backend/plugin/dict/service/dict_data_service.py @@ -68,7 +68,7 @@ class DictDataService: dict_type = await dict_type_dao.get(db, obj.type_id) if not dict_type: raise errors.NotFoundError(msg='字典类型不存在') - await dict_data_dao.create(db, obj) + await dict_data_dao.create(db, obj, dict_type.code) @staticmethod async def update(*, pk: int, obj: UpdateDictDataParam) -> int: @@ -89,7 +89,7 @@ class DictDataService: dict_type = await dict_type_dao.get(db, obj.type_id) if not dict_type: raise errors.NotFoundError(msg='字典类型不存在') - count = await dict_data_dao.update(db, pk, obj) + count = await dict_data_dao.update(db, pk, obj, dict_type.code) return count @staticmethod