diff --git a/src/main/java/Capstone/AutoScheduler/global/repository/EventRepository.java b/src/main/java/Capstone/AutoScheduler/global/repository/EventRepository.java index 9b5a36e..f4e4cba 100644 --- a/src/main/java/Capstone/AutoScheduler/global/repository/EventRepository.java +++ b/src/main/java/Capstone/AutoScheduler/global/repository/EventRepository.java @@ -3,8 +3,11 @@ import Capstone.AutoScheduler.global.domain.entity.Event; import Capstone.AutoScheduler.global.domain.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; import java.util.List; @Repository @@ -12,4 +15,10 @@ public interface EventRepository extends JpaRepository { List findAllByMember(Member member); List findTop10ByMember_MemberIdOrderByCreatedAtDesc(Long memberId); + + @Query("SELECT e FROM Event e WHERE e.member.id = :memberId " + + "AND ((:startDate <= e.endDate AND :endDate >= e.startDate))") + List findOverlappingEvents(@Param("memberId") Long memberId, + @Param("startDate") LocalDateTime startDate, + @Param("endDate") LocalDateTime endDate); } diff --git a/src/main/java/Capstone/AutoScheduler/global/service/EventService/EventCommandServiceImpl.java b/src/main/java/Capstone/AutoScheduler/global/service/EventService/EventCommandServiceImpl.java index 81c67c7..5b36018 100644 --- a/src/main/java/Capstone/AutoScheduler/global/service/EventService/EventCommandServiceImpl.java +++ b/src/main/java/Capstone/AutoScheduler/global/service/EventService/EventCommandServiceImpl.java @@ -13,6 +13,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @Transactional @@ -27,6 +29,12 @@ public class EventCommandServiceImpl implements EventCommandService { public Event createEvent(Long memberId, EventRequestDTO.CreateEventRequestDTO request) { Member member = findMemberById(memberId); + // 겹치는 일정 확인 + List overlappingEvents = eventRepository.findOverlappingEvents(memberId, request.getStartDate(), request.getEndDate()); + if (!overlappingEvents.isEmpty()) { + throw new IllegalArgumentException("이미 해당 시간에 다른 일정이 존재합니다."); + } + Event newEvent = EventConverter.toEvent(request); newEvent.setMember(member);