Przeglądaj źródła

feat(backend): 家庭成员接口统一兼容字段

- FamilyMemberVO 增加 memberId(=id) 和 name(=nickname) 兼容字段
- FamilyMemberService 新增 listMembersWithFamily() 支持 includeFamily 模式
Xiaogang Liao 1 miesiąc temu
rodzic
commit
090b938619

+ 6 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/FamilyMemberVO.java

@@ -11,6 +11,12 @@ public class FamilyMemberVO {
 
     private Long id;
 
+    /** 兼容旧前端字段:getChildren 等废弃接口的调用方使用 memberId 作为主键 */
+    private Long memberId;
+
+    /** 兼容旧前端字段:部分页面用 name 而非 nickname */
+    private String name;
+
     /** 成员来源: family_member / child / parent */
     private String source;
 

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

@@ -27,6 +27,7 @@ import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 import com.etotem.cfc.util.SortUtil;
 
@@ -246,6 +247,9 @@ public class FamilyMemberService {
             vo.setIsSelf(viewerMember != null && viewerMember.getId().equals(fm.getId()));
             vo.setLastInteractionAt(fm.getLastInteractionAt());
             vo.setStreakDays(fm.getStreakDays());
+            // 兼容旧前端字段
+            vo.setMemberId(fm.getId());
+            vo.setName(fm.getNickname());
             result.add(vo);
         }
 
@@ -622,4 +626,33 @@ public class FamilyMemberService {
                         .last("LIMIT 1"));
         return count > 0;
     }
+
+    /**
+     * 获取家庭成员列表(含家庭信息),兼容旧接口 /api/family/user/family-members 的 Map 返回结构。
+     * 返回: { familyId, familyName, inviteCode, creatorId, parents[], children[] }
+     */
+    public Map<String, Object> listMembersWithFamily(Long userId) {
+        Map<String, Object> result = new java.util.HashMap<>();
+        User user = userMapper.selectById(userId);
+        if (user == null) {
+            return result;
+        }
+        Long familyId = user.getFamilyId();
+        if (familyId == null) {
+            return result;
+        }
+        Family family = familyMapper.selectById(familyId);
+        if (family == null) {
+            return result;
+        }
+        result.put("familyId", familyId);
+        result.put("familyName", family.getName());
+        result.put("inviteCode", family.getInviteCode());
+        result.put("creatorId", family.getCreatorId());
+        result.put("parents", userMapper.selectList(
+                new LambdaQueryWrapper<User>().eq(User::getFamilyId, familyId).eq(User::getRole, "parent")));
+        result.put("children", familyMemberMapper.selectList(
+                new LambdaQueryWrapper<FamilyMember>().eq(FamilyMember::getFamilyId, familyId)));
+        return result;
+    }
 }