Jelajahi Sumber

fix: 健康/成长页不传memberId + 后端自动解析当前用户memberId JwtInterceptor对所有角色设置currentMemberId/familyMemberId

liaoxg 2 bulan lalu
induk
melakukan
a092d42457

+ 5 - 4
cfc-backend/src/main/java/com/etotem/cfc/config/JwtInterceptor.java

@@ -144,10 +144,10 @@ public class JwtInterceptor implements HandlerInterceptor {
                 request.setAttribute("familyId", null);
             }
 
-            // 设置currentMemberId:child角色自动从family_member表查找
-            if ("child".equals(role) && request.getAttribute("familyId") != null) {
+            // 设置currentMemberId和familyMemberId:从family_member表查找当前用户对应的家庭成员
+            Long familyId = (Long) request.getAttribute("familyId");
+            if (familyId != null) {
                 try {
-                    Long familyId = (Long) request.getAttribute("familyId");
                     FamilyMember member = familyMemberMapper.selectOne(
                         new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<FamilyMember>()
                             .eq(FamilyMember::getUserId, userId)
@@ -156,9 +156,10 @@ public class JwtInterceptor implements HandlerInterceptor {
                     );
                     if (member != null) {
                         request.setAttribute("currentMemberId", member.getId());
+                        request.setAttribute("familyMemberId", member.getId());
                     }
                 } catch (Exception e) {
-                    log.warn("查询child对应family_member失败: userId={}, error={}", userId, e.getMessage());
+                    log.warn("查询用户对应family_member失败: userId={}, error={}", userId, e.getMessage());
                 }
             }
 

+ 5 - 6
cfc-frontend/pages/growth-main/index.vue

@@ -143,7 +143,6 @@ export default {
     loadTrackingData: function(key) { return this.trackingData[key] || [] },
     async loadAllData() {
       var self = this
-      if (!self.memberId) return
       try { await self.loadProgressItems() } catch(e) {}
       try { await self.loadSurveyData() } catch(e) {}
       try { await self.loadMilestones() } catch(e) {}
@@ -154,7 +153,7 @@ export default {
       // 今日打卡
       var checkinDone = false
       try {
-        var ciRes = await healthCheckinList({ memberId: self.memberId, yearMonth: self.todayDate.substring(0, 7) })
+        var ciRes = await healthCheckinList({ yearMonth: self.todayDate.substring(0, 7) })
         if (ciRes.code === 200 && ciRes.data) {
           for (var ci = 0; ci < ciRes.data.length; ci++) { if (ciRes.data[ci] && ciRes.data[ci].checkinDate && ciRes.data[ci].checkinDate.substring(0, 10) === self.todayDate) { checkinDone = true; break } }
         }
@@ -163,7 +162,7 @@ export default {
       // 饮食
       var dietDone = false
       try {
-        var dRes = await getDietDailyRecords({ memberId: self.memberId, date: self.todayDate })
+        var dRes = await getDietDailyRecords({ date: self.todayDate })
         if (dRes.code === 200 && dRes.data && dRes.data.length > 0) dietDone = true
       } catch(e) {}
       items.push({ key: 'diet', icon: '🍽️', label: '饮食记录', done: dietDone, actionText: '补录' })
@@ -178,7 +177,7 @@ export default {
     async loadSurveyData() {
       var self = this
       try {
-        var statusRes = await getSurveyStatus({ memberId: self.memberId })
+        var statusRes = await getSurveyStatus({})
         if (statusRes.code === 200 && statusRes.data) {
           var list = statusRes.data
           self.pendingSurvey = null; self.allDone = true; var hasAny = false
@@ -187,7 +186,7 @@ export default {
         }
       } catch(e) {}
       try {
-        var histRes = await getSurveyHistory({ memberId: self.memberId })
+        var histRes = await getSurveyHistory({})
         if (histRes.code === 200 && histRes.data) {
           var hlist = histRes.data; self.surveyHistory = []
           for (var hi = 0; hi < Math.min(hlist.length, 3); hi++) { var h = hlist[hi]; self.surveyHistory.push({ _date: h && h.submittedAt ? h.submittedAt.substring(0, 10) : '', _content: '已完成调研' }) }
@@ -197,7 +196,7 @@ export default {
     async loadMilestones() {
       var self = this
       try {
-        var ciRes = await healthCheckinList({ memberId: self.memberId })
+        var ciRes = await healthCheckinList({})
         if (ciRes.code === 200 && ciRes.data) self.streakDays = Math.min(ciRes.data.length, 30)
       } catch(e) {}
       self.activeChallenges = 0

+ 1 - 2
cfc-frontend/pages/health-main/index.vue

@@ -203,8 +203,7 @@ export default {
       var self = this
       try {
         var api = require('../../utils/api.js')
-        if (!self.selectedMemberId) return
-        api.getReportList(self.selectedMemberId).then(function(res) {
+        api.getReportList().then(function(res) {
           if (res.code === 200 && res.data) {
             var list = Array.isArray(res.data) ? res.data : (res.data.list || [])
             self.reports = list