|
@@ -304,11 +304,20 @@ public class FamilyMemberService {
|
|
|
// 从 family_members 查找
|
|
// 从 family_members 查找
|
|
|
FamilyMember member = familyMemberMapper.selectById(memberId);
|
|
FamilyMember member = familyMemberMapper.selectById(memberId);
|
|
|
if (member != null && member.getFamilyId().equals(user.getFamilyId())) {
|
|
if (member != null && member.getFamilyId().equals(user.getFamilyId())) {
|
|
|
|
|
+ // 【重构】成员切换校验:仅不可登录成员可被切换
|
|
|
|
|
+ User memberUser = member.getUserId() != null ? userMapper.selectById(member.getUserId()) : null;
|
|
|
|
|
+ String openid = memberUser != null ? memberUser.getOpenid() : null;
|
|
|
|
|
+ boolean canLogin = openid != null && !openid.isEmpty();
|
|
|
|
|
+ if (canLogin) {
|
|
|
|
|
+ throw new RuntimeException("该成员可通过微信登录,不能切换为TA的身份");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
SwitchMemberVO vo = new SwitchMemberVO();
|
|
SwitchMemberVO vo = new SwitchMemberVO();
|
|
|
vo.setMemberId(member.getId());
|
|
vo.setMemberId(member.getId());
|
|
|
vo.setSource("family_member");
|
|
vo.setSource("family_member");
|
|
|
vo.setEffectiveRole(computeEffectiveRole(member));
|
|
vo.setEffectiveRole(computeEffectiveRole(member));
|
|
|
vo.setNickname(member.getNickname());
|
|
vo.setNickname(member.getNickname());
|
|
|
|
|
+ vo.setIsSwitchable(true);
|
|
|
return vo;
|
|
return vo;
|
|
|
}
|
|
}
|
|
|
|
|
|