diff --git a/src/main/java/doldol_server/doldol/common/exception/errorCode/MessageErrorCode.java b/src/main/java/doldol_server/doldol/common/exception/errorCode/MessageErrorCode.java index ca887280..126d58f9 100644 --- a/src/main/java/doldol_server/doldol/common/exception/errorCode/MessageErrorCode.java +++ b/src/main/java/doldol_server/doldol/common/exception/errorCode/MessageErrorCode.java @@ -16,7 +16,10 @@ public enum MessageErrorCode implements ErrorCode { MESSAGE_ACCESS_DENIED(HttpStatus.FORBIDDEN, "M-002", "메시지에 접근할 권한이 없습니다."), // 409 - MESSAGE_ALREADY_EXISTS(HttpStatus.CONFLICT,"M-003", "이미 해당 사용자에게 보낸 메시지가 존재합니다."); + MESSAGE_ALREADY_EXISTS(HttpStatus.CONFLICT, "M-003", "이미 해당 사용자에게 보낸 메시지가 존재합니다."), + + // 400 + MESSAGE_LIMIT_EXCEEDED(HttpStatus.BAD_REQUEST, "M-004", "메시지는 최대 5개까지만 작성할 수 있습니다."), ; private HttpStatus httpStatus; diff --git a/src/main/java/doldol_server/doldol/rollingPaper/repository/MessageRepository.java b/src/main/java/doldol_server/doldol/rollingPaper/repository/MessageRepository.java index e2ac08c3..9495ad67 100644 --- a/src/main/java/doldol_server/doldol/rollingPaper/repository/MessageRepository.java +++ b/src/main/java/doldol_server/doldol/rollingPaper/repository/MessageRepository.java @@ -8,5 +8,5 @@ import doldol_server.doldol.user.entity.User; public interface MessageRepository extends JpaRepository, MessageRepositoryCustom { - boolean existsByPaperAndFromAndToAndIsDeletedFalse(Paper paper, User from, User to); + long countByPaperAndFromAndToAndIsDeletedFalse(Paper paper, User fromUser, User toUser); } diff --git a/src/main/java/doldol_server/doldol/rollingPaper/service/MessageService.java b/src/main/java/doldol_server/doldol/rollingPaper/service/MessageService.java index 0c8f9302..31fe73c9 100644 --- a/src/main/java/doldol_server/doldol/rollingPaper/service/MessageService.java +++ b/src/main/java/doldol_server/doldol/rollingPaper/service/MessageService.java @@ -87,12 +87,7 @@ public void createMessage(CreateMessageRequest request, Long userId) { Paper paper = paperRepository.findById(request.paperId()) .orElseThrow(() -> new CustomException(PaperErrorCode.PAPER_NOT_FOUND)); - boolean messageExists = messageRepository.existsByPaperAndFromAndToAndIsDeletedFalse( - paper, fromUser, toUser); - - if (messageExists) { - throw new CustomException(MessageErrorCode.MESSAGE_ALREADY_EXISTS); - } + validateMessageCount(paper, fromUser, toUser); paper.addMessage(); @@ -159,4 +154,12 @@ private MessageResponse decryptMessageContent(MessageResponse messageResponse) { String decryptedContent = encryptor.decrypt(messageResponse.content()); return messageResponse.withDecryptedContent(decryptedContent); } + + private void validateMessageCount(Paper paper, User fromUser, User toUser) { + long messageCount = messageRepository.countByPaperAndFromAndToAndIsDeletedFalse( + paper, fromUser, toUser); + if (messageCount >= 5) { + throw new CustomException(MessageErrorCode.MESSAGE_LIMIT_EXCEEDED); + } + } }