(복습, 정리) 주문, 주문상품 엔티티 개발
애플리케이션에서 핵심 엔티티⭐️⭐️⭐️⭐️⭐️
public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); }//생성하면서 연관관계가 얽힌 것들을 한번에 같이 해주기 때문에 //주문 생성 후에 변경할 것이 있으면 createOrder만 변경해주면 된다! public static Order createOrder(Member member,Delivery delivery,OrderItem... orderItems){//orderItem에서 이미 수량 감산하고 넘어온다. Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for(OrderItem orderItem : orderItems){ order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; }public void cancel(){ //validation 로직 if(delivery.getStatus() == DelieveryStatus.COMP){ throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다"); } //validation 통과 후 : 현재 주문 상태를 CANCEL로하고, 주문 상품도 원상 복구해준다!! this.setStatus(OrderStatus.CANCEL); for(OrderItem orderItem : orderItems){ orderItem.cancle();//주문(상품 2개)일 때 상품 각각에 대해서도 취소처리해줘야함 } }public int getTotalPrice(){ int totalPrice = 0; for(OrderItem orderItem : orderItems){ totalPrice += orderItem.getTotalPrice();//300*5 + 400*3 + ... } return totalPrice; }public int getTotalPrice(){//주문 가격 * 주문 수량 return getOrderPrice() * getCount(); }

Last updated