Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/main/java/go/alarm/fcm/service/FCMService.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package go.alarm.fcm.service;


import go.alarm.group.domain.Group;
import go.alarm.user.domain.User;

public interface FCMService {

void sendAlarms();
User sendAlarmsTest(Long userId);
void sendBedTimeAlarms();

void prick(Long senderId, Long receiverId);
void sendTriggerAlarms(Group group);

}
32 changes: 29 additions & 3 deletions src/main/java/go/alarm/fcm/service/FCMServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -140,8 +140,6 @@ public void prick(Long senderId, Long receiverId) {
User sender = userRepository.findById(senderId).get();
User receiver = userRepository.findById(receiverId).get();

LocalTime now = LocalTime.now().withNano(0);

try {
sendNotification(
receiver.getFcmToken(),
Expand All @@ -156,6 +154,34 @@ public void prick(Long senderId, Long receiverId) {
}
}

@Override
public void sendTriggerAlarms(Group group) {
List<UserGroup> userGroups = userGroupRepository.findAllByGroup(group);

// 방장을 식별 (가장 낮은 Id를 가진 UserGroup)
UserGroup leaderUserGroup = userGroups.stream()
.min(Comparator.comparingLong(UserGroup::getId))
.orElse(null);

for (UserGroup userGroup : userGroups) {
if (!userGroup.getIsDisturbBanMode() && !userGroup.equals(leaderUserGroup)) {
User user = userGroup.getUser();
try {
sendNotification(
user.getFcmToken(),
"수정 알림",
"수정 알림입니다.",
"wakeupalarm.wav",
group.getId()
);
} catch (FirebaseMessagingException e) {
log.warn("수정 알림 전송을 실패했습니다.");
e.printStackTrace();
}
}
}
}


/**
* FCM으로 알림을 보내줍니다.
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/go/alarm/global/config/SchedulerConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public SchedulerConfig(FCMService fcmService, UserService userService) {
@Scheduled(cron = "0 * * * * *")
public void scheduleAlarms() {
log.warn("현재 시각:" + LocalTime.now());
fcmService.sendAlarms();
//fcmService.sendAlarms();
fcmService.sendBedTimeAlarms();
}

Expand Down
7 changes: 6 additions & 1 deletion src/main/java/go/alarm/group/service/GroupServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static go.alarm.global.response.ResponseCode.NOT_FOUND_JOIN_CODE;
import static go.alarm.global.response.ResponseCode.NOT_GROUP_HOST;

import go.alarm.fcm.service.FCMService;
import go.alarm.global.response.exception.BadRequestException;
import go.alarm.group.domain.Group;
import go.alarm.group.domain.UserGroup;
Expand All @@ -31,6 +32,7 @@ public class GroupServiceImpl implements GroupService {
private final GroupRepository groupRepository;
private final UserRepository userRepository;
private final UserGroupRepository userGroupRepository;
private final FCMService fcmService;

@Override
public Group createGroup(Long userId, GroupRequest request) {
Expand Down Expand Up @@ -62,11 +64,14 @@ public Group updateGroup(Long userId, Long groupId, GroupRequest request) {
updateDayOfWeek(group.getWakeUpDayOfWeek(), request.getDayOfWeekList());
group.setName(request.getName());
group.setMemo(request.getMemo());
//방해금지모드 + 방장 제외 팀원들에게 알람이 수정되었다는 푸시 알림 보내줌
// 목적은 앱 진입 유도 -> 이래야만 기상알람 시간 or 요일 or 전부 다 바뀐게 갱신이 됨)
fcmService.sendTriggerAlarms(group);

return group;
}

public WakeUpDayOfWeek updateDayOfWeek(WakeUpDayOfWeek dayOfWeek, List<String> dayOfWeekList){
private WakeUpDayOfWeek updateDayOfWeek(WakeUpDayOfWeek dayOfWeek, List<String> dayOfWeekList){

dayOfWeek.resetDayOfWeek(); // 기존 기상 요일 리셋

Expand Down
Loading