jpashop : order, orderItem entity
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user