Browse Source

chore: auto bump version and changelog [skip ci]

iwt 3 months ago
parent
commit
04246c82f1

+ 6 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/UserService.java

@@ -663,6 +663,10 @@ private FamilyInvitationService familyInvitationService;
         Long familyId = user.getFamilyId();
         Long familyId = user.getFamilyId();
         List<FamilyMemberVO> result = new ArrayList<>();
         List<FamilyMemberVO> result = new ArrayList<>();
 
 
+        Family family = familyMapper.selectById(familyId);
+        Long creatorId = (family != null) ? family.getCreatorId() : null;
+        boolean isAdmin = creatorId != null && creatorId.equals(userId);
+
         // 家长:show_to_family=1 的同家庭家长
         // 家长:show_to_family=1 的同家庭家长
         List<User> parents = userMapper.selectList(new LambdaQueryWrapper<User>()
         List<User> parents = userMapper.selectList(new LambdaQueryWrapper<User>()
                 .eq(User::getFamilyId, familyId)
                 .eq(User::getFamilyId, familyId)
@@ -678,6 +682,7 @@ private FamilyInvitationService familyInvitationService;
                 vo.setRoleLabel(p.getFamilyRole() != null ? p.getFamilyRole() : "家长");
                 vo.setRoleLabel(p.getFamilyRole() != null ? p.getFamilyRole() : "家长");
                 vo.setTotalPoints(p.getTotalPoints());
                 vo.setTotalPoints(p.getTotalPoints());
                 vo.setShowToFamily(p.getShowToFamily() != null ? p.getShowToFamily() : 1);
                 vo.setShowToFamily(p.getShowToFamily() != null ? p.getShowToFamily() : 1);
+                vo.setIsAdmin(isAdmin);
                 result.add(vo);
                 result.add(vo);
             }
             }
         }
         }
@@ -696,6 +701,7 @@ private FamilyInvitationService familyInvitationService;
                 vo.setRoleLabel("孩子");
                 vo.setRoleLabel("孩子");
                 vo.setTotalPoints(c.getTotalPoints());
                 vo.setTotalPoints(c.getTotalPoints());
                 vo.setShowToFamily(c.getShowToFamily() != null ? c.getShowToFamily() : 1);
                 vo.setShowToFamily(c.getShowToFamily() != null ? c.getShowToFamily() : 1);
+                vo.setIsAdmin(isAdmin);
                 result.add(vo);
                 result.add(vo);
             }
             }
         }
         }

+ 5 - 2
cfc-frontend/pages/home-pages/parent-index.vue

@@ -14,7 +14,9 @@
   v-if="isLoggedIn"
   v-if="isLoggedIn"
   :members="familyMembersVisible"
   :members="familyMembersVisible"
   :selectedMemberId="selectedMemberId"
   :selectedMemberId="selectedMemberId"
-  @select="onFamilyMemberSelect" />
+  :isParent="isFamilyAdmin"
+  @select="onFamilyMemberSelect"
+  @switch="onFamilyMemberSwitch" />
 
 
 <!-- ===== 微行动卡片(P0:有效启动) ===== -->
 <!-- ===== 微行动卡片(P0:有效启动) ===== -->
 <MicroActionCard
 <MicroActionCard
@@ -422,7 +424,8 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import { getFamilyMembers, getChildren, getPendingReviewTasks, getPendingWishes, approveTask, rejectTask, getChildCompletionStats, getParentDashboard, getFamilyEnergySandbox, getEnergyOverview, getVisibleFamilyMembers, getActivityList, getProductsByDomain, getContactList, getFeaturedArticles, getActiveAlerts, dismissAlert, getFamilyRanking, getChallengeList, getCircleRanking, getInviteQrCode } from '../../utils/api.js'
+import { getFamilyMembers, getChildren, getPendingReviewTasks, getPendingWishes, approveTask, rejectTask, getChildCompletionStats, getParentDashboard, getFamilyEnergySandbox, getEnergyOverview, getVisibleFamilyMembers, getActivityList, getProductsByDomain, getContactList, getFeaturedArticles, getActiveAlerts, dismissAlert, getFamilyRanking, getChallengeList, getCircleRanking, getInviteQrCode, switchToFamilyMember } from '../../utils/api.js'
+import store from '../../store/index.js'
 import PageBanner from '../../components/PageBanner.vue'
 import PageBanner from '../../components/PageBanner.vue'
 import PlayfulCard from '../../components/PlayfulCard.vue'
 import PlayfulCard from '../../components/PlayfulCard.vue'
 import PlayfulButton from '../../components/PlayfulButton.vue'
 import PlayfulButton from '../../components/PlayfulButton.vue'

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

@@ -68,7 +68,9 @@
     <FamilyMemberStrip
     <FamilyMemberStrip
       :members="familyMembersVisible"
       :members="familyMembersVisible"
       :selectedMemberId="selectedMemberId"
       :selectedMemberId="selectedMemberId"
-      @select="onFamilyMemberSelect" />
+      :isParent="isFamilyAdmin"
+      @select="onFamilyMemberSelect"
+      @switch="onFamilyMemberSwitch" />
 
 
     <!-- 五维能量条 -->
     <!-- 五维能量条 -->
     <FamilyEnergyBar
     <FamilyEnergyBar
@@ -351,7 +353,8 @@ import CircleCard from '../../components/CircleCard.vue'
 import CircleDetail from '../../components/CircleDetail.vue'
 import CircleDetail from '../../components/CircleDetail.vue'
 import LoginGuideCard from '../../components/LoginGuideCard.vue'
 import LoginGuideCard from '../../components/LoginGuideCard.vue'
 import FamilyChallengeCard from '../../components/FamilyChallengeCard.vue'
 import FamilyChallengeCard from '../../components/FamilyChallengeCard.vue'
-import { acceptParentInvite, productList, getActivityList, getFeaturedArticles, getFamilyEnergySandbox, getVisibleFamilyMembers, getTodayTasksByCategory, getChildren, getEnergyOverview, getProductsByDomain, getChallengeList, getMyCircles, discoverCircles, joinGeneralCircle, leaveGeneralCircle } from '../../utils/api.js'
+import { acceptParentInvite, productList, getActivityList, getFeaturedArticles, getFamilyEnergySandbox, getVisibleFamilyMembers, getTodayTasksByCategory, getChildren, getEnergyOverview, getProductsByDomain, getChallengeList, getMyCircles, discoverCircles, joinGeneralCircle, leaveGeneralCircle, switchToFamilyMember } from '../../utils/api.js'
+import store from '../../store/index.js'
 import config from '@/config.js'
 import config from '@/config.js'
 
 
 var DIMENSIONS = [
 var DIMENSIONS = [
@@ -446,6 +449,10 @@ export default {
     }
     }
   },
   },
   computed: {
   computed: {
+    isFamilyAdmin: function() {
+      if (!this.familyMembersVisible || this.familyMembersVisible.length === 0) return false
+      return this.familyMembersVisible[0].isAdmin === true
+    },
     sandboxScores: function() {
     sandboxScores: function() {
       var d = this.sandboxData || {}
       var d = this.sandboxData || {}
       return {
       return {
@@ -732,6 +739,26 @@ export default {
     onFamilyMemberSelect: function(member) {
     onFamilyMemberSelect: function(member) {
       this.selectedMemberId = member.id
       this.selectedMemberId = member.id
     },
     },
+    onFamilyMemberSwitch: function(member) {
+      var self = this
+      if (!member || !member.id) return
+      switchToFamilyMember(member.id, member.source || 'family_member').then(function(res) {
+        if (res.code === 200 && res.data) {
+          store.commit('switchToMember', {
+            memberId: res.data.memberId,
+            effectiveRole: res.data.effectiveRole
+          })
+          uni.showToast({ title: '已切换到' + (member.nickname || '该成员'), icon: 'success' })
+          setTimeout(function() {
+            uni.reLaunch({ url: '/pages/index-home/index' })
+          }, 1000)
+        } else {
+          uni.showToast({ title: res.message || '切换失败', icon: 'none' })
+        }
+      }).catch(function() {
+        uni.showToast({ title: '切换失败', icon: 'none' })
+      })
+    },
     onTaskClick: function(task) {
     onTaskClick: function(task) {
       uni.navigateTo({ url: '/pages/tasks/tasks' })
       uni.navigateTo({ url: '/pages/tasks/tasks' })
     },
     },

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-3e74644ffb31b87e2fbaa436a13bfa7f8c7393bd
+3d966cb8b65d2d399f440f2c7de578b3747840a2

+ 1 - 1
cfc-web/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "cfc-web",
   "name": "cfc-web",
-  "version": "1.0.745",
+  "version": "1.0.746",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {
     "dev": "vue-cli-service serve",
     "dev": "vue-cli-service serve",

+ 14 - 0
cfc-web/public/CHANGELOG-v1.0.md

@@ -4,6 +4,20 @@
 
 
 ---
 ---
 
 
+## v1.0.746 (2026-08-03)
+
+### 重构
+- 移除死页面 plans.vue,权益对比保留在 upgrade 页
+
+### 其他
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+
+### Bug 修复
+- 开通会员页改用 getMembershipPlans 获取实际配置价格
+
+
 ## v1.0.745 (2026-08-03)
 ## v1.0.745 (2026-08-03)
 
 
 ### Bug 修复
 ### Bug 修复

+ 15 - 1
cfc-web/public/CHANGELOG.md

@@ -1,6 +1,6 @@
 # 更新日志
 # 更新日志
 
 
-> 当前版本: v1.0.745
+> 当前版本: v1.0.746
 
 
 ## 历史版本
 ## 历史版本
 
 
@@ -8,6 +8,20 @@
 
 
 ---
 ---
 
 
+## v1.0.746 (2026-08-03)
+
+### 重构
+- 移除死页面 plans.vue,权益对比保留在 upgrade 页
+
+### 其他
+- 
+- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
+- 
+
+### Bug 修复
+- 开通会员页改用 getMembershipPlans 获取实际配置价格
+
+
 ## v1.0.745 (2026-08-03)
 ## v1.0.745 (2026-08-03)
 
 
 ### Bug 修复
 ### Bug 修复