Study/실전! 스프링 부트와 JPA 활용1
주문 개발 2 (Order- 주문 개발)
Subi
2022. 7. 14. 12:11
일단 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 : orderItems){
orderItem.cancel();
}
}
//조회로직//
/**
* 전체 주문 가격 조회
* @return
*/
public int getTotalPrice(){
int totalPrice = 0;
for(OrderItem orderItem : orderItems){
totalPrice += orderItem.getTotalPrice();
}
return totalPrice;
}
주문을 생성시켜주는 createOrder 메서드,
주문 취소를 해주는 cancel 메서드,
전체 주문에 대한 가격을 조회해주는 getTotalPrice 메서드를 생성 시켜준다.
그리고 OrderRepository를 만들어준다.
@Repository
@RequiredArgsConstructor
public class OrderRepository {
private final EntityManager em;
public void save(Order order){
em.persist(order);
}
public Order findOne(Long id){
return em.find(Order.class,id);
}
// public List<Order> findAll(OrderSearch orderSerach){
//
// }
}
Repository는 저장을 시켜주는 save,
하나의 주문정보를 가져오는 findOne,
그리고 아직 사용하지 않지만 전체 주문정보를 가져오는 findAll를 만들어준다.
강의 : 인프런 실전! 스프링 부트와 JPA 활용1 (김영한) https://inf.run/VMWU