From 6b5d2becf882193ff8bb27cc25a4d7f29a1dec21 Mon Sep 17 00:00:00 2001 From: Sejin Park <95167215+sejineer@users.noreply.github.com> Date: Sun, 11 Feb 2024 16:32:30 +0900 Subject: [PATCH] =?UTF-8?q?hotfix:=20Reservation=20=EB=93=B1=EB=A1=9D=20AP?= =?UTF-8?q?I=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95=20(#250)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Explation img response AwsS3Util 제거 * hotfix: Reservation 등록 API ExperienceGift 파라미터 추가 --- .../ReservationManipulationServiceImpl.java | 136 +++++++++--------- .../repository/ReservationRepository.java | 4 +- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/src/main/java/com/shallwe/domain/reservation/application/ReservationManipulationServiceImpl.java b/src/main/java/com/shallwe/domain/reservation/application/ReservationManipulationServiceImpl.java index 2a7818be..50c203f6 100644 --- a/src/main/java/com/shallwe/domain/reservation/application/ReservationManipulationServiceImpl.java +++ b/src/main/java/com/shallwe/domain/reservation/application/ReservationManipulationServiceImpl.java @@ -22,8 +22,10 @@ import com.shallwe.domain.user.domain.User; import com.shallwe.domain.user.domain.repository.UserRepository; import com.shallwe.global.config.security.token.UserPrincipal; + import java.util.List; import java.util.stream.Collectors; + import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,76 +33,72 @@ @Service @RequiredArgsConstructor @Transactional(readOnly = true) -public class ReservationManipulationServiceImpl implements ReservationManipulationService{ - - private final ReservationRepository reservationRepository; - private final ExperienceGiftRepository experienceGiftRepository; - private final ShopOwnerRepository shopOwnerRepository; - private final UserRepository userRepository; - - @Transactional - public List addOwnerReservation( - OwnerReservationCreate ownerReservationCreate, - UserPrincipal userPrincipal) { - ExperienceGift experienceGift = experienceGiftRepository.findById( - ownerReservationCreate.getExperienceGiftId()) - .orElseThrow(ExperienceGiftNotFoundException::new); - - ShopOwner owner = shopOwnerRepository.findById(userPrincipal.getShopOwner().getId()) - .orElseThrow(InvalidShopOwnerException::new); - - List reservations = OwnerReservationCreate.toEntityForOwner(ownerReservationCreate, - experienceGift, owner); - return reservations.stream() - .map(reservationRepository::save) - .map(ReservationResponse::toDtoOwner) - .collect(Collectors.toList()); - } - - @Transactional - public ReservationResponse addUserReservation(UserReservationCreate reservationRequest, - UserPrincipal userPrincipal) { - - User nonPersistentSender = userPrincipal.getUser(); - User sender = userRepository.findById(nonPersistentSender.getId()).orElseThrow( - InvalidUserException::new); - User receiver = userRepository.findByPhoneNumber(reservationRequest.getPhoneNumber()) - .orElseThrow( - InvalidUserException::new); - - Reservation reservation = reservationRepository.findByDateAndTime( - reservationRequest.getDate(), reservationRequest.getTime()) - .orElseThrow(InvalidReservationException::new); - - if (reservation.getReservationStatus().equals(WAITING)) { - reservation.updateStatus(ReservationStatus.BOOKED); - reservation.updateUserReservationRequest(reservationRequest, sender, receiver); - } else { - throw new InvalidReservationException(); +public class ReservationManipulationServiceImpl implements ReservationManipulationService { + + private final ReservationRepository reservationRepository; + private final ExperienceGiftRepository experienceGiftRepository; + private final ShopOwnerRepository shopOwnerRepository; + private final UserRepository userRepository; + + @Transactional + public List addOwnerReservation( + OwnerReservationCreate ownerReservationCreate, + UserPrincipal userPrincipal) { + ExperienceGift experienceGift = experienceGiftRepository.findById(ownerReservationCreate.getExperienceGiftId()) + .orElseThrow(ExperienceGiftNotFoundException::new); + + ShopOwner owner = shopOwnerRepository.findById(userPrincipal.getShopOwner().getId()) + .orElseThrow(InvalidShopOwnerException::new); + + List reservations = OwnerReservationCreate.toEntityForOwner(ownerReservationCreate, experienceGift, owner); + return reservations.stream() + .map(reservationRepository::save) + .map(ReservationResponse::toDtoOwner) + .collect(Collectors.toList()); } - return ReservationResponse.toDtoUser(reservation); - } - - @Transactional - public ReservationResponse updateReservation(UpdateReservationReq updateReq, - UserPrincipal userPrincipal) { - - Reservation updateReservation = reservationRepository.findById( - updateReq.getReservationId()).map( - reservation -> { - reservation.updateReservation(updateReq); - return reservationRepository.save(reservation); + + @Transactional + public ReservationResponse addUserReservation(UserReservationCreate reservationRequest, UserPrincipal userPrincipal) { + User sender = userRepository.findById(userPrincipal.getId()) + .orElseThrow(InvalidUserException::new); + + User receiver = userRepository.findByPhoneNumber(reservationRequest.getPhoneNumber()) + .orElseThrow(InvalidUserException::new); + + ExperienceGift experienceGift = experienceGiftRepository.findById(reservationRequest.getExperienceGiftId()) + .orElseThrow(ExperienceGiftNotFoundException::new); + + Reservation reservation = reservationRepository.findByDateAndTimeAndExperienceGift( + reservationRequest.getDate(), reservationRequest.getTime(), experienceGift) + .orElseThrow(InvalidReservationException::new); + + if (reservation.getReservationStatus().equals(WAITING)) { + reservation.updateStatus(ReservationStatus.BOOKED); + reservation.updateUserReservationRequest(reservationRequest, sender, receiver); + } else { + throw new InvalidReservationException(); } - ).orElseThrow(InvalidReservationException::new); - return ReservationResponse.toDtoUser(updateReservation); - } - - @Transactional - public DeleteReservationRes deleteReservation(Long id) { - Reservation reservation = reservationRepository.findById(id) - .orElseThrow(InvalidReservationException::new); - reservation.updateStatus(Status.DELETE); - return DeleteReservationRes.toDTO(); - } + return ReservationResponse.toDtoUser(reservation); + } + + @Transactional + public ReservationResponse updateReservation(UpdateReservationReq updateReq, UserPrincipal userPrincipal) { + Reservation updateReservation = reservationRepository.findById( + updateReq.getReservationId()).map( + reservation -> { + reservation.updateReservation(updateReq); + return reservationRepository.save(reservation); + } + ).orElseThrow(InvalidReservationException::new); + return ReservationResponse.toDtoUser(updateReservation); + } + + @Transactional + public DeleteReservationRes deleteReservation(Long id) { + Reservation reservation = reservationRepository.findById(id) + .orElseThrow(InvalidReservationException::new); + reservation.updateStatus(Status.DELETE); + return DeleteReservationRes.toDTO(); + } } diff --git a/src/main/java/com/shallwe/domain/reservation/domain/repository/ReservationRepository.java b/src/main/java/com/shallwe/domain/reservation/domain/repository/ReservationRepository.java index e478e2ec..3b5c3806 100644 --- a/src/main/java/com/shallwe/domain/reservation/domain/repository/ReservationRepository.java +++ b/src/main/java/com/shallwe/domain/reservation/domain/repository/ReservationRepository.java @@ -30,7 +30,9 @@ public interface ReservationRepository extends JpaRepository, Optional> findAllByExperienceGiftAndReservationStatus(ExperienceGift experienceGift, ReservationStatus reservationStatus); - Optional findByDateAndTime(LocalDate date, LocalTime time); + @EntityGraph(attributePaths = "experienceGift") + Optional findByDateAndTimeAndExperienceGift(LocalDate date, LocalTime time, ExperienceGift experienceGift); Optional> findAllByExperienceGiftAndDate(ExperienceGift experienceGift, LocalDate date); + }