Skip to content

Commit 3255cfc

Browse files
Merge pull request #228 from DevKor-github/main
[Release] main to deploy
2 parents a8a865b + fd88414 commit 3255cfc

5 files changed

Lines changed: 52 additions & 6 deletions

File tree

ontime-back/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ dependencies {
3636
implementation 'com.fasterxml.jackson.core:jackson-databind'
3737
runtimeOnly 'com.h2database:h2'
3838
runtimeOnly 'com.mysql:mysql-connector-j'
39+
implementation 'mysql:mysql-connector-java:8.0.33'
3940
annotationProcessor 'org.projectlombok:lombok'
4041
testImplementation 'org.springframework.boot:spring-boot-starter-test'
4142
testImplementation 'org.springframework.security:spring-security-test'

ontime-back/src/main/java/devkor/ontime_back/service/NotificationService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void scheduleReminder(NotificationSchedule notificationSchedule) {
4343
}
4444

4545
ScheduledFuture<?> future = taskScheduler.schedule(
46-
() -> sendReminder(notificationSchedule, "약속 5분 전입니다"),
46+
() -> sendReminder(notificationSchedule, "준비 시작해야 합니다.(현재 시각: 약속시각 - (여유시간 + 이동시간 + 총준비시간) )"),
4747
Date.from(reminderTime.atZone(ZoneId.systemDefault()).toInstant())
4848
);
4949

@@ -68,7 +68,8 @@ public void sendReminder(NotificationSchedule notificationSchedule, String messa
6868

6969
if (userId != null) {
7070
UserSetting userSetting = userSettingRepository.findByUserId(userId)
71-
.orElseThrow(() -> new IllegalArgumentException("No UserSetting found in schedule's user"));// Repository 메서드 가정
71+
.orElseThrow(() -> new IllegalArgumentException("No UserSetting found in schedule's user"));
72+
log.debug("사용자 알림 전송 설정 여부: " + userSetting.getIsNotificationsEnabled());
7273

7374
if (Boolean.TRUE.equals(userSetting.getIsNotificationsEnabled())) {
7475
sendNotificationToUser(notificationSchedule.getSchedule(), message);

ontime-back/src/main/java/devkor/ontime_back/service/PreparationScheduleService.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package devkor.ontime_back.service;
22

33
import devkor.ontime_back.dto.PreparationDto;
4+
import devkor.ontime_back.entity.NotificationSchedule;
45
import devkor.ontime_back.entity.PreparationSchedule;
56
import devkor.ontime_back.entity.Schedule;
7+
import devkor.ontime_back.entity.User;
68
import devkor.ontime_back.global.jwt.JwtTokenProvider;
9+
import devkor.ontime_back.repository.NotificationScheduleRepository;
710
import devkor.ontime_back.repository.PreparationScheduleRepository;
811
import devkor.ontime_back.repository.ScheduleRepository;
912
import devkor.ontime_back.repository.UserRepository;
@@ -13,24 +16,26 @@
1316
import org.springframework.stereotype.Service;
1417
import org.springframework.transaction.annotation.Transactional;
1518

19+
import java.time.LocalDateTime;
1620
import java.util.HashMap;
1721
import java.util.List;
1822
import java.util.Map;
1923
import java.util.UUID;
2024
import java.util.stream.Collectors;
2125

22-
import static devkor.ontime_back.response.ErrorCode.SCHEDULE_NOT_FOUND;
23-
import static devkor.ontime_back.response.ErrorCode.UNAUTHORIZED_ACCESS;
26+
import static devkor.ontime_back.response.ErrorCode.*;
2427

2528
@Service
2629
@Transactional(readOnly = true)
2730
@RequiredArgsConstructor
2831
@Slf4j
2932
public class PreparationScheduleService {
33+
private final ScheduleService scheduleService;
3034
private final PreparationScheduleRepository preparationScheduleRepository;
3135
private final UserRepository userRepository;
3236
private final ScheduleRepository scheduleRepository;
3337
private final JwtTokenProvider jwtTokenProvider;
38+
private final NotificationScheduleRepository notificationScheduleRepository;
3439

3540

3641
@Transactional
@@ -87,5 +92,13 @@ protected void handlePreparationSchedules(Long userId, UUID scheduleId, List<Pre
8792
});
8893

8994
preparationScheduleRepository.saveAll(preparationSchedules);
95+
96+
NotificationSchedule notification = notificationScheduleRepository.findByScheduleScheduleId(scheduleId)
97+
.orElseThrow(() -> new GeneralException(NOTIFICATION_NOT_FOUND));
98+
99+
LocalDateTime notificationTime = scheduleService.getNotificationTime(schedule, schedule.getUser());
100+
log.info("Notification Time(변경된): " + notificationTime);
101+
102+
scheduleService.updateAndRescheduleNotification(notificationTime, notification);
90103
}
91104
}

ontime-back/src/main/java/devkor/ontime_back/service/ScheduleService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public void modifySchedule(Long userId, UUID scheduleId, ScheduleModDto schedule
107107
updateAndRescheduleNotification(newNotificationTime, notification);
108108
}
109109

110-
private void updateAndRescheduleNotification(LocalDateTime newNotificationTime, NotificationSchedule notification) {
110+
public void updateAndRescheduleNotification(LocalDateTime newNotificationTime, NotificationSchedule notification) {
111111
if(newNotificationTime == notification.getNotificationTime()) return;
112112

113113
notificationService.cancelScheduledNotification(notification.getId());
@@ -141,7 +141,7 @@ public void addSchedule(ScheduleAddDto scheduleAddDto, Long userId) {
141141
notificationService.scheduleReminder(notification);
142142
}
143143

144-
private LocalDateTime getNotificationTime(Schedule schedule, User user) {
144+
public LocalDateTime getNotificationTime(Schedule schedule, User user) {
145145
Integer preparationTime = calculatePreparationTime(schedule, user);
146146
Integer moveTime = schedule.getMoveTime();
147147
Integer spareTime = schedule.getScheduleSpareTime() == null ? user.getSpareTime() : schedule.getScheduleSpareTime();

ontime-back/src/test/java/devkor/ontime_back/service/PreparationScheduleServiceTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ public class PreparationScheduleServiceTest {
3737
@Autowired
3838
private UserRepository userRepository;
3939

40+
@Autowired
41+
private NotificationScheduleRepository notificationScheduleRepository;
42+
4043
@Autowired
4144
private PreparationScheduleService preparationScheduleService;
4245

@@ -63,6 +66,7 @@ void makePreparationSchedules_withoutDeletingExisting() {
6366
.punctualityScore(-1f)
6467
.scheduleCountAfterReset(0)
6568
.latenessCountAfterReset(0)
69+
.spareTime(5)
6670
.build();
6771
userRepository.save(newUser);
6872

@@ -83,6 +87,12 @@ void makePreparationSchedules_withoutDeletingExisting() {
8387
.build();
8488
scheduleRepository.save(addedSchedule1);
8589

90+
NotificationSchedule notificationSchedule = NotificationSchedule.builder()
91+
.schedule(addedSchedule1)
92+
.notificationTime(LocalDateTime.of(2025, 1, 1, 0, 0))
93+
.build();
94+
notificationScheduleRepository.save(notificationSchedule);
95+
8696
UUID preparationSchedule1Id = UUID.randomUUID();
8797
UUID preparationSchedule2Id = UUID.randomUUID();
8898

@@ -112,6 +122,7 @@ void updatePreparationSchedules_withDeletingExisting() {
112122
.punctualityScore(-1f)
113123
.scheduleCountAfterReset(0)
114124
.latenessCountAfterReset(0)
125+
.spareTime(5)
115126
.build();
116127
userRepository.save(newUser);
117128

@@ -132,6 +143,12 @@ void updatePreparationSchedules_withDeletingExisting() {
132143
.build();
133144
scheduleRepository.save(addedSchedule1);
134145

146+
NotificationSchedule notificationSchedule = NotificationSchedule.builder()
147+
.schedule(addedSchedule1)
148+
.notificationTime(LocalDateTime.of(2025, 1, 1, 0, 0))
149+
.build();
150+
notificationScheduleRepository.save(notificationSchedule);
151+
135152
PreparationSchedule preparationSchedule3 = preparationScheduleRepository.save(new PreparationSchedule(
136153
UUID.randomUUID(), addedSchedule1, "화장", 10, null));
137154
PreparationSchedule preparationSchedule2= preparationScheduleRepository.save(new PreparationSchedule(
@@ -168,6 +185,7 @@ void handlePreparationSchedules_withoutDeletingExisting() {
168185
.punctualityScore(-1f)
169186
.scheduleCountAfterReset(0)
170187
.latenessCountAfterReset(0)
188+
.spareTime(5)
171189
.build();
172190
userRepository.save(newUser);
173191

@@ -188,6 +206,12 @@ void handlePreparationSchedules_withoutDeletingExisting() {
188206
.build();
189207
scheduleRepository.save(addedSchedule1);
190208

209+
NotificationSchedule notificationSchedule = NotificationSchedule.builder()
210+
.schedule(addedSchedule1)
211+
.notificationTime(LocalDateTime.of(2025, 1, 1, 0, 0))
212+
.build();
213+
notificationScheduleRepository.save(notificationSchedule);
214+
191215
UUID preparationSchedule1Id = UUID.randomUUID();
192216
UUID preparationSchedule2Id = UUID.randomUUID();
193217

@@ -217,6 +241,7 @@ void handlePreparationSchedules_withDeletingExisting() {
217241
.punctualityScore(-1f)
218242
.scheduleCountAfterReset(0)
219243
.latenessCountAfterReset(0)
244+
.spareTime(5)
220245
.build();
221246
userRepository.save(newUser);
222247

@@ -237,6 +262,12 @@ void handlePreparationSchedules_withDeletingExisting() {
237262
.build();
238263
scheduleRepository.save(addedSchedule1);
239264

265+
NotificationSchedule notificationSchedule = NotificationSchedule.builder()
266+
.schedule(addedSchedule1)
267+
.notificationTime(LocalDateTime.of(2025, 1, 1, 0, 0))
268+
.build();
269+
notificationScheduleRepository.save(notificationSchedule);
270+
240271
PreparationSchedule preparationSchedule3 = preparationScheduleRepository.save(new PreparationSchedule(
241272
UUID.randomUUID(), addedSchedule1, "화장", 10, null));
242273
PreparationSchedule preparationSchedule2= preparationScheduleRepository.save(new PreparationSchedule(

0 commit comments

Comments
 (0)