const axios = require('axios');
|
|
// 配置
|
const BASE_URL = 'http://localhost:8080/api';
|
|
// 获取新的微信登录token
|
async function getNewWxToken() {
|
console.log('=== 获取新的微信登录token ===');
|
|
try {
|
// 使用GraphQL mutation进行微信登录
|
const wxLoginMutation = `
|
mutation WxLogin($input: WxLoginRequest!) {
|
wxLogin(input: $input) {
|
token
|
userInfo {
|
userId
|
name
|
phone
|
userType
|
}
|
success
|
message
|
hasJudge
|
}
|
}
|
`;
|
|
// 需要一个新的微信code
|
const wxCode = 'NEED_NEW_WX_CODE_HERE'; // 请替换为新的微信code
|
|
if (wxCode === 'NEED_NEW_WX_CODE_HERE') {
|
console.log('❌ 请先替换脚本中的微信code');
|
return null;
|
}
|
|
const response = await axios.post(`${BASE_URL}/graphql`, {
|
query: wxLoginMutation,
|
variables: {
|
input: {
|
code: wxCode,
|
wxOpenid: "ogxxA1-KrSVTdqI9T1uaB1BQwPGU", // 使用已知的openid
|
loginIp: "127.0.0.1",
|
deviceInfo: "test-device",
|
phoneAuthorized: false
|
}
|
}
|
});
|
|
if (response.data.errors) {
|
console.log('❌ 微信登录失败:', response.data.errors);
|
return null;
|
}
|
|
const loginData = response.data.data.wxLogin;
|
console.log('✅ 微信登录成功:');
|
console.log('- Token:', loginData.token ? '已生成' : '未生成');
|
console.log('- 用户ID:', loginData.userInfo?.userId);
|
console.log('- 用户名:', loginData.userInfo?.name);
|
console.log('- 用户类型:', loginData.userInfo?.userType);
|
console.log('- 是否有评委权限:', loginData.hasJudge);
|
|
return loginData.token;
|
|
} catch (error) {
|
console.error('❌ 微信登录失败:', error.response?.data || error.message);
|
return null;
|
}
|
}
|
|
// 使用已知的token进行测试
|
async function testWithKnownToken() {
|
console.log('\n=== 使用已知token测试 ===');
|
|
// 这里使用一个已知的token(用户需要提供)
|
const knownToken = 'PASTE_YOUR_VALID_TOKEN_HERE';
|
|
if (knownToken === 'PASTE_YOUR_VALID_TOKEN_HERE') {
|
console.log('❌ 请先替换脚本中的token');
|
return;
|
}
|
|
await debugUserContext(knownToken);
|
}
|
|
// 调试用户上下文
|
async function debugUserContext(token) {
|
console.log('\n=== 调试用户上下文 ===');
|
|
// 1. 测试获取当前用户信息
|
console.log('1. 测试获取当前用户信息:');
|
try {
|
const userQuery = `
|
query GetCurrentUser {
|
currentUser {
|
id
|
name
|
phone
|
}
|
}
|
`;
|
|
const response = await axios.post(`${BASE_URL}/graphql`, {
|
query: userQuery
|
}, {
|
headers: {
|
'Authorization': `Bearer ${token}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (response.data.errors) {
|
console.log('❌ 获取当前用户失败:', response.data.errors);
|
} else if (response.data.data?.currentUser) {
|
const user = response.data.data.currentUser;
|
console.log('✅ 当前用户信息:');
|
console.log(` 用户ID: ${user.id}`);
|
console.log(` 姓名: ${user.name}`);
|
console.log(` 手机号: ${user.phone}`);
|
} else {
|
console.log('⚠️ 无法获取当前用户信息');
|
}
|
} catch (error) {
|
console.log('❌ 获取当前用户失败:', error.response?.data || error.message);
|
}
|
|
// 2. 测试获取当前评委信息
|
console.log('\n2. 测试获取当前评委信息:');
|
try {
|
const judgeQuery = `
|
query GetCurrentJudge {
|
currentJudgeInfo {
|
judgeId
|
judgeName
|
title
|
company
|
}
|
}
|
`;
|
|
const response = await axios.post(`${BASE_URL}/graphql`, {
|
query: judgeQuery
|
}, {
|
headers: {
|
'Authorization': `Bearer ${token}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (response.data.errors) {
|
console.log('❌ 获取当前评委失败:', response.data.errors);
|
} else if (response.data.data?.currentJudgeInfo) {
|
const judge = response.data.data.currentJudgeInfo;
|
console.log('✅ 当前评委信息:');
|
console.log(` 评委ID: ${judge.judgeId}`);
|
console.log(` 评委名: ${judge.judgeName}`);
|
console.log(` 职位: ${judge.title}`);
|
console.log(` 公司: ${judge.company}`);
|
} else {
|
console.log('⚠️ 无法获取当前评委信息(可能不是评委)');
|
}
|
} catch (error) {
|
console.log('❌ 获取当前评委失败:', error.response?.data || error.message);
|
}
|
|
// 3. 测试评审统计查询
|
console.log('\n3. 测试评审统计查询:');
|
try {
|
const statsQuery = `
|
query GetReviewStats {
|
reviewStatistics {
|
unReviewedCount
|
reviewedCount
|
studentUnReviewedCount
|
}
|
}
|
`;
|
|
const response = await axios.post(`${BASE_URL}/graphql`, {
|
query: statsQuery
|
}, {
|
headers: {
|
'Authorization': `Bearer ${token}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (response.data.errors) {
|
console.log('❌ 获取评审统计失败:', response.data.errors);
|
response.data.errors.forEach(error => {
|
console.log(` 错误: ${error.message}`);
|
if (error.extensions) {
|
console.log(` 扩展信息:`, error.extensions);
|
}
|
});
|
} else if (response.data.data?.reviewStatistics) {
|
const stats = response.data.data.reviewStatistics;
|
console.log('✅ 评审统计:');
|
console.log(` 未评审: ${stats.unReviewedCount}`);
|
console.log(` 已评审: ${stats.reviewedCount}`);
|
console.log(` 学员未评审: ${stats.studentUnReviewedCount}`);
|
}
|
} catch (error) {
|
console.log('❌ 获取评审统计失败:', error.response?.data || error.message);
|
}
|
|
// 4. 测试简单的评审项目查询
|
console.log('\n4. 测试评审项目查询:');
|
try {
|
const projectsQuery = `
|
query GetUnreviewedProjects {
|
unReviewedProjects(searchKeyword: "", page: 1, pageSize: 1) {
|
totalCount
|
currentPage
|
}
|
}
|
`;
|
|
const response = await axios.post(`${BASE_URL}/graphql`, {
|
query: projectsQuery
|
}, {
|
headers: {
|
'Authorization': `Bearer ${token}`,
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (response.data.errors) {
|
console.log('❌ 获取评审项目失败:', response.data.errors);
|
response.data.errors.forEach(error => {
|
console.log(` 错误: ${error.message}`);
|
});
|
} else if (response.data.data?.unReviewedProjects) {
|
const projects = response.data.data.unReviewedProjects;
|
console.log('✅ 评审项目查询成功:');
|
console.log(` 总数: ${projects.totalCount}`);
|
console.log(` 当前页: ${projects.currentPage}`);
|
}
|
} catch (error) {
|
console.log('❌ 获取评审项目失败:', error.response?.data || error.message);
|
}
|
}
|
|
// 主函数
|
async function main() {
|
console.log('🔍 开始调试后端用户上下文问题...\n');
|
|
// 选择测试方式
|
const useNewToken = false; // 设置为true使用新token,false使用已知token
|
|
if (useNewToken) {
|
const token = await getNewWxToken();
|
if (token) {
|
await debugUserContext(token);
|
}
|
} else {
|
await testWithKnownToken();
|
}
|
}
|
|
// 运行主函数
|
if (require.main === module) {
|
main();
|
}
|
|
module.exports = { debugUserContext, getNewWxToken };
|