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