From 2e99173fbf27db83200b52b661903a76477d918a Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Sun, 30 Mar 2025 00:34:31 +0900 Subject: [PATCH 01/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#59]=20:?= =?UTF-8?q?=20review=20api=20refactoring=20*=20QClass=20=EC=83=88=EB=A1=9C?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=20*=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 +++- .../_delivery/admin/review/ReviewAdminController.java | 2 +- .../_delivery/admin/review/ReviewAdminRepository.java | 2 +- .../admin/review/ReviewAdminRepositoryCustomImpl.java | 2 +- .../_delivery/admin/review/ReviewAdminResponseDto.java | 2 +- .../_delivery/admin/review/ReviewAdminService.java | 4 ++-- .../spring_deep/_delivery/domain/order/OrderService.java | 4 ++-- .../review/{ => repository}/ReviewRepositoryCustom.java | 3 ++- .../{ => repository}/ReviewRepositoryCustomImpl.java | 7 ++++--- .../_delivery/domain/review/ReviewIntegrationTest.java | 3 +++ .../_delivery/testutil/TestEntityCreateTools.java | 2 +- 11 files changed, 21 insertions(+), 14 deletions(-) rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => repository}/ReviewRepositoryCustom.java (63%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => repository}/ReviewRepositoryCustomImpl.java (92%) diff --git a/build.gradle b/build.gradle index d51c8b2..ae0e319 100644 --- a/build.gradle +++ b/build.gradle @@ -27,8 +27,9 @@ dependencies { // QueryDSL implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta' - annotationProcessor 'jakarta.annotation:jakarta.annotation-api' + annotationProcessor 'jakarta.persistence:jakarta.persistence-api' + annotationProcessor 'jakarta.annotation:jakarta.annotation-api' // dotenv implementation 'io.github.cdimascio:java-dotenv:+' @@ -81,3 +82,4 @@ dependencies { tasks.named('test') { useJUnitPlatform() } + diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminController.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminController.java index 8a18924..ae6d9aa 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminController.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminController.java @@ -1,7 +1,7 @@ package com.sparta.spring_deep._delivery.admin.review; -import com.sparta.spring_deep._delivery.domain.review.ReviewResponseDto; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewResponseDto; import com.sparta.spring_deep._delivery.domain.user.entity.User; import java.util.UUID; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepository.java index cfd43b3..ea8d6ea 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepository.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepository.java @@ -1,6 +1,6 @@ package com.sparta.spring_deep._delivery.admin.review; -import com.sparta.spring_deep._delivery.domain.review.Review; +import com.sparta.spring_deep._delivery.domain.review.model.Review; import java.util.List; import java.util.UUID; import org.springframework.data.domain.Page; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepositoryCustomImpl.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepositoryCustomImpl.java index a3408f4..965eb4e 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepositoryCustomImpl.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminRepositoryCustomImpl.java @@ -4,7 +4,7 @@ import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.DateTimePath; import com.querydsl.jpa.impl.JPAQueryFactory; -import com.sparta.spring_deep._delivery.domain.review.QReview; +import com.sparta.spring_deep._delivery.domain.review.model.QReview; import java.time.LocalDateTime; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminResponseDto.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminResponseDto.java index a9cd2ad..992722a 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminResponseDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminResponseDto.java @@ -1,6 +1,6 @@ package com.sparta.spring_deep._delivery.admin.review; -import com.sparta.spring_deep._delivery.domain.review.Review; +import com.sparta.spring_deep._delivery.domain.review.model.Review; import java.time.LocalDateTime; import java.util.UUID; import lombok.Getter; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java index af8d335..9f63d86 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java @@ -2,8 +2,8 @@ import com.sparta.spring_deep._delivery.domain.order.Order; import com.sparta.spring_deep._delivery.domain.order.OrderRepository; -import com.sparta.spring_deep._delivery.domain.review.Review; -import com.sparta.spring_deep._delivery.domain.review.ReviewResponseDto; +import com.sparta.spring_deep._delivery.domain.review.model.Review; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewResponseDto; import com.sparta.spring_deep._delivery.domain.user.entity.User; import com.sparta.spring_deep._delivery.exception.ResourceNotFoundException; import java.util.List; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderService.java index bbf7205..1facff5 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderService.java @@ -15,8 +15,8 @@ import com.sparta.spring_deep._delivery.domain.payment.PaymentService; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; -import com.sparta.spring_deep._delivery.domain.review.Review; -import com.sparta.spring_deep._delivery.domain.review.ReviewRepository; +import com.sparta.spring_deep._delivery.domain.review.model.Review; +import com.sparta.spring_deep._delivery.domain.review.repository.ReviewRepository; import com.sparta.spring_deep._delivery.domain.user.entity.User; import com.sparta.spring_deep._delivery.domain.user.entity.UserRole; import com.sparta.spring_deep._delivery.domain.user.repository.UserRepository; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepositoryCustom.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustom.java similarity index 63% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepositoryCustom.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustom.java index a1d2267..655e662 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepositoryCustom.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustom.java @@ -1,5 +1,6 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.repository; +import com.sparta.spring_deep._delivery.domain.review.model.Review; import java.util.UUID; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepositoryCustomImpl.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustomImpl.java similarity index 92% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepositoryCustomImpl.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustomImpl.java index 9d832c6..73058e5 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepositoryCustomImpl.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustomImpl.java @@ -1,11 +1,12 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.repository; import static com.sparta.spring_deep._delivery.domain.order.QOrder.order; import static com.sparta.spring_deep._delivery.domain.restaurant.QRestaurant.restaurant; -import static com.sparta.spring_deep._delivery.domain.review.QReview.review; +import static com.sparta.spring_deep._delivery.domain.review.model.QReview.review; import com.querydsl.core.types.OrderSpecifier; import com.querydsl.jpa.impl.JPAQueryFactory; +import com.sparta.spring_deep._delivery.domain.review.model.Review; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -24,7 +25,7 @@ public class ReviewRepositoryCustomImpl implements ReviewRepositoryCustom { @Override public Page searchReviews(UUID restaurantId, Pageable pageable) { log.info("searchReviews"); - + // pageable의 정렬 조건 처리 (기본은 createdAt 내림차순) List> orderSpecifiers = new ArrayList<>(); pageable.getSort().forEach(sort -> { diff --git a/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java b/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java index 28bcc23..ffd0d36 100644 --- a/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java +++ b/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java @@ -24,6 +24,9 @@ import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; import com.sparta.spring_deep._delivery.domain.restaurant.restaurantAddress.RestaurantAddress; import com.sparta.spring_deep._delivery.domain.restaurant.restaurantAddress.RestaurantAddressRepository; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewRequestDto; +import com.sparta.spring_deep._delivery.domain.review.model.Review; +import com.sparta.spring_deep._delivery.domain.review.repository.ReviewRepository; import com.sparta.spring_deep._delivery.domain.user.entity.User; import com.sparta.spring_deep._delivery.domain.user.entity.UserRole; import com.sparta.spring_deep._delivery.domain.user.repository.UserRepository; diff --git a/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java b/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java index 9840fce..3218ea3 100644 --- a/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java +++ b/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java @@ -12,7 +12,7 @@ import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant.CategoryEnum; import com.sparta.spring_deep._delivery.domain.restaurant.restaurantAddress.RestaurantAddress; -import com.sparta.spring_deep._delivery.domain.review.Review; +import com.sparta.spring_deep._delivery.domain.review.model.Review; import com.sparta.spring_deep._delivery.domain.user.details.UserDetailsImpl; import com.sparta.spring_deep._delivery.domain.user.entity.IsPublic; import com.sparta.spring_deep._delivery.domain.user.entity.User; From 51632498c9a99b89903b5af2f1b6e2d14f01d321 Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Sun, 30 Mar 2025 00:35:39 +0900 Subject: [PATCH 02/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#59]=20:?= =?UTF-8?q?=20review=20api=20refactoring=20*=20Service=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EC=B2=98=EB=A6=AC=20=EB=B0=A9=EC=8B=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20*=20=ED=8A=B9=EC=A0=95=20=EC=9D=8C=EC=8B=9D?= =?UTF-8?q?=EC=A0=90=20=EB=A6=AC=EB=B7=B0=20=EC=A1=B0=ED=9A=8C=EC=8B=9C=20?= =?UTF-8?q?:=20=ED=8F=89=EA=B7=A0=20=EB=B3=84=EC=A0=90=EA=B0=92=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/review/ReviewRepository.java | 14 ------ .../{ => controller}/ReviewController.java | 21 +++----- .../review/{ => dto}/ReviewRequestDto.java | 2 +- .../review/{ => dto}/ReviewResponseDto.java | 6 ++- .../dto/ReviewRestaurantResponseDto.java | 24 +++++++++ .../review/{ => dto}/ReviewSearchDto.java | 2 +- .../domain/review/{ => model}/Review.java | 2 +- .../review/repository/ReviewRepository.java | 18 +++++++ .../review/{ => service}/ReviewService.java | 50 ++++++++++--------- 9 files changed, 83 insertions(+), 56 deletions(-) delete mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepository.java rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => controller}/ReviewController.java (85%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => dto}/ReviewRequestDto.java (85%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => dto}/ReviewResponseDto.java (82%) create mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewRestaurantResponseDto.java rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => dto}/ReviewSearchDto.java (77%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => model}/Review.java (96%) create mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepository.java rename src/main/java/com/sparta/spring_deep/_delivery/domain/review/{ => service}/ReviewService.java (67%) diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepository.java deleted file mode 100644 index b8c984f..0000000 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.sparta.spring_deep._delivery.domain.review; - -import java.util.List; -import java.util.UUID; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface ReviewRepository extends JpaRepository, ReviewRepositoryCustom { - - Review findByIdAndIsDeletedFalse(UUID reviewId); - - int countByOrderId(UUID orderId); - - List findAllByOrderId(UUID orderId); -} diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewController.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/controller/ReviewController.java similarity index 85% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewController.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/controller/ReviewController.java index 88897fc..35eff26 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewController.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/controller/ReviewController.java @@ -1,5 +1,9 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.controller; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewRequestDto; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewResponseDto; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewRestaurantResponseDto; +import com.sparta.spring_deep._delivery.domain.review.service.ReviewService; import com.sparta.spring_deep._delivery.domain.user.details.UserDetailsImpl; import java.util.UUID; import lombok.RequiredArgsConstructor; @@ -34,8 +38,6 @@ public ResponseEntity createReview( @AuthenticationPrincipal UserDetailsImpl userDetails, @RequestBody ReviewRequestDto requestDto) { - log.info("리뷰 작성 : {}", requestDto); - ReviewResponseDto responseDto = reviewService.createReview(requestDto, userDetails.getUser()); return ResponseEntity.status(HttpStatus.CREATED).body(responseDto); @@ -43,24 +45,19 @@ public ResponseEntity createReview( // 특정 음식점 리뷰 조회 @GetMapping("/reviews/{restaurantId}/search") - public ResponseEntity> searchReview( + public ResponseEntity searchReview( @PathVariable String restaurantId, @PageableDefault(sort = "createdAt", size = 10, page = 0, direction = Direction.DESC) Pageable pageable ) { - - log.info("특정 음식점 리뷰 조회 - restaurantId :{}", restaurantId); - - Page responseDtos = reviewService.getReviews( + ReviewRestaurantResponseDto responseDto = reviewService.getReviews( UUID.fromString(restaurantId), pageable); - return ResponseEntity.status(HttpStatus.OK).body(responseDtos); + return ResponseEntity.status(HttpStatus.OK).body(responseDto); } // 리뷰 조회 @GetMapping("/reviews/{reviewId}") public ResponseEntity getReview(@PathVariable String reviewId) { - log.info("리뷰 조회 - reviewId :{}", reviewId); - ReviewResponseDto responseDto = reviewService.getReview(UUID.fromString(reviewId)); return ResponseEntity.status(HttpStatus.OK).body(responseDto); @@ -72,7 +69,6 @@ public ResponseEntity updateReview( @AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable String reviewId, @RequestBody ReviewRequestDto requestDto) { - log.info("리뷰 수정 :{}", reviewId); ReviewResponseDto responseDto = reviewService.updateReview(UUID.fromString(reviewId), requestDto.getComment(), requestDto.getRating(), userDetails.getUser()); @@ -85,7 +81,6 @@ public ResponseEntity updateReview( public ResponseEntity deleteReview( @AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable String reviewId) { - log.info("리뷰 삭제 - reviewId :{}", reviewId); return reviewService.deleteReview(UUID.fromString(reviewId), userDetails.getUser()); } diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRequestDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewRequestDto.java similarity index 85% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRequestDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewRequestDto.java index 2e97d26..5fa147f 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewRequestDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewRequestDto.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.dto; import java.util.UUID; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewResponseDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewResponseDto.java similarity index 82% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewResponseDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewResponseDto.java index 040416b..d2f794b 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewResponseDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewResponseDto.java @@ -1,11 +1,13 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.dto; +import com.sparta.spring_deep._delivery.domain.review.model.Review; import java.time.LocalDateTime; import java.util.UUID; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.Getter; -@Data +@Getter @AllArgsConstructor public class ReviewResponseDto { diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewRestaurantResponseDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewRestaurantResponseDto.java new file mode 100644 index 0000000..09d3c48 --- /dev/null +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewRestaurantResponseDto.java @@ -0,0 +1,24 @@ +package com.sparta.spring_deep._delivery.domain.review.dto; + +import com.sparta.spring_deep._delivery.domain.review.model.Review; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import lombok.Getter; + +@Getter +public class ReviewRestaurantResponseDto { + + private UUID restaurantId; + private List reviews = new ArrayList<>(); + + private Double AvgRating; + + public ReviewRestaurantResponseDto(List reviews, Double AvgRating, UUID restaurantId) { + this.restaurantId = restaurantId; + this.AvgRating = AvgRating; + this.reviews =reviews; + } + +} diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewSearchDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewSearchDto.java similarity index 77% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewSearchDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewSearchDto.java index fe23729..f300339 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewSearchDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/dto/ReviewSearchDto.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.dto; import lombok.Data; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/Review.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/model/Review.java similarity index 96% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/Review.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/model/Review.java index 5a3662f..5f33eaf 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/Review.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/model/Review.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.model; import com.sparta.spring_deep._delivery.common.BaseEntity; import com.sparta.spring_deep._delivery.domain.order.Order; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepository.java new file mode 100644 index 0000000..f3bb451 --- /dev/null +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepository.java @@ -0,0 +1,18 @@ +package com.sparta.spring_deep._delivery.domain.review.repository; + +import com.sparta.spring_deep._delivery.domain.review.model.Review; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +public interface ReviewRepository extends JpaRepository, ReviewRepositoryCustom { + + Optional findByIdAndIsDeletedFalse(UUID reviewId); + + List findAllByOrderId(UUID orderId); + + @Query("SELECT AVG(r.rating) FROM Review r WHERE r.isDeleted = false") + double findAverageRating(); +} diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java similarity index 67% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewService.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java index 406b94d..144686e 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/ReviewService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.review; +package com.sparta.spring_deep._delivery.domain.review.service; import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; @@ -6,10 +6,16 @@ import com.sparta.spring_deep._delivery.domain.order.OrderRepository; import com.sparta.spring_deep._delivery.domain.order.OrderStatusEnum; import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewRequestDto; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewResponseDto; +import com.sparta.spring_deep._delivery.domain.review.dto.ReviewRestaurantResponseDto; +import com.sparta.spring_deep._delivery.domain.review.model.Review; +import com.sparta.spring_deep._delivery.domain.review.repository.ReviewRepository; import com.sparta.spring_deep._delivery.domain.user.entity.User; import com.sparta.spring_deep._delivery.exception.DeletedDataAccessException; import com.sparta.spring_deep._delivery.exception.OperationNotAllowedException; import com.sparta.spring_deep._delivery.exception.ResourceNotFoundException; +import java.util.List; import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -30,7 +36,7 @@ public class ReviewService { // 리뷰 작성 public ReviewResponseDto createReview(ReviewRequestDto requestDto, User user) { - log.info("리뷰 작성"); + log.info("createReview"); Order order = orderRepository.findByIdAndIsDeletedFalse(requestDto.getOrderId()) .orElseThrow(ResourceNotFoundException::new); @@ -38,27 +44,31 @@ public ReviewResponseDto createReview(ReviewRequestDto requestDto, User user) { ownerCheck(order.getCustomer(), user); if (!order.getStatus().equals(OrderStatusEnum.DELIVERED)) { - log.error("배송 완료만 리뷰작성 가능"); + log.error("배송 완료만 리뷰작성 가능합니다."); throw new OperationNotAllowedException(); } - Review review = reviewRepository.save( - new Review(order, user, requestDto.getRating(), requestDto.getComment())); + Review review = new Review(order, user, requestDto.getRating(), requestDto.getComment()); + reviewRepository.save(review); return new ReviewResponseDto(review); } // 특정 음식점 리뷰 조회 @Transactional(readOnly = true) - public Page getReviews(UUID restaurantId, Pageable pageable) { - log.info("특정 음식점 리뷰 조회"); + public ReviewRestaurantResponseDto getReviews(UUID restaurantId, Pageable pageable) { + log.info("getReviews"); restaurantRepository.findByIdAndIsDeletedFalse(restaurantId) .orElseThrow(ResourceNotFoundException::new); - Page reviews = reviewRepository.searchReviews(restaurantId, pageable); + List reviews = reviewRepository.searchReviews(restaurantId, pageable) + .map(ReviewResponseDto::new) + .stream().toList(); + // 리뷰 평점 조회 + double rating = reviewRepository.findAverageRating(); - return reviews.map(ReviewResponseDto::new); + return new ReviewRestaurantResponseDto(reviews, rating, restaurantId); } // 리뷰 조회 @@ -66,10 +76,10 @@ public Page getReviews(UUID restaurantId, Pageable pageable) public ReviewResponseDto getReview(UUID reviewId) { log.info("리뷰 조회"); - Review review = reviewRepository.findByIdAndIsDeletedFalse(reviewId); + Review review = reviewRepository.findByIdAndIsDeletedFalse(reviewId) + .orElseThrow(ResourceNotFoundException::new); - Order order = review.getOrder(); - if (order.getIsDeleted()) { + if(review.getOrder().getIsDeleted()){ throw new DeletedDataAccessException(); } @@ -81,12 +91,8 @@ public ReviewResponseDto getReview(UUID reviewId) { public ReviewResponseDto updateReview(UUID reviewId, String comment, int rating, User user) { log.info("리뷰 수정"); - Review review = reviewRepository.findByIdAndIsDeletedFalse(reviewId); - - if (review == null) { - log.error("존재하지 않는 리뷰"); - throw new ResourceNotFoundException(); - } + Review review = reviewRepository.findByIdAndIsDeletedFalse(reviewId) + .orElseThrow(ResourceNotFoundException::new); ownerCheck(user, review.getUser()); @@ -100,12 +106,8 @@ public ReviewResponseDto updateReview(UUID reviewId, String comment, int rating, public ResponseEntity deleteReview(UUID reviewId, User user) { log.info("리뷰 삭제"); - Review review = reviewRepository.findByIdAndIsDeletedFalse(reviewId); - - if (review == null) { - log.error("존재하지 않는 리뷰"); - throw new ResourceNotFoundException(); - } + Review review = reviewRepository.findByIdAndIsDeletedFalse(reviewId) + .orElseThrow(ResourceNotFoundException::new); ownerCheck(user, review.getUser()); From 9e4677b83d9285c9cfad1463b98fe22b767710a0 Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Sun, 30 Mar 2025 00:57:22 +0900 Subject: [PATCH 03/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20order=20api=20refactoring=20*=20order=20=EA=B5=AC=EC=A1=B0?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/OrderAdminController.java | 4 ++-- .../admin/order/OrderAdminRepository.java | 2 +- .../admin/order/OrderAdminRepositoryCustom.java | 2 +- .../order/OrderAdminRepositoryCustomImpl.java | 2 +- .../admin/order/OrderAdminService.java | 8 ++++---- .../orderItem/OrderItemAdminRepository.java | 2 +- .../admin/review/ReviewAdminService.java | 4 ++-- .../_delivery/domain/order/OrderStatusEnum.java | 9 --------- .../order/{ => controller}/OrderController.java | 12 ++++++++---- .../order/{orderItem => dto}/OrderItemDto.java | 2 +- .../domain/order/{ => dto}/OrderSearchDto.java | 3 ++- .../request}/OrderDetailsRequestDto.java | 4 ++-- .../{ => dto/request}/OrderRequestDto.java | 2 +- .../response}/OrderDetailsResponseDto.java | 6 +++--- .../{ => dto/response}/OrderResponseDto.java | 4 +++- .../domain/order/{ => model}/Order.java | 10 +++++++++- .../order/{orderItem => model}/OrderItem.java | 3 +-- .../OrderItemRepository.java | 3 ++- .../order/{ => repository}/OrderRepository.java | 10 +++------- .../{ => repository}/OrderRepositoryCustom.java | 4 +++- .../OrderRepositoryCustomImpl.java | 5 ++++- .../order/{ => service}/OrderService.java | 17 +++++++++++------ .../_delivery/domain/payment/Payment.java | 2 +- .../domain/payment/PaymentService.java | 4 ++-- .../_delivery/domain/review/model/Review.java | 2 +- .../domain/review/service/ReviewService.java | 5 ++--- .../domain/order/OrderIntegrationTest.java | 8 +++++--- .../domain/review/ReviewIntegrationTest.java | 6 +++--- .../testutil/TestEntityCreateTools.java | 4 ++-- 29 files changed, 81 insertions(+), 68 deletions(-) delete mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderStatusEnum.java rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => controller}/OrderController.java (89%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{orderItem => dto}/OrderItemDto.java (88%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => dto}/OrderSearchDto.java (63%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{orderDetails => dto/request}/OrderDetailsRequestDto.java (83%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => dto/request}/OrderRequestDto.java (91%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{orderDetails => dto/response}/OrderDetailsResponseDto.java (84%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => dto/response}/OrderResponseDto.java (83%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => model}/Order.java (93%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{orderItem => model}/OrderItem.java (93%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{orderItem => repository}/OrderItemRepository.java (63%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => repository}/OrderRepository.java (68%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => repository}/OrderRepositoryCustom.java (55%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => repository}/OrderRepositoryCustomImpl.java (90%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/order/{ => service}/OrderService.java (91%) diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminController.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminController.java index f85471f..f268a5a 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminController.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminController.java @@ -1,7 +1,7 @@ package com.sparta.spring_deep._delivery.admin.order; -import com.sparta.spring_deep._delivery.domain.order.OrderResponseDto; -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; import com.sparta.spring_deep._delivery.domain.user.details.UserDetailsImpl; import java.util.UUID; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepository.java index 15efb7a..ae2f1b0 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepository.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepository.java @@ -1,6 +1,6 @@ package com.sparta.spring_deep._delivery.admin.order; -import com.sparta.spring_deep._delivery.domain.order.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order; import java.util.UUID; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustom.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustom.java index 43229d0..41e0f0f 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustom.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustom.java @@ -1,6 +1,6 @@ package com.sparta.spring_deep._delivery.admin.order; -import com.sparta.spring_deep._delivery.domain.order.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustomImpl.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustomImpl.java index c82fc8b..caf5732 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustomImpl.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminRepositoryCustomImpl.java @@ -4,7 +4,7 @@ import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.DateTimePath; import com.querydsl.jpa.impl.JPAQueryFactory; -import com.sparta.spring_deep._delivery.domain.order.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; import com.sparta.spring_deep._delivery.domain.order.QOrder; import java.time.LocalDateTime; import java.util.List; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminService.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminService.java index 8ea2fa2..fdc22d8 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/OrderAdminService.java @@ -1,10 +1,10 @@ package com.sparta.spring_deep._delivery.admin.order; import com.sparta.spring_deep._delivery.admin.order.orderItem.OrderItemAdminRepository; -import com.sparta.spring_deep._delivery.domain.order.Order; -import com.sparta.spring_deep._delivery.domain.order.OrderResponseDto; -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsResponseDto; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItem; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; +import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; import com.sparta.spring_deep._delivery.domain.user.entity.User; import com.sparta.spring_deep._delivery.exception.ResourceNotFoundException; import java.util.List; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/orderItem/OrderItemAdminRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/orderItem/OrderItemAdminRepository.java index 94a1e35..8d843bd 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/order/orderItem/OrderItemAdminRepository.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/order/orderItem/OrderItemAdminRepository.java @@ -1,7 +1,7 @@ package com.sparta.spring_deep._delivery.admin.order.orderItem; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItem; +import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; import java.util.List; import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java index 9f63d86..79080bb 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/admin/review/ReviewAdminService.java @@ -1,7 +1,7 @@ package com.sparta.spring_deep._delivery.admin.review; -import com.sparta.spring_deep._delivery.domain.order.Order; -import com.sparta.spring_deep._delivery.domain.order.OrderRepository; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; import com.sparta.spring_deep._delivery.domain.review.model.Review; import com.sparta.spring_deep._delivery.domain.review.dto.ReviewResponseDto; import com.sparta.spring_deep._delivery.domain.user.entity.User; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderStatusEnum.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderStatusEnum.java deleted file mode 100644 index 22de37d..0000000 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderStatusEnum.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.sparta.spring_deep._delivery.domain.order; - -public enum OrderStatusEnum { - PENDING, - CONFIRMED, - DELIVERED, - FAILED, - CANCELLED -} \ No newline at end of file diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderController.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/controller/OrderController.java similarity index 89% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderController.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/controller/OrderController.java index b1a9b58..a19bd50 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderController.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/controller/OrderController.java @@ -1,7 +1,11 @@ -package com.sparta.spring_deep._delivery.domain.order; - -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsRequestDto; -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsResponseDto; +package com.sparta.spring_deep._delivery.domain.order.controller; + +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.OrderSearchDto; +import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; +import com.sparta.spring_deep._delivery.domain.order.service.OrderService; +import com.sparta.spring_deep._delivery.domain.order.dto.request.OrderDetailsRequestDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; import com.sparta.spring_deep._delivery.domain.user.details.UserDetailsImpl; import java.util.UUID; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItemDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/OrderItemDto.java similarity index 88% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItemDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/OrderItemDto.java index 28ecd4b..f33772a 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItemDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/OrderItemDto.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.order.orderItem; +package com.sparta.spring_deep._delivery.domain.order.dto; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderSearchDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/OrderSearchDto.java similarity index 63% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderSearchDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/OrderSearchDto.java index e4595c4..13cf420 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderSearchDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/OrderSearchDto.java @@ -1,5 +1,6 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.dto; +import com.sparta.spring_deep._delivery.domain.order.OrderStatusEnum; import lombok.Data; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderDetails/OrderDetailsRequestDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/request/OrderDetailsRequestDto.java similarity index 83% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderDetails/OrderDetailsRequestDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/request/OrderDetailsRequestDto.java index aac5d9b..19ec52d 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderDetails/OrderDetailsRequestDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/request/OrderDetailsRequestDto.java @@ -1,6 +1,6 @@ -package com.sparta.spring_deep._delivery.domain.order.orderDetails; +package com.sparta.spring_deep._delivery.domain.order.dto.request; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItemDto; +import com.sparta.spring_deep._delivery.domain.order.dto.OrderItemDto; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import java.util.List; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRequestDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/request/OrderRequestDto.java similarity index 91% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRequestDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/request/OrderRequestDto.java index 3512ed1..99cf04f 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRequestDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/request/OrderRequestDto.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.dto.request; import jakarta.validation.constraints.Digits; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderDetails/OrderDetailsResponseDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/response/OrderDetailsResponseDto.java similarity index 84% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderDetails/OrderDetailsResponseDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/response/OrderDetailsResponseDto.java index c860653..b053b75 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderDetails/OrderDetailsResponseDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/response/OrderDetailsResponseDto.java @@ -1,8 +1,8 @@ -package com.sparta.spring_deep._delivery.domain.order.orderDetails; +package com.sparta.spring_deep._delivery.domain.order.dto.response; -import com.sparta.spring_deep._delivery.domain.order.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order; import com.sparta.spring_deep._delivery.domain.order.OrderStatusEnum; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItem; +import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; import java.math.BigDecimal; import java.util.List; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderResponseDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/response/OrderResponseDto.java similarity index 83% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderResponseDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/response/OrderResponseDto.java index 60b86a9..f730a36 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderResponseDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/dto/response/OrderResponseDto.java @@ -1,5 +1,7 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.dto.response; +import com.sparta.spring_deep._delivery.domain.order.OrderStatusEnum; +import com.sparta.spring_deep._delivery.domain.order.model.Order; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/Order.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java similarity index 93% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/Order.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java index c22fdb8..442f765 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/Order.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.model; import com.sparta.spring_deep._delivery.common.BaseEntity; import com.sparta.spring_deep._delivery.domain.address.entity.Address; @@ -83,4 +83,12 @@ public void updateOrderStatus(User user, OrderStatusEnum status) { this.status = status; } + public enum OrderStatusEnum { + PENDING, + CONFIRMED, + DELIVERED, + FAILED, + CANCELLED + } + } \ No newline at end of file diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItem.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java similarity index 93% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItem.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java index add8ffe..3c1159a 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItem.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java @@ -1,9 +1,8 @@ -package com.sparta.spring_deep._delivery.domain.order.orderItem; +package com.sparta.spring_deep._delivery.domain.order.model; import com.fasterxml.jackson.annotation.JsonIgnore; import com.sparta.spring_deep._delivery.common.BaseEntity; import com.sparta.spring_deep._delivery.domain.menu.Menu; -import com.sparta.spring_deep._delivery.domain.order.Order; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItemRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderItemRepository.java similarity index 63% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItemRepository.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderItemRepository.java index 936b5dc..b68e10b 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/orderItem/OrderItemRepository.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderItemRepository.java @@ -1,6 +1,7 @@ -package com.sparta.spring_deep._delivery.domain.order.orderItem; +package com.sparta.spring_deep._delivery.domain.order.repository; +import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; import java.util.List; import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepository.java similarity index 68% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepository.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepository.java index a4bc06e..2f5c0e6 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepository.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepository.java @@ -1,6 +1,8 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.repository; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -13,12 +15,6 @@ public interface OrderRepository extends JpaRepository, OrderReposi Optional> findAllByRestaurantId(UUID restaurantId); -// Page findByCustomerUsernameAndUpdatedAtAfterAndStatusIn(String customerId, -// String restaurantName, String menuName, String status, -// Pageable pageable); - - List findAllByRestaurantIdAndIsDeletedFalse(UUID restaurantId); - Optional findByIdAndIsDeletedFalse(UUID orderId); Page findByCustomerUsernameAndIsDeletedFalseAndUpdatedAtAfterAndStatusIn(String username, diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepositoryCustom.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepositoryCustom.java similarity index 55% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepositoryCustom.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepositoryCustom.java index fe241f3..4948949 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepositoryCustom.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepositoryCustom.java @@ -1,5 +1,7 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.repository; +import com.sparta.spring_deep._delivery.domain.order.dto.OrderSearchDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepositoryCustomImpl.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepositoryCustomImpl.java similarity index 90% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepositoryCustomImpl.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepositoryCustomImpl.java index 329b155..1f65af8 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderRepositoryCustomImpl.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/repository/OrderRepositoryCustomImpl.java @@ -1,8 +1,11 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.repository; import com.querydsl.core.BooleanBuilder; import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQueryFactory; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.OrderSearchDto; +import com.sparta.spring_deep._delivery.domain.order.QOrder; import com.sparta.spring_deep._delivery.domain.order.orderItem.QOrderItem; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java similarity index 91% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderService.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java index 1facff5..0acdfdd 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/OrderService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.order; +package com.sparta.spring_deep._delivery.domain.order.service; import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; @@ -6,10 +6,15 @@ import com.sparta.spring_deep._delivery.domain.address.repository.AddressRepository; import com.sparta.spring_deep._delivery.domain.menu.Menu; import com.sparta.spring_deep._delivery.domain.menu.MenuRepository; -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsRequestDto; -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsResponseDto; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItem; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItemRepository; +import com.sparta.spring_deep._delivery.domain.order.dto.OrderSearchDto; +import com.sparta.spring_deep._delivery.domain.order.dto.request.OrderDetailsRequestDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; +import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderItemRepository; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; import com.sparta.spring_deep._delivery.domain.payment.Payment.PaymentStatusEnum; import com.sparta.spring_deep._delivery.domain.payment.PaymentResponseDto; import com.sparta.spring_deep._delivery.domain.payment.PaymentService; @@ -215,7 +220,7 @@ public Page getUpdatedOrdersSince(User user, int page, int siz // 진행 중인 주문 중에서 최근 변경된 주문만 조회 Page updatedOrders = orderRepository.findByCustomerUsernameAndIsDeletedFalseAndUpdatedAtAfterAndStatusIn( user.getUsername(), lastCheckedTime, - List.of(OrderStatusEnum.PENDING, OrderStatusEnum.CONFIRMED), + List.of(OrderStatusEnum.CONFIRMED, OrderStatusEnum.PENDING), pageable); if (updatedOrders.isEmpty()) { diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/Payment.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/Payment.java index 3f82f8d..b0807d3 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/Payment.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/Payment.java @@ -1,7 +1,7 @@ package com.sparta.spring_deep._delivery.domain.payment; import com.sparta.spring_deep._delivery.common.BaseEntity; -import com.sparta.spring_deep._delivery.domain.order.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentService.java index 8fcbf89..3dd5a7c 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentService.java @@ -2,8 +2,8 @@ import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; -import com.sparta.spring_deep._delivery.domain.order.Order; -import com.sparta.spring_deep._delivery.domain.order.OrderRepository; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; import com.sparta.spring_deep._delivery.domain.user.entity.User; import com.sparta.spring_deep._delivery.domain.user.entity.UserRole; import com.sparta.spring_deep._delivery.exception.InternalServerException; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/model/Review.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/model/Review.java index 5f33eaf..9816734 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/model/Review.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/model/Review.java @@ -1,7 +1,7 @@ package com.sparta.spring_deep._delivery.domain.review.model; import com.sparta.spring_deep._delivery.common.BaseEntity; -import com.sparta.spring_deep._delivery.domain.order.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order; import com.sparta.spring_deep._delivery.domain.user.entity.User; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java index 144686e..ec453f2 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java @@ -2,8 +2,8 @@ import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; -import com.sparta.spring_deep._delivery.domain.order.Order; -import com.sparta.spring_deep._delivery.domain.order.OrderRepository; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; import com.sparta.spring_deep._delivery.domain.order.OrderStatusEnum; import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; import com.sparta.spring_deep._delivery.domain.review.dto.ReviewRequestDto; @@ -19,7 +19,6 @@ import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; diff --git a/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java b/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java index 5969720..23b01ca 100644 --- a/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java +++ b/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java @@ -19,9 +19,11 @@ import com.sparta.spring_deep._delivery.domain.address.repository.AddressRepository; import com.sparta.spring_deep._delivery.domain.menu.Menu; import com.sparta.spring_deep._delivery.domain.menu.MenuRepository; -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsRequestDto; -import com.sparta.spring_deep._delivery.domain.order.orderDetails.OrderDetailsResponseDto; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItemDto; +import com.sparta.spring_deep._delivery.domain.order.dto.request.OrderDetailsRequestDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.OrderItemDto; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; import com.sparta.spring_deep._delivery.domain.restaurant.restaurantAddress.RestaurantAddress; diff --git a/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java b/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java index ffd0d36..de5b649 100644 --- a/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java +++ b/src/test/java/com/sparta/spring_deep/_delivery/domain/review/ReviewIntegrationTest.java @@ -17,9 +17,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.sparta.spring_deep._delivery.domain.address.entity.Address; import com.sparta.spring_deep._delivery.domain.address.repository.AddressRepository; -import com.sparta.spring_deep._delivery.domain.order.Order; -import com.sparta.spring_deep._delivery.domain.order.OrderRepository; -import com.sparta.spring_deep._delivery.domain.order.OrderStatusEnum; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; import com.sparta.spring_deep._delivery.domain.restaurant.restaurantAddress.RestaurantAddress; diff --git a/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java b/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java index 3218ea3..6a75ec0 100644 --- a/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java +++ b/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java @@ -5,8 +5,8 @@ import com.sparta.spring_deep._delivery.domain.address.entity.Address; import com.sparta.spring_deep._delivery.domain.ai.Ai; import com.sparta.spring_deep._delivery.domain.menu.Menu; -import com.sparta.spring_deep._delivery.domain.order.Order; -import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItem; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; import com.sparta.spring_deep._delivery.domain.payment.Payment; import com.sparta.spring_deep._delivery.domain.payment.Payment.PaymentStatusEnum; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; From ef336962ec82aacfbbab45060b3674ffb78eb8f4 Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 16:29:30 +0900 Subject: [PATCH 04/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20payment=20refactor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/payment/{ => controller}/PaymentController.java | 5 ++++- .../domain/payment/{ => dto}/PaymentRequestDto.java | 2 +- .../domain/payment/{ => dto}/PaymentResponseDto.java | 7 ++++--- .../_delivery/domain/payment/{ => model}/Payment.java | 2 +- .../domain/payment/{ => repository}/PaymentRepository.java | 3 ++- .../domain/payment/{ => service}/PaymentService.java | 5 ++++- 6 files changed, 16 insertions(+), 8 deletions(-) rename src/main/java/com/sparta/spring_deep/_delivery/domain/payment/{ => controller}/PaymentController.java (91%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/payment/{ => dto}/PaymentRequestDto.java (69%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/payment/{ => dto}/PaymentResponseDto.java (67%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/payment/{ => model}/Payment.java (97%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/payment/{ => repository}/PaymentRepository.java (62%) rename src/main/java/com/sparta/spring_deep/_delivery/domain/payment/{ => service}/PaymentService.java (93%) diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentController.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/controller/PaymentController.java similarity index 91% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentController.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/payment/controller/PaymentController.java index d869385..937fb69 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentController.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/controller/PaymentController.java @@ -1,5 +1,8 @@ -package com.sparta.spring_deep._delivery.domain.payment; +package com.sparta.spring_deep._delivery.domain.payment.controller; +import com.sparta.spring_deep._delivery.domain.payment.dto.PaymentRequestDto; +import com.sparta.spring_deep._delivery.domain.payment.dto.PaymentResponseDto; +import com.sparta.spring_deep._delivery.domain.payment.service.PaymentService; import com.sparta.spring_deep._delivery.domain.user.details.UserDetailsImpl; import java.util.UUID; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentRequestDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/dto/PaymentRequestDto.java similarity index 69% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentRequestDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/payment/dto/PaymentRequestDto.java index b9e80ae..2b96ff2 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentRequestDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/dto/PaymentRequestDto.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.payment; +package com.sparta.spring_deep._delivery.domain.payment.dto; import java.math.BigDecimal; import lombok.Getter; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentResponseDto.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/dto/PaymentResponseDto.java similarity index 67% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentResponseDto.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/payment/dto/PaymentResponseDto.java index a7a7ce0..98eb986 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentResponseDto.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/dto/PaymentResponseDto.java @@ -1,7 +1,8 @@ -package com.sparta.spring_deep._delivery.domain.payment; +package com.sparta.spring_deep._delivery.domain.payment.dto; -import com.sparta.spring_deep._delivery.domain.payment.Payment.PaymentMethodEnum; -import com.sparta.spring_deep._delivery.domain.payment.Payment.PaymentStatusEnum; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment.PaymentMethodEnum; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment.PaymentStatusEnum; import java.math.BigDecimal; import java.util.UUID; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/Payment.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/model/Payment.java similarity index 97% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/payment/Payment.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/payment/model/Payment.java index b0807d3..602acbb 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/Payment.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/model/Payment.java @@ -1,4 +1,4 @@ -package com.sparta.spring_deep._delivery.domain.payment; +package com.sparta.spring_deep._delivery.domain.payment.model; import com.sparta.spring_deep._delivery.common.BaseEntity; import com.sparta.spring_deep._delivery.domain.order.model.Order; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentRepository.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/repository/PaymentRepository.java similarity index 62% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentRepository.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/payment/repository/PaymentRepository.java index ba21863..4bd381e 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentRepository.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/repository/PaymentRepository.java @@ -1,5 +1,6 @@ -package com.sparta.spring_deep._delivery.domain.payment; +package com.sparta.spring_deep._delivery.domain.payment.repository; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment; import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/service/PaymentService.java similarity index 93% rename from src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentService.java rename to src/main/java/com/sparta/spring_deep/_delivery/domain/payment/service/PaymentService.java index 3dd5a7c..7a8a7f2 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/PaymentService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/service/PaymentService.java @@ -1,9 +1,12 @@ -package com.sparta.spring_deep._delivery.domain.payment; +package com.sparta.spring_deep._delivery.domain.payment.service; import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; import com.sparta.spring_deep._delivery.domain.order.model.Order; import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; +import com.sparta.spring_deep._delivery.domain.payment.dto.PaymentResponseDto; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment; +import com.sparta.spring_deep._delivery.domain.payment.repository.PaymentRepository; import com.sparta.spring_deep._delivery.domain.user.entity.User; import com.sparta.spring_deep._delivery.domain.user.entity.UserRole; import com.sparta.spring_deep._delivery.exception.InternalServerException; From 082e55ef456eb2b8751da364697ff9f5d363583b Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 16:30:12 +0900 Subject: [PATCH 05/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20order=20entity=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_delivery/domain/order/model/Order.java | 94 ------------------- .../domain/order/model/OrderItem.java | 63 ------------- 2 files changed, 157 deletions(-) delete mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java delete mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java deleted file mode 100644 index 442f765..0000000 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.sparta.spring_deep._delivery.domain.order.model; - -import com.sparta.spring_deep._delivery.common.BaseEntity; -import com.sparta.spring_deep._delivery.domain.address.entity.Address; -import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; -import com.sparta.spring_deep._delivery.domain.user.entity.User; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; -import jakarta.validation.constraints.Digits; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import java.math.BigDecimal; -import java.util.UUID; -import lombok.Builder; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import org.hibernate.annotations.JdbcTypeCode; -import org.hibernate.type.SqlTypes; - -@Entity -@Getter -@RequiredArgsConstructor -@Table(name = "p_order") -public class Order extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.UUID) - private UUID id; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "customer_id", nullable = false) - private User customer; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "restaurant_id", nullable = false) - private Restaurant restaurant; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "address_id", nullable = false) - private Address address; - - @Enumerated(EnumType.STRING) - @Column(name = "status", nullable = false, columnDefinition = "p_order_status_enum") - @JdbcTypeCode(SqlTypes.NAMED_ENUM) - private OrderStatusEnum status = OrderStatusEnum.PENDING; - - @Column(name = "total_price", nullable = false) - @Digits(integer = 10, fraction = 2) - private BigDecimal totalPrice; - - @Column(length = 50) - @Size(max = 50) - private String request; - - @Builder - public Order(User customer, Restaurant restaurant, Address address, - @NotNull @Digits(integer = 10, fraction = 2) BigDecimal totalPrice, - @Size(max = 50) String request) { - super(customer.getUsername()); - this.customer = customer; - this.restaurant = restaurant; - this.address = address; - this.totalPrice = totalPrice; - this.request = request; - } - - - public void updateTotalPrice(BigDecimal totalPrice) { - this.totalPrice = totalPrice; - } - - public void updateOrderStatus(User user, OrderStatusEnum status) { - super.update(user.getUsername()); // user -> username으로 변경 예정 (*baseEntity) - this.status = status; - } - - public enum OrderStatusEnum { - PENDING, - CONFIRMED, - DELIVERED, - FAILED, - CANCELLED - } - -} \ No newline at end of file diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java deleted file mode 100644 index 3c1159a..0000000 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.sparta.spring_deep._delivery.domain.order.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.sparta.spring_deep._delivery.common.BaseEntity; -import com.sparta.spring_deep._delivery.domain.menu.Menu; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; -import jakarta.validation.constraints.Digits; -import jakarta.validation.constraints.NotNull; -import java.math.BigDecimal; -import java.util.UUID; -import lombok.Builder; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.Setter; - -@Entity -@Getter -@Setter -@RequiredArgsConstructor -@Table(name = "p_order_item") -public class OrderItem extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.UUID) - private UUID id; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "order_id", nullable = false) - @JsonIgnore // OrderItem을 응답할 때 order 정보 제외 - private Order order; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "menu_id", nullable = false) - private Menu menu; - - @Column(nullable = false) - private int quantity; - - - @Column(nullable = false) - @Digits(integer = 10, fraction = 2) - private BigDecimal price; - - - @Builder - public OrderItem(Order order, Menu menu, int quantity, - @NotNull @Digits(integer = 10, fraction = 2) BigDecimal price) { - super(order.getCustomer().getUsername()); - this.order = order; - this.menu = menu; - this.quantity = quantity; - this.price = price; - } - -} From b7d406d9efcdca739dd28103a3e9d09ae92f8847 Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 16:34:45 +0900 Subject: [PATCH 06/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20order=20service=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/order/service/OrderService.java | 261 ------------------ 1 file changed, 261 deletions(-) delete mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java deleted file mode 100644 index 0acdfdd..0000000 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.sparta.spring_deep._delivery.domain.order.service; - -import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; - -import com.sparta.spring_deep._delivery.domain.address.entity.Address; -import com.sparta.spring_deep._delivery.domain.address.repository.AddressRepository; -import com.sparta.spring_deep._delivery.domain.menu.Menu; -import com.sparta.spring_deep._delivery.domain.menu.MenuRepository; -import com.sparta.spring_deep._delivery.domain.order.dto.OrderSearchDto; -import com.sparta.spring_deep._delivery.domain.order.dto.request.OrderDetailsRequestDto; -import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; -import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; -import com.sparta.spring_deep._delivery.domain.order.model.Order; -import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; -import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; -import com.sparta.spring_deep._delivery.domain.order.repository.OrderItemRepository; -import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; -import com.sparta.spring_deep._delivery.domain.payment.Payment.PaymentStatusEnum; -import com.sparta.spring_deep._delivery.domain.payment.PaymentResponseDto; -import com.sparta.spring_deep._delivery.domain.payment.PaymentService; -import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; -import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; -import com.sparta.spring_deep._delivery.domain.review.model.Review; -import com.sparta.spring_deep._delivery.domain.review.repository.ReviewRepository; -import com.sparta.spring_deep._delivery.domain.user.entity.User; -import com.sparta.spring_deep._delivery.domain.user.entity.UserRole; -import com.sparta.spring_deep._delivery.domain.user.repository.UserRepository; -import com.sparta.spring_deep._delivery.exception.OperationNotAllowedException; -import com.sparta.spring_deep._delivery.exception.ResourceNotFoundException; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.atomic.AtomicReference; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.data.domain.Sort.Direction; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -@Slf4j(topic = "OrderService") -public class OrderService { - - private final OrderRepository orderRepository; - private final OrderItemRepository orderItemRepository; - private final UserRepository userRepository; - private final RestaurantRepository restaurantRepository; - private final AddressRepository addressRepository; - private final MenuRepository menuRepository; - private final ReviewRepository reviewRepository; - private final PaymentService paymentService; - private LocalDateTime lastCheckedTime = LocalDateTime.now().minusMinutes(5); - - - // 주문 생성 - @Transactional - public OrderDetailsResponseDto createOrder(OrderDetailsRequestDto requestDto, User user) { - log.info("주문 생성"); - - Restaurant restaurant = restaurantRepository.findByIdAndIsDeletedFalse( - requestDto.getRestaurantId()) - .orElseThrow(ResourceNotFoundException::new); - - // ID로 주소 찾기 - Address address = addressRepository.findByIdAndIsDeletedFalse(requestDto.getAddressId()) - .orElseThrow(ResourceNotFoundException::new); - - // 유저 정보와 주소 정보 일치하는지 검사 - ownerCheck(user, address.getUser()); - - Order order = orderRepository.save(new Order(user, restaurant, address, - BigDecimal.ZERO, requestDto.getRequest())); - - AtomicReference sumPrice = new AtomicReference<>(BigDecimal.ZERO); - - List orderItemList = new ArrayList<>(); - - requestDto.getOrderItemDtos().forEach(orderItemDto -> { - Menu menu = menuRepository.findById(orderItemDto.getMenuId()) - .orElseThrow(ResourceNotFoundException::new); - - BigDecimal itemPrice = menu.getPrice(); - log.info("item price : " + itemPrice); - sumPrice.updateAndGet(current -> - current.add(itemPrice.multiply(BigDecimal.valueOf(orderItemDto.getQuantity()))) - ); - - log.info("sum Price : " + sumPrice.get()); - OrderItem orderItem = orderItemRepository.save( - new OrderItem(order, menu, orderItemDto.getQuantity(), itemPrice)); - - orderItemList.add(orderItem); - }); - order.updateTotalPrice(sumPrice.get()); - - // 결제 요청 - PaymentResponseDto paymentResponseDto = paymentService.createPayment(user.getUsername(), - order.getId(), sumPrice.get()); - - if (paymentResponseDto.getPaymentStatus() == PaymentStatusEnum.COMPLETED) { - order.updateOrderStatus(user, OrderStatusEnum.CONFIRMED); - - } else if (paymentResponseDto.getPaymentStatus() == PaymentStatusEnum.FAILED) { - order.updateOrderStatus(user, OrderStatusEnum.FAILED); - order.delete(user.getUsername()); - } - - return new OrderDetailsResponseDto(order, orderItemList); - } - - - // 주문 상태 변경 - OWNER & MANAGER - @Transactional - public OrderResponseDto updateOrderStatus(UUID orderId, OrderStatusEnum status, User owner) { - log.info("주문 상태 변경"); - - Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) - .orElseThrow(ResourceNotFoundException::new); - - if (owner.getRole().equals(UserRole.OWNER)) { - ownerCheck(owner, order.getRestaurant().getOwner()); - } - - if (order.getStatus().equals(OrderStatusEnum.CANCELLED)) { - log.error("취소된 주문 : orderId : " + orderId); - throw new OperationNotAllowedException(); - } - - order.updateOrderStatus(owner, status); - - return new OrderResponseDto(order); - } - - - // 주문 상세 조회 - @Transactional(readOnly = true) - public OrderDetailsResponseDto getOrderDetails(User user, UUID orderId) { - log.info("주문 상세 조회"); - - Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) - .orElseThrow(ResourceNotFoundException::new); - - if (user.getRole().equals(UserRole.CUSTOMER)) { - ownerCheck(user, order.getCustomer()); - } - if (user.getRole().equals(UserRole.OWNER)) { - ownerCheck(user, order.getRestaurant().getOwner()); - } - - List orderItemList = orderItemRepository.findAllByOrderId(order.getId()); - - return new OrderDetailsResponseDto(order, orderItemList); - } - - // 나의 주문 내역 조회 - @Transactional(readOnly = true) - public Page searchMyOrders(User user, OrderSearchDto searchDto, - Pageable pageable) { - log.info("나의 주문 내역 조회"); - - // 내 주문 내역만 조회 - Page myOrderResponseDto = orderRepository.searchMyOrdersByOptionAndIsDeletedFalse( - user.getUsername(), searchDto, pageable); - - // 주문 내역이 비어있다면, Exception 발생 - if (myOrderResponseDto.isEmpty()) { - throw new ResourceNotFoundException(); - } - - return myOrderResponseDto; - } - - // 주문 취소 (5분 이내) - @Transactional - public ResponseEntity canceledOrder(User user, UUID orderId) { - log.info("주문 취소 (5분 이내)"); - - Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) - .orElseThrow(ResourceNotFoundException::new); - - if (user.getRole().equals(UserRole.CUSTOMER)) { - ownerCheck(user, order.getCustomer()); - } - - if (user.getRole().equals(UserRole.OWNER)) { - ownerCheck(user, order.getRestaurant().getOwner()); - } - - if (order.getStatus().equals(OrderStatusEnum.CANCELLED)) { - log.info("취소된 주문입니다."); - throw new OperationNotAllowedException(); - } - - if (order.getCreatedAt().isAfter(LocalDateTime.now().minusMinutes(5))) { - order.updateOrderStatus(user, OrderStatusEnum.CANCELLED); - } else { - log.info("주문 취소 가능 시간이 초과하였습니다."); - throw new OperationNotAllowedException(); - } - return ResponseEntity.ok("Success canceled"); - } - - - // 실시간 주문 확인 - @Transactional(readOnly = true) - public Page getUpdatedOrdersSince(User user, int page, int size) { - log.info("실시간 주문 확인"); - - Sort sort = Sort.by(Direction.DESC, "createdAt"); - Pageable pageable = PageRequest.of(page, size, sort); - - // 진행 중인 주문 중에서 최근 변경된 주문만 조회 - Page updatedOrders = orderRepository.findByCustomerUsernameAndIsDeletedFalseAndUpdatedAtAfterAndStatusIn( - user.getUsername(), lastCheckedTime, - List.of(OrderStatusEnum.CONFIRMED, OrderStatusEnum.PENDING), - pageable); - - if (updatedOrders.isEmpty()) { - throw new ResourceNotFoundException(); - } - - lastCheckedTime = LocalDateTime.now(); // 마지막 조회 시간 갱신 - - return updatedOrders.map(OrderResponseDto::new); - } - - // 주문 내역 삭제 - @Transactional - public ResponseEntity deletedOrder(User user, UUID orderId) { - log.info("주문 내역 삭제"); - - Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) - .orElseThrow(ResourceNotFoundException::new); - - if (!user.getRole().equals(UserRole.ADMIN)) { - ownerCheck(user, order.getCustomer()); - } - - order.delete(user.getUsername()); - - List orderItemList = orderItemRepository.findAllByOrderId(order.getId()); - for (OrderItem orderItem : orderItemList) { - orderItem.delete(user.getUsername()); - } - - List reviews = reviewRepository.findAllByOrderId(order.getId()); - for (Review review : reviews) { - review.delete(user.getUsername()); - } - - return ResponseEntity.ok("Success deleted"); - } -} From 904ea76d14f6b8d1f24b17e7ec709f20b73e74e6 Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 17:09:36 +0900 Subject: [PATCH 07/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20Order,=20Order=20Item=20=EA=B4=80=EA=B3=84=20=EC=9E=AC?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20-=20OrderItem=EC=9D=B4=20FK=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EA=B0=80=EC=A7=80=EA=B2=8C=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?-=20Order=EB=8A=94=20mappedBy=EB=A1=9C=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EC=A7=80=ED=96=A5=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EB=A7=8C=20=EA=B4=80=EB=A6=AC=20-=20?= =?UTF-8?q?=EC=96=91=EB=B0=A9=ED=96=A5=20=EC=97=B0=EA=B4=80=EA=B4=80?= =?UTF-8?q?=EA=B3=84=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EA=B0=80=EA=B2=A9=20=EC=B4=9D=20=ED=95=A9=20=EB=93=B1=EC=9D=84?= =?UTF-8?q?=20=EB=B3=B4=EB=8B=A4=20=EC=89=BD=EA=B2=8C=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=A8=20-=20Order=20=EC=97=90=EC=84=9C=20totalPrice=20?= =?UTF-8?q?=EB=A5=BC=20=EA=B4=80=EB=A6=AC=ED=95=A8=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=EC=8D=A8=20=EA=B0=9D=EC=B2=B4=EC=A7=80=ED=96=A5=EC=A0=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_delivery/domain/order/model/Order.java | 105 ++++++++++++++++++ .../domain/order/model/OrderItem.java | 65 +++++++++++ 2 files changed, 170 insertions(+) create mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java create mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java new file mode 100644 index 0000000..815de08 --- /dev/null +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java @@ -0,0 +1,105 @@ +package com.sparta.spring_deep._delivery.domain.order.model; + +import com.sparta.spring_deep._delivery.common.BaseEntity; +import com.sparta.spring_deep._delivery.domain.address.entity.Address; +import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; +import com.sparta.spring_deep._delivery.domain.user.entity.User; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import lombok.Builder; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; + +@Entity +@Getter +@RequiredArgsConstructor +@Table(name = "p_order") +public class Order extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @OneToMany(mappedBy = "order", cascade = CascadeType.PERSIST) + private List orderItems = new ArrayList<>(); + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "customer_id", nullable = false) + private User customer; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "restaurant_id", nullable = false) + private Restaurant restaurant; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "address_id", nullable = false) + private Address address; + + @Enumerated(EnumType.STRING) + @Column(name = "status", nullable = false, columnDefinition = "p_order_status_enum") + @JdbcTypeCode(SqlTypes.NAMED_ENUM) + private OrderStatusEnum status = OrderStatusEnum.PENDING; + + @Column(name = "total_price", nullable = false) + @Digits(integer = 10, fraction = 2) + private BigDecimal totalPrice = BigDecimal.ZERO; + + @Column(length = 50) + @Size(max = 50) + private String request; + + @Builder + public Order(User customer, Restaurant restaurant, Address address, + @Size(max = 50) String request) { + super(customer.getUsername()); + this.customer = customer; + this.restaurant = restaurant; + this.address = address; + this.request = request; + } + + public void addOrderItem(OrderItem orderItem) { + orderItems.add(orderItem); + orderItem.setOrder(this); + } + + public void updateTotalPrice() { + this.totalPrice = orderItems.stream() + .map(item -> item.getPrice().multiply(BigDecimal.valueOf(item.getQuantity()))) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + + public void updateOrderStatus(User user, OrderStatusEnum status) { + super.update(user.getUsername()); // user -> username으로 변경 예정 (*baseEntity) + this.status = status; + } + + public enum OrderStatusEnum { + PENDING, + CONFIRMED, + DELIVERED, + FAILED, + CANCELLED + } + +} diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java new file mode 100644 index 0000000..fd6a3b4 --- /dev/null +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/OrderItem.java @@ -0,0 +1,65 @@ +package com.sparta.spring_deep._delivery.domain.order.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.sparta.spring_deep._delivery.common.BaseEntity; +import com.sparta.spring_deep._delivery.domain.menu.Menu; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.UUID; +import lombok.Builder; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; + +@Entity +@Getter +@Setter +@RequiredArgsConstructor +@Table(name = "p_order_item") +public class OrderItem extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "order_id", nullable = false) + @JsonIgnore + private Order order; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "menu_id", nullable = false) + private Menu menu; + + @Column(nullable = false) + private int quantity; + + + @Column(nullable = false) + @Digits(integer = 10, fraction = 2) + private BigDecimal price; + + + @Builder + public OrderItem( Menu menu, + @NotNull @Digits(integer = 10, fraction = 2) BigDecimal price, + int quantity) { + + this.menu = menu; + this.quantity = quantity; + this.price = price; + } + + +} + From fa45afe128684a9e215667ada624a5b9266f9405 Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 17:11:29 +0900 Subject: [PATCH 08/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20=EC=A3=BC=EB=AC=B8=20=EA=B0=80=EA=B2=A9=20=EC=B4=9D=20?= =?UTF-8?q?=ED=95=A9=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95=20-=20Order?= =?UTF-8?q?=20<->=20OrderItem=20=EC=96=91=EB=B0=A9=ED=96=A5=20=EA=B4=80?= =?UTF-8?q?=EA=B3=84=EB=A5=BC=20=EC=84=A4=EC=A0=95=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=EC=A7=80=ED=96=A5=EC=A0=81=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/order/service/OrderService.java | 248 ++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java new file mode 100644 index 0000000..0d06535 --- /dev/null +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/service/OrderService.java @@ -0,0 +1,248 @@ +package com.sparta.spring_deep._delivery.domain.order.service; + +import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; + +import com.sparta.spring_deep._delivery.domain.address.entity.Address; +import com.sparta.spring_deep._delivery.domain.address.repository.AddressRepository; +import com.sparta.spring_deep._delivery.domain.menu.Menu; +import com.sparta.spring_deep._delivery.domain.menu.MenuRepository; +import com.sparta.spring_deep._delivery.domain.order.dto.OrderSearchDto; +import com.sparta.spring_deep._delivery.domain.order.dto.request.OrderDetailsRequestDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; +import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderResponseDto; +import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; +import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderItemRepository; +import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment.PaymentStatusEnum; +import com.sparta.spring_deep._delivery.domain.payment.dto.PaymentResponseDto; +import com.sparta.spring_deep._delivery.domain.payment.service.PaymentService; +import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; +import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; +import com.sparta.spring_deep._delivery.domain.review.model.Review; +import com.sparta.spring_deep._delivery.domain.review.repository.ReviewRepository; +import com.sparta.spring_deep._delivery.domain.user.entity.User; +import com.sparta.spring_deep._delivery.domain.user.entity.UserRole; +import com.sparta.spring_deep._delivery.domain.user.repository.UserRepository; +import com.sparta.spring_deep._delivery.exception.OperationNotAllowedException; +import com.sparta.spring_deep._delivery.exception.ResourceNotFoundException; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicReference; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Sort.Direction; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j(topic = "OrderService") +public class OrderService { + + private final OrderRepository orderRepository; + private final OrderItemRepository orderItemRepository; + private final RestaurantRepository restaurantRepository; + private final AddressRepository addressRepository; + private final MenuRepository menuRepository; + private final ReviewRepository reviewRepository; + private final PaymentService paymentService; + private LocalDateTime lastCheckedTime = LocalDateTime.now().minusMinutes(5); + + + // 주문 생성 + @Transactional + public OrderDetailsResponseDto createOrder(OrderDetailsRequestDto requestDto, User user) { + log.info("주문 생성"); + + Restaurant restaurant = restaurantRepository.findByIdAndIsDeletedFalse( + requestDto.getRestaurantId()) + .orElseThrow(ResourceNotFoundException::new); + + // ID로 주소 찾기 + Address address = addressRepository.findByIdAndIsDeletedFalse(requestDto.getAddressId()) + .orElseThrow(ResourceNotFoundException::new); + + // 유저 정보와 주소 정보 일치하는지 검사 + ownerCheck(user, address.getUser()); + + Order order = orderRepository.save(new Order(user, restaurant, address, requestDto.getRequest())); + + List orderItemList = new ArrayList<>(); + requestDto.getOrderItemDtos().forEach(orderItemDto -> { + Menu menu = menuRepository.findById(orderItemDto.getMenuId()) + .orElseThrow(ResourceNotFoundException::new); + + OrderItem orderItem = new OrderItem(menu, menu.getPrice(), orderItemDto.getQuantity()); + order.addOrderItem(orderItem); + }); + + order.updateTotalPrice(); + + // 결제 요청 + PaymentResponseDto paymentResponseDto = paymentService.createPayment(user.getUsername(), + order.getId(), order.getTotalPrice()); + + if (paymentResponseDto.getPaymentStatus() == PaymentStatusEnum.COMPLETED) { + order.updateOrderStatus(user, OrderStatusEnum.CONFIRMED); + + } else if (paymentResponseDto.getPaymentStatus() == PaymentStatusEnum.FAILED) { + order.updateOrderStatus(user, OrderStatusEnum.FAILED); + order.delete(user.getUsername()); + } + + return new OrderDetailsResponseDto(order, orderItemList); + } + + + // 주문 상태 변경 - OWNER & MANAGER + @Transactional + public OrderResponseDto updateOrderStatus(UUID orderId, OrderStatusEnum status, User owner) { + log.info("주문 상태 변경"); + + Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) + .orElseThrow(ResourceNotFoundException::new); + + if (owner.getRole().equals(UserRole.OWNER)) { + ownerCheck(owner, order.getRestaurant().getOwner()); + } + + if (order.getStatus().equals(OrderStatusEnum.CANCELLED)) { + log.error("취소된 주문 : orderId : " + orderId); + throw new OperationNotAllowedException(); + } + + order.updateOrderStatus(owner, status); + + return new OrderResponseDto(order); + } + + + // 주문 상세 조회 + @Transactional(readOnly = true) + public OrderDetailsResponseDto getOrderDetails(User user, UUID orderId) { + log.info("주문 상세 조회"); + + Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) + .orElseThrow(ResourceNotFoundException::new); + + if (user.getRole().equals(UserRole.CUSTOMER)) { + ownerCheck(user, order.getCustomer()); + } + if (user.getRole().equals(UserRole.OWNER)) { + ownerCheck(user, order.getRestaurant().getOwner()); + } + + List orderItemList = orderItemRepository.findAllByOrderId(order.getId()); + + return new OrderDetailsResponseDto(order, orderItemList); + } + + // 나의 주문 내역 조회 + @Transactional(readOnly = true) + public Page searchMyOrders(User user, OrderSearchDto searchDto, + Pageable pageable) { + log.info("나의 주문 내역 조회"); + + // 내 주문 내역만 조회 + Page myOrderResponseDto = orderRepository.searchMyOrdersByOptionAndIsDeletedFalse( + user.getUsername(), searchDto, pageable); + + // 주문 내역이 비어있다면, Exception 발생 + if (myOrderResponseDto.isEmpty()) { + throw new ResourceNotFoundException(); + } + + return myOrderResponseDto; + } + + // 주문 취소 (5분 이내) + @Transactional + public ResponseEntity canceledOrder(User user, UUID orderId) { + log.info("주문 취소 (5분 이내)"); + + Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) + .orElseThrow(ResourceNotFoundException::new); + + if (user.getRole().equals(UserRole.CUSTOMER)) { + ownerCheck(user, order.getCustomer()); + } + + if (user.getRole().equals(UserRole.OWNER)) { + ownerCheck(user, order.getRestaurant().getOwner()); + } + + if (order.getStatus().equals(OrderStatusEnum.CANCELLED)) { + log.info("취소된 주문입니다."); + throw new OperationNotAllowedException(); + } + + if (order.getCreatedAt().isAfter(LocalDateTime.now().minusMinutes(5))) { + order.updateOrderStatus(user, OrderStatusEnum.CANCELLED); + } else { + log.info("주문 취소 가능 시간이 초과하였습니다."); + throw new OperationNotAllowedException(); + } + return ResponseEntity.ok("Success canceled"); + } + + + // 실시간 주문 확인 + @Transactional(readOnly = true) + public Page getUpdatedOrdersSince(User user, int page, int size) { + log.info("실시간 주문 확인"); + + Sort sort = Sort.by(Direction.DESC, "createdAt"); + Pageable pageable = PageRequest.of(page, size, sort); + + // 진행 중인 주문 중에서 최근 변경된 주문만 조회 + Page updatedOrders = orderRepository.findByCustomerUsernameAndIsDeletedFalseAndUpdatedAtAfterAndStatusIn( + user.getUsername(), lastCheckedTime, + List.of(OrderStatusEnum.CONFIRMED, OrderStatusEnum.PENDING), + pageable); + + if (updatedOrders.isEmpty()) { + throw new ResourceNotFoundException(); + } + + lastCheckedTime = LocalDateTime.now(); // 마지막 조회 시간 갱신 + + return updatedOrders.map(OrderResponseDto::new); + } + + // 주문 내역 삭제 + @Transactional + public ResponseEntity deletedOrder(User user, UUID orderId) { + log.info("주문 내역 삭제"); + + Order order = orderRepository.findByIdAndIsDeletedFalse(orderId) + .orElseThrow(ResourceNotFoundException::new); + + if (!user.getRole().equals(UserRole.ADMIN)) { + ownerCheck(user, order.getCustomer()); + } + + order.delete(user.getUsername()); + + List orderItemList = orderItemRepository.findAllByOrderId(order.getId()); + for (OrderItem orderItem : orderItemList) { + orderItem.delete(user.getUsername()); + } + + List reviews = reviewRepository.findAllByOrderId(order.getId()); + for (Review review : reviews) { + review.delete(user.getUsername()); + } + + return ResponseEntity.ok("Success deleted"); + } +} From 47e76403f68c3aeb63713eab4215c402ebd4ad2b Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 17:13:57 +0900 Subject: [PATCH 09/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20=EB=8B=A8=EC=88=9C=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/ReviewRepositoryCustomImpl.java | 4 ++-- .../domain/review/service/ReviewService.java | 2 +- .../domain/order/OrderIntegrationTest.java | 16 ++++++---------- .../testutil/TestEntityCreateTools.java | 8 +++----- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustomImpl.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustomImpl.java index 73058e5..1ab3522 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustomImpl.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/repository/ReviewRepositoryCustomImpl.java @@ -46,8 +46,8 @@ public Page searchReviews(UUID restaurantId, Pageable pageable) { // review → order → restaurant 조인을 통해 단일 restaurantId 조건과 isDeleted=false 필터 적용 List reviews = queryFactory .selectFrom(review) - .join(review.order, order) - .join(order.restaurant, restaurant) + .join(review.order, order).fetchJoin() + .join(order.restaurant, restaurant).fetchJoin() .where( restaurant.id.eq(restaurantId) .and(review.isDeleted.eq(false)) diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java index ec453f2..1b7a07b 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/review/service/ReviewService.java @@ -3,8 +3,8 @@ import static com.sparta.spring_deep._delivery.util.AuthTools.ownerCheck; import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; -import com.sparta.spring_deep._delivery.domain.order.OrderStatusEnum; import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; import com.sparta.spring_deep._delivery.domain.review.dto.ReviewRequestDto; import com.sparta.spring_deep._delivery.domain.review.dto.ReviewResponseDto; diff --git a/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java b/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java index 23b01ca..b358c71 100644 --- a/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java +++ b/src/test/java/com/sparta/spring_deep/_delivery/domain/order/OrderIntegrationTest.java @@ -23,6 +23,7 @@ import com.sparta.spring_deep._delivery.domain.order.dto.response.OrderDetailsResponseDto; import com.sparta.spring_deep._delivery.domain.order.dto.OrderItemDto; import com.sparta.spring_deep._delivery.domain.order.model.Order; +import com.sparta.spring_deep._delivery.domain.order.model.Order.OrderStatusEnum; import com.sparta.spring_deep._delivery.domain.order.repository.OrderRepository; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; import com.sparta.spring_deep._delivery.domain.restaurant.RestaurantRepository; @@ -164,8 +165,7 @@ void testUpdateOrderStatus() throws Exception { // 주문 취소 테스트 @Test void testCancelOrder() throws Exception { - Order createOrder = TestEntityCreateTools.createOrder(customer, restaurant, address, - 20000.0, "testRequest"); + Order createOrder = TestEntityCreateTools.createOrder(customer, restaurant, address, "testRequest"); orderRepository.save(createOrder); // 왐마 슈우우웃 와우우우우 아래도 똑같이 save 복붙 성공! ㅋㅋㅋㅋㅋㅋㅋㅋ아싸 최고십니다... String orderId = createOrder.getId().toString(); @@ -177,8 +177,7 @@ void testCancelOrder() throws Exception { // 주문 삭제 테스트 @Test void testDeleteOrder() throws Exception { - Order createOrder = TestEntityCreateTools.createOrder(customer, restaurant, address, - 20000.0, "testRequest"); + Order createOrder = TestEntityCreateTools.createOrder(customer, restaurant, address, "testRequest"); orderRepository.save(createOrder); String orderId = createOrder.getId().toString(); @@ -191,10 +190,8 @@ void testDeleteOrder() throws Exception { @Test void testSearchMyOrders() throws Exception { // 고객 주문 2건 생성 - Order createOrder1 = TestEntityCreateTools.createOrder(customer, restaurant, address, - 20000.0, "testRequest"); - Order createOrder2 = TestEntityCreateTools.createOrder(customer, restaurant, address, - 10000.0, "testRequest"); + Order createOrder1 = TestEntityCreateTools.createOrder(customer, restaurant, address, "testRequest"); + Order createOrder2 = TestEntityCreateTools.createOrder(customer, restaurant, address, "testRequest"); orderRepository.save(createOrder1); orderRepository.save(createOrder2); @@ -208,8 +205,7 @@ void testSearchMyOrders() throws Exception { @Test void testPollingOrders() throws Exception { // 주문이 존재하도록 하나 생성 - Order createOrder = TestEntityCreateTools.createOrder(customer, restaurant, address, - 10000.0, "testRequest"); + Order createOrder = TestEntityCreateTools.createOrder(customer, restaurant, address, "testRequest"); orderRepository.save(createOrder); mockMvc.perform(get("/api/orders/polling") diff --git a/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java b/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java index 6a75ec0..a97bd56 100644 --- a/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java +++ b/src/test/java/com/sparta/spring_deep/_delivery/testutil/TestEntityCreateTools.java @@ -7,8 +7,8 @@ import com.sparta.spring_deep._delivery.domain.menu.Menu; import com.sparta.spring_deep._delivery.domain.order.model.Order; import com.sparta.spring_deep._delivery.domain.order.model.OrderItem; -import com.sparta.spring_deep._delivery.domain.payment.Payment; -import com.sparta.spring_deep._delivery.domain.payment.Payment.PaymentStatusEnum; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment; +import com.sparta.spring_deep._delivery.domain.payment.model.Payment.PaymentStatusEnum; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant; import com.sparta.spring_deep._delivery.domain.restaurant.Restaurant.CategoryEnum; import com.sparta.spring_deep._delivery.domain.restaurant.restaurantAddress.RestaurantAddress; @@ -133,12 +133,11 @@ public static Payment createPayment( // 주문 public static Order createOrder(User customer, Restaurant restaurant, Address address, - Double totalPrice, String request) { + String request) { return Order.builder() .customer(customer) .restaurant(restaurant) .address(address) - .totalPrice(BigDecimal.valueOf(totalPrice)) .request(request) .build(); } @@ -147,7 +146,6 @@ public static Order createOrder(User customer, Restaurant restaurant, Address ad public static OrderItem createOrderItem(Order order, Menu menu, int quantity, Double price) { return OrderItem.builder() - .order(order) .menu(menu) .quantity(quantity) .price(BigDecimal.valueOf(price)) From 1008c0426eaaf0455aec9d7a632095842316effd Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 17:14:38 +0900 Subject: [PATCH 10/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20=EB=8B=A8=EC=88=9C=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/payment/controller/PaymentController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/controller/PaymentController.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/controller/PaymentController.java index 937fb69..889b01e 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/controller/PaymentController.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/payment/controller/PaymentController.java @@ -35,8 +35,8 @@ public ResponseEntity createPayment( log.info("createPayment"); PaymentResponseDto responseDto = paymentService.createPayment(userDetails.getUsername(), - UUID.fromString(requestDto.orderId), - requestDto.amount); + UUID.fromString(requestDto.getOrderId()), + requestDto.getAmount()); return ResponseEntity.status(HttpStatus.OK).body(responseDto); } From 5b1aaa98a44b5e22ed62e65386bc6cab899c341e Mon Sep 17 00:00:00 2001 From: sohyun119 Date: Wed, 21 May 2025 17:14:58 +0900 Subject: [PATCH 11/11] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20[#58]=20:?= =?UTF-8?q?=20=EB=8B=A8=EC=88=9C=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sparta/spring_deep/_delivery/domain/order/model/Order.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java index 815de08..0028cd5 100644 --- a/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java +++ b/src/main/java/com/sparta/spring_deep/_delivery/domain/order/model/Order.java @@ -18,7 +18,6 @@ import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import jakarta.validation.constraints.Digits; -import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import java.math.BigDecimal; import java.util.ArrayList;