const axios = require('axios'); const BASE_URL = 'http://localhost:8080'; async function testJwtWxOpenidFixed() { console.log('=== 测试修复后的JWT token和wxopenid处理 ===\n'); try { // 1. 测试微信登录(匿名用户) console.log('1. 测试微信登录(匿名用户)...'); const wxLoginResponse = await axios.post(`${BASE_URL}/api/auth/wx-login`, { code: 'test_code_' + Date.now(), wxOpenid: 'test_openid_' + Date.now(), wxUnionid: 'test_unionid_' + Date.now(), loginIp: '127.0.0.1', deviceInfo: 'test_device', phoneAuthorized: false }); if (wxLoginResponse.data.success) { console.log('✅ 微信登录成功'); console.log('- Token:', wxLoginResponse.data.token ? '已生成' : '未生成'); console.log('- 用户类型:', wxLoginResponse.data.userInfo?.userType); const token = wxLoginResponse.data.token; // 2. 使用匿名用户token保存用户信息 console.log('\n2. 使用匿名用户token保存用户信息...'); const saveUserResponse = await axios.post(`${BASE_URL}/graphql`, { query: ` mutation SaveUserInfo($input: SaveUserInfoInput!) { saveUserInfo(input: $input) { success message user { id name phone wxOpenId gender birthday } } } `, variables: { input: { name: '测试用户', phone: '13800138000', gender: 'MALE', birthday: '1990-01-01' } } }, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }); if (saveUserResponse.data.data?.saveUserInfo?.success) { console.log('✅ 保存用户信息成功'); const user = saveUserResponse.data.data.saveUserInfo.user; console.log('- 用户ID:', user.id); console.log('- 姓名:', user.name); console.log('- 电话:', user.phone); console.log('- wxOpenId:', user.wxOpenId); console.log('- 性别:', user.gender); console.log('- 生日:', user.birthday); // 3. 验证wxopenid是否正确记录 if (user.wxOpenId) { console.log('✅ wxopenid已正确记录到数据库'); } else { console.log('❌ wxopenid未记录到数据库'); } // 4. 再次保存相同电话号码的用户信息(测试更新逻辑) console.log('\n3. 测试重复保存(更新现有用户)...'); const updateUserResponse = await axios.post(`${BASE_URL}/graphql`, { query: ` mutation SaveUserInfo($input: SaveUserInfoInput!) { saveUserInfo(input: $input) { success message user { id name phone wxOpenId gender birthday } } } `, variables: { input: { name: '测试用户(更新)', phone: '13800138000', gender: 'FEMALE', birthday: '1991-02-02' } } }, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }); if (updateUserResponse.data.data?.saveUserInfo?.success) { console.log('✅ 更新用户信息成功'); const updatedUser = updateUserResponse.data.data.saveUserInfo.user; console.log('- 用户ID:', updatedUser.id); console.log('- 姓名:', updatedUser.name); console.log('- 电话:', updatedUser.phone); console.log('- wxOpenId:', updatedUser.wxOpenId); console.log('- 性别:', updatedUser.gender); console.log('- 生日:', updatedUser.birthday); // 验证是否为同一用户(ID应该相同) if (user.id === updatedUser.id) { console.log('✅ 正确更新了现有用户,未创建新用户'); } else { console.log('❌ 错误地创建了新用户,应该更新现有用户'); } // 验证wxopenid是否保持一致 if (user.wxOpenId === updatedUser.wxOpenId) { console.log('✅ wxopenid保持一致'); } else { console.log('❌ wxopenid发生了变化'); } } else { console.log('❌ 更新用户信息失败'); console.log('错误:', updateUserResponse.data.errors || updateUserResponse.data.data?.saveUserInfo?.message); } } else { console.log('❌ 保存用户信息失败'); console.log('错误:', saveUserResponse.data.errors || saveUserResponse.data.data?.saveUserInfo?.message); } } else { console.log('❌ 微信登录失败'); console.log('错误:', wxLoginResponse.data.message); } } catch (error) { console.error('❌ 测试过程中发生错误:', error.response?.data || error.message); } } // 运行测试 testJwtWxOpenidFixed();