187 lines
5.7 KiB
Python
187 lines
5.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
学生信息管理错误诊断脚本
|
|
快速检查回退后的问题
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
from datetime import datetime
|
|
|
|
# 配置
|
|
BASE_URL = "http://localhost:8080"
|
|
LOGIN_URL = f"{BASE_URL}/auth/login"
|
|
STUDENT_LIST_URL = f"{BASE_URL}/xg-xx/studentInfo/list"
|
|
|
|
# 测试数据
|
|
LOGIN_DATA = {
|
|
"clientId": "e5cd7e4891bf95d1d19206ce24a7b32e",
|
|
"username": "admin",
|
|
"password": "admin123",
|
|
"grant_type": "password",
|
|
"tenantId": "000000"
|
|
}
|
|
|
|
def test_basic_connection():
|
|
"""测试基础连接"""
|
|
print("🔍 测试服务器连接...")
|
|
try:
|
|
response = requests.get(f"{BASE_URL}/health", timeout=5)
|
|
print(f"健康检查响应: {response.status_code}")
|
|
return True
|
|
except Exception as e:
|
|
print(f"❌ 连接失败: {e}")
|
|
return False
|
|
|
|
def get_auth_token():
|
|
"""获取认证Token"""
|
|
print("🔐 获取认证Token...")
|
|
try:
|
|
response = requests.post(LOGIN_URL, json=LOGIN_DATA, timeout=10)
|
|
print(f"登录响应状态: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
result = response.json()
|
|
print(f"登录响应: {json.dumps(result, indent=2, ensure_ascii=False)}")
|
|
|
|
if result.get('code') == 200:
|
|
token = result['data']['access_token']
|
|
print("✅ Token获取成功")
|
|
return token
|
|
else:
|
|
print(f"❌ 登录失败: {result.get('msg', '未知错误')}")
|
|
return None
|
|
else:
|
|
print(f"❌ 登录请求失败: {response.status_code}")
|
|
print(f"响应内容: {response.text}")
|
|
return None
|
|
except Exception as e:
|
|
print(f"❌ 登录异常: {e}")
|
|
return None
|
|
|
|
def test_student_list_basic(token):
|
|
"""测试基础学生列表查询"""
|
|
print("📋 测试基础学生列表查询...")
|
|
|
|
headers = {
|
|
'Authorization': f'Bearer {token}',
|
|
'Content-Type': 'application/json',
|
|
'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e',
|
|
'referer': 'http://localhost',
|
|
'tenantId': '000000'
|
|
}
|
|
|
|
params = {
|
|
'pageNum': 1,
|
|
'pageSize': 10
|
|
}
|
|
|
|
try:
|
|
response = requests.get(STUDENT_LIST_URL, params=params, headers=headers, timeout=10)
|
|
print(f"响应状态码: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
result = response.json()
|
|
print(f"完整响应: {json.dumps(result, indent=2, ensure_ascii=False)}")
|
|
|
|
if result.get('code') == 200:
|
|
data = result.get('data', {})
|
|
total = data.get('total', 0)
|
|
rows = data.get('rows', [])
|
|
print(f"✅ 基础查询成功 - 总数: {total}, 当前页: {len(rows)}")
|
|
return True
|
|
else:
|
|
print(f"❌ 查询失败: {result.get('msg', '未知错误')}")
|
|
return False
|
|
else:
|
|
print(f"❌ 请求失败: {response.status_code}")
|
|
print(f"错误响应: {response.text}")
|
|
return False
|
|
except Exception as e:
|
|
print(f"❌ 查询异常: {e}")
|
|
return False
|
|
|
|
def test_student_list_with_filter(token):
|
|
"""测试带过滤条件的查询(这是之前报错的场景)"""
|
|
print("🔍 测试带过滤条件的查询...")
|
|
|
|
headers = {
|
|
'Authorization': f'Bearer {token}',
|
|
'Content-Type': 'application/json',
|
|
'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e',
|
|
'referer': 'http://localhost',
|
|
'tenantId': '000000'
|
|
}
|
|
|
|
params = {
|
|
'pageNum': 1,
|
|
'pageSize': 10,
|
|
'gender': '1' # 这是之前导致SQL错误的参数
|
|
}
|
|
|
|
try:
|
|
response = requests.get(STUDENT_LIST_URL, params=params, headers=headers, timeout=10)
|
|
print(f"响应状态码: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
result = response.json()
|
|
print(f"完整响应: {json.dumps(result, indent=2, ensure_ascii=False)}")
|
|
|
|
if result.get('code') == 200:
|
|
data = result.get('data', {})
|
|
total = data.get('total', 0)
|
|
rows = data.get('rows', [])
|
|
print(f"✅ 过滤查询成功 - 总数: {total}, 当前页: {len(rows)}")
|
|
return True
|
|
else:
|
|
print(f"❌ 查询失败: {result.get('msg', '未知错误')}")
|
|
return False
|
|
else:
|
|
print(f"❌ 请求失败: {response.status_code}")
|
|
print(f"错误响应: {response.text}")
|
|
return False
|
|
except Exception as e:
|
|
print(f"❌ 查询异常: {e}")
|
|
return False
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("="*80)
|
|
print("🔍 学生信息管理错误诊断")
|
|
print("="*80)
|
|
print(f"⏰ 诊断时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
|
print()
|
|
|
|
# 1. 测试基础连接
|
|
if not test_basic_connection():
|
|
print("❌ 服务器连接失败,请检查服务是否启动")
|
|
return
|
|
|
|
print()
|
|
|
|
# 2. 获取认证Token
|
|
token = get_auth_token()
|
|
if not token:
|
|
print("❌ 无法获取认证Token")
|
|
return
|
|
|
|
print()
|
|
|
|
# 3. 测试基础查询
|
|
if not test_student_list_basic(token):
|
|
print("❌ 基础查询失败")
|
|
return
|
|
|
|
print()
|
|
|
|
# 4. 测试过滤查询
|
|
if not test_student_list_with_filter(token):
|
|
print("❌ 过滤查询失败 - 可能是SQL重复WHERE问题")
|
|
return
|
|
|
|
print()
|
|
print("✅ 所有测试通过!")
|
|
|
|
if __name__ == "__main__":
|
|
main() |