From 1641b5ac3ac9199e18ac5a6fd92482b28493be7e Mon Sep 17 00:00:00 2001 From: "si@aidatagov.com" Date: Wed, 29 Oct 2025 02:37:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E6=95=88bug?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/dao/data_ast_content_dao.py | 56 ++++++++----------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/vue-fastapi-backend/module_admin/dao/data_ast_content_dao.py b/vue-fastapi-backend/module_admin/dao/data_ast_content_dao.py index f05f0f3..4b522f3 100644 --- a/vue-fastapi-backend/module_admin/dao/data_ast_content_dao.py +++ b/vue-fastapi-backend/module_admin/dao/data_ast_content_dao.py @@ -260,17 +260,19 @@ class DataCatalogDAO: await db.execute(stmt) + + @classmethod async def edit_catalog_child_dao(cls, db: AsyncSession, catalog: dict): """ - 编辑目录数据库操作 - + 编辑目录数据库操作(子节点先删除再新增) + :param db: orm对象 - :param catalog: 需要更新的目录字典 - :return: + :param catalog: 需要更新的目录字典(包含 children 列表) """ content_onum = catalog['content_onum'] - + + # ---------- 更新主目录 ---------- stmt = ( update(DataAstContent) .where(DataAstContent.content_onum == content_onum) @@ -283,35 +285,25 @@ class DataCatalogDAO: leaf_node_flag=catalog['leaf_node_flag'], upd_prsn=catalog['upd_prsn'], upd_time=datetime.now() - ) ) - + ) + ) await db.execute(stmt) - - # 处理子关系 + + # ---------- 删除原有子关系 ---------- + delete_stmt = ( + delete(DataAstContentRela) + .where(DataAstContentRela.content_onum == content_onum) + ) + await db.execute(delete_stmt) + + # ---------- 新增子关系 ---------- for child in catalog.get('children', []): - rela_onum = child.get('rela_onum') - if rela_onum: - st = ( - update(DataAstContentRela) - .where(DataAstContentRela.rela_onum == rela_onum) - .values( - content_onum=child.get('content_onum'), - ast_onum=child.get('ast_onum'), - rela_type=child.get('rela_type'), - rela_eff_begn_date=child.get('rela_eff_begn_date'), - rela_eff_end_date=child.get('rela_eff_end_date'), - upd_prsn=child.get('upd_prsn')) - ) - - await db.execute(st) - await cls.update_leaf_node_flag(db) - else: - child['content_onum'] = content_onum - db_child = DataAstContentRela(**child) - db.add(db_child) - await db.flush() - await cls.update_leaf_node_flag(db) - + child['content_onum'] = content_onum + db_child = DataAstContentRela(**child) + db.add(db_child) + + # 更新叶子节点状态 + await cls.update_leaf_node_flag(db)