from abc import abstractmethod from time import sleep import json from framework.open_response import MinCustomException from framework.mysql_cli import MysqlCliV3 from framework.open_response import OpenResponse class Response(OpenResponse): """必须实现Core和Before_Response方法""" def __init__(self): super(Response, self).__init__() self._is_connect_mysql: bool = False self.mysql_cli: MysqlCliV3 | None = None def set_connect_mysql(self, mysql_cli: MysqlCliV3 | None = None): if mysql_cli is not None: self._is_connect_mysql = True self.mysql_cli = mysql_cli # def set_handle_success(self, handle_success: bool): # self._handle_success = handle_success @abstractmethod def core(self) -> None: # TODO: 用于处理核心内容, 数据库逻辑等 pass @abstractmethod def before_response(self) -> dict: # TODO: 用于创建返回的内容, 以及关闭数据库连接等 pass def run_before_response(self) -> dict: response_message: dict = self.before_response() if self._is_connect_mysql: self.mysql_cli.close_connect() return response_message def run_core(self): self.core() if self._handle_success: self.set_response_code(self.response_code_enum.RESPONSE_200_SUCCESS) def main_function(response: Response) -> dict: """ :param response: 重写的Response类 """ try: response.run_core() except json.decoder.JSONDecodeError: response.set_response_code(response.response_code_enum.RESPONSE_400_BAD_REQUESTS_JSON) sleep(1) response.echo = True except MinCustomException as e: response.set_response_code(e.args[0]) sleep(1) response.echo = True return response.run_before_response()