From 58d9f460b2f8c34430285115e2557d18333c5cab Mon Sep 17 00:00:00 2001 From: Codex Assistant <codex@example.com> Date: 星期三, 08 十月 2025 14:16:55 +0800 Subject: [PATCH] feat: 修复Player实体phone字段数据冗余问题并优化小程序报名逻辑 --- wx/pages/registration/registration.js | 120 ++++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 80 insertions(+), 40 deletions(-) diff --git a/wx/pages/registration/registration.js b/wx/pages/registration/registration.js index 3fd91ec..e1613f8 100644 --- a/wx/pages/registration/registration.js +++ b/wx/pages/registration/registration.js @@ -229,41 +229,71 @@ }, // 鍔犺浇鐢ㄦ埛淇℃伅 - loadUserInfo() { - const userInfo = app.globalData.userInfo - console.log('馃攳 鍔犺浇鐢ㄦ埛淇℃伅鐢ㄤ簬鏄剧ず:', userInfo) + async loadUserInfo() { + console.log('馃攧 寮�濮嬪姞杞界敤鎴蜂俊鎭�') + const app = getApp() + let userInfo = app.globalData.userInfo + console.log('馃攳 鏈湴鐢ㄦ埛鏁版嵁:', JSON.stringify(userInfo, null, 2)) + + // 灏濊瘯浠庡悗绔幏鍙栧畬鏁寸殑鐢ㄦ埛淇℃伅 + try { + const query = ` + query GetUserProfile { + userProfile { + id + name + avatar + phone + gender + birthday + } + } + ` + + const result = await graphqlRequest(query) + if (result && result.userProfile) { + console.log('馃攳 浠庡悗绔幏鍙栫殑瀹屾暣鐢ㄦ埛鏁版嵁:', JSON.stringify(result.userProfile, null, 2)) + userInfo = result.userProfile + // 鏇存柊鍏ㄥ眬鏁版嵁 + app.globalData.userInfo = { ...app.globalData.userInfo, ...userInfo } + } + } catch (error) { + console.log('鈿狅笍 浠庡悗绔幏鍙栫敤鎴蜂俊鎭け璐ワ紝浣跨敤鏈湴鏁版嵁:', error) + } if (userInfo) { let displayUserInfo = { name: userInfo.name || '', phone: userInfo.phone || '', - avatarUrl: userInfo.avatarUrl || '', + avatarUrl: userInfo.avatar || userInfo.avatarUrl || '', gender: null, - education: '' + education: '', + birthDate: '' } - // 濡傛灉鐢ㄦ埛鏈塒layer淇℃伅锛屼紭鍏堜娇鐢≒layer鐨勮缁嗕俊鎭� - if (userInfo.player) { - console.log('馃搵 浣跨敤Player淇℃伅鏄剧ず:', userInfo.player) - displayUserInfo.name = userInfo.player.name || userInfo.name || '' - displayUserInfo.phone = userInfo.player.phone || userInfo.phone || '' - displayUserInfo.avatarUrl = userInfo.avatarUrl || '' - - // 澶勭悊鎬у埆淇℃伅锛�0=鐢凤紝1=濂� - if (userInfo.player.gender !== undefined && userInfo.player.gender !== null) { - displayUserInfo.gender = parseInt(userInfo.player.gender) - } - - // 澶勭悊瀛﹀巻淇℃伅 - if (userInfo.player.education) { - displayUserInfo.education = userInfo.player.education + // 澶勭悊鎬у埆淇℃伅 + if (userInfo.gender !== undefined && userInfo.gender !== null) { + console.log('馃懁 鍙戠幇鎬у埆瀛楁:', userInfo.gender, '绫诲瀷:', typeof userInfo.gender) + // 濡傛灉鏄瓧绗︿覆鏍煎紡锛岃浆鎹负鏁板瓧 + if (typeof userInfo.gender === 'string') { + displayUserInfo.gender = userInfo.gender === 'MALE' ? 1 : 0 // 淇锛歁ALE=1(鐢�), FEMALE=0(濂�) + console.log('馃懁 澶勭悊鍚庣殑鎬у埆:', displayUserInfo.gender) + } else { + displayUserInfo.gender = parseInt(userInfo.gender) } } - console.log('鉁� 璁剧疆鏄剧ず鐢ㄦ埛淇℃伅:', displayUserInfo) + // 澶勭悊鐢熸棩淇℃伅 + if (userInfo.birthday || userInfo.birthDate) { + displayUserInfo.birthDate = userInfo.birthday || userInfo.birthDate + console.log('馃巶 鍙戠幇鐢熸棩瀛楁:', displayUserInfo.birthDate) + } + this.setData({ - userInfo: displayUserInfo + displayUserInfo: displayUserInfo }) + + console.log('鉁� 鏈�缁� displayUserInfo:', JSON.stringify(displayUserInfo, null, 2)) } else { console.log('鈿狅笍 鏈壘鍒扮敤鎴蜂俊鎭�') } @@ -271,6 +301,7 @@ // 棰勫~鍏呯敤鎴蜂俊鎭� prefillUserInfo() { + const app = getApp() const userInfo = app.globalData.userInfo console.log('馃攳 棰勫~鍏呯敤鎴蜂俊鎭�:', userInfo) @@ -279,32 +310,39 @@ 'formData.name': userInfo.name || '', 'formData.phone': userInfo.phone || '', 'formData.email': userInfo.email || '', - 'formData.avatarUrl': userInfo.avatarUrl || '' + 'formData.avatarUrl': userInfo.avatar || userInfo.avatarUrl || '' } - // 濡傛灉鐢ㄦ埛鏈塒layer淇℃伅锛屼紭鍏堜娇鐢≒layer鐨勮缁嗕俊鎭� - if (userInfo.player) { - console.log('馃搵 浣跨敤Player淇℃伅棰勫~鍏�:', userInfo.player) - updateData['formData.name'] = userInfo.player.name || userInfo.name || '' - updateData['formData.phone'] = userInfo.player.phone || userInfo.phone || '' - updateData['formData.avatarUrl'] = userInfo.avatarUrl || '' - - // 澶勭悊鎬у埆淇℃伅锛�0=鐢凤紝1=濂� - if (userInfo.player.gender !== undefined && userInfo.player.gender !== null) { - const genderIndex = parseInt(userInfo.player.gender) - if (genderIndex === 0 || genderIndex === 1) { - updateData['formData.gender'] = genderIndex - updateData['genderIndex'] = genderIndex - console.log('馃懁 璁剧疆鎬у埆:', genderIndex === 0 ? '鐢�' : '濂�') - } + // 澶勭悊鎬у埆淇℃伅 - 鐩存帴浠巙serInfo鑾峰彇 + if (userInfo.gender !== undefined && userInfo.gender !== null) { + let genderValue, genderIndex + // 濡傛灉鏄瓧绗︿覆鏍煎紡锛岃浆鎹负鏁板瓧 + if (typeof userInfo.gender === 'string') { + genderValue = userInfo.gender === 'MALE' ? 1 : 0 // 淇锛歁ALE=1(鐢�), FEMALE=0(濂�) + genderIndex = userInfo.gender === 'MALE' ? 0 : 1 // 鐣岄潰绱㈠紩锛�0=鐢凤紝1=濂� + } else { + genderValue = parseInt(userInfo.gender) + genderIndex = genderValue === 1 ? 0 : 1 // 鏁版嵁搴撳��1(鐢�)->鐣岄潰绱㈠紩0锛屾暟鎹簱鍊�0(濂�)->鐣岄潰绱㈠紩1 } + updateData['formData.gender'] = genderValue + updateData['genderIndex'] = genderIndex + console.log('馃懁 璁剧疆鎬у埆:', genderValue === 1 ? '鐢�' : '濂�', '鐣岄潰绱㈠紩:', genderIndex) + } + + // 澶勭悊鐢熸棩淇℃伅 - 鐩存帴浠巙serInfo鑾峰彇 + if (userInfo.birthday || userInfo.birthDate) { + const birthDate = userInfo.birthday || userInfo.birthDate + updateData['formData.birthDate'] = birthDate + console.log('馃巶 璁剧疆鐢熸棩:', birthDate) } console.log('鉁� 棰勫~鍏呮暟鎹�:', updateData) console.log('馃柤锔� 璁剧疆澶村儚URL:', updateData['formData.avatarUrl']) + this.setData(updateData) + console.log('鉁� 鐢ㄦ埛淇℃伅棰勫~鍏呭畬鎴�') } else { - console.log('鈿狅笍 鏈壘鍒扮敤鎴蜂俊鎭紝鏃犳硶棰勫~鍏�') + console.log('鈿狅笍 鏈壘鍒扮敤鎴蜂俊鎭紝璺宠繃棰勫~鍏�') } }, @@ -341,9 +379,11 @@ // 鎬у埆閫夋嫨 onGenderChange(e) { const index = e.detail.value + // 淇鎬у埆鏄犲皠锛歡enderOptions[0]='鐢�' 搴旇瀵瑰簲鏁版嵁搴撳��1锛実enderOptions[1]='濂�' 搴旇瀵瑰簲鏁版嵁搴撳��0 + const genderValue = index === 0 ? 1 : 0 // 0(鐢�) -> 1, 1(濂�) -> 0 this.setData({ genderIndex: index, - 'formData.gender': index + 'formData.gender': genderValue }) }, -- Gitblit v1.8.0