일단 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
'Study > 실전! 스프링 부트와 JPA 활용1' 카테고리의 다른 글
주문 개발 4 (OrderService Test) (0) | 2022.07.15 |
---|---|
주문 개발 3 (OrderService- 주문 개발) (0) | 2022.07.15 |
주문 개발 1 (Item - 상품 개발) (0) | 2022.07.14 |
회원 기능 테스트 (0) | 2022.07.12 |
회원 서비스 개발 (0) | 2022.07.12 |
댓글