Browse Source

重名校验

master
si@aidatagov.com 3 days ago
parent
commit
8ef3929acc
  1. 29
      vue-fastapi-backend/module_admin/dao/data_ast_content_dao.py
  2. 11
      vue-fastapi-backend/module_admin/service/data_ast_content_service.py

29
vue-fastapi-backend/module_admin/dao/data_ast_content_dao.py

@ -9,6 +9,7 @@ from module_admin.entity.do.user_do import SysUser
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel,DataCatalogChild,DataAstBookmarkRelaRequest,DataAstIndxRequest,DataAstIndxResponse
from utils.page_util import PageUtil
from utils.log_util import logger
from exceptions.exception import ServiceException
class DataCatalogDAO:
@ -176,7 +177,33 @@ class DataCatalogDAO:
)
return data_ast_list
@classmethod
async def check_duplicate_catalog(cls, db: AsyncSession, catalog1: dict, exclude_content_onum: int = None):
"""
校验同一父节点下是否已存在相同名称的目录可排除指定 content_onum
:param db: ORM 对象
:param catalog1: 主目录对象DataAstContent
:param exclude_content_onum: 可选编辑时排除自己
:return: 如果存在重复目录抛出 ServiceException
"""
query = select(DataAstContent).where(
and_(
DataAstContent.supr_content_onum == catalog1.get("supr_content_onum"),
DataAstContent.content_name == catalog1.get("content_name")
)
)
if exclude_content_onum:
query = query.where(DataAstContent.content_onum != exclude_content_onum)
result = await db.execute(query)
exist_catalog = result.scalars().first()
if exist_catalog:
raise ServiceException(
message=f"同一父节点下已存在名称为“{catalog1.get('content_name')}”的目录"
)
@classmethod
async def add_catalog_dao(cls, db: AsyncSession, catalog1: dict, catalog2: dict):
"""

11
vue-fastapi-backend/module_admin/service/data_ast_content_service.py

@ -156,10 +156,14 @@ class DataCatalogService:
child["rela_eff_end_date"] = datetime(year=2999, month=12, day=31, hour=0, minute=0, second=0).strftime("%Y-%m-%d %H:%M:%S"), # 设置默认值,2999-12-31
child["upd_prsn"] = request.upd_prsn,
child["rela_status"] = "1"
await DataCatalogDAO.check_duplicate_catalog(query_db, catalog_data1)
new_catalog = await DataCatalogDAO.add_catalog_dao(query_db, catalog_data1, catalog_data2)
await query_db.commit()
return CrudResponseModel(is_success=True, message='新增成功', data=new_catalog)
except ServiceException as e:
await query_db.rollback()
# 直接抛出,不再重新包装,保留 DAO 层信息
raise e
except Exception as e:
await query_db.rollback()
raise ServiceException(message=f"创建目录时发生错误: {str(e)}")
@ -224,9 +228,14 @@ class DataCatalogService:
child["upd_prsn"] = request.upd_prsn
child["rela_status"] = "1"
await DataCatalogDAO.check_duplicate_catalog(query_db, catalog_data, exclude_content_onum=request.content_onum)
await DataCatalogDAO.edit_catalog_child_dao(query_db, catalog_data)
await query_db.commit()
return CrudResponseModel(is_success=True, message='更新成功')
except ServiceException as e:
await query_db.rollback()
# 直接抛出,不再重新包装,保留 DAO 层信息
raise e
except Exception as e:
await query_db.rollback()
raise ServiceException(message=f"更新目录时发生错误: {str(e)}")

Loading…
Cancel
Save