Selaa lähdekoodia

fix: 修复已绑定推荐人重复提示与新用户信息补充页问题(boundInviteCode防重+新用户流程隐藏浠宝福宝选择+家庭身份选择回显)

liaoxg 1 viikko sitten
vanhempi
sitoutus
c26c7c9f66

+ 9 - 3
cfc-frontend/App.vue

@@ -68,12 +68,18 @@ export default {
         var bound = uni.getStorageSync('boundInviteCode')
         if (bound === code) return
         bindReferral(code).then(function(res) {
-          if (res && (res.code === 200 || res.code === 400)) {
+          if (res && res.code === 200) {
             uni.setStorageSync('boundInviteCode', code)
-            console.log('分享参数推荐人绑定结果', res.code, code)
+            console.log('分享参数推荐人绑定成功', code)
           }
         }).catch(function(e) {
-          console.log('分享参数推荐人绑定失败', e)
+          // 后端已绑定(code=500 message=已绑定推荐人)→ 记录防重,避免每次冷/热启动重复请求/重复提示
+          if (e && e.code !== undefined && e.code !== 401) {
+            uni.setStorageSync('boundInviteCode', code)
+            console.log('分享参数推荐人绑定失败(业务拒绝,已防重)', code, e.message || '')
+          } else {
+            console.log('分享参数推荐人绑定失败(网络/登录态)', e)
+          }
         })
         return
       }

+ 7 - 5
cfc-frontend/components/share-mixin.js

@@ -68,13 +68,15 @@ export default {
         if (res && res.code === 200) {
           uni.setStorageSync('boundInviteCode', code)
           console.log('邀请码绑定成功', code)
-        } else if (res && res.code === 400) {
-          // 后端返回 400 表示已有邀请人,记录此 code 避免重复请求
-          uni.setStorageSync('boundInviteCode', code)
-          console.log('用户已有邀请人,跳过绑定', code)
         }
       } catch (e) {
-        console.log('邀请码绑定失败', e)
+        // 后端已绑定(code=500 message=已绑定推荐人)→ 记录防重,避免每次进入重复请求/重复提示
+        if (e && e.code !== undefined && e.code !== 401) {
+          uni.setStorageSync('boundInviteCode', code)
+          console.log('邀请码绑定失败(业务拒绝,已防重)', code, e.message || '')
+        } else {
+          console.log('邀请码绑定失败(网络/登录态)', e)
+        }
       }
     },
 

+ 6 - 3
cfc-frontend/pages/login/login.vue

@@ -195,11 +195,14 @@ export default {
         var res = await bindReferral(inviteCode)
         if (res && res.code === 200) {
           console.log('登录后绑定邀请码成功', inviteCode)
-        } else if (res && res.code === 400) {
-          console.log('用户已有邀请人,跳过绑定')
         }
       } catch (e) {
-        console.log('邀请码绑定失败', e)
+        // 后端 Result.error(code=500) → request() 已 toast「已绑定推荐人,不可修改」等业务消息
+        if (e && e.code !== undefined && e.code !== 401) {
+          console.log('登录后邀请码业务拒绝', inviteCode, e.message || '')
+        } else {
+          console.log('登录后邀请码绑定失败', e)
+        }
       }
       uni.removeStorageSync('inviteCode')
       uni.removeStorageSync('inviteType')

+ 11 - 5
cfc-frontend/pages/user-edit/user-edit.vue

@@ -199,8 +199,8 @@
 			</view>
 		</view>
 
-		<!-- 助手选择(会员专属) -->
-		<view class="family-section" v-if="isEdit && memberLevel !== 'FREE'">
+		<!-- 助手选择(会员专属;新用户流程不展示,避免注册时被助手选择打扰) -->
+		<view class="family-section" v-if="isEdit && !isNewUserFlow && memberLevel !== 'FREE'">
 			<view class="section-title">🤖 选择助手</view>
 			<view class="mascot-cards">
 				<view class="mascot-card" :class="{ active: form.mascot === 'xibao' }" @click="selectMascot('xibao')">
@@ -535,6 +535,9 @@ export default {
 		onMaritalChange(e) {
 			this.form.maritalStatus = this.maritalOptions[e.detail.value]
 		},
+		onFamilyRoleChange(e) {
+			this.form.familyRole = this.familyRoleOptions[e.detail.value] || ''
+		},
 	selectMascot(code) {
 		this.form.mascot = code
 	},
@@ -942,11 +945,14 @@ export default {
 				bindReferral(inviteCode).then(function(res) {
 					if (res && res.code === 200) {
 						console.log('新用户绑定推荐人成功', inviteCode)
-					} else if (res && res.code === 400) {
-						console.log('用户已有推荐人,跳过绑定')
 					}
 				}).catch(function(e) {
-					console.log('新用户绑定推荐人失败', e)
+					// 后端 Result.error(code=500) → request() 已 toast 业务消息
+					if (e && e.code !== undefined && e.code !== 401) {
+						console.log('新用户绑定推荐人业务拒绝', inviteCode, e.message || '')
+					} else {
+						console.log('新用户绑定推荐人失败', e)
+					}
 				})
 			}
 			uni.removeStorageSync('inviteCode')