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

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())