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.
299 lines
12 KiB
299 lines
12 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, SecuBizPermiConfigBatchModel,MetadataClasPageQueryModel,MetadataSecModel,MetadataSecPageQueryModel,SecuBizConfigModel ,SecuBizConfigQueryModel,SecuBizPermiConfigModel, SecuBizPermiConfigQueryModel
|
|
from utils.common_util import CamelCaseUtil
|
|
from exceptions.exception import ServiceException
|
|
import uuid
|
|
from typing import List
|
|
from datetime import datetime
|
|
|
|
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())
|
|
# ----------- t_secu_biz_config 服务方法 -----------
|
|
|
|
@classmethod
|
|
async def get_biz_config_list_services(
|
|
cls, db: AsyncSession, query_object: SecuBizConfigQueryModel, is_page: bool = False
|
|
):
|
|
result = await MetadataConfigDao.get_biz_config_list(db, query_object, is_page)
|
|
return result
|
|
|
|
@classmethod
|
|
async def add_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigModel):
|
|
try:
|
|
await MetadataConfigDao.add_biz_config(db, page_object)
|
|
await db.commit()
|
|
return CrudResponseModel(is_success=True, message="新增成功")
|
|
except Exception as e:
|
|
await db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def edit_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigModel):
|
|
edit_data = page_object.model_dump(exclude_unset=True)
|
|
info = await cls.get_biz_config_detail_services(db, page_object.onum)
|
|
if info.onum:
|
|
try:
|
|
await MetadataConfigDao.edit_biz_config(db, page_object.onum, edit_data)
|
|
await db.commit()
|
|
return CrudResponseModel(is_success=True, message="更新成功")
|
|
except Exception as e:
|
|
await db.rollback()
|
|
raise e
|
|
else:
|
|
raise ServiceException(message="业务配置不存在")
|
|
|
|
@classmethod
|
|
async def delete_biz_config_services(cls, 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_biz_config(db, id_list)
|
|
await db.commit()
|
|
return CrudResponseModel(is_success=True, message="删除成功")
|
|
except Exception as e:
|
|
await db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def get_biz_config_detail_services(cls, db: AsyncSession, onum: str):
|
|
result = await MetadataConfigDao.get_biz_config_detail_by_id(db, onum)
|
|
if result:
|
|
return SecuBizConfigModel(**CamelCaseUtil.transform_result(result))
|
|
else:
|
|
return SecuBizConfigModel(**dict())
|
|
|
|
|
|
# ----------- t_secu_biz_permi_config 服务方法 -----------
|
|
|
|
@classmethod
|
|
async def get_biz_permi_config_list_services(
|
|
cls, db: AsyncSession, query_object: SecuBizPermiConfigQueryModel, is_page: bool = False
|
|
):
|
|
result = await MetadataConfigDao.get_biz_permi_config_list(db, query_object, is_page)
|
|
return result
|
|
@classmethod
|
|
async def add_biz_permi_config_services(
|
|
cls,
|
|
db: AsyncSession,
|
|
batch_model: SecuBizPermiConfigBatchModel,
|
|
create_by: str,
|
|
create_time: datetime
|
|
) -> CrudResponseModel:
|
|
try:
|
|
records: List[SecuBizPermiConfigModel] = []
|
|
for biz_onum in batch_model.biz_onum_list:
|
|
record = SecuBizPermiConfigModel()
|
|
record.biz_onum = biz_onum
|
|
record.obj_type = batch_model.obj_type
|
|
record.obj_value = batch_model.obj_value
|
|
record.obj_name = batch_model.obj_name
|
|
record.isStop = batch_model.isStop
|
|
record.create_by = create_by
|
|
record.create_time = create_time
|
|
records.append(record)
|
|
|
|
await MetadataConfigDao.add_biz_permi_config_batch(db, records)
|
|
await db.commit()
|
|
return CrudResponseModel(is_success=True, message="新增成功")
|
|
except Exception as e:
|
|
await db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def edit_biz_permi_config_services(cls, db: AsyncSession, page_object: SecuBizPermiConfigModel):
|
|
edit_data = page_object.model_dump(exclude_unset=True)
|
|
info = await cls.get_biz_permi_config_detail_services(db, page_object.onum)
|
|
if info.onum:
|
|
try:
|
|
await MetadataConfigDao.edit_biz_permi_config(db, page_object.onum, edit_data)
|
|
await db.commit()
|
|
return CrudResponseModel(is_success=True, message="更新成功")
|
|
except Exception as e:
|
|
await db.rollback()
|
|
raise e
|
|
else:
|
|
raise ServiceException(message="权限配置不存在")
|
|
|
|
@classmethod
|
|
async def delete_biz_permi_config_services(cls, 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_biz_permi_config(db, id_list)
|
|
await db.commit()
|
|
return CrudResponseModel(is_success=True, message="删除成功")
|
|
except Exception as e:
|
|
await db.rollback()
|
|
raise e
|
|
|
|
@classmethod
|
|
async def get_biz_permi_config_detail_services(cls, db: AsyncSession, onum: str):
|
|
result = await MetadataConfigDao.get_biz_permi_config_detail_by_id(db, onum)
|
|
if result:
|
|
return SecuBizPermiConfigModel(**CamelCaseUtil.transform_result(result))
|
|
else:
|
|
return SecuBizPermiConfigModel(**dict())
|