Skip to content

Commit 4b4b852

Browse files
Feat: 유저 조회시 닉네임 이미지 추가
Feat: 유저 조회시 닉네임 이미지 추가
2 parents f106d3b + f10927c commit 4b4b852

2 files changed

Lines changed: 44 additions & 2 deletions

File tree

src/main/java/flipnote/group/application/service/FindGroupMemberService.java

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package flipnote.group.application.service;
22

3+
import java.io.IOException;
34
import java.util.List;
5+
import java.util.Map;
6+
import java.util.stream.Collectors;
47

58
import org.springframework.stereotype.Service;
69
import org.springframework.transaction.annotation.Transactional;
@@ -12,13 +15,19 @@
1215
import flipnote.group.domain.model.member.MemberInfo;
1316
import flipnote.group.domain.policy.BusinessException;
1417
import flipnote.group.domain.policy.ErrorCode;
18+
import flipnote.user.grpc.GetUserResponse;
19+
import flipnote.user.grpc.GetUsersRequest;
20+
import flipnote.user.grpc.GetUsersResponse;
21+
import flipnote.user.grpc.UserQueryServiceGrpc;
22+
import io.grpc.StatusRuntimeException;
1523
import lombok.RequiredArgsConstructor;
1624

1725
@Service
1826
@RequiredArgsConstructor
1927
public class FindGroupMemberService implements FindGroupMemberUseCase {
2028

2129
private final GroupMemberRepositoryPort groupMemberRepository;
30+
private final UserQueryServiceGrpc.UserQueryServiceBlockingStub userQueryService;
2231

2332
/**
2433
* 그룹 멤버 조회
@@ -36,8 +45,33 @@ public FindGroupMemberResult findGroupMember(FindGroupMemberCommand cmd) {
3645
}
3746

3847
List<MemberInfo> memberInfoList = groupMemberRepository.findMemberInfo(cmd.groupId());
39-
40-
//todo 멤버 정보에서 유저 아이디를 grpc를 통해 가져온 후 반환
48+
49+
List<Long> ids = memberInfoList.stream()
50+
.map(MemberInfo::getUserId)
51+
.collect(Collectors.toList());
52+
53+
GetUsersRequest req = GetUsersRequest.newBuilder()
54+
.addAllUserIds(ids)
55+
.build();
56+
57+
GetUsersResponse res;
58+
try {
59+
res = userQueryService.getUsers(req);
60+
} catch (StatusRuntimeException e) {
61+
throw new BusinessException(ErrorCode.INTERNAL_SERVER_ERROR);
62+
}
63+
64+
// 맵으로 변환
65+
Map<Long, GetUserResponse> userInfoMap = res.getUsersList().stream()
66+
.collect(Collectors.toMap(GetUserResponse::getId, u -> u));
67+
68+
// memberInfo에 nickname, profileImage 업데이트
69+
memberInfoList.forEach(memberInfo -> {
70+
GetUserResponse userInfo = userInfoMap.get(memberInfo.getUserId());
71+
if (userInfo != null) {
72+
memberInfo.updateUserInfo(userInfo.getNickname(), userInfo.getProfileImageUrl());
73+
}
74+
});
4175

4276
return new FindGroupMemberResult(memberInfoList);
4377
}

src/main/java/flipnote/group/domain/model/member/MemberInfo.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,19 @@ public class MemberInfo {
1111
private Long memberId;
1212
private Long userId;
1313
private GroupMemberRole role;
14+
private String nickname;
15+
private String profileImage;
1416

1517
@Builder
1618
private MemberInfo(Long memberId, Long userId, GroupMemberRole role) {
1719
this.memberId = memberId;
1820
this.userId = userId;
1921
this.role = role;
2022
}
23+
24+
public void updateUserInfo(String nickname, String profileImage) {
25+
this.nickname = nickname;
26+
this.profileImage = profileImage;
27+
}
28+
2129
}

0 commit comments

Comments
 (0)