// 模拟小程序调试 - 检查用户数据结构 console.log('=== 模拟小程序调试:检查用户数据结构 ===\n'); // 模拟从本地存储获取的用户数据(基于后端日志分析) const mockUserInfoFromStorage = { userId: "-83348", name: "测试用户", phone: "138****8888", avatar: "https://example.com/avatar.jpg", roles: ["PLAYER"] // 注意:这里可能缺少 gender 和 birthday 字段 }; console.log('📱 模拟小程序启动...'); console.log('🔍 从本地存储恢复的用户数据:', JSON.stringify(mockUserInfoFromStorage, null, 2)); // 模拟注册页面的 loadUserInfo 方法 function simulateLoadUserInfo(userInfo) { console.log('\n🔄 模拟 loadUserInfo 方法执行...'); console.log('🔍 实际用户数据:', JSON.stringify(userInfo, null, 2)); if (userInfo) { let displayUserInfo = { name: userInfo.name || '', phone: userInfo.phone || '', avatarUrl: userInfo.avatar || userInfo.avatarUrl || '', gender: null, education: '', birthDate: '' }; // 处理性别信息 - 直接从userInfo获取 if (userInfo.gender !== undefined && userInfo.gender !== null) { console.log('👤 发现性别字段:', userInfo.gender, '类型:', typeof userInfo.gender); // 如果是字符串格式,转换为数字 if (typeof userInfo.gender === 'string') { displayUserInfo.gender = userInfo.gender === 'MALE' ? 0 : 1; } else { displayUserInfo.gender = parseInt(userInfo.gender); } console.log('👤 处理后的性别:', displayUserInfo.gender); } else { console.log('❌ 未找到性别字段或字段为空'); } // 处理生日信息 - 直接从userInfo获取 if (userInfo.birthday || userInfo.birthDate) { const birthDate = userInfo.birthday || userInfo.birthDate; console.log('🎂 发现生日字段:', birthDate); displayUserInfo.birthDate = birthDate; } else { console.log('❌ 未找到生日字段 (birthday 或 birthDate)'); } console.log('✅ 最终 displayUserInfo:', JSON.stringify(displayUserInfo, null, 2)); return displayUserInfo; } else { console.log('⚠️ 未找到用户信息'); return null; } } // 模拟注册页面的 prefillUserInfo 方法 function simulatePrefillUserInfo(userInfo) { console.log('\n🔄 模拟 prefillUserInfo 方法执行...'); console.log('🔍 预填充用户信息:', userInfo); if (userInfo) { const updateData = { 'formData.name': userInfo.name || '', 'formData.phone': userInfo.phone || '', 'formData.email': userInfo.email || '', 'formData.avatarUrl': userInfo.avatar || userInfo.avatarUrl || '' }; // 处理性别信息 - 直接从userInfo获取 if (userInfo.gender !== undefined && userInfo.gender !== null) { let genderIndex; console.log('👤 处理性别字段:', userInfo.gender, '类型:', typeof userInfo.gender); // 如果是字符串格式,转换为数字 if (typeof userInfo.gender === 'string') { genderIndex = userInfo.gender === 'MALE' ? 0 : 1; } else { genderIndex = parseInt(userInfo.gender); } updateData['formData.gender'] = genderIndex; updateData['genderIndex'] = genderIndex; console.log('👤 设置性别:', genderIndex === 0 ? '男' : '女'); } else { console.log('❌ 性别字段缺失,无法预填充'); } // 处理生日信息 - 直接从userInfo获取 if (userInfo.birthday || userInfo.birthDate) { const birthDate = userInfo.birthday || userInfo.birthDate; updateData['formData.birthDate'] = birthDate; console.log('🎂 设置生日:', birthDate); } else { console.log('❌ 生日字段缺失,无法预填充'); } console.log('✅ 预填充数据:', JSON.stringify(updateData, null, 2)); console.log('🖼️ 设置头像URL:', updateData['formData.avatarUrl']); return updateData; } else { console.log('⚠️ 未找到用户信息,跳过预填充'); return null; } } // 执行模拟测试 console.log('\n=== 开始模拟测试 ==='); // 测试1:缺少性别和生日字段的情况 console.log('\n📋 测试1:缺少性别和生日字段的用户数据'); simulateLoadUserInfo(mockUserInfoFromStorage); simulatePrefillUserInfo(mockUserInfoFromStorage); // 测试2:包含性别和生日字段的情况 console.log('\n📋 测试2:包含性别和生日字段的用户数据'); const completeUserInfo = { ...mockUserInfoFromStorage, gender: 0, // 男性 birthday: '1990-01-01' }; simulateLoadUserInfo(completeUserInfo); simulatePrefillUserInfo(completeUserInfo); // 测试3:字符串格式的性别 console.log('\n📋 测试3:字符串格式的性别'); const stringGenderUserInfo = { ...mockUserInfoFromStorage, gender: 'MALE', birthDate: '1995-05-15' }; simulateLoadUserInfo(stringGenderUserInfo); simulatePrefillUserInfo(stringGenderUserInfo); console.log('\n=== 模拟测试完成 ==='); console.log('\n🔍 分析结果:'); console.log('1. 如果后端返回的用户数据中缺少 gender 和 birthday/birthDate 字段,'); console.log(' 那么这些字段就不会被预填充到表单中。'); console.log('2. 需要检查后端 GraphQL 查询是否包含了这些字段。'); console.log('3. 需要检查后端数据库中是否存储了这些字段的值。');