가장 중요한 도메인

생성 메서드

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();
}