Skip to content

Commit 746426a

Browse files
authored
Merge pull request #24 from Sysone-Mini-2nd/dev
feat/ 배포된 주소 연결
2 parents 47b590d + f713b5c commit 746426a

9 files changed

Lines changed: 81 additions & 8 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ jobs:
8888
${{ secrets.GCP_INSTANCE_NAME }}:~/ \
8989
--project=${{ secrets.GCP_PROJECT_ID }} \
9090
--zone=${{ secrets.GCP_ZONE }}
91-
91+
9292
# 8. VM에서 배포 스크립트 실행
9393
- name: Execute Deploy Script on VM
9494
run: |

src/main/java/com/sys/stm/domains/messenger/controller/ChatMessageController.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.sys.stm.domains.messenger.dto.request.ChatMessageRequestDto;
44
import com.sys.stm.domains.messenger.dto.request.MessageReadRequestDto;
55
import com.sys.stm.domains.messenger.dto.response.ChatMessageResponseDto;
6+
import com.sys.stm.domains.messenger.dto.response.ChatRoomListUpdateResponseDto;
67
import com.sys.stm.domains.messenger.dto.response.MessageReadResponseDto;
78
import com.sys.stm.domains.messenger.dto.response.TotalUnreadCountResponseDto;
89
import com.sys.stm.domains.messenger.service.ChatMessageServiceImpl;
@@ -37,22 +38,32 @@ public void sendMessage(ChatMessageRequestDto message) {
3738
// 메시지를 구독자들(채팅방 참여자)에게 전송
3839
messagingTemplate.convertAndSend("/topic/chatroom/" + message.getChatRoomId(), chatMessageResponseDto);
3940

40-
// 3. 채팅방 참여자들에게 최신 전체 안읽음 카운트 전송
41+
// 채팅방 참여자들에게 최신 전체 안읽음 카운트 전송
4142
List<Long> participantIds =
4243
chatRoomParticipantService.findParticipantIdsByRoomId(message.getChatRoomId());
4344

45+
// 채팅방의 최신 메시지 조회
46+
String recentMessage = chatRoomService.getRecentMessageById(message.getChatRoomId());
47+
4448
for (Long participantId : participantIds) {
4549
if (participantId.equals(message.getSenderId())) {
4650
continue; // 메시지 보낸 사람은 제외
4751
}
4852

49-
// 4. 해당 참여자의 전체 안 읽은 메시지 개수를 다시 계산
53+
// 채팅방 목록 구독자들에게 최신 정보 전송
54+
long totalUnreadCountForRoom = chatRoomService.getUnreadCount(participantId, message.getChatRoomId());
55+
messagingTemplate.convertAndSend(
56+
"/topic/chatroom-list",
57+
new ChatRoomListUpdateResponseDto(message.getChatRoomId(), totalUnreadCountForRoom, recentMessage,participantId)
58+
);
59+
60+
// 해당 참여자의 전체 안 읽은 메시지 개수를 다시 계산
5061
long totalUnreadCount = chatRoomService.getTotalUnreadCount(participantId);
5162

52-
// 5. 개인 큐로 최신 총합 전송
63+
// 개인 큐로 최신 총합 전송
5364
messagingTemplate.convertAndSend(
54-
"/queue/total-unread/" + participantId.toString()
55-
, new TotalUnreadCountResponseDto(totalUnreadCount)
65+
"/topic/update",
66+
new TotalUnreadCountResponseDto(totalUnreadCount, recentMessage, participantId, message.getChatRoomId())
5667
);
5768
}
5869

src/main/java/com/sys/stm/domains/messenger/controller/ChatRoomController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public ApiResponse<TotalUnreadCountResponseDto> getTotalUnreadCount(@Authenticat
145145
long memberId = userDetails.getId();
146146

147147
long totalCount = chatRoomService.getTotalUnreadCount(memberId);
148-
return ApiResponse.ok(new TotalUnreadCountResponseDto(totalCount));
148+
return ApiResponse.ok(new TotalUnreadCountResponseDto(totalCount, null, -1, -1));
149149

150150
}
151151

src/main/java/com/sys/stm/domains/messenger/dao/ChatRoomRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,9 @@ public interface ChatRoomRepository {
1818
int updateChatRoom(@Param("id") long id, @Param("dto") ChatRoomUpdateRequestDto dto);
1919

2020
int updateRecentMessage (@Param("chatRoomId") long chatRoomId, @Param("msg") String message);
21+
22+
String getRecentMessageById(@Param("chatRoomId") long chatRoomId);
23+
24+
long getUnreadCount(@Param("memberId") Long participantId, @Param("chatRoomId") Long chatRoomId);
2125
}
2226

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.sys.stm.domains.messenger.dto.response;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
import lombok.ToString;
8+
9+
@ToString
10+
@Getter
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
public class ChatRoomListUpdateResponseDto {
14+
15+
@JsonProperty("chatRoomId")
16+
private long chatRoomId;
17+
@JsonProperty("totalUnreadCount")
18+
private long totalUnreadCount;
19+
@JsonProperty("recentMessage")
20+
private String recentMessage;
21+
@JsonProperty("memberId")
22+
private long memberId;
23+
24+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
package com.sys.stm.domains.messenger.dto.response;
22

3+
import com.fasterxml.jackson.annotation.JsonProperty;
34
import lombok.AllArgsConstructor;
45
import lombok.Getter;
56

67
@AllArgsConstructor
78
@Getter
89
public class TotalUnreadCountResponseDto {
10+
@JsonProperty("totalUnreadCount")
911
private long totalUnreadCount;
12+
@JsonProperty("recentMessage")
13+
private String recentMessage;
14+
@JsonProperty("memberId")
15+
private long memberId;
16+
@JsonProperty("chatRoomId")
17+
private long chatRoomId;
1018
}
1119

1220

src/main/java/com/sys/stm/domains/messenger/service/ChatRoomService.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,12 @@ public long getTotalUnreadCount(long memberId) {
133133
public int updateRecentMessage(long chatRoomId, String message){
134134
return chatRoomRepository.updateRecentMessage(chatRoomId, message);
135135
}
136+
137+
public String getRecentMessageById(long chatRoomId){
138+
return chatRoomRepository.getRecentMessageById(chatRoomId);
139+
}
140+
141+
public long getUnreadCount(Long participantId, Long chatRoomId) {
142+
return chatRoomRepository.getUnreadCount(participantId, chatRoomId);
143+
}
136144
}

src/main/resources/mappers/ChatRoomMapper.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,22 @@
5050
WHERE "id" = #{chatRoomId}
5151
</update>
5252

53+
<select id="getRecentMessageById">
54+
SELECT "recent_message"
55+
FROM "chat_room"
56+
WHERE "id" = #{chatRoomId}
57+
</select>
58+
59+
<select id="getUnreadCount">
60+
SELECT
61+
(SELECT COUNT(*)
62+
FROM "message" m
63+
WHERE m."chat_room_id" = crp."chat_room_id" AND m."created_at" > crp."last_read_at") AS unreadMessageCount
64+
FROM
65+
"chat_room_participants" crp
66+
JOIN
67+
"chat_room" cr ON crp."chat_room_id" = cr."id"
68+
WHERE
69+
crp."member_id" = #{memberId} AND cr."id" = #{chatRoomId}
70+
</select>
5371
</mapper>

src/main/resources/mappers/IssueMapper.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@
195195
SET
196196
"member_id" = #{memberId, jdbcType=NUMERIC},
197197
"title" = #{title},
198-
"desc" = #{desc},
198+
"desc" = #{desc, jdbcType=VARCHAR},
199199
"status" = #{status},
200200
"priority" = #{priority},
201201
"start_date" = #{startDate},

0 commit comments

Comments
 (0)