🦁멋쟁이 사자처럼 11기/백엔드 정기세션 추가학습
SESSION 16 주문 pt.2 주문 이력 조회 및 주문 취소
1son
2023. 5. 20. 17:25
목차
1. 주문 이력 조회 구현하기
2. 주문 취소 구현하기
1. OrderItemDto
- 주문 상품 정보를 담을 OrderItemDto 객체 생성
- 주문 상품 정보 (상품, 수량)와 상품의 이미지를 담고 있음
@Getter
@Setter
public class OrderItemDto {
public OrderItemDto(OrderItem orderItem, String imgUrl){
//item엔티티까지 넘어가서 가져옴
this.itemNm = orderItem.getItem().getItemNm();
this.count = orderItem.getCount();
this.orderPrice = orderItem.getPrice();
this.imgUrl = imgUrl;
}
//상품명
private String itemNm;
//주문 수량
private int count;
//주문 금액
private int orderPrice;
//상품 이미지 경로
private String imgUrl;
}
2. OrderHistDto
- 주문 정보를 담을 OrderHistDto 객체 생성
- 주문 정보내에 주문 상품 정보 List 존재
@Getter
@Setter
public class OrderHistDto {
public OrderHistDto(Order order){
this.orderId = order.getId();
this.orderDate = order.getDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
this.orderStatus = order.getOrderstatus();
}
private Long orderId;
private String orderDate;
private OrderStatus orderStatus;
private List<OrderItemDto> orderItemDtoList = new ArrayList<>();
public void addOrderItemDto(OrderItemDto orderItemDto){
orderItemDtoList.add(orderItemDto);
}
}
3. 구매 내역 조회 리포지토리
- @Query 어노테이션을 이용하여 구매 내역을 조회
- SQL 문을 여러줄로 작성 시 마지막에 띄어쓰기 " " 필수
public interface OrderRepository extends JpaRepository<Order, Long> {
//해당 유저의 구매 이력을 페이징 정보에 맞게 조회(주문 객체들)
@Query("select o from Order o " +
"where o.member.email = :email " +
"order by o.date desc")
List<Order> findOrders(@Param("email") String email, Pageable pageable);
//해당 유저의 주문 개수
@Query("select count(o) from Order o " +
"where o.member.email = :email")
Long countOrder(@Param("email") String email);
}
1. OrderService - 주문 이력
주문 목록을 조회하는 로직
- 파라미터로는 이메일과 페이징 처리를 위한 Pageable을 받아온다.
- 반환값은 *PageImpl을 이용해 페이지 구현 객체를 생성한 값
-
*PageImpl
Spring Data JPA와 함께 사용되는 경우, PageImpl 객체는 데이터베이스에서 검색한 결과를 페이징 처리하여 반환하는 데 사용될 수 있습니다. 이를 통해 클라이언트는 원하는 페이지의 데이터만 받아올 수 있고, 서버는 대량의 데이터를 효율적으로 처리할 수 있게 됩니다.
참고 블로그 :
https://velog.io/@codren/%EA%B5%AC%EB%A7%A4-%EB%82%B4%EC%97%AD-%EC%A1%B0%ED%9A%8C
구매 내역 조회
OrderItemDto, OrderHistDto, DateTimeFormatter, @Query 어노테이션, batch_fetch_size 지정 (지연로딩 관련)
velog.io
https://velog.io/@codren/%EC%A3%BC%EB%AC%B8-%EC%B7%A8%EC%86%8C%ED%95%98%EA%B8%B0
주문 취소하기
주문 취소 시 주문 상태변경 및 재고 변경
velog.io