diff --git a/src/main/java/com/campick/server/api/chat/dto/ChatRoomResDto.java b/src/main/java/com/campick/server/api/chat/dto/ChatRoomResDto.java index 4e1880b..a981838 100644 --- a/src/main/java/com/campick/server/api/chat/dto/ChatRoomResDto.java +++ b/src/main/java/com/campick/server/api/chat/dto/ChatRoomResDto.java @@ -17,6 +17,7 @@ public class ChatRoomResDto { private String sellerPhoneNumber; private Long productId; private String productTitle; + private String productImage; private String productStatus; private String productPrice; private Boolean isActive; diff --git a/src/main/java/com/campick/server/api/chat/repository/ChatRoomRepository.java b/src/main/java/com/campick/server/api/chat/repository/ChatRoomRepository.java index f3526f5..7dade22 100644 --- a/src/main/java/com/campick/server/api/chat/repository/ChatRoomRepository.java +++ b/src/main/java/com/campick/server/api/chat/repository/ChatRoomRepository.java @@ -1,6 +1,8 @@ package com.campick.server.api.chat.repository; import com.campick.server.api.chat.entity.ChatRoom; +import com.campick.server.api.member.entity.Member; +import com.campick.server.api.product.entity.Product; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -24,4 +26,5 @@ public interface ChatRoomRepository extends JpaRepository { "WHERE s.id = :memberId OR b.id = :memberId") List findAllByMemberId(@Param("memberId") Long memberId); + Optional findByProductAndSellerAndBuyer(Product product, Member seller, Member buyer); } diff --git a/src/main/java/com/campick/server/api/chat/service/ChatService.java b/src/main/java/com/campick/server/api/chat/service/ChatService.java index 465a6a8..4f6577d 100644 --- a/src/main/java/com/campick/server/api/chat/service/ChatService.java +++ b/src/main/java/com/campick/server/api/chat/service/ChatService.java @@ -93,13 +93,18 @@ public Long startChatRoom(ChatRoomReqDto chatRoomReqDto, Long memberId) { Member seller = product.getSeller(); Member buyer = memberRepository.findById(memberId).orElseThrow( () -> new NotFoundException(ErrorStatus.MEMBER_NOT_FOUND.getMessage())); - ChatRoom chatRoom = ChatRoom.builder() - .seller(seller) - .buyer(buyer) - .product(product) - .build(); - chatRoomRepository.save(chatRoom); + ChatRoom chatRoom = chatRoomRepository.findByProductAndSellerAndBuyer(product, seller, buyer) + .orElse(null); + + if (chatRoom == null) { + chatRoom = ChatRoom.builder() + .seller(seller) + .buyer(buyer) + .product(product) + .build(); + chatRoomRepository.save(chatRoom); + } return chatRoom.getId(); } @@ -239,6 +244,12 @@ public void broadcastSoldEvent(WebSocketSession session, JsonNode data) { } private ChatRoomResDto convertToChatRoomResDto(ChatRoom chatRoom, List chatMessages) { + String thumbnailImage = chatRoom.getProduct().getImages().stream() + .filter(ProductImage::getIsThumbnail) + .map(ProductImage::getImageUrl) + .findFirst() + .orElse(null); + ChatRoomResDto chatRoomResDto = new ChatRoomResDto(); chatRoomResDto.setSellerId(chatRoom.getSeller().getId()); chatRoomResDto.setSellerNickname(chatRoom.getSeller().getNickname()); @@ -248,6 +259,7 @@ private ChatRoomResDto convertToChatRoomResDto(ChatRoom chatRoom, List