Skip to content

Commit 03fbc49

Browse files
committed
fix: 채팅 API 반환값에 ProfileImageCode 추가
1 parent 954d153 commit 03fbc49

3 files changed

Lines changed: 29 additions & 4 deletions

File tree

src/main/java/swyp/dodream/domain/chat/dto/response/ChatInitiateResponse.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,7 @@ public class ChatInitiateResponse {
2121
private String myRole; // "LEADER" or "MEMBER"
2222

2323
private List<ChatMessageDto> history; // 기존 대화 내역
24+
25+
private Integer leaderProfileImageCode; // 리더 프로필 이미지 코드
26+
private Integer memberProfileImageCode; // 멤버 프로필 이미지 코드
2427
}

src/main/java/swyp/dodream/domain/chat/dto/response/MyChatListResponse.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,7 @@ public class MyChatListResponse {
2323

2424
private String lastMessage; // 마지막 메시지 내용
2525
private LocalDateTime lastMessageAt; // 마지막 메시지 시간
26+
27+
private Integer leaderProfileImageCode; // 리더 프로필 이미지 코드
28+
private Integer memberProfileImageCode; // 멤버 프로필 이미지 코드
2629
}

src/main/java/swyp/dodream/domain/chat/service/ChatService.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ public ChatInitiateResponse initiateChat(Long postId, Long memberId) {
6161
throw new EntityNotFoundException("리더의 계정이 존재하지 않거나 비활성화되었습니다.");
6262
}
6363

64+
// 프로필 이미지 코드 조회 추가
65+
Profile leaderProfile = profileRepository.findByUserId(leaderId)
66+
.orElseThrow(() -> new EntityNotFoundException("리더 프로필을 찾을 수 없습니다."));
67+
Profile memberProfile = profileRepository.findByUserId(memberId)
68+
.orElseThrow(() -> new EntityNotFoundException("멤버 프로필을 찾을 수 없습니다."));
69+
6470
String topicId = buildTopicId(postId, leaderId, memberId);
6571

6672
Optional<ChatRoom> existingRoom = chatRoomRepository.findByPostIdAndLeaderUserIdAndMemberUserId(postId, leaderId, memberId);
@@ -83,7 +89,9 @@ public ChatInitiateResponse initiateChat(Long postId, Long memberId) {
8389
String.valueOf(leaderId),
8490
String.valueOf(memberId),
8591
myRole,
86-
history
92+
history,
93+
leaderProfile.getProfileImageCode(),
94+
memberProfile.getProfileImageCode()
8795
);
8896
} else {
8997
log.info("신규 채팅방 초기화. TopicId: {}", topicId);
@@ -93,7 +101,9 @@ public ChatInitiateResponse initiateChat(Long postId, Long memberId) {
93101
String.valueOf(leaderId),
94102
String.valueOf(memberId),
95103
"MEMBER",
96-
Collections.emptyList()
104+
Collections.emptyList(),
105+
leaderProfile.getProfileImageCode(),
106+
memberProfile.getProfileImageCode()
97107
);
98108
}
99109
}
@@ -253,6 +263,13 @@ public List<MyChatListResponse> getMyChatRooms(Long myUserId, ChatFilterType fil
253263
ChatRoom room = cp.getChatRoom();
254264
Long otherUserId = myUserId.equals(room.getLeaderUserId())
255265
? room.getMemberUserId() : room.getLeaderUserId();
266+
267+
// 프로필 조회 (이미지 코드 포함)
268+
Profile leaderProfile = profileRepository.findByUserId(room.getLeaderUserId())
269+
.orElseThrow(() -> new EntityNotFoundException("리더 프로필을 찾을 수 없습니다."));
270+
Profile memberProfile = profileRepository.findByUserId(room.getMemberUserId())
271+
.orElseThrow(() -> new EntityNotFoundException("멤버 프로필을 찾을 수 없습니다."));
272+
256273
String roomName = profileRepository.findByUserId(otherUserId)
257274
.map(Profile::getNickname)
258275
.orElse(userRepository.findById(otherUserId)
@@ -265,7 +282,7 @@ public List<MyChatListResponse> getMyChatRooms(Long myUserId, ChatFilterType fil
265282
String myRole = myUserId.equals(room.getLeaderUserId()) ? "LEADER" : "MEMBER";
266283
String topicId = buildTopicId(room.getPostId(), room.getLeaderUserId(), room.getMemberUserId());
267284

268-
// 마지막 메시지 조회 - roomId 사용
285+
// 마지막 메시지 조회
269286
Optional<ChatMessage> lastMessageOpt = chatMessageRepository
270287
.findLastMessageByRoomId(room.getId());
271288

@@ -288,6 +305,8 @@ public List<MyChatListResponse> getMyChatRooms(Long myUserId, ChatFilterType fil
288305
.lastMessage(lastMessage)
289306
.lastMessageAt(lastMessageAt)
290307
.postId(room.getPostId())
308+
.leaderProfileImageCode(leaderProfile.getProfileImageCode())
309+
.memberProfileImageCode(memberProfile.getProfileImageCode())
291310
.build();
292311
})
293312
.filter(response -> {
@@ -297,7 +316,7 @@ public List<MyChatListResponse> getMyChatRooms(Long myUserId, ChatFilterType fil
297316
return true;
298317
})
299318
.sorted(Comparator.comparing(MyChatListResponse::getLastMessageAt,
300-
Comparator.nullsLast(Comparator.reverseOrder()))) // 최신순 정렬
319+
Comparator.nullsLast(Comparator.reverseOrder())))
301320
.collect(Collectors.toList());
302321
}
303322

0 commit comments

Comments
 (0)