jpashop : order, orderItem entity
This commit is contained in:
@@ -48,4 +48,49 @@ public class Order {
|
||||
this.delivery = delivery;
|
||||
delivery.setOrder(this);
|
||||
}
|
||||
|
||||
// 생성 메서드
|
||||
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 : orderItems) {
|
||||
// orderItem.cancel();
|
||||
// }
|
||||
orderItems.forEach(OrderItem::cancel);
|
||||
}
|
||||
|
||||
// 조회 로직
|
||||
|
||||
/**
|
||||
* 전체 주문 가격 조회
|
||||
*/
|
||||
public int getTotalPrice() {
|
||||
return orderItems.stream()
|
||||
.mapToInt(OrderItem::getTotalPrice)
|
||||
.sum();
|
||||
// int totalPrice = 0;
|
||||
// for (OrderItem orderItem : orderItems) {
|
||||
// totalPrice += orderItem.getTotalPrice();
|
||||
// }
|
||||
// return totalPrice;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,4 +24,28 @@ public class OrderItem {
|
||||
|
||||
private int orderPrice; // 주문가격
|
||||
private int count; // 주문 수량
|
||||
|
||||
// 생성 메서드
|
||||
public static OrderItem createOrderItem(Item item, int orderPrice, int count){
|
||||
OrderItem orderItem = new OrderItem();
|
||||
orderItem.setItem(item);
|
||||
orderItem.setOrderPrice(orderPrice);
|
||||
orderItem.setCount(count);
|
||||
item.removeStock(count);
|
||||
return orderItem;
|
||||
}
|
||||
|
||||
// 비지니스 로직
|
||||
public void cancel() {
|
||||
getItem().addStock(count);
|
||||
}
|
||||
|
||||
// 조회 로직
|
||||
|
||||
/**
|
||||
* 주문상품 전체 가격 조회
|
||||
*/
|
||||
public int getTotalPrice() {
|
||||
return getOrderPrice() * getCount();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user