*생성메서드
class 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){ //각각주문에대해 다 add
order.addOrderItem(orderItem);
}
order.setStatus(OrderStatus.ORDER);
order.setOrderDate(LocalDateTime.now());
return order;
}
//==비즈니스 로직==//
/**
* 주문 취소
*/
public void cancel(){
if(delivery.getStatus()==DeliveryStatus.COMP){
throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다.")
}
//else
this.setStatus(OrderStatus.CANCEL);
for(OrderItem orderItem : orderItems){
orderItem.cancel();
}
}
//==조회 로직==//
/**
* 전체 주문 가격 조회
* @return
*/
public int getTotalPrice(){
int totalPrice=0;
for(OrderItem orderItem : orderItems){
totalPrice+=orderItem.getTotalPrice();
}
return totalPrice;
//람다 => 깔끔하게 할수있음.
}
class OrderItem
//==생성 메서드==//
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); //재고수량 원복
}
//==조회 로직==//
/**
* 주문상품 전체 가격조회
* @return
*/
public int getTotalPrice() {
return getOrderPrice()*getCount();
}
c
'Java > Spring-app' 카테고리의 다른 글
주문 서비스 개발 // 도메인 모델 패턴, 생성자제한, CASCADE, 변수 수정쿼리 (0) | 2023.06.13 |
---|---|
주문 리포지토리 개발 (0) | 2023.06.13 |
상품 서비스 개발 (1) | 2023.06.08 |
상품 리포지토리 개발 (0) | 2023.06.08 |
상품 엔티티 개발 // setter없이 수정하는법 (0) | 2023.06.08 |