1.实现机器人角色切换接口
This commit is contained in:
parent
0d6909760f
commit
8408ceb9c4
@ -5,10 +5,12 @@ from config.enums import BusinessType
|
||||
from config.get_db import get_db
|
||||
from module_admin.annotation.log_annotation import Log
|
||||
from module_admin.aspect.interface_auth import CheckUserInterfaceAuth
|
||||
from module_admin.dao.robot_role_pairing_dao import PairingDao
|
||||
from module_admin.entity.vo.user_vo import CurrentUserModel
|
||||
from module_admin.service.login_service import LoginService
|
||||
from module_admin.service.robot_role_pairing_service import PairingService
|
||||
from module_admin.entity.vo.robot_role_pairing_vo import DeletePairingModel, PairingModel, PairingPageQueryModel
|
||||
from module_admin.entity.vo.robot_role_pairing_vo import DeletePairingModel, PairingModel, PairingPageQueryModel, \
|
||||
ChangeRobotRoleModel
|
||||
from utils.common_util import bytes2file_response
|
||||
from utils.log_util import logger
|
||||
from utils.page_util import PageResponseModel
|
||||
@ -16,88 +18,112 @@ from utils.response_util import ResponseUtil
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
pairingController = APIRouter(prefix='/system/pairing', dependencies=[Depends(LoginService.get_current_user)])
|
||||
pairingController = APIRouter(prefix='/system/robot_role', dependencies=[Depends(LoginService.get_current_user)])
|
||||
|
||||
|
||||
@pairingController.get(
|
||||
'/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:list'))]
|
||||
'/{robot_id}',
|
||||
)
|
||||
async def get_system_pairing_list(
|
||||
async def get_system_role_pairing_list(
|
||||
request: Request,
|
||||
pairing_page_query: PairingPageQueryModel = Depends(PairingPageQueryModel.as_query),
|
||||
robot_id: int,
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
# 获取分页数据
|
||||
pairing_page_query_result = await PairingService.get_pairing_list_services(query_db, pairing_page_query, is_page=True)
|
||||
logger.info('获取成功')
|
||||
pairing_list = await PairingService.get_role_pairing_list_services(query_db, robot_id)
|
||||
|
||||
return ResponseUtil.success(model_content=pairing_page_query_result)
|
||||
return ResponseUtil.success(data=pairing_list)
|
||||
|
||||
|
||||
@pairingController.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:add'))])
|
||||
@ValidateFields(validate_model='add_pairing')
|
||||
@Log(title='角色-机器人-映射', business_type=BusinessType.INSERT)
|
||||
async def add_system_pairing(
|
||||
request: Request,
|
||||
add_pairing: PairingModel,
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
|
||||
):
|
||||
add_pairing.update_time = datetime.now()
|
||||
add_pairing.update_by = current_user.user.user_name
|
||||
add_pairing_result = await PairingService.add_pairing_services(query_db, add_pairing)
|
||||
logger.info(add_pairing_result.message)
|
||||
|
||||
return ResponseUtil.success(msg=add_pairing_result.message)
|
||||
|
||||
|
||||
@pairingController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:edit'))])
|
||||
@ValidateFields(validate_model='edit_pairing')
|
||||
@Log(title='角色-机器人-映射', business_type=BusinessType.UPDATE)
|
||||
async def edit_system_pairing(
|
||||
request: Request,
|
||||
edit_pairing: PairingModel,
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
|
||||
):
|
||||
edit_pairing.update_by = current_user.user.user_name
|
||||
edit_pairing.update_time = datetime.now()
|
||||
edit_pairing_result = await PairingService.edit_pairing_services(query_db, edit_pairing)
|
||||
logger.info(edit_pairing_result.message)
|
||||
|
||||
return ResponseUtil.success(msg=edit_pairing_result.message)
|
||||
|
||||
|
||||
@pairingController.delete('/{pairing_ids}', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:remove'))])
|
||||
@Log(title='角色-机器人-映射', business_type=BusinessType.DELETE)
|
||||
async def delete_system_pairing(request: Request, pairing_ids: str, query_db: AsyncSession = Depends(get_db)):
|
||||
delete_pairing = DeletePairingModel(pairingIds=pairing_ids)
|
||||
delete_pairing_result = await PairingService.delete_pairing_services(query_db, delete_pairing)
|
||||
logger.info(delete_pairing_result.message)
|
||||
|
||||
return ResponseUtil.success(msg=delete_pairing_result.message)
|
||||
|
||||
|
||||
@pairingController.get(
|
||||
'/{pairing_id}', response_model=PairingModel, dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:query'))]
|
||||
@pairingController.post(
|
||||
'/change',
|
||||
)
|
||||
async def query_detail_system_pairing(request: Request, pairing_id: int, query_db: AsyncSession = Depends(get_db)):
|
||||
pairing_detail_result = await PairingService.pairing_detail_services(query_db, pairing_id)
|
||||
logger.info(f'获取pairing_id为{pairing_id}的信息成功')
|
||||
|
||||
return ResponseUtil.success(data=pairing_detail_result)
|
||||
|
||||
|
||||
@pairingController.post('/export', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:export'))])
|
||||
@Log(title='角色-机器人-映射', business_type=BusinessType.EXPORT)
|
||||
async def export_system_pairing_list(
|
||||
request: Request,
|
||||
pairing_page_query: PairingPageQueryModel = Form(),
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
async def change_robot_role(
|
||||
request: Request,
|
||||
change_pairing: ChangeRobotRoleModel,
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
# 获取全量数据
|
||||
pairing_query_result = await PairingService.get_pairing_list_services(query_db, pairing_page_query, is_page=False)
|
||||
pairing_export_result = await PairingService.export_pairing_list_services(pairing_query_result)
|
||||
logger.info('导出成功')
|
||||
await PairingService.change_robot_role_services(query_db,change_pairing)
|
||||
return ResponseUtil.success()
|
||||
|
||||
return ResponseUtil.streaming(data=bytes2file_response(pairing_export_result))
|
||||
# @pairingController.get(
|
||||
# '/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:list'))]
|
||||
# )
|
||||
# async def get_system_pairing_list(
|
||||
# request: Request,
|
||||
# pairing_page_query: PairingPageQueryModel = Depends(PairingPageQueryModel.as_query),
|
||||
# query_db: AsyncSession = Depends(get_db),
|
||||
# ):
|
||||
# # 获取分页数据
|
||||
# pairing_page_query_result = await PairingService.get_pairing_list_services(query_db, pairing_page_query, is_page=True)
|
||||
# logger.info('获取成功')
|
||||
#
|
||||
# return ResponseUtil.success(model_content=pairing_page_query_result)
|
||||
#
|
||||
#
|
||||
# @pairingController.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:add'))])
|
||||
# @ValidateFields(validate_model='add_pairing')
|
||||
# @Log(title='角色-机器人-映射', business_type=BusinessType.INSERT)
|
||||
# async def add_system_pairing(
|
||||
# request: Request,
|
||||
# add_pairing: PairingModel,
|
||||
# query_db: AsyncSession = Depends(get_db),
|
||||
# current_user: CurrentUserModel = Depends(LoginService.get_current_user),
|
||||
# ):
|
||||
# add_pairing.update_time = datetime.now()
|
||||
# add_pairing.update_by = current_user.user.user_name
|
||||
# add_pairing_result = await PairingService.add_pairing_services(query_db, add_pairing)
|
||||
# logger.info(add_pairing_result.message)
|
||||
#
|
||||
# return ResponseUtil.success(msg=add_pairing_result.message)
|
||||
#
|
||||
#
|
||||
# @pairingController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:edit'))])
|
||||
# @ValidateFields(validate_model='edit_pairing')
|
||||
# @Log(title='角色-机器人-映射', business_type=BusinessType.UPDATE)
|
||||
# async def edit_system_pairing(
|
||||
# request: Request,
|
||||
# edit_pairing: PairingModel,
|
||||
# query_db: AsyncSession = Depends(get_db),
|
||||
# current_user: CurrentUserModel = Depends(LoginService.get_current_user),
|
||||
# ):
|
||||
# edit_pairing.update_by = current_user.user.user_name
|
||||
# edit_pairing.update_time = datetime.now()
|
||||
# edit_pairing_result = await PairingService.edit_pairing_services(query_db, edit_pairing)
|
||||
# logger.info(edit_pairing_result.message)
|
||||
#
|
||||
# return ResponseUtil.success(msg=edit_pairing_result.message)
|
||||
#
|
||||
#
|
||||
# @pairingController.delete('/{pairing_ids}', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:remove'))])
|
||||
# @Log(title='角色-机器人-映射', business_type=BusinessType.DELETE)
|
||||
# async def delete_system_pairing(request: Request, pairing_ids: str, query_db: AsyncSession = Depends(get_db)):
|
||||
# delete_pairing = DeletePairingModel(pairingIds=pairing_ids)
|
||||
# delete_pairing_result = await PairingService.delete_pairing_services(query_db, delete_pairing)
|
||||
# logger.info(delete_pairing_result.message)
|
||||
#
|
||||
# return ResponseUtil.success(msg=delete_pairing_result.message)
|
||||
#
|
||||
#
|
||||
# @pairingController.get(
|
||||
# '/{pairing_id}', response_model=PairingModel, dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:query'))]
|
||||
# )
|
||||
# async def query_detail_system_pairing(request: Request, pairing_id: int, query_db: AsyncSession = Depends(get_db)):
|
||||
# pairing_detail_result = await PairingService.pairing_detail_services(query_db, pairing_id)
|
||||
# logger.info(f'获取pairing_id为{pairing_id}的信息成功')
|
||||
#
|
||||
# return ResponseUtil.success(data=pairing_detail_result)
|
||||
#
|
||||
#
|
||||
# @pairingController.post('/export', dependencies=[Depends(CheckUserInterfaceAuth('system:pairing:export'))])
|
||||
# @Log(title='角色-机器人-映射', business_type=BusinessType.EXPORT)
|
||||
# async def export_system_pairing_list(
|
||||
# request: Request,
|
||||
# pairing_page_query: PairingPageQueryModel = Form(),
|
||||
# query_db: AsyncSession = Depends(get_db),
|
||||
# ):
|
||||
# # 获取全量数据
|
||||
# pairing_query_result = await PairingService.get_pairing_list_services(query_db, pairing_page_query, is_page=False)
|
||||
# pairing_export_result = await PairingService.export_pairing_list_services(pairing_query_result)
|
||||
# logger.info('导出成功')
|
||||
#
|
||||
# return ResponseUtil.streaming(data=bytes2file_response(pairing_export_result))
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
from sqlalchemy import delete, select, update
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from module_admin.entity.do.pairing_do import RobotRolePairing
|
||||
from module_admin.entity.vo.pairing_vo import PairingModel, PairingPageQueryModel
|
||||
|
||||
from module_admin.entity.do.robot_role_do import RobotRole
|
||||
from module_admin.entity.do.robot_role_pairing_do import RobotRolePairing
|
||||
|
||||
from module_admin.entity.vo.robot_role_pairing_vo import PairingModel, PairingPageQueryModel
|
||||
from utils.page_util import PageUtil
|
||||
|
||||
|
||||
@ -10,6 +13,36 @@ class PairingDao:
|
||||
角色-机器人-映射模块数据库操作层
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
async def edit_pairing_status(cls, db: AsyncSession,robot_id: int = None, pairing_id: int = None, status: str = '0'):
|
||||
|
||||
condition = list()
|
||||
if robot_id:
|
||||
condition.append(RobotRolePairing.robot_id == robot_id)
|
||||
if pairing_id:
|
||||
condition.append(RobotRolePairing.pairing_id == pairing_id)
|
||||
query = (
|
||||
update(RobotRolePairing)
|
||||
.values(status=status)
|
||||
.where(
|
||||
* condition
|
||||
)
|
||||
)
|
||||
await db.execute(query)
|
||||
|
||||
@classmethod
|
||||
async def get_role_pairing_list(cls, db: AsyncSession, robot_id: int):
|
||||
|
||||
query = (
|
||||
select(RobotRolePairing.pairing_id, RobotRole.rolename, RobotRole.detail, RobotRolePairing.status)
|
||||
.select_from(RobotRolePairing)
|
||||
.join(RobotRole, RobotRole.robot_role_id == RobotRolePairing.robot_role_id)
|
||||
.where(RobotRolePairing.robot_id == robot_id)
|
||||
)
|
||||
role_pairing_list = (
|
||||
await db.execute(query)
|
||||
).mappings().all()
|
||||
return role_pairing_list
|
||||
@classmethod
|
||||
async def get_pairing_detail_by_id(cls, db: AsyncSession, pairing_id: int):
|
||||
"""
|
||||
|
||||
@ -17,4 +17,16 @@ class RobotRolePairing(Base):
|
||||
update_by = Column(String(64), nullable=False, comment='修改者')
|
||||
|
||||
|
||||
#
|
||||
# class RolePairing(Base):
|
||||
# """
|
||||
# 角色-机器人-映射表对应pydantic模型, 查询角色-机器人结果的返回模型
|
||||
# """
|
||||
#
|
||||
#
|
||||
# pairing_id = Column(BigInteger, primary_key=True, autoincrement=True, nullable=False, comment='主键ID')
|
||||
# rolename = Column(String(32), nullable=False, comment='角色名称')
|
||||
# detail = Column(String(512), nullable=True, comment='角色介绍')
|
||||
# status = Column(String(2), nullable=False, comment='使用情况(0停用,1使用)')
|
||||
|
||||
|
||||
|
||||
@ -8,6 +8,22 @@ from module_admin.annotation.pydantic_annotation import as_query
|
||||
|
||||
|
||||
|
||||
# class RolePairing(BaseModel):
|
||||
# """
|
||||
# 角色-机器人-映射表对应pydantic模型, 查询角色-机器人结果的返回模型
|
||||
# """
|
||||
# model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
|
||||
#
|
||||
# pairing_id: Optional[int] = Field(default=None, description='主键ID')
|
||||
# rolename: Optional[str] = Field(default=None, description='角色名称')
|
||||
# detail: Optional[str] = Field(default=None, description='角色介绍')
|
||||
# status: Optional[str] = Field(default=None, description='使用情况(0停用,1使用)')
|
||||
|
||||
class ChangeRobotRoleModel(BaseModel):
|
||||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
|
||||
robot_id: Optional[int] = Field(default=None, description='机器人ID')
|
||||
pairing_id: Optional[int] = Field(default=None, description='主键ID')
|
||||
|
||||
class PairingModel(BaseModel):
|
||||
"""
|
||||
角色-机器人-映射表对应pydantic模型
|
||||
|
||||
@ -3,8 +3,9 @@ from typing import List
|
||||
from config.constant import CommonConstant
|
||||
from exceptions.exception import ServiceException
|
||||
from module_admin.entity.vo.common_vo import CrudResponseModel
|
||||
from module_admin.dao.pairing_dao import PairingDao
|
||||
from module_admin.entity.vo.pairing_vo import DeletePairingModel, PairingModel, PairingPageQueryModel
|
||||
from module_admin.dao.robot_role_pairing_dao import PairingDao
|
||||
from module_admin.entity.vo.robot_role_pairing_vo import DeletePairingModel, PairingModel, PairingPageQueryModel, \
|
||||
ChangeRobotRoleModel
|
||||
from utils.common_util import CamelCaseUtil
|
||||
from utils.excel_util import ExcelUtil
|
||||
|
||||
@ -14,6 +15,26 @@ class PairingService:
|
||||
角色-机器人-映射模块服务层
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
async def change_robot_role_services(cls, query_db: AsyncSession,change_pairing: ChangeRobotRoleModel):
|
||||
try:
|
||||
# 现修改原本角色status为0
|
||||
print("xxxxxxxxxxxxxxx", change_pairing.robot_id)
|
||||
await PairingDao.edit_pairing_status(query_db, change_pairing.robot_id, None, '0')
|
||||
# 再修改新的角色status为1
|
||||
print("xxxxxxxxxxxxxxx", change_pairing.pairing_id)
|
||||
await PairingDao.edit_pairing_status(query_db, None, change_pairing.pairing_id, '1')
|
||||
|
||||
await query_db.commit()
|
||||
|
||||
except Exception as e:
|
||||
await query_db.rollback()
|
||||
raise e
|
||||
@classmethod
|
||||
async def get_role_pairing_list_services(cls, query_db: AsyncSession, robot_id: int):
|
||||
pairing_list = await PairingDao.get_role_pairing_list(query_db, robot_id)
|
||||
return pairing_list
|
||||
|
||||
@classmethod
|
||||
async def get_pairing_list_services(
|
||||
cls, query_db: AsyncSession, query_object: PairingPageQueryModel, is_page: bool = False
|
||||
|
||||
@ -27,6 +27,7 @@ from module_admin.controller.words_controller import wordsController
|
||||
from module_admin.controller.info_controller import infoController
|
||||
from module_generator.controller.gen_controller import genController
|
||||
from module_admin.controller.message_controller import messageController
|
||||
from module_admin.controller.robot_role_pairing_controller import pairingController
|
||||
|
||||
from sub_applications.handle import handle_sub_applications
|
||||
from utils.common_util import worship
|
||||
@ -88,6 +89,7 @@ controller_list = [
|
||||
{'router': wordsController, 'tags': ['引导词管理']},
|
||||
{'router': infoController, 'tage':['机器人信息管理']},
|
||||
{'router': messageController, 'tags': ['消息管理']},
|
||||
{'router': pairingController, 'tags': ['机器人角色']},
|
||||
|
||||
]
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user