12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import requests
- import json
- # 服务器配置
- BASE_URL = "http://localhost:8080/api"
- def get_user_achievements(user_id):
- """获取用户成就"""
- url = f"{BASE_URL}/achievements/user/{user_id}"
- response = requests.get(url)
- return response
- def update_achievement_progress(user_id, achievement_id, new_value):
- """直接更新成就进度"""
- url = f"{BASE_URL}/achievements/user/{user_id}/achievement/{achievement_id}/progress"
- data = {"currentValue": new_value}
- response = requests.put(url, json=data)
- return response
- def test_simple_achievement_update():
- """简单测试成就更新"""
- print("=== 简单成就更新测试 ===")
-
- # 使用已存在的用户ID(从之前的测试可以看到有用户ID 5, 6, 7)
- user_id = 5
-
- print(f"\n1. 检查用户 {user_id} 的成就")
- achievements_response = get_user_achievements(user_id)
- if achievements_response.status_code == 200:
- achievements = achievements_response.json()
- print(f"成就数量: {len(achievements)}")
-
- # 找到学习时长成就
- study_time_achievements = [a for a in achievements if 'STUDY_TIME' in a['type']]
- print(f"\n学习时长成就:")
- for achievement in study_time_achievements:
- print(f" ID: {achievement['achievementId']}, {achievement['title']}: {achievement['currentValue']}/{achievement['targetValue']} (已获得: {achievement['isAchieved']})")
-
- if study_time_achievements:
- # 测试更新第一个学习时长成就
- first_achievement = study_time_achievements[0]
- achievement_id = first_achievement['achievementId']
- target_value = first_achievement['targetValue']
-
- print(f"\n2. 更新成就 {achievement_id} 的进度到 {target_value}")
- update_response = update_achievement_progress(user_id, achievement_id, target_value)
-
- if update_response.status_code == 200:
- updated_achievement = update_response.json()
- print(f"更新成功: {updated_achievement['title']} - 已获得: {updated_achievement['isAchieved']}")
- else:
- print(f"更新失败: {update_response.status_code} - {update_response.text}")
-
- # 再次检查成就状态
- print(f"\n3. 再次检查成就状态")
- achievements_response = get_user_achievements(user_id)
- if achievements_response.status_code == 200:
- achievements = achievements_response.json()
- study_time_achievements = [a for a in achievements if 'STUDY_TIME' in a['type']]
-
- for achievement in study_time_achievements:
- status = "✅ 已获得" if achievement['isAchieved'] else "❌ 未获得"
- print(f" {achievement['title']}: {achievement['currentValue']}/{achievement['targetValue']} {status}")
-
- completed_count = len([a for a in achievements if a['isAchieved']])
- print(f"\n总计已完成成就: {completed_count}")
-
- if completed_count > 0:
- print("✅ 成就更新功能正常!")
- else:
- print("❌ 成就更新功能有问题")
- else:
- print(f"获取成就失败: {achievements_response.status_code} - {achievements_response.text}")
- if __name__ == "__main__":
- test_simple_achievement_update()
|