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.

460 lines
19 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
4 weeks ago
from module_admin.entity.vo.metadata_config_vo import MetadataClasModel,SecuBizConfigAddModel,SecuBizConfigRelaModel,\
5 days ago
SecuBizPermiConfigBatchModel,MetadataClasPageQueryModel,MetadataSecModel,MetadataSecPageQueryModel,SecuBizConfigModel ,\
SecuBizConfigQueryModel,SecuBizPermiConfigModel, SecuBizPermiConfigQueryModel,\
TaskBizConfigAddModel, TaskBizConfigQueryModel,TaskBizConfigModel,TaskBizConfigRelaModel
from utils.common_util import CamelCaseUtil
5 days ago
from module_admin.entity.do.metadata_config_do import SecuBizConfigRela,TaskBizConfigRela # ORM 类
from exceptions.exception import ServiceException
import uuid
1 month ago
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:
1 month ago
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
4 weeks ago
async def add_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigAddModel):
1 month ago
try:
4 weeks ago
configMode = SecuBizConfigModel()
configMode.onum=page_object.onum
configMode.biz_name=page_object.biz_name
configMode.risk_lvl=page_object.risk_lvl
configMode.isStop=page_object.isStop
configMode.create_by=page_object.create_by
configMode.update_by=page_object.update_by
configMode.update_time=page_object.update_time
configMode.create_time=page_object.create_time
obj=await MetadataConfigDao.add_biz_config(db, configMode)
records: List[SecuBizConfigRela] = []
for tab_onum in page_object.tab_onum_list:
record = SecuBizConfigRela()
record.biz_onum = obj.onum
record.tab_onum = tab_onum
record.create_by = obj.create_by
record.create_time = obj.create_time
records.append(record)
await MetadataConfigDao.add_batch_biz_rela_dao(db,records)
1 month ago
await db.commit()
return CrudResponseModel(is_success=True, message="新增成功")
except Exception as e:
await db.rollback()
raise e
@classmethod
4 weeks ago
async def edit_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigAddModel):
configMode = SecuBizConfigModel()
configMode.onum=page_object.onum
configMode.biz_name=page_object.biz_name
configMode.risk_lvl=page_object.risk_lvl
configMode.isStop=page_object.isStop
configMode.create_by=page_object.create_by
configMode.update_by=page_object.update_by
configMode.update_time=page_object.update_time
configMode.create_time=page_object.create_time
edit_data = configMode.model_dump(exclude_unset=True)
1 month ago
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)
4 weeks ago
await MetadataConfigDao.delete_biz_rela_dao(db, page_object.onum)
records: List[SecuBizConfigRela] = []
for tab_onum in page_object.tab_onum_list:
record = SecuBizConfigRela()
record.biz_onum = page_object.onum
record.tab_onum = tab_onum
record.create_by = page_object.update_by
record.create_time = page_object.update_time
records.append(record)
await MetadataConfigDao.add_batch_biz_rela_dao(db,records)
1 month ago
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)
5 days ago
await MetadataConfigDao.delete_biz_rela_batch(db, id_list)
1 month ago
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:
4 weeks ago
return SecuBizPermiConfigModel(**dict())
@classmethod
5 days ago
async def get_biz_config_rela_list_services(cls, result_db: AsyncSession, biz_onum: int):
4 weeks ago
ai_session_list = await MetadataConfigDao.get_biz_rela_by_biz_id(result_db, biz_onum) # 查询最新的20条
5 days ago
return CamelCaseUtil.transform_result(ai_session_list)
# ----------元数据标签调度任务 ----------
@classmethod
async def get_task_biz_config_list_services(
cls, db: AsyncSession, query_object: TaskBizConfigQueryModel, is_page: bool = False
):
return await MetadataConfigDao.get_task_biz_config_list(db, query_object, is_page)
@classmethod
async def add_task_biz_config_services(cls, db: AsyncSession, page_object: TaskBizConfigAddModel):
try:
config = TaskBizConfigModel()
config.onum = page_object.onum
config.biz_name = page_object.biz_name
config.risk_lvl = page_object.risk_lvl
# config.status = page_object.status # 映射 data_sec_lvl
# config.ds_ids = page_object.ds_ids # 映射 applyType
config.isStop = page_object.isStop
config.create_by = page_object.create_by
config.create_time = page_object.create_time
config.update_by = page_object.update_by
config.update_time = page_object.update_time
obj = await MetadataConfigDao.add_task_biz_config(db, config)
# 添加关联信息
records: List[TaskBizConfigRela] = []
for tab_onum in page_object.tab_onum_list:
record = TaskBizConfigRela()
record.biz_onum = obj.onum
record.tab_onum = tab_onum
record.create_by = obj.create_by
record.create_time = obj.create_time
records.append(record)
await MetadataConfigDao.add_batch_task_rela_dao(db, records)
await db.commit()
return CrudResponseModel(is_success=True, message="新增成功")
except Exception as e:
await db.rollback()
raise e
@classmethod
async def edit_task_biz_config_services(cls, db: AsyncSession, page_object: TaskBizConfigAddModel):
config = TaskBizConfigModel()
config.onum = page_object.onum
config.biz_name = page_object.biz_name
config.risk_lvl = page_object.risk_lvl
# config.status = page_object.status # 映射 data_sec_lvl
# config.ds_ids = page_object.ds_ids # 映射 applyType
config.isStop = page_object.isStop
config.create_by = page_object.create_by
config.create_time = page_object.create_time
config.update_by = page_object.update_by
config.update_time = page_object.update_time
edit_data = config.model_dump(exclude_unset=True)
info = await cls.get_task_biz_config_detail_services(db, page_object.onum)
if info.onum:
try:
await MetadataConfigDao.edit_task_biz_config(db, page_object.onum, edit_data)
await MetadataConfigDao.delete_task_rela_dao(db, page_object.onum)
records: List[TaskBizConfigRela] = []
for tab_onum in page_object.tab_onum_list:
record = TaskBizConfigRela()
record.biz_onum = page_object.onum
record.tab_onum = tab_onum
record.create_by = page_object.update_by
record.create_time = page_object.update_time
records.append(record)
await MetadataConfigDao.add_batch_task_rela_dao(db, records)
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_task_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_task_biz_config(db, id_list)
await MetadataConfigDao.delete_task_rela_batch(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_task_biz_config_detail_services(cls, db: AsyncSession, onum: str):
result = await MetadataConfigDao.get_task_biz_config_detail_by_id(db, onum)
if result:
return TaskBizConfigModel(**CamelCaseUtil.transform_result(result))
else:
return TaskBizConfigModel(**dict())
@classmethod
async def get_task_biz_config_rela_list_services(cls, result_db: AsyncSession, biz_onum: int):
ai_session_list = await MetadataConfigDao.get_task_rela_by_biz_id(result_db, biz_onum) # 查询最新的20条
return CamelCaseUtil.transform_result(ai_session_list)