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.

55 lines
2.2 KiB

import json
import uuid
from typing import Optional, List
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.vo.common_vo import CrudResponseModel
from module_admin.entity.vo.user_vo import CurrentUserModel
from module_admin.entity.vo.dataint_vo import CdplbPageObject, SaveCdplbModel
from module_admin.entity.do.dataint_do import SysCdplb
from module_admin.dao.cdplb_dao import CdplbDao
from exceptions.exception import ServiceException, ServiceWarning
from datetime import datetime
from utils.common_util import CamelCaseUtil
class CdplbService:
"""
智能问答服务层
"""
@classmethod
async def get_cdplb_list_services(cls, result_db: AsyncSession, cdplb_query: CdplbPageObject, current_user: CurrentUserModel):
result = await CdplbDao.get_cdplb_list(result_db, cdplb_query)
return CamelCaseUtil.transform_result(result)
@classmethod
async def save_cdplb(cls, result_db: AsyncSession, saveCdplbModel: SaveCdplbModel, current_user: CurrentUserModel):
if saveCdplbModel.onum is None:
# add
saveCdplbModel.onum = uuid.uuid4()
addObj = SysCdplb(**saveCdplbModel.model_dump())
addObj.create_by = current_user.user.user_name
addObj.create_time = datetime.now()
addObj.update_by = current_user.user.user_name
addObj.update_time = datetime.now()
await CdplbDao.insert_cdplb(result_db, addObj)
else:
# update
oldObj = await CdplbDao.get_cdplb_by_id(result_db, saveCdplbModel.onum)
if oldObj is None:
raise ServiceException(message='所改对象不存在')
saveObj = saveCdplbModel.model_dump(exclude_unset=True)
saveObj['update_by'] = current_user.user.user_name
saveObj['update_time'] = datetime.now()
await CdplbDao.update_cdplb(result_db, saveObj)
await result_db.commit()
return CrudResponseModel(is_success=True, message='操作成功')
@classmethod
async def delete_cdplb(cls, db: AsyncSession, array: List[str]):
await CdplbDao.delete_cdplb(db, array)
await db.commit()
return CrudResponseModel(is_success=True, message='操作成功')