Skip to content

Commit 999fe71

Browse files
author
yuhojae
committed
feat : 가상친구 메시지 요청, 메시지 히스토리 추가
1 parent b7d11f8 commit 999fe71

File tree

10 files changed

+69
-8
lines changed

10 files changed

+69
-8
lines changed

api/src/main/java/com/mbtips/common/exception/handler/GlobalExceptionHandler.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.mbtips.common.exception.handler;
22

33
import com.mbtips.common.exception.CustomException;
4+
import com.mbtips.common.exception.ErrorResponse;
45
import com.mbtips.common.exception.enums.CommonException;
56
import com.mbtips.common.response.ApiResponse;
67
import lombok.extern.slf4j.Slf4j;
8+
import org.springframework.http.HttpStatus;
79
import org.springframework.http.ResponseEntity;
810
import org.springframework.validation.FieldError;
911
import org.springframework.web.bind.MethodArgumentNotValidException;
@@ -18,9 +20,12 @@
1820
public class GlobalExceptionHandler {
1921

2022
@ExceptionHandler(CustomException.class)
21-
public ResponseEntity<Void> customExceptionHandler(CustomException e) {
23+
// 반환타입 void -> ErrorResponse, 클라이언트에서 코드, 메시지를 확인하도록
24+
public ResponseEntity<ErrorResponse> customExceptionHandler(CustomException e) {
2225
log.error("### CustomExceptionHandler : {}", e.getMessage(), e);
23-
return ResponseEntity.internalServerError().build();
26+
// return ResponseEntity.internalServerError().build();
27+
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
28+
.body(new ErrorResponse(e.getException().getCode(), e.getException().getMessage()));
2429
}
2530

2631
@ExceptionHandler(IllegalArgumentException.class)
@@ -35,9 +40,6 @@ public ResponseEntity<Void> exceptionHandler(Exception e) {
3540
return ResponseEntity.internalServerError().build();
3641
}
3742

38-
/**
39-
* to-do customexception 적용하기
40-
*/
4143
@ExceptionHandler(MethodArgumentNotValidException.class)
4244
public ApiResponse<Void> exceptionsHandler(MethodArgumentNotValidException e) {
4345

api/src/main/java/com/mbtips/domain/addition/service/AdditionService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.mbtips.common.exception.enums.CommonException;
66
import com.mbtips.common.mbtiinfo.MbtiTraits;
77
import com.mbtips.common.mbtiinfo.MbtiType;
8+
import com.mbtips.domain.addtion.exception.AdditionException;
89
import com.mbtips.domain.conversation.service.ConversationService;
910
import com.mbtips.domain.converstation.Conversation;
1011
import com.mbtips.domain.message.dto.response.GetMessageResponseDto;
@@ -43,10 +44,10 @@ public String requestConversationTips(Long virtualFriendId) {
4344
public String requestTemperature(Long conversationId) {
4445

4546
List<GetMessageResponseDto> messages = messageService.getMessagesOfConversationId(conversationId);
46-
47+
log.debug("messages.size: {}", messages.size());
4748
StringBuilder messageBuilder = new StringBuilder();
4849

49-
if(messages.size() <= 5) throw new CustomException(CommonException.TOO_FEW_CONVERSATIONS);
50+
if(messages.size() <= 5) throw new CustomException(AdditionException.TOO_FEW_CONVERSATIONS);
5051
for(int i = messages.size() - 6; i < messages.size(); i++){
5152
if(messages.get(i).userId() != null) {
5253
messageBuilder.append("사용자 : ");

api/src/main/java/com/mbtips/message/application/manager/MessageManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.mbtips.domain.converstation.Conversation;
1414
import com.mbtips.domain.message.Message;
1515
import com.mbtips.domain.message.dto.request.CreateMessageRequestDto;
16+
import com.mbtips.domain.message.dto.response.GetMessageResponseDto;
1617
import com.mbtips.domain.user.User;
1718
import com.mbtips.domain.virtualfriend.VirtualFriend;
1819
import com.mbtips.message.application.service.MessageService;
@@ -21,6 +22,7 @@
2122
import org.springframework.stereotype.Service;
2223

2324
import java.util.Arrays;
25+
import java.util.List;
2426
import java.util.UUID;
2527

2628
@Service
@@ -53,6 +55,9 @@ public String sendMessage(User user, CreateMessageRequestDto createMessageReques
5355
String responseContent = messageRequest(prompt + " " + createMessageRequestDto.messageContent());
5456
log.debug("responseMessage : {} ", responseContent);
5557

58+
List<GetMessageResponseDto> messages = messageService.getRecentMessagesOfConversationId(conversation.getConversationId());
59+
60+
5661
Message responseMessage = Message.builder()
5762
.conversation(conversation)
5863
.virtualFriend(conversation.getVirtualFriend())

api/src/main/java/com/mbtips/message/application/service/MessageService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ public List<GetMessageResponseDto> getMessagesOfConversationId(Long conversation
2323
public void saveMessage(Message message) {
2424
messageRepository.createMessage(message);
2525
}
26+
27+
public List<GetMessageResponseDto> getRecentMessagesOfConversationId(Long conversationId) {
28+
return messageRepository.findRecentMessagesByConversationId(conversationId);
29+
}
2630
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.mbtips.common.exception;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
6+
@Getter
7+
@AllArgsConstructor
8+
public class ErrorResponse {
9+
private final int code;
10+
private final String message;
11+
}

core/src/main/java/com/mbtips/common/exception/enums/CommonException.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ public enum CommonException implements ExceptionInterface {
1010
LOGIN_EXPIRATION(403, "로그인이 만료되었습니다."),
1111
INTERNAL_SERVER_ERROR(500, "서버 오류입니다."),
1212
JSON_PROCESS_ERROR(501, "JSON 변형 도중 오류가 발생했습니다."),
13-
TOO_FEW_CONVERSATIONS(40001, "대화의 개수가 부족합니다.(5회 이상)")
1413
;
1514

1615
private final int code;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.mbtips.domain.addtion.exception;
2+
3+
import com.mbtips.common.exception.interfaces.ExceptionInterface;
4+
import lombok.Getter;
5+
6+
@Getter
7+
public enum AdditionException implements ExceptionInterface {
8+
9+
TOO_FEW_CONVERSATIONS(40001, "대화의 개수가 부족합니다.(5회 이상)")
10+
11+
;
12+
13+
private final int code;
14+
private final String message;
15+
16+
AdditionException(int code, String message) {
17+
this.code = code;
18+
this.message = message;
19+
}
20+
}

repository/src/main/java/com/mbtips/message/interfaces/MessageRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ public interface MessageRepository {
1010
List<GetMessageResponseDto> findByConversationId(long conversationId);
1111

1212
void createMessage(Message message);
13+
14+
List<GetMessageResponseDto> findRecentMessagesByConversationId(Long conversationId);
1315
}

repository/src/main/java/com/mbtips/message/repository/impl/MessageRepositoryImpl.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import com.mbtips.message.interfaces.MessageRepository;
77
import com.mbtips.message.repository.jpa.MessageJpaRepository;
88
import lombok.RequiredArgsConstructor;
9+
import org.springframework.data.domain.PageRequest;
10+
import org.springframework.data.jpa.repository.Query;
11+
import org.springframework.data.repository.query.Param;
912
import org.springframework.stereotype.Repository;
1013
import org.springframework.transaction.annotation.Propagation;
1114
import org.springframework.transaction.annotation.Transactional;
@@ -31,4 +34,10 @@ public void createMessage(Message message) {
3134
messageJpaRepository.save(messageEntity);
3235
}
3336

37+
@Override
38+
public List<GetMessageResponseDto> findRecentMessagesByConversationId(Long conversationId) {
39+
return messageJpaRepository.findRecentMessagesByConversationId(conversationId, PageRequest.of(0,5));
40+
}
41+
42+
3443
}

repository/src/main/java/com/mbtips/message/repository/jpa/MessageJpaRepository.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import com.mbtips.domain.message.dto.response.GetMessageResponseDto;
55
import com.mbtips.message.entity.MessageEntity;
6+
import org.springframework.data.domain.PageRequest;
67
import org.springframework.data.jpa.repository.JpaRepository;
78
import org.springframework.data.jpa.repository.Query;
89
import org.springframework.stereotype.Repository;
@@ -22,4 +23,11 @@ public interface MessageJpaRepository extends JpaRepository<MessageEntity, Long>
2223
"where m.conversationEntity.conversationId = :conversationId " +
2324
"ORDER BY m.sentAt asc")
2425
List<GetMessageResponseDto> findByConversationId(Long conversationId);
26+
27+
@Query("SELECT new com.mbtips.domain.message.dto.response.GetMessageResponseDto(" +
28+
"m.messageId, m.messageContent, m.sentAt, m.user.userId, m.virtualFriendEntity.virtualFriendId) " +
29+
"FROM MessageEntity m " +
30+
"WHERE m.conversationEntity.conversationId = :conversationId " +
31+
"ORDER BY m.sentAt DESC")
32+
List<GetMessageResponseDto> findRecentMessagesByConversationId(Long conversationId, PageRequest of);
2533
}

0 commit comments

Comments
 (0)