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

feat(family): switchToMember 仅允许切换不可登录成员

iwt пре 2 недеља
родитељ
комит
37c4f7a6ed

+ 3 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/SwitchMemberVO.java

@@ -16,4 +16,7 @@ public class SwitchMemberVO {
 
     /** 成员昵称 */
     private String nickname;
+
+    /** 是否可被切换(服务端已校验,仅不可登录成员返回 true) */
+    private Boolean isSwitchable;
 }

+ 9 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/FamilyMemberService.java

@@ -304,11 +304,20 @@ public class FamilyMemberService {
         // 从 family_members 查找
         FamilyMember member = familyMemberMapper.selectById(memberId);
         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();
             vo.setMemberId(member.getId());
             vo.setSource("family_member");
             vo.setEffectiveRole(computeEffectiveRole(member));
             vo.setNickname(member.getNickname());
+            vo.setIsSwitchable(true);
             return vo;
         }