You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
6.0 KiB
162 lines
6.0 KiB
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from module_admin.dao.metadata_config_dao import MetadataConfigDao
|
|
from module_admin.entity.vo.common_vo import CrudResponseModel
|
|
from module_admin.entity.vo.metadata_config_vo import MetadataClasModel, MetadataClasPageQueryModel,MetadataSecModel,MetadataSecPageQueryModel
|
|
from utils.common_util import CamelCaseUtil
|
|
from exceptions.exception import ServiceException
|
|
import uuid
|
|
|
|
class MetadataConfigService:
|
|
"""
|
|
元数据分类管理 Service
|
|
"""
|
|
|
|
@classmethod
|
|
async def get_metadata_clas_list_services(
|
|
cls, query_db: AsyncSession, query_object: MetadataClasPageQueryModel, is_page: bool = False
|
|
):
|
|
"""
|
|
查询元数据分类列表
|
|
"""
|
|
result = await MetadataConfigDao.get_metadata_clas_list(query_db, query_object, is_page)
|
|
return result
|
|
|
|
@classmethod
|
|
async def add_metadata_clas_services(
|
|
cls, query_db: AsyncSession, page_object: MetadataClasModel
|
|
):
|
|
"""
|
|
新增元数据分类
|
|
"""
|
|
try:
|
|
await MetadataConfigDao.add_metadata_clas_dao(query_db, page_object)
|
|
await query_db.commit()
|
|
return CrudResponseModel(is_success=True, message="新增成功")
|
|
except Exception as e:
|
|
await query_db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def edit_metadata_clas_services(
|
|
cls, query_db: AsyncSession, page_object: MetadataClasModel
|
|
):
|
|
"""
|
|
编辑元数据分类
|
|
"""
|
|
edit_data = page_object.model_dump(exclude_unset=True)
|
|
info = await cls.get_metadata_clas_detail_services(query_db, page_object.clas_onum)
|
|
if info.clas_onum:
|
|
try:
|
|
await MetadataConfigDao.edit_metadata_clas_dao(query_db, page_object.clas_onum, edit_data)
|
|
await query_db.commit()
|
|
return CrudResponseModel(is_success=True, message="更新成功")
|
|
except Exception as e:
|
|
await query_db.rollback()
|
|
raise e
|
|
else:
|
|
raise ServiceException(message="元数据标签不存在")
|
|
|
|
@classmethod
|
|
async def delete_metadata_clas_services(
|
|
cls, query_db: AsyncSession, clas_ids: str
|
|
):
|
|
"""
|
|
删除元数据分类(支持多个ID用逗号分隔)
|
|
"""
|
|
if not clas_ids:
|
|
raise ServiceException(message="传入的分类ID为空")
|
|
|
|
id_list = [int(id_str) for id_str in clas_ids.split(",") if id_str.isdigit()]
|
|
if not id_list:
|
|
raise ServiceException(message="无效的分类ID列表")
|
|
|
|
try:
|
|
await MetadataConfigDao.delete_metadata_clas_dao(query_db, id_list)
|
|
await query_db.commit()
|
|
return CrudResponseModel(is_success=True, message="删除成功")
|
|
except Exception as e:
|
|
await query_db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def get_metadata_clas_detail_services(cls, query_db: AsyncSession, clas_id: int):
|
|
"""
|
|
查询元数据分类详情
|
|
"""
|
|
result = await MetadataConfigDao.get_clas_detail_by_id(query_db, clas_id)
|
|
if result:
|
|
return MetadataClasModel(**CamelCaseUtil.transform_result(result))
|
|
else:
|
|
return MetadataClasModel(**dict())
|
|
@classmethod
|
|
async def get_metadata_sec_list_services(
|
|
cls, query_db: AsyncSession, query_object: MetadataSecPageQueryModel, is_page: bool = False
|
|
):
|
|
"""
|
|
查询数据安全配置列表
|
|
"""
|
|
result = await MetadataConfigDao.get_metadata_sec_list(query_db, query_object, is_page)
|
|
return result
|
|
|
|
@classmethod
|
|
async def add_metadata_sec_services(cls, query_db: AsyncSession, page_object: MetadataSecModel):
|
|
"""
|
|
新增数据安全配置
|
|
"""
|
|
try:
|
|
page_object.onum=str(uuid.uuid4())
|
|
await MetadataConfigDao.add_metadata_sec_dao(query_db, page_object)
|
|
await query_db.commit()
|
|
return CrudResponseModel(is_success=True, message="新增成功")
|
|
except Exception as e:
|
|
await query_db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def edit_metadata_sec_services(cls, query_db: AsyncSession, page_object: MetadataSecModel):
|
|
"""
|
|
编辑数据安全配置
|
|
"""
|
|
edit_data = page_object.model_dump(exclude_unset=True)
|
|
info = await cls.get_metadata_sec_detail_services(query_db, page_object.onum)
|
|
if info.onum:
|
|
try:
|
|
await MetadataConfigDao.edit_metadata_sec_dao(query_db, page_object.onum, edit_data)
|
|
await query_db.commit()
|
|
return CrudResponseModel(is_success=True, message="更新成功")
|
|
except Exception as e:
|
|
await query_db.rollback()
|
|
raise e
|
|
else:
|
|
raise ServiceException(message="数据安全配置不存在")
|
|
|
|
@classmethod
|
|
async def delete_metadata_sec_services(cls, query_db: AsyncSession, onum_list: str):
|
|
"""
|
|
删除数据安全配置(支持多个编号用逗号分隔)
|
|
"""
|
|
if not onum_list:
|
|
raise ServiceException(message="传入的编号为空")
|
|
|
|
id_list = [onum.strip() for onum in onum_list.split(",") if onum.strip()]
|
|
if not id_list:
|
|
raise ServiceException(message="无效的编号列表")
|
|
|
|
try:
|
|
await MetadataConfigDao.delete_metadata_sec_dao(query_db, id_list)
|
|
await query_db.commit()
|
|
return CrudResponseModel(is_success=True, message="删除成功")
|
|
except Exception as e:
|
|
await query_db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def get_metadata_sec_detail_services(cls, query_db: AsyncSession, onum: str):
|
|
"""
|
|
查询数据安全配置详情
|
|
"""
|
|
result = await MetadataConfigDao.get_sec_detail_by_id(query_db, onum)
|
|
if result:
|
|
return MetadataSecModel(**CamelCaseUtil.transform_result(result))
|
|
else:
|
|
return MetadataSecModel(**dict())
|