From 6ccedab0752fc71bca49207dee0fc05053ff4e83 Mon Sep 17 00:00:00 2001 From: taehyeon3 <117972735+taehyeon3@users.noreply.github.com> Date: Thu, 27 Feb 2025 18:22:23 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=80=20[Merge]=20Merge=208th=20to=20dev?= =?UTF-8?q?=20(#1175)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: taehyeon Co-authored-by: wonie <119565449+wonies@users.noreply.github.com> Co-authored-by: wonie Co-authored-by: seyeon22222 <92151066+seyeon22222@users.noreply.github.com> Co-authored-by: seykim --- .../response/PrivateScheduleAdminDetailResDto.java | 2 +- .../response/ImportedScheduleUpdateResDto.java | 2 +- .../response/PrivateScheduleDetailResDto.java | 2 +- .../response/PrivateSchedulePeriodResDto.java | 2 +- .../response/PrivateScheduleUpdateResDto.java | 2 +- .../service/ImportedScheduleService.java | 5 +++-- .../service/PrivateScheduleService.java | 8 ++++---- .../service/PublicScheduleService.java | 14 +++++++++----- .../controller/ImportedScheduleControllerTest.java | 2 +- .../controller/PrivateScheduleControllerTest.java | 6 +++--- .../java/gg/data/calendar/PrivateSchedule.java | 6 +++--- .../repo/calendar/PrivateScheduleRepository.java | 6 +++++- .../gg/repo/calendar/PublicScheduleRepository.java | 3 +++ 13 files changed, 36 insertions(+), 24 deletions(-) diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/admin/schedule/privateschedule/controller/response/PrivateScheduleAdminDetailResDto.java b/gg-calendar-api/src/main/java/gg/calendar/api/admin/schedule/privateschedule/controller/response/PrivateScheduleAdminDetailResDto.java index 501104185..93f3a22d3 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/admin/schedule/privateschedule/controller/response/PrivateScheduleAdminDetailResDto.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/admin/schedule/privateschedule/controller/response/PrivateScheduleAdminDetailResDto.java @@ -58,7 +58,7 @@ private PrivateScheduleAdminDetailResDto(PrivateSchedule privateSchedule, Schedu this.link = privateSchedule.getPublicSchedule().getLink(); this.groupTitle = scheduleGroup.getTitle(); this.groupBackgroundColor = scheduleGroup.getBackgroundColor(); - this.isAlarm = privateSchedule.isAlarm(); + this.isAlarm = privateSchedule.getAlarm(); this.startTime = privateSchedule.getPublicSchedule().getStartTime(); this.endTime = privateSchedule.getPublicSchedule().getEndTime(); diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/ImportedScheduleUpdateResDto.java b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/ImportedScheduleUpdateResDto.java index a78d2c4ca..aeaacb601 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/ImportedScheduleUpdateResDto.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/ImportedScheduleUpdateResDto.java @@ -78,7 +78,7 @@ public static ImportedScheduleUpdateResDto toDto(PrivateSchedule privateSchedule .status(privateSchedule.getStatus()) .startTime(privateSchedule.getPublicSchedule().getStartTime()) .endTime(privateSchedule.getPublicSchedule().getEndTime()) - .alarm(privateSchedule.isAlarm()) + .alarm(privateSchedule.getAlarm()) .groupId(privateSchedule.getGroupId()) .build(); } diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleDetailResDto.java b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleDetailResDto.java index 79a127806..744ce42fb 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleDetailResDto.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleDetailResDto.java @@ -82,7 +82,7 @@ public static PrivateScheduleDetailResDto toDto(PrivateSchedule privateSchedule, .status(privateSchedule.getStatus()) .startTime(privateSchedule.getPublicSchedule().getStartTime()) .endTime(privateSchedule.getPublicSchedule().getEndTime()) - .alarm(privateSchedule.isAlarm()) + .alarm(privateSchedule.getAlarm()) .groupTitle(scheduleGroup.getTitle()) .groupColor(scheduleGroup.getBackgroundColor()) .build(); diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateSchedulePeriodResDto.java b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateSchedulePeriodResDto.java index 4886390c0..c7b795e44 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateSchedulePeriodResDto.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateSchedulePeriodResDto.java @@ -86,7 +86,7 @@ public static PrivateSchedulePeriodResDto toDto(PrivateSchedule privateSchedule, .status(privateSchedule.getStatus()) .startTime(privateSchedule.getPublicSchedule().getStartTime()) .endTime(privateSchedule.getPublicSchedule().getEndTime()) - .alarm(privateSchedule.isAlarm()) + .alarm(privateSchedule.getAlarm()) .groupTitle(scheduleGroup.getTitle()) .groupColor(scheduleGroup.getBackgroundColor()) .groupId(scheduleGroup.getId()) diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleUpdateResDto.java b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleUpdateResDto.java index 482ced24a..a7e2612d5 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleUpdateResDto.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/controller/response/PrivateScheduleUpdateResDto.java @@ -78,7 +78,7 @@ public static PrivateScheduleUpdateResDto toDto(PrivateSchedule privateSchedule) .status(privateSchedule.getStatus()) .startTime(privateSchedule.getPublicSchedule().getStartTime()) .endTime(privateSchedule.getPublicSchedule().getEndTime()) - .alarm(privateSchedule.isAlarm()) + .alarm(privateSchedule.getAlarm()) .groupId(privateSchedule.getGroupId()) .build(); } diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/ImportedScheduleService.java b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/ImportedScheduleService.java index c2b2ba133..9588b4148 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/ImportedScheduleService.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/ImportedScheduleService.java @@ -9,6 +9,7 @@ import gg.data.calendar.PrivateSchedule; import gg.data.calendar.ScheduleGroup; import gg.data.calendar.type.DetailClassification; +import gg.data.calendar.type.ScheduleStatus; import gg.repo.calendar.PrivateScheduleRepository; import gg.repo.calendar.ScheduleGroupRepository; import gg.utils.exception.ErrorCode; @@ -26,8 +27,8 @@ public class ImportedScheduleService { @Transactional public ImportedScheduleUpdateResDto updateImportedSchedule(UserDto userDto, ImportedScheduleUpdateReqDto importedScheduleUpdateReqDto, Long privateScheduleId) { - PrivateSchedule privateSchedule = privateScheduleRepository.findById(privateScheduleId) - .orElseThrow(() -> new NotExistException(ErrorCode.PRIVATE_SCHEDULE_NOT_FOUND)); + PrivateSchedule privateSchedule = privateScheduleRepository.findByIdAndStatusNot(privateScheduleId, + ScheduleStatus.DELETE).orElseThrow(() -> new NotExistException(ErrorCode.PRIVATE_SCHEDULE_NOT_FOUND)); validateAuthor(userDto.getIntraId(), privateSchedule.getUser().getIntraId()); ScheduleGroup scheduleGroup = scheduleGroupRepository.findById(importedScheduleUpdateReqDto.getGroupId()) .orElseThrow(() -> new NotExistException(ErrorCode.SCHEDULE_GROUP_NOT_FOUND)); diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/PrivateScheduleService.java b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/PrivateScheduleService.java index c4ac8cdf1..77caea86d 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/PrivateScheduleService.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/privateschedule/service/PrivateScheduleService.java @@ -20,6 +20,7 @@ import gg.data.calendar.PublicSchedule; import gg.data.calendar.ScheduleGroup; import gg.data.calendar.type.DetailClassification; +import gg.data.calendar.type.ScheduleStatus; import gg.data.user.User; import gg.repo.calendar.PrivateScheduleRepository; import gg.repo.calendar.PublicScheduleRepository; @@ -57,8 +58,7 @@ public void createPrivateSchedule(UserDto userDto, PrivateScheduleCreateReqDto p @Transactional public PrivateScheduleUpdateResDto updatePrivateSchedule(UserDto userDto, - PrivateScheduleUpdateReqDto privateScheduleUpdateReqDto, - Long privateScheduleId) { + PrivateScheduleUpdateReqDto privateScheduleUpdateReqDto, Long privateScheduleId) { validateTimeRange(privateScheduleUpdateReqDto.getStartTime(), privateScheduleUpdateReqDto.getEndTime()); PrivateSchedule privateSchedule = privateScheduleRepository.findById(privateScheduleId) .orElseThrow(() -> new NotExistException(ErrorCode.PRIVATE_SCHEDULE_NOT_FOUND)); @@ -83,8 +83,8 @@ public void deletePrivateSchedule(UserDto userDto, Long privateScheduleId) { } public PrivateScheduleDetailResDto getPrivateScheduleDetail(UserDto userDto, Long privateScheduleId) { - PrivateSchedule privateSchedule = privateScheduleRepository.findById(privateScheduleId) - .orElseThrow(() -> new NotExistException(ErrorCode.PRIVATE_SCHEDULE_NOT_FOUND)); + PrivateSchedule privateSchedule = privateScheduleRepository.findByIdAndStatusNot(privateScheduleId, + ScheduleStatus.DELETE).orElseThrow(() -> new NotExistException(ErrorCode.PRIVATE_SCHEDULE_NOT_FOUND)); ScheduleGroup scheduleGroup = scheduleGroupRepository.findById(privateSchedule.getGroupId()) .orElseThrow(() -> new NotExistException(ErrorCode.SCHEDULE_GROUP_NOT_FOUND)); validateAuthor(userDto.getIntraId(), privateSchedule.getUser().getIntraId()); diff --git a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/publicschedule/service/PublicScheduleService.java b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/publicschedule/service/PublicScheduleService.java index fd57909ae..a3664abd7 100644 --- a/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/publicschedule/service/PublicScheduleService.java +++ b/gg-calendar-api/src/main/java/gg/calendar/api/user/schedule/publicschedule/service/PublicScheduleService.java @@ -17,6 +17,7 @@ import gg.data.calendar.type.DetailClassification; import gg.data.calendar.type.EventTag; import gg.data.calendar.type.JobTag; +import gg.data.calendar.type.ScheduleStatus; import gg.data.calendar.type.TechTag; import gg.data.user.User; import gg.repo.calendar.PrivateScheduleRepository; @@ -60,7 +61,8 @@ public void createJobPublicSchedule(PublicScheduleCreateJobReqDto req, Long user public PublicSchedule updatePublicSchedule(Long scheduleId, PublicScheduleUpdateReqDto req, Long userId) { tagErrorCheck(req.getClassification(), req.getEventTag(), req.getJobTag(), req.getTechTag()); User user = userRepository.getById(userId); - PublicSchedule existingSchedule = publicScheduleRepository.findById(scheduleId) + PublicSchedule existingSchedule = publicScheduleRepository.findByIdAndStatusNot(scheduleId, + ScheduleStatus.DELETE) .orElseThrow(() -> new NotExistException(ErrorCode.PUBLIC_SCHEDULE_NOT_FOUND)); checkAuthor(existingSchedule.getAuthor(), user); checkAuthor(req.getAuthor(), user); @@ -73,7 +75,8 @@ public PublicSchedule updatePublicSchedule(Long scheduleId, PublicScheduleUpdate @Transactional public void deletePublicSchedule(Long scheduleId, Long userId) { User user = userRepository.getById(userId); - PublicSchedule existingSchedule = publicScheduleRepository.findById(scheduleId) + PublicSchedule existingSchedule = publicScheduleRepository.findByIdAndStatusNot(scheduleId, + ScheduleStatus.DELETE) .orElseThrow(() -> new NotExistException(ErrorCode.PUBLIC_SCHEDULE_NOT_FOUND)); checkAuthor(existingSchedule.getAuthor(), user); @@ -88,9 +91,9 @@ public void deletePublicSchedule(Long scheduleId, Long userId) { public PublicSchedule getPublicScheduleDetailRetrieve(Long scheduleId, Long userId) { User user = userRepository.getById(userId); - PublicSchedule publicRetrieveSchedule = publicScheduleRepository.findById(scheduleId) + PublicSchedule publicRetrieveSchedule = publicScheduleRepository.findByIdAndStatusNot(scheduleId, + ScheduleStatus.DELETE) .orElseThrow(() -> new NotExistException(ErrorCode.PUBLIC_SCHEDULE_NOT_FOUND)); - // checkAuthor(publicRetrieveSchedule.getAuthor(), user); return publicRetrieveSchedule; } @@ -107,7 +110,8 @@ public List retrieveNonPrivateSchedulePeriod public void addPublicScheduleToPrivateSchedule(Long scheduleId, Long groupId, UserDto userDto) { User user = userRepository.getById(userDto.getId()); Long userId = userDto.getId(); - PublicSchedule publicSchedule = publicScheduleRepository.findById(scheduleId) + PublicSchedule publicSchedule = publicScheduleRepository.findByIdAndStatusNot(scheduleId, + ScheduleStatus.DELETE) .orElseThrow(() -> new NotExistException(ErrorCode.PUBLIC_SCHEDULE_NOT_FOUND)); scheduleGroupRepository.findByIdAndUserId(groupId, userId) .orElseThrow(() -> new NotExistException(ErrorCode.SCHEDULE_GROUP_NOT_FOUND)); diff --git a/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/ImportedScheduleControllerTest.java b/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/ImportedScheduleControllerTest.java index 2882c1c45..d13157381 100644 --- a/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/ImportedScheduleControllerTest.java +++ b/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/ImportedScheduleControllerTest.java @@ -83,7 +83,7 @@ void success() throws Exception { //then PrivateSchedule updated = privateScheduleRepository.findById(privateSchedule.getId()).orElseThrow(); Assertions.assertThat(privateSchedule.getGroupId()).isEqualTo(updated.getGroupId()); - Assertions.assertThat(privateSchedule.isAlarm()).isEqualTo(updated.isAlarm()); + Assertions.assertThat(privateSchedule.getAlarm()).isEqualTo(updated.getAlarm()); } @Test diff --git a/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/PrivateScheduleControllerTest.java b/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/PrivateScheduleControllerTest.java index 6264732b6..5aa7b7b09 100644 --- a/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/PrivateScheduleControllerTest.java +++ b/gg-calendar-api/src/test/java/gg/calendar/api/user/schedule/privateschedule/controller/PrivateScheduleControllerTest.java @@ -98,7 +98,7 @@ void success() throws Exception { assertThat(schedules.size()).isEqualTo(1); PrivateSchedule privateSchedule = schedules.get(0); Assertions.assertThat(privateSchedule.getGroupId()).isEqualTo(scheduleGroup.getId()); - Assertions.assertThat(privateSchedule.isAlarm()).isEqualTo(reqDto.isAlarm()); + Assertions.assertThat(privateSchedule.getAlarm()).isEqualTo(reqDto.isAlarm()); } @Test @@ -176,7 +176,7 @@ void success() throws Exception { //then PrivateSchedule updated = privateScheduleRepository.findById(privateSchedule.getId()).orElseThrow(); Assertions.assertThat(privateSchedule.getGroupId()).isEqualTo(updated.getGroupId()); - Assertions.assertThat(privateSchedule.isAlarm()).isEqualTo(updated.isAlarm()); + Assertions.assertThat(privateSchedule.getAlarm()).isEqualTo(updated.getAlarm()); Assertions.assertThat(privateSchedule.getGroupId()).isEqualTo(updated.getGroupId()); Assertions.assertThat(privateSchedule.getPublicSchedule()).isEqualTo(updated.getPublicSchedule()); } @@ -386,7 +386,7 @@ void success() throws Exception { PrivateScheduleDetailResDto dto = objectMapper.readValue(response, PrivateScheduleDetailResDto.class); //then Assertions.assertThat(privateSchedule.getId()).isEqualTo(dto.getId()); - Assertions.assertThat(privateSchedule.isAlarm()).isEqualTo(dto.isAlarm()); + Assertions.assertThat(privateSchedule.getAlarm()).isEqualTo(dto.isAlarm()); Assertions.assertThat(scheduleGroup.getTitle()).isEqualTo(dto.getGroupTitle()); Assertions.assertThat(scheduleGroup.getBackgroundColor()).isEqualTo(dto.getGroupColor()); Assertions.assertThat(publicSchedule.getClassification()).isEqualTo(dto.getClassification()); diff --git a/gg-data/src/main/java/gg/data/calendar/PrivateSchedule.java b/gg-data/src/main/java/gg/data/calendar/PrivateSchedule.java index af9aa7276..6ff87aa5b 100644 --- a/gg-data/src/main/java/gg/data/calendar/PrivateSchedule.java +++ b/gg-data/src/main/java/gg/data/calendar/PrivateSchedule.java @@ -38,7 +38,7 @@ public class PrivateSchedule extends BaseTimeEntity { private PublicSchedule publicSchedule; @Column(nullable = false) - private boolean alarm; + private Boolean alarm; @Column(nullable = false) private Long groupId; @@ -47,7 +47,7 @@ public class PrivateSchedule extends BaseTimeEntity { @Column(nullable = false, columnDefinition = "VARCHAR(50)") private ScheduleStatus status; - public PrivateSchedule(User user, PublicSchedule publicSchedule, boolean alarm, Long groupId) { + public PrivateSchedule(User user, PublicSchedule publicSchedule, Boolean alarm, Long groupId) { this.user = user; this.publicSchedule = publicSchedule; this.alarm = alarm; @@ -55,7 +55,7 @@ public PrivateSchedule(User user, PublicSchedule publicSchedule, boolean alarm, this.status = ScheduleStatus.ACTIVATE; } - public void update(boolean alarm, Long groupId) { + public void update(Boolean alarm, Long groupId) { this.alarm = alarm; this.groupId = groupId; } diff --git a/gg-repo/src/main/java/gg/repo/calendar/PrivateScheduleRepository.java b/gg-repo/src/main/java/gg/repo/calendar/PrivateScheduleRepository.java index 99b4dbf40..290bdacb5 100644 --- a/gg-repo/src/main/java/gg/repo/calendar/PrivateScheduleRepository.java +++ b/gg-repo/src/main/java/gg/repo/calendar/PrivateScheduleRepository.java @@ -2,6 +2,7 @@ import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; import javax.transaction.Transactional; @@ -18,12 +19,15 @@ @Repository public interface PrivateScheduleRepository extends JpaRepository { + Optional findByIdAndStatusNot(Long id, ScheduleStatus status); + List findByPublicSchedule(PublicSchedule publicSchedule); @Query("SELECT pr FROM PrivateSchedule pr " + "JOIN pr.publicSchedule pu " + "WHERE NOT (pu.startTime > :endTime OR pu.endTime < :startTime) " - + "AND pr.user = :user") + + "AND pr.user = :user " + + "AND pr.status <> gg.data.calendar.type.ScheduleStatus.DELETE") List findOverlappingSchedulesByUser(LocalDateTime startTime, LocalDateTime endTime, User user); @Modifying(clearAutomatically = true) diff --git a/gg-repo/src/main/java/gg/repo/calendar/PublicScheduleRepository.java b/gg-repo/src/main/java/gg/repo/calendar/PublicScheduleRepository.java index 4e32116be..a70df974c 100644 --- a/gg-repo/src/main/java/gg/repo/calendar/PublicScheduleRepository.java +++ b/gg-repo/src/main/java/gg/repo/calendar/PublicScheduleRepository.java @@ -2,6 +2,7 @@ import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; import javax.transaction.Transactional; @@ -28,6 +29,8 @@ List findByEndTimeGreaterThanEqualAndStartTimeLessThanEqualAndCl List findByEndTimeGreaterThanEqualAndStartTimeLessThanEqualAndClassificationNot( LocalDateTime start, LocalDateTime end, DetailClassification classification); + Optional findByIdAndStatusNot(Long id, ScheduleStatus status); + boolean existsByTitleAndStartTime(String title, LocalDateTime beginAt); @Modifying(clearAutomatically = true)