// 模拟小程序调试 - 检查用户数据结构
|
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. 需要检查后端数据库中是否存储了这些字段的值。');
|