가장 중요한 도메인
생성 메서드
Order
public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) {
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() {
if (delivery.getStatus() == DeliveryStatus.COMP) {
throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다.");
}
this.setStatus(OrderStatus.CANCEL);
for (OrderItem orderItem: this.orderItems) {
orderItem.cancel();
}
}
public int getTotalPrice() {
return this.orderItems.stream()
.mapToInt(OrderItem::getTotalPrice)
.sum();
}
나중에 이 부분만 수정하면 되기에 편리하다.
ㅒㄱ
public void cancel() {
getItem().addStock(count);
}
public int getTotalPrice() {
return getOrderPrice() * getCount();
}