jpashop : order, orderItem entity

This commit is contained in:
kim
2021-01-24 20:29:15 +09:00
parent ba9af4d938
commit 2906aed318
2 changed files with 69 additions and 0 deletions

View File

@@ -48,4 +48,49 @@ public class Order {
this.delivery = delivery; this.delivery = delivery;
delivery.setOrder(this); 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;
}
} }

View File

@@ -24,4 +24,28 @@ public class OrderItem {
private int orderPrice; // 주문가격 private int orderPrice; // 주문가격
private int count; // 주문 수량 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();
}
} }