Преглед изворни кода

fix(family): 审批通过合并家庭后重载用户,防止 users.family_id 被陈旧对象回写

mergeIntoFamily(switchMemberToFamily) 已将 users.family_id 更新为目标家庭,
但 approveJoinRequest 持有旧 user 对象,后续 userMapper.updateById(user) 把
family_id 回写为原家庭(现象:用户124加入114后 family_id 仍为128)。
重新加载 user 并修正日志 oldFamily 取值。
Xiaogang Liao пре 4 дана
родитељ
комит
a198f12ab0

+ 6 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/FamilyJoinRequestService.java

@@ -226,8 +226,13 @@ public class FamilyJoinRequestService {
                 }
             }
             familyInvitationService.mergeIntoFamily(user.getId(), family.getId());
+            // 修复(2026-11-08):mergeIntoFamily 内部 switchMemberToFamily 已把 users.family_id 更新为目标家庭,
+            // 此处重新加载 user,避免后续 userMapper.updateById(user) 用陈旧对象把 family_id 回写为原家庭
+            // (现象:124 加入 114 后 users.family_id 仍为 128)。
+            Long oldFamilyId = user.getFamilyId();
+            user = userMapper.selectById(user.getId());
             log.info("审批通过并合并家庭: userId={}, oldFamily={}, targetFamily={}, requestId={}",
-                    user.getId(), user.getFamilyId(), family.getId(), request.getId());
+                    user.getId(), oldFamilyId, family.getId(), request.getId());
         } else {
             if (user.getFamilyId() == null || user.getFamilyId() == 0L || !user.getFamilyId().equals(family.getId())) {
                 user.setFamilyId(family.getId());