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