Skip to content

Commit 485920b

Browse files
authored
[Fix] 메세지 예외 처리 (#380)
* fix: 버그 수정 - 친구 생성시 올바른 알림 생성 * feat: 버그 수정 - 토큰이 없는 경우 알림 중지 * fix: 버그 수정 - 토큰이 없는 경우 알림 중지, 로깅
1 parent badc48a commit 485920b

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

src/main/java/ku_rum/backend/domain/alarm/application/FcmService.java

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,38 @@ public class FcmService {
3737
private final UserService userService;
3838

3939
public void sendToUsersIfTokenExists(FcmDirectDto fcmDirectDto) {
40-
User user = userService.getUser();
41-
Optional<UserFcmToken> token = userFcmTokenRepository.findByUser(user);
40+
List<User> users = userQueryService.getUsersByIds(fcmDirectDto.userIds());
41+
List<UserFcmToken> userFcmTokens = userFcmTokenRepository.findByUserIn(users);
4242

43-
if (token.isEmpty()) {
44-
log.info("FCM 토큰이 존재하지 않는 유저입니다. userId={}", user.getId());
43+
List<Long> userIdsWithToken = userFcmTokens.stream()
44+
.map(token -> token.getUser().getId())
45+
.toList();
46+
47+
List<Long> userIdsWithoutToken = fcmDirectDto.userIds().stream()
48+
.filter(userId -> !userIdsWithToken.contains(userId))
49+
.toList();
50+
51+
if (!userIdsWithoutToken.isEmpty()) {
52+
log.info(
53+
"FCM 토큰이 없어 전송하지 못한 userIds={}",
54+
userIdsWithoutToken
55+
);
56+
}
57+
58+
if (userIdsWithToken.isEmpty()) {
59+
log.info(
60+
"FCM 전송 가능한 유저가 없습니다. 요청 userIds={}",
61+
fcmDirectDto.userIds()
62+
);
4563
return;
4664
}
4765

48-
sendToUsers(fcmDirectDto);
66+
FcmDirectDto filteredDto = FcmDirectDto.builder()
67+
.title(fcmDirectDto.title())
68+
.body(fcmDirectDto.body())
69+
.userIds(userIdsWithToken)
70+
.build();
71+
sendToUsers(filteredDto);
4972
}
5073

5174
public void sendToUsers(FcmDirectDto request) {

0 commit comments

Comments
 (0)