11
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
from datetime import datetime
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from astrbot.api import logger
|
||||
|
||||
from .base import DATA_PROCESSING_ERRORS, BaseDomainService
|
||||
|
||||
|
||||
class ArenaService(BaseDomainService):
|
||||
async def zhanji(self, name: str, server: str, mode: str) -> Dict[str, Any]:
|
||||
"""战绩"""
|
||||
return_data = self.new_result()
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"server": server, "name": name, "mode": mode}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[Dict[str, Any]] = await self.request("jx3_zhanji", params=params)
|
||||
|
||||
if not data:
|
||||
return_data["msg"] = "查询角色战绩失败"
|
||||
return return_data
|
||||
|
||||
# 4. 加载模板
|
||||
if not await self.attach_template(return_data, "zhanji.html"):
|
||||
return return_data
|
||||
|
||||
return_data["data"] = data
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
|
||||
async def mingjianpaihang(self, limit: str, mode: str) -> Dict[str, Any]:
|
||||
"""名剑排行"""
|
||||
return_data = self.new_result()
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"limit": limit, "mode": mode}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[Dict[str, Any]] = await self.request(
|
||||
"jx3_mingjianpaihang", params=params
|
||||
)
|
||||
|
||||
if not data:
|
||||
return_data["msg"] = "获取接口数据失败"
|
||||
return return_data
|
||||
|
||||
return_data["data"]["lists"] = data
|
||||
|
||||
# 4. 加载模板
|
||||
if not await self.attach_template(return_data, "mingjianpaihang.html"):
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
|
||||
async def mingjiantongji(self, mode: str = "33") -> Dict[str, Any]:
|
||||
"""名剑统计"""
|
||||
return_data = self.new_result()
|
||||
|
||||
mode = str(mode)
|
||||
if mode not in {"22", "33", "55"}:
|
||||
return_data["msg"] = "模式错误,可选值:22、33、55"
|
||||
return return_data
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"mode": mode}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[List[Dict[str, Any]]] = await self.request(
|
||||
"jx3_mingjiantongji", params=params
|
||||
)
|
||||
|
||||
if not data or not isinstance(data, list):
|
||||
return_data["msg"] = "未查询到名剑统计信息"
|
||||
return return_data
|
||||
|
||||
# 3. 准备模板渲染数据
|
||||
try:
|
||||
return_data["data"] = {
|
||||
"items": data,
|
||||
"mode": mode,
|
||||
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
||||
}
|
||||
except DATA_PROCESSING_ERRORS as e:
|
||||
logger.error(f"模板数据准备失败: {e}")
|
||||
return_data["msg"] = "系统错误:模板渲染数据准备失败"
|
||||
return return_data
|
||||
|
||||
# 4. 加载模板
|
||||
if not await self.attach_template(return_data, "mingjiantongji.html"):
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
|
||||
async def tuanduizhaomu(self, server: str, keyword: str) -> Dict[str, Any]:
|
||||
"""团队招募"""
|
||||
return_data = self.new_result()
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"server": server, "keyword": keyword}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[Dict[str, Any]] = await self.request(
|
||||
"jx3_tuanduizhaomu", params=params
|
||||
)
|
||||
|
||||
if not data:
|
||||
return_data["msg"] = "获取接口信息失败"
|
||||
return return_data
|
||||
|
||||
# 3. 处理返回数据
|
||||
try:
|
||||
for item in data["data"]:
|
||||
item["createTime"] = datetime.fromtimestamp(
|
||||
item["createTime"]
|
||||
).strftime("%Y-%m-%d %H:%M:%S")
|
||||
item["number"] = f"{item['number']}/{item['maxNumber']}"
|
||||
return_data["data"]["list"] = data["data"]
|
||||
except DATA_PROCESSING_ERRORS as e:
|
||||
logger.error(f"数据处理时出错: {e}")
|
||||
return_data["msg"] = "处理接口返回信息时出错"
|
||||
return return_data
|
||||
|
||||
# 4. 加载模板
|
||||
if not await self.attach_template(return_data, "tuanduizhaomu.html"):
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
|
||||
async def shitu(self, type_value: int, keyword: str, server: str) -> Dict[str, Any]:
|
||||
"""师徒招募"""
|
||||
return_data = self.new_result()
|
||||
|
||||
if type_value not in {1, 2}:
|
||||
return_data["msg"] = "师徒查询类型错误"
|
||||
return return_data
|
||||
|
||||
# 1. 构造请求参数
|
||||
params = {"type": type_value, "server": server, "keyword": keyword}
|
||||
|
||||
# 2. 调用基础请求
|
||||
data: Optional[Dict[str, Any]] = await self.request("jx3_shitu", params=params)
|
||||
|
||||
if not data or not isinstance(data, dict):
|
||||
return_data["msg"] = "未查询到师徒招募信息"
|
||||
return return_data
|
||||
|
||||
# 3. 处理返回数据
|
||||
try:
|
||||
items = data.get("data", [])
|
||||
if not items:
|
||||
return_data["msg"] = "未查询到师徒招募信息"
|
||||
return return_data
|
||||
|
||||
title = "收徒信息" if type_value == 1 else "拜师信息"
|
||||
return_data["data"] = {
|
||||
"items": items,
|
||||
"server": data.get("server", server),
|
||||
"keyword": keyword,
|
||||
"type_value": type_value,
|
||||
"title": title,
|
||||
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
||||
}
|
||||
except DATA_PROCESSING_ERRORS as e:
|
||||
logger.error(f"数据处理时出错: {e}")
|
||||
return_data["msg"] = "处理接口返回信息时出错"
|
||||
return return_data
|
||||
|
||||
# 4. 加载模板
|
||||
if not await self.attach_template(return_data, "shitu.html"):
|
||||
return return_data
|
||||
|
||||
return_data["code"] = 200
|
||||
|
||||
return return_data
|
||||
Reference in New Issue
Block a user