""" 消息控制器 协调消息管理的UI和业务逻辑 """ from typing import List, Optional from pathlib import Path from services.message_service import MessageService from models.message import Message from utils.logger import get_logger logger = get_logger(__name__) class MessageController: """消息控制器类""" def __init__(self): self.service = MessageService() def create_message(self, message_data: dict) -> tuple[bool, str, Optional[int]]: """ 创建消息 Args: message_data: 消息数据字典 Returns: (是否成功, 消息, 消息ID) """ try: message = Message.from_dict(message_data) return self.service.create_message(message) except Exception as e: logger.error(f"Controller: Failed to create message: {e}") return False, f"创建消息失败: {str(e)}", None def update_message(self, message_data: dict) -> tuple[bool, str]: """ 更新消息 Args: message_data: 消息数据字典 Returns: (是否成功, 消息) """ try: message = Message.from_dict(message_data) return self.service.update_message(message) except Exception as e: logger.error(f"Controller: Failed to update message: {e}") return False, f"更新消息失败: {str(e)}" def delete_message(self, message_id: int) -> tuple[bool, str]: """ 删除消息 Args: message_id: 消息ID Returns: (是否成功, 消息) """ return self.service.delete_message(message_id) def get_message(self, message_id: int) -> Optional[Message]: """ 获取消息 Args: message_id: 消息ID Returns: 消息对象或None """ return self.service.get_message_by_id(message_id) def search_messages(self, search_params: dict) -> tuple[List[Message], int]: """ 搜索消息 Args: search_params: 搜索参数字典 Returns: (消息列表, 总数量) """ system_name = search_params.get('system_name') message_type = search_params.get('message_type') version = search_params.get('version') field_name = search_params.get('field_name') page = search_params.get('page', 1) page_size = search_params.get('page_size', 50) return self.service.search_messages( system_name, message_type, version, field_name, page, page_size ) def get_all_messages(self, page: int = 1, page_size: int = 50) -> tuple[List[Message], int]: """ 获取所有消息 Args: page: 页码 page_size: 每页数量 Returns: (消息列表, 总数量) """ return self.service.get_all_messages(page, page_size) def export_messages(self, message_ids: List[int], file_path: str) -> tuple[bool, str]: """ 导出消息 Args: message_ids: 消息ID列表 file_path: 文件路径 Returns: (是否成功, 消息) """ messages = [] for message_id in message_ids: message = self.service.get_message_by_id(message_id) if message: messages.append(message) if not messages: return False, "没有可导出的消息" return self.service.export_messages(messages, Path(file_path)) def import_messages(self, file_path: str) -> tuple[bool, str, List[Message]]: """ 导入消息 Args: file_path: 文件路径 Returns: (是否成功, 消息, 消息列表) """ return self.service.import_messages(Path(file_path))