62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
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()
|