Skip to content

Commit ff71cb7

Browse files
committed
hotfix : date 메시지 필드 수정
1 parent 852ecc1 commit ff71cb7

File tree

3 files changed

+62
-6
lines changed

3 files changed

+62
-6
lines changed

src/main/java/ita/tinybite/domain/chat/dto/res/ChatMessageResDto.java

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,59 @@ public record ChatMessageResDto(
2323

2424
String systemMessage
2525
) {
26+
27+
public static ChatMessageResDto of(ChatMessage message) {
28+
return ChatMessageResDto.of(message, null);
29+
}
30+
2631
public static ChatMessageResDto of(ChatMessage chatMessage, Long senderId) {
2732
switch (chatMessage.getMessageType()) {
33+
case SYSTEM -> {
34+
return ChatMessageResDto.builder()
35+
.messageId(chatMessage.getId())
36+
.systemMessage(chatMessage.getSystemMessage())
37+
.build();
38+
}
2839
case DATE -> {
2940
return ChatMessageResDto.builder()
3041
.messageId(chatMessage.getId())
31-
.messageType(chatMessage.getMessageType())
3242
.createdAt(chatMessage.getCreatedAt())
33-
.systemMessage(chatMessage.getSystemMessage())
3443
.build();
3544
}
36-
default -> {
45+
case IMAGE -> {
3746
return ChatMessageResDto.builder()
3847
.messageId(chatMessage.getId())
48+
.senderId(chatMessage.getSenderId())
49+
.nickname(chatMessage.getSenderName())
3950
.messageType(chatMessage.getMessageType())
4051
.createdAt(chatMessage.getCreatedAt())
52+
.build();
53+
54+
}
55+
case TEXT -> {
56+
return ChatMessageResDto.builder()
57+
.messageId(chatMessage.getId())
4158
.senderId(chatMessage.getSenderId())
42-
.isMine(senderId.equals(chatMessage.getSenderId()))
4359
.nickname(chatMessage.getSenderName())
60+
.messageType(chatMessage.getMessageType())
4461
.text(chatMessage.getText())
45-
.imageUrl(chatMessage.getImageUrl())
46-
.systemMessage(chatMessage.getSystemMessage())
62+
.createdAt(chatMessage.getCreatedAt())
4763
.build();
4864
}
65+
default -> {
66+
67+
}
4968
}
69+
return ChatMessageResDto.builder()
70+
.messageId(chatMessage.getId())
71+
.messageType(chatMessage.getMessageType())
72+
.createdAt(chatMessage.getCreatedAt())
73+
.senderId(chatMessage.getSenderId())
74+
.isMine(senderId.equals(chatMessage.getSenderId()))
75+
.nickname(chatMessage.getSenderName())
76+
.text(chatMessage.getText())
77+
.imageUrl(chatMessage.getImageUrl())
78+
.systemMessage(chatMessage.getSystemMessage())
79+
.build();
5080
}
5181
}

src/main/java/ita/tinybite/domain/chat/service/ChatService.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import org.springframework.data.domain.Pageable;
1818
import org.springframework.data.domain.Slice;
1919
import org.springframework.data.domain.Sort;
20+
import org.springframework.messaging.simp.SimpMessagingTemplate;
21+
import org.springframework.scheduling.annotation.Async;
2022
import org.springframework.stereotype.Service;
2123
import org.springframework.transaction.annotation.Transactional;
2224

@@ -30,6 +32,7 @@
3032
@RequiredArgsConstructor
3133
public class ChatService {
3234

35+
private final SimpMessagingTemplate simpMessagingTemplate;
3336
private final ChatMessageRepository chatMessageRepository;
3437
private final ChatRoomRepository chatRoomRepository;
3538
private final ChatSubscribeRegistry registry;
@@ -112,4 +115,18 @@ public ChatMessageSliceResDto getChatMessage(Long roomId, int page, int size) {
112115
.hasNext(messages.hasNext())
113116
.build();
114117
}
118+
119+
@Async
120+
// ChatMessage 생성 (systemMessage : 파티가 생성되엇씁니다)
121+
public void saveSystemMessage(ChatRoom chatRoom) {
122+
ChatMessage message = ChatMessage.builder()
123+
.chatRoomId(chatRoom.getId())
124+
.messageType(MessageType.SYSTEM)
125+
.systemMessage("파티가 생성되었습니다.")
126+
.build();
127+
128+
chatMessageRepository.save(message);
129+
130+
simpMessagingTemplate.convertAndSend("/subscribe/chat/room/" + chatRoom.getId(), ChatMessageResDto.of(message));
131+
}
115132
}

src/main/java/ita/tinybite/domain/party/service/PartyService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package ita.tinybite.domain.party.service;
22

3+
import ita.tinybite.domain.chat.entity.ChatMessage;
34
import ita.tinybite.domain.chat.entity.ChatRoom;
45
import ita.tinybite.domain.chat.enums.ChatRoomType;
6+
import ita.tinybite.domain.chat.repository.ChatMessageRepository;
57
import ita.tinybite.domain.chat.repository.ChatRoomRepository;
8+
import ita.tinybite.domain.chat.service.ChatService;
69
import ita.tinybite.domain.notification.service.facade.NotificationFacade;
710
import ita.tinybite.domain.party.dto.request.PartyCreateRequest;
811
import ita.tinybite.domain.party.dto.request.PartyListRequest;
@@ -36,6 +39,8 @@
3639
@RequiredArgsConstructor
3740
@Transactional(readOnly = true)
3841
public class PartyService {
42+
private final ChatMessageRepository chatMessageRepository;
43+
private final ChatService chatService;
3944
@Value("${default.image.thumbnail.delivery}")
4045
private String defaultDeliveryImage;
4146
@Value("${default.image.thumbnail.grocery}")
@@ -114,6 +119,10 @@ public Long createParty(Long userId, PartyCreateRequest request) {
114119
.build();
115120

116121
participantRepository.save(participant);
122+
123+
// 파티가 생성되었다는 메시지를 그룹 채팅방에 저장
124+
chatService.saveSystemMessage(chatRoom);
125+
117126
return savedParty.getId();
118127
}
119128

0 commit comments

Comments
 (0)