Przeglądaj źródła

chore: auto bump version and changelog [skip ci]

iwt 1 tydzień temu
rodzic
commit
6c087d00ca

+ 30 - 11
cfc-backend/src/main/java/com/etotem/cfc/service/MembershipService.java

@@ -1293,22 +1293,41 @@ public class MembershipService implements MembershipServiceInterface {
     }
 
     /**
-     * 降级已过期的FAMILY会员为FREE
-     * 由定时任务 daily 4:00AM 调用
+     * 降级已过期的FAMILY会员为FREE(由定时任务 daily 4:00AM 调用)
+     * 方案B:按家庭维度批量降级(避免单个成员过期导致全家降级遗漏)
      */
     public void downgradeExpiredMembers() {
-        List<User> familyUsers = userMapper.selectList(
-                new LambdaQueryWrapper<User>()
-                        .eq(User::getMemberLevel, "FAMILY")
-                        .isNotNull(User::getMemberExpireTime)
-                        .lt(User::getMemberExpireTime, new Date())
-        );
+        // 策略:按家庭维度处理 — 找到所有有过期会员的家庭,批量降级全家
+        List<FamilyMembership> expiredMemberships = membershipMapper.selectList(
+                new LambdaQueryWrapper<FamilyMembership>()
+                        .eq(FamilyMembership::getPaymentStatus, "paid")
+                        .lt(FamilyMembership::getEndDate, new Date()));
+
+        // 按 familyId 去重(同一家庭可能有多条过期记录)
+        Set<Long> expiredFamilyIds = new java.util.HashSet<>();
+        for (FamilyMembership m : expiredMemberships) {
+            if (m.getFamilyId() != null) {
+                expiredFamilyIds.add(m.getFamilyId());
+            }
+        }
 
-        for (User user : familyUsers) {
+        for (Long familyId : expiredFamilyIds) {
             try {
-                expireMember(user.getId());
+                // 方案B:检查该家庭是否还有其他有效会员
+                FamilyMembership active = getActiveFamilyMembership(familyId);
+                if (active == null) {
+                    // 无有效会员 → 全家降级
+                    downgradeFamilyMembers(familyId);
+                    log.info("定时降级: familyId={} 无有效会员,全家降级 FREE", familyId);
+                } else {
+                    // 还有有效会员,只需更新过期记录对应的管理员过期状态(统一通过 sync)
+                    // 方案B:重新同步到各成员的最新到期时间
+                    syncMembershipToFamilyMembers(familyId, active.getLevelCode(), active.getEndDate(),
+                            "periodic_sync", null);
+                    log.info("定时同步: familyId={} 保留有效会员 {} 至 {}", familyId, active.getLevelCode(), active.getEndDate());
+                }
             } catch (Exception e) {
-                // log error and continue
+                log.error("定时任务处理家庭会员过期失败: familyId={}", familyId, e);
             }
         }
     }

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-8fd64a255f4f4fa8eb6814e1e322f979292c2af1
+4915a7edd4a1205f47a4b98ce8af9a895e857ef6

+ 1 - 1
cfc-web/package.json

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

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

@@ -4,6 +4,15 @@
 
 ---
 
+## v1.0.1359 (2026-09-10)
+
+### 新功能
+- 戒备按报告查——报告详情入口传 reportId 返回该次检测戒备食材,foods 无数据回退 report_food_suitability
+
+### Bug 修复
+- 知识分享列表只显示一页——getPublicList total 误设为本页过滤条数,改为全量过滤后手动分页修正总数
+
+
 ## v1.0.1358 (2026-09-10)
 
 ### 文档

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

@@ -1,6 +1,6 @@
 # 更新日志
 
-> 当前版本: v1.0.1358
+> 当前版本: v1.0.1359
 
 ## 历史版本
 
@@ -8,6 +8,15 @@
 
 ---
 
+## v1.0.1359 (2026-09-10)
+
+### 新功能
+- 戒备按报告查——报告详情入口传 reportId 返回该次检测戒备食材,foods 无数据回退 report_food_suitability
+
+### Bug 修复
+- 知识分享列表只显示一页——getPublicList total 误设为本页过滤条数,改为全量过滤后手动分页修正总数
+
+
 ## v1.0.1358 (2026-09-10)
 
 ### 文档