|
|
@@ -979,7 +979,8 @@ public class MembershipService implements MembershipServiceInterface {
|
|
|
// ==================== 会员升级与过期 ====================
|
|
|
|
|
|
/**
|
|
|
- * 将用户升级为FAMILY会员
|
|
|
+ * 将用户升级为FAMILY会员(消费达标自动升级)
|
|
|
+ * 方案B:升级全家
|
|
|
*/
|
|
|
public void upgradeToFamily(Long userId, String upgradeType, Long orderId) {
|
|
|
User user = userMapper.selectById(userId);
|
|
|
@@ -987,23 +988,18 @@ public class MembershipService implements MembershipServiceInterface {
|
|
|
throw new IllegalArgumentException("用户不存在");
|
|
|
}
|
|
|
|
|
|
+ Long familyId = user.getFamilyId();
|
|
|
+ if (familyId == null) {
|
|
|
+ log.warn("upgradeToFamily: 用户无家庭, userId={}", userId);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
String fromLevel = user.getMemberLevel() != null ? user.getMemberLevel() : "FREE";
|
|
|
|
|
|
Date expireTime = new Date(System.currentTimeMillis() + 365L * 24 * 60 * 60 * 1000);
|
|
|
- user.setMemberLevel("FAMILY");
|
|
|
- user.setMemberExpireTime(expireTime);
|
|
|
- user.setUpdatedAt(new Date());
|
|
|
- userMapper.updateById(user);
|
|
|
-
|
|
|
- MemberUpgradeRecord record = new MemberUpgradeRecord();
|
|
|
- record.setUserId(userId);
|
|
|
- record.setFromLevel(fromLevel);
|
|
|
- record.setToLevel("FAMILY");
|
|
|
- record.setUpgradeType(upgradeType);
|
|
|
- record.setOrderId(orderId);
|
|
|
- record.setExpireTime(expireTime);
|
|
|
- record.setCreatedAt(new Date());
|
|
|
- memberUpgradeRecordMapper.insert(record);
|
|
|
+ // 方案B:全家同步会员身份
|
|
|
+ syncMembershipToFamilyMembers(familyId, "FAMILY", expireTime, upgradeType, orderId);
|
|
|
+ log.info("消费达标自动升级全家: familyId={}, triggerUserId={}", familyId, userId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1082,6 +1078,7 @@ public class MembershipService implements MembershipServiceInterface {
|
|
|
|
|
|
/**
|
|
|
* 使会员过期(降级为FREE)
|
|
|
+ * 方案B:若用户有家庭,同步降级全家
|
|
|
*/
|
|
|
public void expireMember(Long userId) {
|
|
|
User user = userMapper.selectById(userId);
|
|
|
@@ -1092,10 +1089,15 @@ public class MembershipService implements MembershipServiceInterface {
|
|
|
if ("FAMILY".equals(user.getMemberLevel())
|
|
|
&& user.getMemberExpireTime() != null
|
|
|
&& user.getMemberExpireTime().before(new Date())) {
|
|
|
- user.setMemberLevel("FREE");
|
|
|
- user.setMemberExpireTime(null);
|
|
|
- user.setUpdatedAt(new Date());
|
|
|
- userMapper.updateById(user);
|
|
|
+ // 方案B:家庭成员共享会员,到期时全家降级
|
|
|
+ if (user.getFamilyId() != null) {
|
|
|
+ downgradeFamilyMembers(user.getFamilyId());
|
|
|
+ } else {
|
|
|
+ user.setMemberLevel("FREE");
|
|
|
+ user.setMemberExpireTime(null);
|
|
|
+ user.setUpdatedAt(new Date());
|
|
|
+ userMapper.updateById(user);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|