OrderItemDTO (주문 상세 정보 DTO)
package kr.co.lotteon.dto.order;
import kr.co.lotteon.dto.product.ProductDTO;
import lombok.*;
@Getter
@Setter
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class OrderItemDTO {
private Long itemNo; // 주문 상세 고유 번호 (PK)
private int orderNo; // 주문 번호 (Order 엔티티의 PK 참조)
private int prodNo; // 상품 번호 (Product 엔티티의 PK 참조)
private int itemPrice; // 주문 시점의 상품 단가 (할인 전 가격)
private int itemDiscount; // 할인가(퍼센트) 예: 20 → 20% 할인
private int itemPoint; // 해당 상품 구매 시 적립 포인트
private int itemCount; // 구매 수량
private String orderStatus; // 주문 상태 (예: "입금대기", "결제완료", "배송중" 등)
private OrderDTO orderDTO; // 상위 주문 정보 (OrderDTO)
private ProductDTO product; // 주문된 상품 정보 (ProductDTO)
private String category; // 상품의 카테고리 이름 (MainCategory 혹은 SubCategory)
// 옵션 1
private String opt1;
private String opt1Cont;
// 옵션 2
private String opt2;
private String opt2Cont;
// 옵션 3
private String opt3;
private String opt3Cont;
// 옵션 4
private String opt4;
private String opt4Cont;
// 옵션 5
private String opt5;
private String opt5Cont;
// 옵션 6
private String opt6;
private String opt6Cont;
}
설명
- itemNo (Long)
- 주문 상세 단건의 고유 식별자(PK).
OrderItem 엔티티의 itemNo와 매핑됩니다.
- orderNo (int)
- 이 주문 항목이 속한 최상위 주문(
Order)의 PK.
OrderDTO가 포함하는 OrderItemDTO 리스트를 구성하기 위해 사용됩니다.
- prodNo (int)
- 실제 결제 대상 상품(
Product)의 고유 번호.
product 필드의 ProductDTO.prodNo와 동일합니다.
- itemPrice (int)
- 주문 시점의 상품 단가를 저장.
- 할인 전 금액이기 때문에, 할인율(
itemDiscount)을 적용하기 전에 사용됩니다.
- itemDiscount (int)
- 퍼센트 단위로 저장된 할인율.
- 예를 들어
20이면 20% 할인이 적용된다는 의미입니다.
- itemPoint (int)
- 해당 상품 구매 시 적립될 포인트.
- 등급별 적립률 계산 로직(예: VIP → 4%, GOLD → 3%)에 따라 주문 시점에 계산되어 저장됩니다.
- itemCount (int)
- 해당 상품의 구매 수량(개수).
- 기본값은 1이며, 0이 들어올 경우 엔티티의
@PrePersist에서 1로 보정됩니다.
- orderStatus (String)
- 주문 상세 상태를 나타내는 문자열.
- 예:
"입금대기", "결제완료", "배송준비중", "배송중", "배송완료" 등.
- orderDTO (OrderDTO)
- 이 주문 항목이 속한 상위 주문 객체.
OrderDTO에 매핑된 주문 전체 정보(총금액, 배송주소, 결제수단 등)를 참조할 때 사용됩니다.
- product (ProductDTO)
- 실제 결제된 상품의 정보를 담은 DTO.
ProductDTO에는 상품명, 브랜드, 가격, 이미지 경로 등이 포함되어 있어 주문 확인 화면이나 이메일 등에 사용됩니다.
- category (String)
- 상품의 카테고리 이름(메인 카테고리 또는 서브 카테고리).
- 주문 내역을 카테고리별로 구분하여 보여줄 때 사용됩니다.
- opt1 \~ opt6, opt1Cont \~ opt6Cont (String)
- “옵션명”과 “옵션값” 쌍으로, 최대 6개까지 상품 옵션을 저장.
- 예:
opt1 = "색상", opt1Cont = "레드", opt2 = "사이즈", opt2Cont = "M" 등.
- 옵션이 없는 경우 빈 문자열로 남을 수 있습니다.