|
|
@@ -210,7 +210,7 @@ public class FamilyMemberService {
|
|
|
membershipService.syncMembershipForNewMember(memberUserId, familyId);
|
|
|
}
|
|
|
|
|
|
- return toFamilyMemberVO(member);
|
|
|
+ return toFamilyMemberVO(member, userId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -373,7 +373,7 @@ public class FamilyMemberService {
|
|
|
vo.setMemberId(member.getId());
|
|
|
vo.setSource("family_member");
|
|
|
vo.setEffectiveRole(effectiveRole);
|
|
|
- vo.setNickname(member.getNickname());
|
|
|
+ vo.setNickname(resolveMemberNickname(member));
|
|
|
vo.setIsSwitchable(true);
|
|
|
return vo;
|
|
|
}
|
|
|
@@ -870,7 +870,7 @@ public class FamilyMemberService {
|
|
|
member.setUpdatedAt(new Date());
|
|
|
familyMemberMapper.updateById(member);
|
|
|
logMemberAction(member.getFamilyId(), member.getId(), "update", oldNickname, member.getNickname(), userId);
|
|
|
- return toFamilyMemberVO(member);
|
|
|
+ return toFamilyMemberVO(member, userId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -959,7 +959,7 @@ public class FamilyMemberService {
|
|
|
return fm.getNickname();
|
|
|
}
|
|
|
|
|
|
- private FamilyMemberVO toFamilyMemberVO(FamilyMember member) {
|
|
|
+ private FamilyMemberVO toFamilyMemberVO(FamilyMember member, Long operatorUserId) {
|
|
|
FamilyMemberVO vo = new FamilyMemberVO();
|
|
|
vo.setId(member.getId());
|
|
|
vo.setSource("family_member");
|
|
|
@@ -976,14 +976,10 @@ public class FamilyMemberService {
|
|
|
if (member.getBirthday() != null) {
|
|
|
vo.setAge(calculateAge(member.getBirthday()));
|
|
|
}
|
|
|
- // 设置 isSwitchable:仅无 openid 的不可登录成员可被切换
|
|
|
- if (member.getUserId() != null) {
|
|
|
- User memberUser = userMapper.selectById(member.getUserId());
|
|
|
- String openid = memberUser != null ? memberUser.getOpenid() : null;
|
|
|
- vo.setIsSwitchable(openid == null || openid.isEmpty());
|
|
|
- } else {
|
|
|
- vo.setIsSwitchable(true);
|
|
|
- }
|
|
|
+ // 设置 isSwitchable:非操作者本人即可切换视角(含可登录成员),与 listMembers 口径一致
|
|
|
+ boolean switchableIsSelf = operatorUserId != null && member.getUserId() != null
|
|
|
+ && operatorUserId.equals(member.getUserId());
|
|
|
+ vo.setIsSwitchable(!switchableIsSelf);
|
|
|
return vo;
|
|
|
}
|
|
|
|