Skip to content

Commit 9c04bfe

Browse files
committed
feat: 채팅 메시지 조회 시 유저 프로필 이미지 포함
1 parent 601d065 commit 9c04bfe

7 files changed

Lines changed: 29 additions & 12 deletions

File tree

src/main/java/com/back/web7_9_codecrete_be/domain/chats/controller/ChatStompDocsController.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.swagger.v3.oas.annotations.Operation;
1111
import io.swagger.v3.oas.annotations.media.Content;
1212
import io.swagger.v3.oas.annotations.media.Schema;
13+
import io.swagger.v3.oas.annotations.parameters.RequestBody;
1314
import io.swagger.v3.oas.annotations.responses.ApiResponse;
1415
import io.swagger.v3.oas.annotations.tags.Tag;
1516

@@ -43,19 +44,20 @@ public class ChatStompDocsController {
4344
#### 4️⃣ SEND Payload
4445
```json
4546
{
46-
"concertId": 1,
47-
"content": "안녕하세요!"
47+
concertId: 1,
48+
content: "안녕하세요!"
4849
}
4950
```
5051
5152
#### 5️⃣ SUBSCRIBE Response
5253
```json
5354
{
54-
"concertId": 1,
55-
"senderId": 10,
56-
"senderName": "테스트 유저",
57-
"content": "안녕하세요!",
58-
"sentAt": "2025-12-23T15:30:00"
55+
concertId: 1,
56+
senderId: 2,
57+
senderName: "테스트 유저",
58+
content: "안녕하세요!",
59+
sentDate: "2026-01-02T12:13:18.4422905",
60+
profileImage: "https://example.com/profile.jpg"
5961
}
6062
```
6163
"""
@@ -71,7 +73,7 @@ public void stompChatGuide() {}
7173
- 실제 사용되는 HTTP API 아닙니다.
7274
- Swagger 문서용
7375
""",
74-
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
76+
requestBody = @RequestBody(
7577
description = "STOMP 메세지 SEND하면 전달되는 요청 데이터",
7678
required = true,
7779
content = @Content(

src/main/java/com/back/web7_9_codecrete_be/domain/chats/dto/response/ChatMessageResponse.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,19 @@ public class ChatMessageResponse {
1515

1616
@Schema(description = "공연 ID", example = "1")
1717
private Long concertId;
18+
1819
@Schema(description = "발신자 ID", example = "2")
1920
private Long senderId;
21+
2022
@Schema(description = "발신자 닉네임", example = "테스트 유저")
2123
private String senderName;
24+
2225
@Schema(description = "메시지 내용", example = "안녕하세요")
2326
private String content;
27+
2428
@Schema(description = "전송 시각", example = "2025-12-23T16:28:07.8806432")
2529
private LocalDateTime sentDate;
30+
31+
@Schema(description = "프로필 이미지", example = "https://example.com/profile.jpg")
32+
private String profileImage;
2633
}

src/main/java/com/back/web7_9_codecrete_be/domain/chats/dto/response/ChatReadResponse.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public class ChatReadResponse {
3030
@Schema(description = "메시지 내용", example = "안녕하세요")
3131
private String content;
3232

33-
@Schema(description = "전송 시각")
33+
@Schema(description = "전송 시각", example = "2026-01-02T12:13:13.1588173")
3434
private LocalDateTime sentDate;
35+
36+
@Schema(description = "프로필 이미지", example = "https://example.com/profile.jpg")
37+
private String profileImage;
3538
}

src/main/java/com/back/web7_9_codecrete_be/domain/chats/dto/response/ChatUserCache.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ public class ChatUserCache {
1111

1212
private Long userId;
1313
private String nickname;
14+
private String profileImage;
1415
}

src/main/java/com/back/web7_9_codecrete_be/domain/chats/repository/ChatStreamRepository.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public void save(ChatMessageResponse message) {
3939
fields.put("senderName", message.getSenderName());
4040
fields.put("content", message.getContent());
4141
fields.put("sentDate", message.getSentDate().toString());
42+
fields.put("profileImage", message.getProfileImage());
4243

4344
redisTemplate.opsForStream().add(
4445
StreamRecords.newRecord()
@@ -106,7 +107,8 @@ private List<ChatReadResponse> toResponses(
106107
Long.valueOf(v.get("senderId").toString()),
107108
v.get("senderName").toString(),
108109
v.get("content").toString(),
109-
LocalDateTime.parse(v.get("sentDate").toString())
110+
LocalDateTime.parse(v.get("sentDate").toString()),
111+
v.get("profileImage").toString()
110112
);
111113
})
112114
.filter(Objects::nonNull)

src/main/java/com/back/web7_9_codecrete_be/domain/chats/service/ChatMessageService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ private void sendMessage(ChatMessageRequest request, String email) {
6363
chatUser.getUserId(),
6464
chatUser.getNickname(),
6565
request.getContent(),
66-
LocalDateTime.now()
66+
LocalDateTime.now(),
67+
chatUser.getProfileImage()
6768
);
6869

6970
log.info("[SEND MESSAGE] From User ID: {}, Content: {}",

src/main/java/com/back/web7_9_codecrete_be/domain/chats/service/ChatUserCacheService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ public ChatUserCache getChatUser(String email) {
4141

4242
ChatUserCache cache = new ChatUserCache(
4343
user.getId(),
44-
user.getNickname()
44+
user.getNickname(),
45+
user.getProfileImage()
4546
);
4647

4748
redisTemplate.opsForValue().set(key, cache, ttl);

0 commit comments

Comments
 (0)