diff --git a/src/main/java/com/blanc/market/domain/cart/controller/CartController.java b/src/main/java/com/blanc/market/domain/cart/controller/CartController.java index 448bc00..35e516b 100644 --- a/src/main/java/com/blanc/market/domain/cart/controller/CartController.java +++ b/src/main/java/com/blanc/market/domain/cart/controller/CartController.java @@ -40,4 +40,13 @@ public ResponseEntity removeItemFromCart(@PathVariable Long id) { cartService.removeItemFromCart(id); return ResponseEntity.noContent().build(); } + + + //userid로 장바구니 삭제 + @DeleteMapping("delete/{userId}") + public ResponseEntity removeCart(@PathVariable Long userId){ + cartService.removeCartByUserId(userId); + return ResponseEntity.noContent().build(); + } + } diff --git a/src/main/java/com/blanc/market/domain/cart/repository/CartRepository.java b/src/main/java/com/blanc/market/domain/cart/repository/CartRepository.java index 05ca76b..e1baaa0 100644 --- a/src/main/java/com/blanc/market/domain/cart/repository/CartRepository.java +++ b/src/main/java/com/blanc/market/domain/cart/repository/CartRepository.java @@ -8,4 +8,5 @@ public interface CartRepository extends JpaRepository { Optional> findByUserId(Long userId); + void deleteByUserId(Long userID); } diff --git a/src/main/java/com/blanc/market/domain/cart/service/CartService.java b/src/main/java/com/blanc/market/domain/cart/service/CartService.java index b73a7f6..799c1af 100644 --- a/src/main/java/com/blanc/market/domain/cart/service/CartService.java +++ b/src/main/java/com/blanc/market/domain/cart/service/CartService.java @@ -39,4 +39,9 @@ public void updateCartItemQuantity(Long cartId, int quantity) { public void removeItemFromCart(Long cartId) { cartRepository.deleteById(cartId); } + + @Transactional + public void removeCartByUserId(Long userId){ + cartRepository.deleteByUserId(userId); + } } diff --git a/src/main/java/com/blanc/market/domain/order/controller/OrderController.java b/src/main/java/com/blanc/market/domain/order/controller/OrderController.java index de3a36a..5d6b8f7 100644 --- a/src/main/java/com/blanc/market/domain/order/controller/OrderController.java +++ b/src/main/java/com/blanc/market/domain/order/controller/OrderController.java @@ -1,6 +1,7 @@ package com.blanc.market.domain.order.controller; +import com.blanc.market.domain.order.dto.OrderProductResponse; import com.blanc.market.domain.order.dto.OrderRequest; import com.blanc.market.domain.order.dto.OrderResponse; import com.blanc.market.domain.order.service.OrderService; @@ -30,6 +31,15 @@ public ResponseEntity createOrder( .body(orderService.order(dto)); } + @Operation(summary = "주문 정보 조회", description = "주문에 담긴 상품id 리스트를 반환합니다.") + @GetMapping("api/orders/{id}") + public ResponseEntity> getOrder(@PathVariable Long id){ + return ResponseEntity.ok(orderService.getProductForOrder(id)); + } + + + + //주문 상태 취소로 변경 @Operation(summary = "주문 취소", description = "주문 취소 메서드입니다. 주문 상태를 cancle로 변경합니다.") @PostMapping("api/orders/{id}/cancle") diff --git a/src/main/java/com/blanc/market/domain/order/dto/OrderProductResponse.java b/src/main/java/com/blanc/market/domain/order/dto/OrderProductResponse.java new file mode 100644 index 0000000..537bfea --- /dev/null +++ b/src/main/java/com/blanc/market/domain/order/dto/OrderProductResponse.java @@ -0,0 +1,10 @@ +package com.blanc.market.domain.order.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class OrderProductResponse { + private Long productId; +} diff --git a/src/main/java/com/blanc/market/domain/order/mapper/OrderProductMapper.java b/src/main/java/com/blanc/market/domain/order/mapper/OrderProductMapper.java new file mode 100644 index 0000000..71573e7 --- /dev/null +++ b/src/main/java/com/blanc/market/domain/order/mapper/OrderProductMapper.java @@ -0,0 +1,13 @@ +package com.blanc.market.domain.order.mapper; + +import com.blanc.market.domain.order.dto.OrderProductResponse; +import com.blanc.market.domain.order.entity.OrderProduct; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +@Mapper(componentModel = "spring") +public interface OrderProductMapper { + + @Mapping(source = "product.id", target = "productId") + OrderProductResponse toDto(OrderProduct entity); +} diff --git a/src/main/java/com/blanc/market/domain/order/repository/OrderProductRepository.java b/src/main/java/com/blanc/market/domain/order/repository/OrderProductRepository.java index 73b1077..0a8908e 100644 --- a/src/main/java/com/blanc/market/domain/order/repository/OrderProductRepository.java +++ b/src/main/java/com/blanc/market/domain/order/repository/OrderProductRepository.java @@ -1,9 +1,12 @@ package com.blanc.market.domain.order.repository; +import com.blanc.market.domain.order.entity.Order; import com.blanc.market.domain.order.entity.OrderProduct; import org.springframework.data.jpa.repository.JpaRepository; -public interface OrderProductRepository extends JpaRepository { +import java.util.List; +public interface OrderProductRepository extends JpaRepository { + List findAllByOrder(Order order); } diff --git a/src/main/java/com/blanc/market/domain/order/service/OrderService.java b/src/main/java/com/blanc/market/domain/order/service/OrderService.java index 3e99d15..83e18e5 100644 --- a/src/main/java/com/blanc/market/domain/order/service/OrderService.java +++ b/src/main/java/com/blanc/market/domain/order/service/OrderService.java @@ -1,12 +1,16 @@ package com.blanc.market.domain.order.service; +import com.blanc.market.domain.cart.repository.CartRepository; +import com.blanc.market.domain.cart.service.CartService; import com.blanc.market.domain.order.dto.OrderProductRequest; +import com.blanc.market.domain.order.dto.OrderProductResponse; import com.blanc.market.domain.order.dto.OrderRequest; import com.blanc.market.domain.order.dto.OrderResponse; import com.blanc.market.domain.order.entity.Order; import com.blanc.market.domain.order.entity.OrderProduct; import com.blanc.market.domain.order.entity.OrderStatus; import com.blanc.market.domain.order.mapper.OrderMapper; +import com.blanc.market.domain.order.mapper.OrderProductMapper; import com.blanc.market.domain.order.repository.OrderProductRepository; import com.blanc.market.domain.order.repository.OrderRepository; import com.blanc.market.domain.product.entity.Product; @@ -15,6 +19,7 @@ import com.blanc.market.domain.user.entity.User; import com.blanc.market.domain.user.repository.UserRepository; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,6 +32,7 @@ @Service @Transactional(readOnly = true) @RequiredArgsConstructor +@Slf4j public class OrderService { private final OrderRepository orderRepository; @@ -34,6 +40,10 @@ public class OrderService { private final ProductRepository productRepository; private final OrderProductRepository orderProductRepository; private final OrderMapper orderMapper; + private final OrderProductMapper orderProductMapper; + + private final CartService cartService; + //주문 @Transactional @@ -41,6 +51,7 @@ public OrderResponse order(OrderRequest dto){ //주문한 사용자 엔티티 조회 User user = userRepository.findUserById(dto.getUserId()).orElseThrow(NoSuchElementException::new); + Long userId = user.getId(); double totalPrice = 0; @@ -71,6 +82,9 @@ public OrderResponse order(OrderRequest dto){ //주문 저장 orderRepository.save(order); + //장바구니 비우기 + cartService.removeCartByUserId(userId); + return orderMapper.toDto(order); } @@ -82,6 +96,14 @@ public void cancleOrders(Long id){ } + public List getProductForOrder(Long OrderId){ + Order order = orderRepository.findById(OrderId).orElseThrow(); + List orderProducts = orderProductRepository.findAllByOrder(order); + log.info("test {}",orderProducts); + return orderProducts.stream().map(orderProductMapper::toDto).toList(); + } + + //본인 주문 조회 public List findAllMyOrders(){ diff --git a/src/main/java/com/blanc/market/domain/product/entity/Category.java b/src/main/java/com/blanc/market/domain/product/entity/Category.java index 8d03c41..cbc20cc 100644 --- a/src/main/java/com/blanc/market/domain/product/entity/Category.java +++ b/src/main/java/com/blanc/market/domain/product/entity/Category.java @@ -1,8 +1,8 @@ package com.blanc.market.domain.product.entity; public enum Category { - SUNCARE, + skincare, cleansing, - Skincare; + makeup; }