fix(api): 修复端点处理逻辑中不正确的游戏模式判断,修复测试里的一些小问题

This commit is contained in:
jimmy-sketch
2025-07-26 23:14:23 +08:00
parent d23de2c166
commit c647bdacb3
2 changed files with 39 additions and 9 deletions

View File

@@ -186,9 +186,9 @@ async def get_user_beatmap_score(
Beatmapset.beatmaps # pyright: ignore[reportArgumentType]
)
)
.where(Score.gamemode==mode if mode is not None else True)
.where(Score.beatmap_id == beatmap)
.where(Score.user_id == user)
.where(Score.gamemode == mode)
.order_by(col(Score.classic_total_score).desc())
)
).first()
@@ -229,7 +229,7 @@ async def get_user_all_beatmap_scores(
Beatmapset.beatmaps # pyright: ignore[reportArgumentType]
)
)
.where(Score.gamemode==ruleset)
.where(Score.gamemode==ruleset if ruleset is not None else True)
.where(Score.beatmap_id == beatmap)
.where(Score.user_id == user)
.order_by(col(Score.classic_total_score).desc())

View File

@@ -142,6 +142,24 @@ def get_user_beatmap_score(access_token: str, beatmap_id: int, user_id: int):
return None
def get_user_beatmap_score_all(access_token: str, beatmap_id: int, user_id: int):
"""获取玩家成绩"""
url = f"{API_URL}/api/v2/beatmaps/{beatmap_id}/scores/users/{user_id}/all"
headers = {"Authorization": f"Bearer {access_token}"}
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
print(f"✅ 成功获取谱面 {beatmap_id} 中用户 {user_id} 的成绩数据")
return response.json()
else:
print(f"❌ 获取谱面成绩失败: {response.status_code}")
print(f"响应内容: {response.text}")
return None
except Exception as e:
print(f"❌ 获取谱面成绩请求失败: {e}")
return None
def main():
"""主测试函数"""
print("=== osu! API 模拟服务器测试 ===\n")
@@ -194,27 +212,39 @@ def main():
if scores_data["userScore"]:
print("用户在该谱面有成绩记录")
print(f"用户成绩 ID: {scores_data['userScore']['id']}")
print(f"用户成绩分数: {scores_data['userScore']['total_score']}")
print(f"用户成绩分数: {scores_data['userScore']['total_score']}\n")
else:
print("用户在该谱面没有成绩记录")
print("用户在该谱面没有成绩记录\n")
# 6. 测试谱面指定用户成绩
# 5a. 测试谱面指定用户成绩
user_score = get_user_beatmap_score(token_data["access_token"], 1, 1)
if user_score:
print(f"用户成绩ID:{user_score['score']['id']}")
print(f"此成绩acc:{user_score['score']['accuracy']}")
print(f"总分:{user_score['score']['classic_total_score']}")
print(f"总分:{user_score['score']['classic_total_score']}\n")
else:
print("该用户在此谱面没有记录\n")
# 5b. 测试谱面指定用户成绩
user_score_all = get_user_beatmap_score_all(token_data["access_token"], 1, 1)
if user_score_all:
index = 1
for score in user_score_all:
print(f"{index}个成绩:")
print(f"用户成绩ID:{score['id']}")
print(f"此成绩acc:{score['accuracy']}")
print(f"总分:{score['classic_total_score']}")
else:
print("该用户在此谱面没有记录")
# 7. 测试令牌刷新
print("\n7. 测试令牌刷新...")
# 6. 测试令牌刷新
print("\n6. 测试令牌刷新...")
new_token_data = refresh_token(token_data["refresh_token"])
if new_token_data:
print(f"新访问令牌: {new_token_data['access_token']}")
# 使用新令牌获取用户数据
print("\n7. 使用新令牌获取用户数据...")
print("\n6. 使用新令牌获取用户数据...")
user_data = get_current_user(new_token_data["access_token"])
if user_data:
print(f"✅ 新令牌有效,用户: {user_data['username']}")