m-gm/routers/search_gm.py

102 lines
4.3 KiB
Python
Raw Normal View History

2025-03-19 18:02:29 +08:00
from framework.main_framework import Response, main_function
from framework.requests_dataclass import SampleRequests
from dataclasses import dataclass
from flask import Blueprint
from flask import request
from framework.mysql_cli import MysqlCliV3
from framework.response_code import RequestMethods
import json as JSON
@dataclass
class OverrideSampleRequestParams(SampleRequests):
gameId: int
uid: int
def __init__(self):
if request.method == "GET":
super(OverrideSampleRequestParams, self).__init__(json_data=request.args, methods=RequestMethods.GET)
if request.method == "POST":
super(OverrideSampleRequestParams, self).__init__(json_data=request.get_data(), methods=RequestMethods.POST)
self.gameId = self.json_data.get("gameId")
self.uid = self.json_data.get("uid")
if not self.gameId or not self.uid:
self.make_exception(self.response_code_enum.RESPONSE_PARAMS_IS_NULL)
class OverrideMysqlCli(MysqlCliV3):
def __init__(self):
super().__init__()
self.table_name = "game_kf_configure_table" # default table
def search_game_configuration_table(self, game_id: int, uid: int, table: str | None = None) -> dict:
if table is not None:
self.table_name = table
sql = f"""
SELECT `base` , `uid` , `gameId`, `free`, `id`, `normalIcons`, `multiplier`
FROM {self.table_name} WHERE 1 = 1 AND `gameId` = {game_id} AND `uid` = {uid}
"""
mysql_result: dict = self.execute_sql(sql=sql, fetch_all=False, close_connect=False)
self.check_mysql_exception(mysql_result)
return mysql_result
def delete_game_configuration_table_with_read_once(self, m_id: int, table: str | None = None) -> None:
if table is not None:
self.table_name = table
sql = f"""
DELETE FROM {self.table_name} WHERE 1 = 1 AND `id` = {m_id}
"""
mysql_result: dict = self.execute_sql(sql=sql, fetch_all=False, close_connect=True, commit_all=True)
self.check_mysql_exception(mysql_result)
class OverriderMainResponse(Response):
def __init__(self):
super(OverriderMainResponse, self).__init__()
self.mysql_cli: OverrideMysqlCli = OverrideMysqlCli()
self.set_connect_mysql(mysql_cli=self.mysql_cli)
def core(self) -> None:
params: OverrideSampleRequestParams = OverrideSampleRequestParams()
mysql_result: dict = self.mysql_cli.search_game_configuration_table(game_id=params.gameId, uid=params.uid)
result: tuple = mysql_result.get("Result")
if result is None:
response_message: str = "code"
else:
base_message_from_mysql: str = result[0]
code_content: int = 1
content_id: int = result[4]
not_use_base_field_game_id: list[str] = ['3000503', '3000524']
if str(params.gameId) in not_use_base_field_game_id:
normal_icons_from_mysql: str = result[5]
normal_icons_content: list[str] = normal_icons_from_mysql.split(",")
normal_icons_content_to_int: list[int] = [int(i) for i in normal_icons_content]
multiplier: int = result[6]
response_message: str = JSON.dumps({
"code": code_content,
"data": {"normalIcons": normal_icons_content_to_int, "multiplier": multiplier}
})
else:
base_content: list[str] = base_message_from_mysql.split(",")
base_content_to_int: list[int] = [int(i) for i in base_content]
free_content: str = result[3]
response_message: str = JSON.dumps({
"code": code_content,
"data": {"base": base_content_to_int, "free": free_content}
})
# self.mysql_cli.delete_game_configuration_table_with_read_once(m_id=content_id)
self.set_response_data(data=response_message)
def before_response(self) -> dict:
return self.make_response(use_custom_context=True)
search_gm_data_bp = Blueprint("search_gm_data_bp", __name__)
@search_gm_data_bp.route("/test/result", methods=["GET"])
def main():
override_main_response = OverriderMainResponse()
return main_function(override_main_response)