7 changed files with 341 additions and 4 deletions
@ -0,0 +1,66 @@ |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from sqlalchemy.future import select |
|||
from sqlalchemy import update, delete |
|||
from datetime import datetime, time |
|||
from typing import List |
|||
|
|||
from module_admin.entity.do.metadata_config_do import DatasecConfig # ORM 类 |
|||
from utils.page_util import PageUtil |
|||
|
|||
|
|||
class DatasecConfigDao: |
|||
""" |
|||
数据安全参数配置表 DAO |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_detail_by_id(cls, db: AsyncSession, onum: int): |
|||
""" |
|||
根据主键获取详情 |
|||
""" |
|||
result = await db.execute(select(DatasecConfig).where(DatasecConfig.onum == onum)) |
|||
return result.scalars().first() |
|||
|
|||
@classmethod |
|||
async def get_list(cls, db: AsyncSession, query_object, is_page: bool = False): |
|||
""" |
|||
获取数据列表(支持分页) |
|||
""" |
|||
query = select(DatasecConfig).where( |
|||
DatasecConfig.metatask_name.like(f"%{query_object.metatask_name}%") if query_object.metatask_name else True, |
|||
DatasecConfig.status == query_object.status if query_object.status else True, |
|||
DatasecConfig.create_time.between( |
|||
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(0, 0, 0)), |
|||
datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time(23, 59, 59)), |
|||
) if query_object.begin_time and query_object.end_time else True |
|||
).order_by(DatasecConfig.onum) |
|||
|
|||
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) |
|||
|
|||
@classmethod |
|||
async def add(cls, db: AsyncSession, model_obj): |
|||
""" |
|||
新增任务配置 |
|||
""" |
|||
db_obj = DatasecConfig(**model_obj.model_dump()) |
|||
db.add(db_obj) |
|||
await db.flush() |
|||
return db_obj |
|||
|
|||
@classmethod |
|||
async def edit(cls, db: AsyncSession, onum: int, update_dict: dict): |
|||
""" |
|||
编辑任务配置 |
|||
""" |
|||
await db.execute( |
|||
update(DatasecConfig) |
|||
.where(DatasecConfig.onum == onum) |
|||
.values(**update_dict) |
|||
) |
|||
|
|||
@classmethod |
|||
async def delete(cls, db: AsyncSession, onum_list: List[int]): |
|||
""" |
|||
批量删除任务配置 |
|||
""" |
|||
await db.execute(delete(DatasecConfig).where(DatasecConfig.onum.in_(onum_list))) |
@ -0,0 +1,77 @@ |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.dao.datasec_config_dao import DatasecConfigDao |
|||
from module_admin.entity.vo.metadata_config_vo import DatasecConfigModel |
|||
from module_admin.entity.vo.common_vo import CrudResponseModel |
|||
from exceptions.exception import ServiceException |
|||
from utils.common_util import CamelCaseUtil |
|||
|
|||
|
|||
class DatasecConfigService: |
|||
""" |
|||
数据安全参数配置表 Service 层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_datasec_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): |
|||
""" |
|||
获取配置列表(支持分页) |
|||
""" |
|||
return await DatasecConfigDao.get_list(db, query_object, is_page) |
|||
|
|||
@classmethod |
|||
async def add_datasec_services(cls, db: AsyncSession, page_object: DatasecConfigModel): |
|||
""" |
|||
新增配置 |
|||
""" |
|||
try: |
|||
await DatasecConfigDao.add(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_datasec_services(cls, db: AsyncSession, page_object: DatasecConfigModel): |
|||
""" |
|||
编辑配置 |
|||
""" |
|||
edit_data = page_object.model_dump(exclude_unset=True) |
|||
info = await cls.get_datasec_detail_services(db, page_object.onum) |
|||
if info and info.onum: |
|||
try: |
|||
await DatasecConfigDao.edit(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_datasec_services(cls, db: AsyncSession, onum_list: str): |
|||
""" |
|||
批量删除配置 |
|||
""" |
|||
id_list = [int(x.strip()) for x in onum_list.split(",") if x.strip().isdigit()] |
|||
if not id_list: |
|||
raise ServiceException(message="无效的编号列表") |
|||
|
|||
try: |
|||
await DatasecConfigDao.delete(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_datasec_detail_services(cls, db: AsyncSession, onum: int): |
|||
""" |
|||
获取配置详情 |
|||
""" |
|||
result = await DatasecConfigDao.get_detail_by_id(db, onum) |
|||
if result: |
|||
return DatasecConfigModel(**CamelCaseUtil.transform_result(result)) |
|||
return DatasecConfigModel(**dict()) |
Loading…
Reference in new issue