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