From 55dc41d73d01d5136185d0084d3439ba41fba3f4 Mon Sep 17 00:00:00 2001 From: Hyeromon Date: Tue, 11 Mar 2025 15:00:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[fix]:=20=EC=B1=84=ED=8C=85=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=88=98=EC=A0=95=20-=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=ED=95=9C=20=EC=B1=84=ED=8C=85=EB=B0=A9?= =?UTF-8?q?=EA=B3=BC=20=EC=9A=94=EC=B2=AD=EB=B0=9B=EC=9D=80=20=EC=B1=84?= =?UTF-8?q?=ED=8C=85=EB=B0=A9=20=EB=AA=A8=EB=91=90=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/ChatRoomCustomRepository.java | 2 ++ .../chat/repository/ChatRoomRepositoryImpl.java | 16 ++++++++++++++++ .../domain/chat/service/ChatRoomService.java | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java index f6d5d3d9..95a2e5d7 100644 --- a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java +++ b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java @@ -8,4 +8,6 @@ public interface ChatRoomCustomRepository { Optional findChatRoomIdByRequestUserIdAndRecordId(Long requestUserId, Long recordId); List findByRequestUserIdOrderByCreatedAtDesc(Long userId); + List findByRequestUserIdOrRecordId_User_UserIdOrderByCreatedAtDesc(Long userId); + } diff --git a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java index d9ef0e95..9930e1c8 100644 --- a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java +++ b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java @@ -5,6 +5,7 @@ import org.dfbf.soundlink.domain.chat.entity.ChatRoom; import org.dfbf.soundlink.domain.chat.entity.QChatRoom; import org.dfbf.soundlink.domain.emotionRecord.entity.EmotionRecord; +import org.dfbf.soundlink.domain.emotionRecord.entity.QEmotionRecord; import org.dfbf.soundlink.domain.user.entity.QProfileMusic; import org.dfbf.soundlink.domain.user.entity.QUser; import org.dfbf.soundlink.domain.user.entity.User; @@ -40,4 +41,19 @@ public List findByRequestUserIdOrderByCreatedAtDesc(Long userId) { .orderBy(QChatRoom.chatRoom.createdAt.desc()) .fetch(); } + + @Override + public List findByRequestUserIdOrRecordId_User_UserIdOrderByCreatedAtDesc(Long userId) { + return queryFactory + .selectFrom(QChatRoom.chatRoom) + .leftJoin(QChatRoom.chatRoom.recordId, QEmotionRecord.emotionRecord) // ChatRoom과 EmotionRecord를 left join + .leftJoin(QEmotionRecord.emotionRecord.user, QUser.user) // EmotionRecord와 User를 left join + .where( + QChatRoom.chatRoom.requestUserId.userId.eq(userId) // 요청자 userId 기준 + .or(QUser.user.userId.eq(userId)) // 응답자 userId 기준 + ) + .orderBy(QChatRoom.chatRoom.createdAt.desc()) // 생성일 기준 내림차순 정렬 + .fetch(); + } + } diff --git a/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java b/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java index 51b3e4e9..81677160 100644 --- a/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java +++ b/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java @@ -295,7 +295,7 @@ public ResponseResult closeChatRoom(@AuthenticationPrincipal Long userId, Long c //채팅방 목록 불러오기 public ResponseResult getChatRoomList(@AuthenticationPrincipal Long userId) { try { - List chatRooms = chatRoomRepository.findByRequestUserIdOrderByCreatedAtDesc(userId); + List chatRooms = chatRoomRepository.findByRequestUserIdOrRecordId_User_UserIdOrderByCreatedAtDesc(userId); List chatRoomList = chatRooms.stream() .map(chatRoom -> new ChatRoomListDto( From fa387c64b748aa77649bd103d07b46a9bff47155 Mon Sep 17 00:00:00 2001 From: Hyeromon Date: Tue, 11 Mar 2025 15:10:43 +0900 Subject: [PATCH 2/2] fix : Remove code smell. --- .../domain/chat/repository/ChatRoomCustomRepository.java | 2 +- .../domain/chat/repository/ChatRoomRepositoryImpl.java | 2 +- .../soundlink/domain/chat/service/ChatRoomService.java | 8 ++++---- .../soundlink/domain/chatRoom/ChatRoomServiceTest.java | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java index 95a2e5d7..49e3a109 100644 --- a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java +++ b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomCustomRepository.java @@ -8,6 +8,6 @@ public interface ChatRoomCustomRepository { Optional findChatRoomIdByRequestUserIdAndRecordId(Long requestUserId, Long recordId); List findByRequestUserIdOrderByCreatedAtDesc(Long userId); - List findByRequestUserIdOrRecordId_User_UserIdOrderByCreatedAtDesc(Long userId); + List findChatRoomsByUserId(Long userId); } diff --git a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java index 9930e1c8..4d91849e 100644 --- a/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java +++ b/src/main/java/org/dfbf/soundlink/domain/chat/repository/ChatRoomRepositoryImpl.java @@ -43,7 +43,7 @@ public List findByRequestUserIdOrderByCreatedAtDesc(Long userId) { } @Override - public List findByRequestUserIdOrRecordId_User_UserIdOrderByCreatedAtDesc(Long userId) { + public List findChatRoomsByUserId(Long userId) { return queryFactory .selectFrom(QChatRoom.chatRoom) .leftJoin(QChatRoom.chatRoom.recordId, QEmotionRecord.emotionRecord) // ChatRoom과 EmotionRecord를 left join diff --git a/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java b/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java index 81677160..b6f90a1b 100644 --- a/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java +++ b/src/main/java/org/dfbf/soundlink/domain/chat/service/ChatRoomService.java @@ -113,7 +113,7 @@ public ResponseResult saveRequestToRedis(Long requestUserId, Long emotionRecordI return new ResponseResult(ErrorCode.FAIL_TO_FIND_USER); } catch (Exception e) { log.error(e.getMessage()); - return new ResponseResult(400, "Chat request failed."); + return new ResponseResult(400, "Failed to process chat request."); } } @@ -144,7 +144,7 @@ public ResponseResult deleteRequestFromRedis(Long userId, Long emotionRecordId) return new ResponseResult(ErrorCode.FAIL_TO_FIND_USER); } catch (Exception e) { log.error(e.getMessage()); - return new ResponseResult(400, "Chat request failed."); + return new ResponseResult(400, "Failed to delete the chat request."); } } @@ -180,7 +180,7 @@ public ResponseResult requestRejected(Long responseUserId, ChatRejectDto chatRej return new ResponseResult(ErrorCode.FAIL_TO_FIND_USER); } catch (Exception e) { log.error(e.getMessage()); - return new ResponseResult(400, "Chat request failed."); + return new ResponseResult(400, "Failed to reject the chat request."); } } @@ -295,7 +295,7 @@ public ResponseResult closeChatRoom(@AuthenticationPrincipal Long userId, Long c //채팅방 목록 불러오기 public ResponseResult getChatRoomList(@AuthenticationPrincipal Long userId) { try { - List chatRooms = chatRoomRepository.findByRequestUserIdOrRecordId_User_UserIdOrderByCreatedAtDesc(userId); + List chatRooms = chatRoomRepository.findChatRoomsByUserId(userId); List chatRoomList = chatRooms.stream() .map(chatRoom -> new ChatRoomListDto( diff --git a/src/test/java/org/dfbf/soundlink/domain/chatRoom/ChatRoomServiceTest.java b/src/test/java/org/dfbf/soundlink/domain/chatRoom/ChatRoomServiceTest.java index 5e5b91af..0cbaccc6 100644 --- a/src/test/java/org/dfbf/soundlink/domain/chatRoom/ChatRoomServiceTest.java +++ b/src/test/java/org/dfbf/soundlink/domain/chatRoom/ChatRoomServiceTest.java @@ -307,7 +307,7 @@ void testGetChatRoomList() { List mockChatRooms = List.of(mockChatRoom); - when(chatRoomRepository.findByRequestUserIdOrderByCreatedAtDesc(userId)).thenReturn(mockChatRooms); + when(chatRoomRepository.findChatRoomsByUserId(userId)).thenReturn(mockChatRooms); //when ResponseResult result = chatRoomService.getChatRoomList(userId);