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.

347 lines
14 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
5 hours ago
from module_admin.entity.vo.metadata_config_vo import MetadataClasModel,SecuBizConfigAddModel,SecuBizConfigRelaModel,\
SecuBizPermiConfigBatchModel,MetadataClasPageQueryModel,MetadataSecModel,MetadataSecPageQueryModel,SecuBizConfigModel ,SecuBizConfigQueryModel,SecuBizPermiConfigModel, SecuBizPermiConfigQueryModel
from utils.common_util import CamelCaseUtil
5 hours ago
from module_admin.entity.do.metadata_config_do import SecuBizConfigRela # ORM 类
from exceptions.exception import ServiceException
import uuid
3 days 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:
3 days 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
5 hours ago
async def add_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigAddModel):
3 days ago
try:
5 hours 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)
3 days ago
await db.commit()
return CrudResponseModel(is_success=True, message="新增成功")
except Exception as e:
await db.rollback()
raise e
@classmethod
5 hours 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)
3 days 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)
5 hours 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)
3 days 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)
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:
5 hours ago
return SecuBizPermiConfigModel(**dict())
@classmethod
async def get_biz_config_rela_list_services(cls, result_db: AsyncSession, biz_onum: int,
):
ai_session_list = await MetadataConfigDao.get_biz_rela_by_biz_id(result_db, biz_onum) # 查询最新的20条
return CamelCaseUtil.transform_result(ai_session_list)