Просмотр исходного кода

fix(backend): 创建家庭时自动将创建人加入为家庭成员(修复空心家庭问题)

Sisyphus 2 месяцев назад
Родитель
Сommit
0529f40e15
1 измененных файлов с 27 добавлено и 0 удалено
  1. 27 0
      cfc-backend/src/main/java/com/etotem/cfc/service/UserService.java

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

@@ -1315,6 +1315,30 @@ FamilyMember child = familyMemberMapper.selectById(memberId);
         user.setUpdatedAt(new Date());
         user.setUpdatedAt(new Date());
         userMapper.updateById(user);
         userMapper.updateById(user);
         log.info("安全兜底:为用户 {} 自动创建家庭 {}", user.getId(), family.getId());
         log.info("安全兜底:为用户 {} 自动创建家庭 {}", user.getId(), family.getId());
+        // 创建人自己也是家庭成员
+        addCreatorAsMember(user, family.getId());
+    }
+
+    private void addCreatorAsMember(User user, Long familyId) {
+        // 已存在则跳过(兜底幂等)
+        LambdaQueryWrapper<FamilyMember> check = new LambdaQueryWrapper<FamilyMember>()
+                .eq(FamilyMember::getFamilyId, familyId)
+                .eq(FamilyMember::getUserId, user.getId());
+        if (familyMemberMapper.selectCount(check) > 0) {
+            return;
+        }
+        FamilyMember member = new FamilyMember();
+        member.setFamilyId(familyId);
+        member.setUserId(user.getId());
+        member.setNickname(user.getNickname() != null ? user.getNickname() : "我");
+        member.setPhone(user.getPhone());
+        member.setAvatar(user.getAvatar());
+        member.setGender(user.getGender());
+        member.setGeneration(0);
+        member.setTotalPoints(0);
+        member.setCreatedAt(new Date());
+        member.setUpdatedAt(new Date());
+        familyMemberMapper.insert(member);
     }
     }
 
 
     /**
     /**
@@ -1342,6 +1366,7 @@ FamilyMember child = familyMemberMapper.selectById(memberId);
         Family family = new Family();
         Family family = new Family();
         family.setName(familyName);
         family.setName(familyName);
         family.setInviteCode(generateInviteCode());
         family.setInviteCode(generateInviteCode());
+        family.setCreatorId(userId);
         family.setCreatedAt(new Date());
         family.setCreatedAt(new Date());
         family.setUpdatedAt(new Date());
         family.setUpdatedAt(new Date());
         familyMapper.insert(family);
         familyMapper.insert(family);
@@ -1349,6 +1374,8 @@ FamilyMember child = familyMemberMapper.selectById(memberId);
         user.setFamilyId(family.getId());
         user.setFamilyId(family.getId());
         user.setUpdatedAt(new Date());
         user.setUpdatedAt(new Date());
         userMapper.updateById(user);
         userMapper.updateById(user);
+        // 创建人自己也是家庭成员(generation=0 表示创建者)
+        addCreatorAsMember(user, family.getId());
         return family.getId();
         return family.getId();
     }
     }