const { graphqlRequest } = require('./test-graphql-queries-only')
|
|
// 测试所有端性别逻辑修复效果
|
async function testAllGenderFixes() {
|
console.log('🧪 开始测试所有端性别逻辑修复效果...\n')
|
|
// 1. 测试数据库中的性别值
|
console.log('📊 1. 测试数据库中的性别值')
|
await testDatabaseGenderValues()
|
|
// 2. 模拟前端性别转换逻辑
|
console.log('\n🎨 2. 模拟前端性别转换逻辑')
|
testFrontendGenderMapping()
|
|
// 3. 模拟后端性别转换逻辑
|
console.log('\n⚙️ 3. 模拟后端性别转换逻辑')
|
testBackendGenderMapping()
|
|
console.log('\n✅ 性别逻辑测试完成!')
|
}
|
|
// 测试数据库中的性别值
|
async function testDatabaseGenderValues() {
|
try {
|
const query = `
|
query GetActivityPlayerApplications($activityId: ID, $page: Int, $size: Int) {
|
activityPlayerApplications(activityId: $activityId, page: $page, size: $size) {
|
id
|
playerName
|
phone
|
state
|
}
|
}
|
`
|
|
const variables = {
|
activityId: "1",
|
page: 0,
|
size: 5
|
}
|
|
const response = await graphqlRequest(query, variables)
|
const applications = response.data.activityPlayerApplications || []
|
|
console.log(`找到 ${applications.length} 个参赛人,开始检查前3个的详细信息...`)
|
|
for (let i = 0; i < Math.min(3, applications.length); i++) {
|
const app = applications[i]
|
await checkPlayerGenderDetail(app.id, app.playerName)
|
}
|
|
} catch (error) {
|
console.error('❌ 查询参赛人列表失败:', error.message)
|
}
|
}
|
|
// 检查单个参赛人的性别详情
|
async function checkPlayerGenderDetail(playerId, playerName) {
|
try {
|
const query = `
|
query GetActivityPlayerDetail($id: ID!) {
|
activityPlayerDetail(id: $id) {
|
playerInfo {
|
id
|
name
|
gender
|
education
|
birthday
|
}
|
regionInfo {
|
id
|
name
|
fullPath
|
}
|
}
|
}
|
`
|
|
const response = await graphqlRequest(query, { id: playerId })
|
const detail = response.data.activityPlayerDetail
|
|
if (detail && detail.playerInfo) {
|
const { gender, name } = detail.playerInfo
|
|
console.log(`\n👤 参赛人: ${name} (ID: ${playerId})`)
|
console.log(` 原始性别值: ${gender} (${typeof gender})`)
|
|
// 模拟各端的性别转换
|
console.log(' 各端转换结果:')
|
|
// WX端 - review.js getGenderText (已修复)
|
const wxReviewText = getGenderTextWxReview(gender)
|
console.log(` - WX端(review): ${wxReviewText}`)
|
|
// WX端 - 注册页面选择器显示 (已修复)
|
const wxRegistrationDisplay = getGenderDisplayWxRegistration(gender)
|
console.log(` - WX端(注册显示): ${wxRegistrationDisplay}`)
|
|
// Web端 - JudgeForm (正确)
|
const webJudgeForm = getGenderTextWebJudge(gender)
|
console.log(` - Web端(JudgeForm): ${webJudgeForm}`)
|
|
// Web端 - check-detail (已修复)
|
const webCheckDetail = getGenderTextWebCheckDetail(gender)
|
console.log(` - Web端(check-detail): ${webCheckDetail}`)
|
|
// Backend端 - UserResolver (正确)
|
const backendString = getGenderStringBackend(gender)
|
console.log(` - Backend端(字符串): ${backendString}`)
|
|
} else {
|
console.log(`❌ 未找到参赛人详情: ${playerName}`)
|
}
|
|
} catch (error) {
|
console.error(`❌ 查询参赛人详情失败 (${playerName}):`, error.message)
|
}
|
}
|
|
// 模拟各端的性别转换函数
|
|
// WX端 - review.js getGenderText (已修复)
|
function getGenderTextWxReview(gender) {
|
if (gender === 0) return '女'
|
if (gender === 1) return '男'
|
return '未填写'
|
}
|
|
// WX端 - 注册页面显示 (已修复)
|
function getGenderDisplayWxRegistration(gender) {
|
// genderOptions: ['男', '女']
|
// 数据库值1(男) -> 界面索引0 -> 显示'男'
|
// 数据库值0(女) -> 界面索引1 -> 显示'女'
|
const genderOptions = ['男', '女']
|
if (gender === 1) return genderOptions[0] // 男
|
if (gender === 0) return genderOptions[1] // 女
|
return '未选择'
|
}
|
|
// Web端 - JudgeForm (正确)
|
function getGenderTextWebJudge(gender) {
|
// <el-radio :value="1">男</el-radio>
|
// <el-radio :value="0">女</el-radio>
|
if (gender === 1) return '男'
|
if (gender === 0) return '女'
|
return '未填写'
|
}
|
|
// Web端 - check-detail (已修复)
|
function getGenderTextWebCheckDetail(gender) {
|
const genderMap = {
|
1: '男',
|
0: '女'
|
}
|
return genderMap[gender] || '-'
|
}
|
|
// Backend端 - UserResolver (正确)
|
function getGenderStringBackend(gender) {
|
// user.getGender() == 1 ? "MALE" : "FEMALE"
|
if (gender === 1) return 'MALE'
|
if (gender === 0) return 'FEMALE'
|
return null
|
}
|
|
// 测试前端性别映射逻辑
|
function testFrontendGenderMapping() {
|
console.log('测试前端性别映射逻辑:')
|
|
const testCases = [
|
{ dbValue: 1, expected: '男' },
|
{ dbValue: 0, expected: '女' },
|
{ dbValue: null, expected: '未填写' }
|
]
|
|
testCases.forEach(({ dbValue, expected }) => {
|
console.log(`\n数据库值: ${dbValue}`)
|
console.log(` WX端(review): ${getGenderTextWxReview(dbValue)} ${getGenderTextWxReview(dbValue) === expected ? '✅' : '❌'}`)
|
console.log(` WX端(注册): ${getGenderDisplayWxRegistration(dbValue)} ${getGenderDisplayWxRegistration(dbValue) === expected ? '✅' : '❌'}`)
|
console.log(` Web端(JudgeForm): ${getGenderTextWebJudge(dbValue)} ${getGenderTextWebJudge(dbValue) === expected ? '✅' : '❌'}`)
|
console.log(` Web端(check-detail): ${getGenderTextWebCheckDetail(dbValue)} ${getGenderTextWebCheckDetail(dbValue) === expected ? '✅' : '❌'}`)
|
})
|
}
|
|
// 测试后端性别映射逻辑
|
function testBackendGenderMapping() {
|
console.log('测试后端性别映射逻辑:')
|
|
const testCases = [
|
{ dbValue: 1, expected: 'MALE' },
|
{ dbValue: 0, expected: 'FEMALE' }
|
]
|
|
testCases.forEach(({ dbValue, expected }) => {
|
const result = getGenderStringBackend(dbValue)
|
console.log(`数据库值 ${dbValue} -> ${result} ${result === expected ? '✅' : '❌'}`)
|
})
|
|
// 测试字符串到数字的转换
|
console.log('\n测试字符串到数字的转换:')
|
const stringToNumber = {
|
'MALE': 1,
|
'FEMALE': 0
|
}
|
|
Object.entries(stringToNumber).forEach(([str, num]) => {
|
console.log(`${str} -> ${num} ✅`)
|
})
|
}
|
|
// 运行测试
|
testAllGenderFixes().catch(console.error)
|