diff --git a/src/main/java/com/haltebogen/gittalk/controller/chat/ChatController.java b/src/main/java/com/haltebogen/gittalk/controller/chat/ChatController.java index 39f2930..f2eecc5 100644 --- a/src/main/java/com/haltebogen/gittalk/controller/chat/ChatController.java +++ b/src/main/java/com/haltebogen/gittalk/controller/chat/ChatController.java @@ -13,6 +13,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.security.Principal; import java.util.List; @RestController @@ -41,11 +42,12 @@ public ResponseEntity createRoom(@RequestBody ChatRoomRegisterDto chatRo @ApiResponse(code = 400, message = "Bad Request!"), @ApiResponse(code = 500, message = "Server Error") }) - @PostMapping("{leftUserId}/chatroom/left/") + @PostMapping("/chatroom/left/") public ResponseEntity leftChatRoom( @RequestBody ChatRoomLeftDto chatRoomLeftDto, - @PathVariable String leftUserId) throws JsonProcessingException{ - + Principal principal + ) throws JsonProcessingException{ + String leftUserId = principal.getName(); ChatRoomResponseDto chatRoomResponseDto = chatService.leftChatRoom(Long.valueOf(leftUserId), chatRoomLeftDto); return new ResponseHandler().generateResponse("OK", HttpStatus.OK, chatRoomResponseDto); @@ -102,11 +104,12 @@ public ResponseEntity getDetailChatRoom( @ApiResponse(code = 200, message = "OK!"), @ApiResponse(code = 500, message = "Server Error") }) - @GetMapping("/chatroom/{userId}}") + @GetMapping("/chatroom}") public ResponseEntity getAllChatRoom( - @PathVariable Long userId + Principal principal ) throws JsonProcessingException { - List chatRoomResponseDtoList = chatService.getAllChatRoom(userId.toString()); + String memberId = principal.getName(); + List chatRoomResponseDtoList = chatService.getAllChatRoom(memberId); return new ResponseHandler().generateResponse("OK", HttpStatus.OK, chatRoomResponseDtoList); } diff --git a/src/main/java/com/haltebogen/gittalk/repository/FollowRepository.java b/src/main/java/com/haltebogen/gittalk/repository/FollowRepository.java index 7b18e9c..8710fb9 100644 --- a/src/main/java/com/haltebogen/gittalk/repository/FollowRepository.java +++ b/src/main/java/com/haltebogen/gittalk/repository/FollowRepository.java @@ -12,4 +12,5 @@ public interface FollowRepository extends JpaRepository { List findAllByFollowerAndFollowStatus(Member follower, FollowStatus followStatus); Follow findByFollowingAndFollowStatus(Member following, FollowStatus followStatus); + } diff --git a/src/main/java/com/haltebogen/gittalk/repository/chat/ChatRoomRepository.java b/src/main/java/com/haltebogen/gittalk/repository/chat/ChatRoomRepository.java index dfddf8b..a5ee4cc 100644 --- a/src/main/java/com/haltebogen/gittalk/repository/chat/ChatRoomRepository.java +++ b/src/main/java/com/haltebogen/gittalk/repository/chat/ChatRoomRepository.java @@ -13,6 +13,6 @@ public interface ChatRoomRepository extends MongoRepository { @Override Optional findById(String s); - + ChatRoom findByChatRoomId(List participantsId); } diff --git a/src/main/java/com/haltebogen/gittalk/service/chat/ChatService.java b/src/main/java/com/haltebogen/gittalk/service/chat/ChatService.java index 465aa6f..906166e 100644 --- a/src/main/java/com/haltebogen/gittalk/service/chat/ChatService.java +++ b/src/main/java/com/haltebogen/gittalk/service/chat/ChatService.java @@ -29,8 +29,29 @@ public class ChatService { @Transactional public ChatRoomResponseDto createChatRoom(ChatRoomRegisterDto chatRoomRegisterDto) throws JsonProcessingException { String chatRoomId = UUID.randomUUID().toString(); - List messageList = new ArrayList<>(); + if (isExistChatRoom(chatRoomRegisterDto)){ + ChatRoom chatRoom = chatRoomRepository.findByChatRoomId(chatRoomRegisterDto.getParticipantsId()); + return new ChatRoomResponseDto(chatRoom); + } + else { + List messageList = new ArrayList<>(); + ChatRoom chatRoom = new ChatRoom( + chatRoomId, + chatRoomRegisterDto.getRoomName(), + messageList, + chatRoomRegisterDto.getParticipantsId(), + LocalDateTime.now() + ); + chatRoomRepository.save(chatRoom); + return new ChatRoomResponseDto(chatRoom); + } + + } + @Transactional + public ChatRoomResponseDto createChatRoomBySearch(ChatRoomRegisterDto chatRoomRegisterDto) throws JsonProcessingException { + String chatRoomId = UUID.randomUUID().toString(); + List messageList = new ArrayList<>(); ChatRoom chatRoom = new ChatRoom( chatRoomId, chatRoomRegisterDto.getRoomName(), @@ -38,12 +59,11 @@ public ChatRoomResponseDto createChatRoom(ChatRoomRegisterDto chatRoomRegisterDt chatRoomRegisterDto.getParticipantsId(), LocalDateTime.now() ); - chatRoomRepository.save(chatRoom); - return new ChatRoomResponseDto(chatRoom); } + @Transactional public ChatRoomResponseDto leftChatRoom(Long leftUserId, ChatRoomLeftDto chatRoomLeftDto) throws JsonGenerationException { ChatRoom chatRoom = chatRoomRepository.findById(chatRoomLeftDto.getChatRoomId()).get(); @@ -152,4 +172,15 @@ public List getAllChatRoom(String userId) { return chatRoomResponseDtoList; } + private Boolean isExistChatRoom(ChatRoomRegisterDto chatRoomRegisterDto) { + List chatRoomList = chatRoomRepository.findAll(); + for (int i=0; i