|
@@ -20,6 +20,7 @@ import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
+import java.util.Set;
|
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
@@ -977,6 +978,21 @@ public class MembershipService implements MembershipServiceInterface {
|
|
|
log.info("新成员继承家庭会员: userId={}, familyId={}, level={}", userId, familyId, active.getLevelCode());
|
|
log.info("新成员继承家庭会员: userId={}, familyId={}, level={}", userId, familyId, active.getLevelCode());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 方案B:重新核算家庭会员身份(成员离开/切换家庭/回收时调用)
|
|
|
|
|
+ * - 家庭有有效会员 → 同步给所有成员
|
|
|
|
|
+ * - 家庭无有效会员 → 全家降级 FREE
|
|
|
|
|
+ */
|
|
|
|
|
+ public void reconcileFamilyMembership(Long familyId) {
|
|
|
|
|
+ if (familyId == null) return;
|
|
|
|
|
+ FamilyMembership active = getActiveFamilyMembership(familyId);
|
|
|
|
|
+ if (active != null) {
|
|
|
|
|
+ syncMembershipToFamilyMembers(familyId, active.getLevelCode(), active.getEndDate(), "reconcile", null);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ downgradeFamilyMembers(familyId);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// ==================== 会员升级与过期 ====================
|
|
// ==================== 会员升级与过期 ====================
|
|
|
|
|
|
|
|
/**
|
|
/**
|