Răsfoiți Sursa

fix(share): 修复邀请码解析失败导致分享推荐人无法绑定

后端 /api/invite/code 返回 Result<String>(data 为纯字符串邀请码),
前端 7 处却按对象取 res.data.referralCode/code,恒为空导致分享 path
拼不出 inviteCode,新用户打开无码注册后无推荐人。新增
extractReferralCode 统一解析(兼容字符串/对象),并修正 share-mixin
默认分享 path 死路径 /pages/index/index -> /pages/index-home/index。
liaoxg 1 lună în urmă
părinte
comite
08987586b3

+ 3 - 5
cfc-frontend/components/ProfileMenu.vue

@@ -110,7 +110,7 @@
 </template>
 
 <script>
-import { setPassword, verifyPassword, updateMemberVisibility, getFamilyMemberList, vendorStatus, ensureFamily, getReferralCode } from '../utils/api.js'
+import { setPassword, verifyPassword, updateMemberVisibility, getFamilyMemberList, vendorStatus, ensureFamily, getReferralCode, extractReferralCode } from '../utils/api.js'
 
 export default {
   name: 'ProfileMenu',
@@ -149,10 +149,8 @@ export default {
     async loadReferralCode() {
       if (this.referralCodeLoaded || !uni.getStorageSync('token')) return
       try {
-        var res = await getReferralCode()
-        if (res && res.code === 200 && res.data) {
-          this.referralCode = res.data.referralCode || res.data.code || ''
-        }
+var res = await getReferralCode()
+      this.referralCode = extractReferralCode(res)
       } catch (e) {}
       this.referralCodeLoaded = true
     },

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

@@ -7,7 +7,7 @@
  *   mounted/after data load:
  *     this.setShareInfo('推荐阅读: ' + title, '/pages/article-center/article-detail?id=' + id)
  */
-import { getReferralCode, bindReferral } from '../utils/api.js'
+import { getReferralCode, bindReferral, extractReferralCode } from '../utils/api.js'
 
 export default {
   data() {
@@ -42,9 +42,7 @@ export default {
       if (!uni.getStorageSync('token')) return
       try {
         var res = await getReferralCode()
-        if (res && res.code === 200 && res.data) {
-          this.referralCode = res.data.referralCode || res.data.code || ''
-        }
+        this.referralCode = extractReferralCode(res)
       } catch (e) {
         console.log('获取邀请码失败', e)
       }
@@ -103,7 +101,7 @@ export default {
     if (!this.shareTitle || !this.sharePath) {
       return {
         title: '浠艾福 — 给全家的一站式幸福提案',
-        path: '/pages/index/index'
+        path: '/pages/index-home/index'
       }
     }
     return {

+ 2 - 4
cfc-frontend/pages/index-home/index.vue

@@ -414,7 +414,7 @@ import ArticleBookshelf from '../../components/ArticleBookshelf.vue'
 import FamilyChallengeCard from '../../components/FamilyChallengeCard.vue'
 import DailyTaskCard from '../../components/daily-task-card.vue'
 import ReportUploadCard from '../../components/report-upload-card.vue'
-import { acceptParentInvite, getActivityList, getFeaturedArticles, getEnergySandbox, getEnergyOverview, getFamilyMemberList, getChallengeList, switchToFamilyMember, getMyMembership, updateChallengeProgress, respondChallenge, getTodayTasks, completeTask as completeTaskApi, getTodayParentTasks, completeParentTask as completeParentTaskApi, getTaskHistory, getNotices, getNotificationList, getSurveyStatus, getSelfCheckStatus, getReferralCode } from '../../utils/api.js'
+import { acceptParentInvite, getActivityList, getFeaturedArticles, getEnergySandbox, getEnergyOverview, getFamilyMemberList, getChallengeList, switchToFamilyMember, getMyMembership, updateChallengeProgress, respondChallenge, getTodayTasks, completeTask as completeTaskApi, getTodayParentTasks, completeParentTask as completeParentTaskApi, getTaskHistory, getNotices, getNotificationList, getSurveyStatus, getSelfCheckStatus, getReferralCode, extractReferralCode } from '../../utils/api.js'
 import nav from '../../utils/nav.js'
 import config from '@/config.js'
 import { parseDate } from '../../utils/format.js'
@@ -1332,9 +1332,7 @@ membershipDays: 0,
       if (this.referralCodeLoaded || !this.isLoggedIn()) return
       var self = this
       getReferralCode().then(function(res) {
-        if (res && res.code === 200 && res.data) {
-          self.referralCode = res.data.referralCode || res.data.code || ''
-        }
+        self.referralCode = extractReferralCode(res)
       }).catch(function() {})
       self.referralCodeLoaded = true
     },

+ 2 - 4
cfc-frontend/pages/profile/index.vue

@@ -21,7 +21,7 @@
 <script>
 import ProfileHeader from '../../components/ProfileHeader.vue'
 import ProfileMenu from '../../components/ProfileMenu.vue'
-import { getReferralCode } from '../../utils/api.js'
+import { getReferralCode, extractReferralCode } from '../../utils/api.js'
 
 export default {
   components: {
@@ -90,9 +90,7 @@ export default {
       if (this.referralCodeLoaded || !this.isLoggedIn) return
       try {
         var res = await getReferralCode()
-        if (res && res.code === 200 && res.data) {
-          this.referralCode = res.data.referralCode || res.data.code || ''
-        }
+        this.referralCode = extractReferralCode(res)
       } catch (e) {}
       this.referralCodeLoaded = true
     },

+ 3 - 5
cfc-frontend/pages/profile/report-detail.vue

@@ -32,7 +32,7 @@
 </template>
 
 <script>
-import { getReportSummaryDetail, downloadReportSummary, getReferralCode } from '../../utils/api.js'
+import { getReportSummaryDetail, downloadReportSummary, getReferralCode, extractReferralCode } from '../../utils/api.js'
 
 export default {
   data() {
@@ -75,10 +75,8 @@ export default {
     async loadReferralCode() {
       if (this.referralCodeLoaded || !uni.getStorageSync('token')) return
       try {
-        var res = await getReferralCode()
-        if (res && res.code === 200 && res.data) {
-          this.referralCode = res.data.referralCode || res.data.code || ''
-        }
+var res = await getReferralCode()
+      this.referralCode = extractReferralCode(res)
       } catch (e) {}
       this.referralCodeLoaded = true
     },

+ 2 - 4
cfc-frontend/pages/promotion/index.vue

@@ -206,7 +206,7 @@
 </template>
 
 <script>
-import { getReferralSummary, getCfSummary, getFamilyEarningsSummary, getFamilyEarningsMembers, getFamilyEarningsRecords, distributeToMember, toggleMemberBalance, withdrawFamilyEarnings, getInviteQrCode, getFamilyMemberList, getReferralCode } from '../../utils/api.js'
+import { getReferralSummary, getCfSummary, getFamilyEarningsSummary, getFamilyEarningsMembers, getFamilyEarningsRecords, distributeToMember, toggleMemberBalance, withdrawFamilyEarnings, getInviteQrCode, getFamilyMemberList, getReferralCode, extractReferralCode } from '../../utils/api.js'
 import SharePoster from '@/components/SharePoster.vue'
 
 export default {
@@ -298,9 +298,7 @@ export default {
       if (this.shareReferralCode) return
       try {
         var codeRes = await getReferralCode()
-        if (codeRes && codeRes.data) {
-          this.shareReferralCode = codeRes.data.referralCode || codeRes.data.code || ''
-        }
+        this.shareReferralCode = extractReferralCode(codeRes)
       } catch (e) {}
     },
     async loadData() {

+ 3 - 5
cfc-frontend/pages/promotion/invite.vue

@@ -89,7 +89,7 @@
 </template>
 
 <script>
-import { getReferralCode, bindReferral, getReferralList, getReferralSummary, getInviteQrCode, getInviteMilestones, claimInviteMilestone } from '../../utils/api.js'
+import { getReferralCode, bindReferral, getReferralList, getReferralSummary, getInviteQrCode, getInviteMilestones, claimInviteMilestone, extractReferralCode } from '../../utils/api.js'
 import SharePoster from '@/components/SharePoster.vue'
 import { parseDate } from '../../utils/format.js'
 
@@ -152,10 +152,8 @@ export default {
   methods: {
     async loadCode() {
       try {
-        const res = await getReferralCode()
-        if (res.data) {
-          this.referralCode = res.data.referralCode || res.data.code || ''
-        }
+const res = await getReferralCode()
+      this.referralCode = extractReferralCode(res)
       } catch (e) {
         console.error('获取邀请码失败', e)
       }

+ 3 - 4
cfc-frontend/pages/wealth/index.vue

@@ -250,7 +250,8 @@ import {
   getInsuranceList,
   getFamilyEnergySandbox,
   getEnergyOverview,
-  productList
+  productList,
+  extractReferralCode
 } from '../../utils/api.js'
 import nav from '../../utils/nav.js'
 import config from '../../config.js'
@@ -529,9 +530,7 @@ export default {
       if (this.role !== 'parent') return
       try {
         var codeRes = await getReferralCode()
-        if (codeRes && codeRes.code === 200 && codeRes.data) {
-          this.wealthData.referralCode = codeRes.data.code || codeRes.data || ''
-        }
+          this.wealthData.referralCode = extractReferralCode(codeRes)
       } catch (e) {
         console.error('获取邀请码失败', e)
       }

+ 9 - 0
cfc-frontend/utils/api.js

@@ -1651,6 +1651,15 @@ export const getReferralCode = () => {
   return request('/api/invite/code', 'POST')
 }
 
+// 解析 Result 中的邀请码:后端 /api/invite/code 返回 Result<String>(data 为纯字符串邀请码),
+// 兼容历史对象结构 { referralCode | code };解析失败返回 ''
+export const extractReferralCode = (res) => {
+  if (!res || !res.data) return ''
+  var data = res.data
+  if (typeof data === 'string') return data
+  return data.referralCode || data.code || ''
+}
+
 // 获取邀请二维码
 export const getInviteQrCode = () => {
   return request('/api/invite/qrcode', 'POST')