강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

전한울님의 프로필 이미지
전한울

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 서비스 개발

주문취소 관련 질문있습니다.

작성

·

344

0

지금 코드에서는 주문 취소할때 주문한 상품 모두 취소가 되는건가요?? 

예를 들면 상품 A, B를 주문했었는데 그냥 order.cancel()하면

A, B둘다 취소 되는거죠?? A는 그대로 주문, B만 취소 이렇게는

안되는 건가요?

답변 1

2

안녕하세요. 전한울 님, 공식 서포터즈 codesweaver 입니다.

.

현제 예제에서는 전체취소만 구현되어 있습니다. 한울님이 질문하신 기능은 '부분취소'라고 흔히 말하는 기능인데 이또한 구현 가능합니다.다만 orderId 만 가지고 처리하긴 힘들고 orderItemId 도 파라미터로 받아야 합니다. 따라서 뷰도 수정이 되어야 합니다. 각각의 아이템 항목을 체크박스를 추가하여 파라미터를 넘겨받아야 처리가 가능하니까요.

.

Order클래스의 cancel() 메서드를 보면, 모든 OrderItem을 조회하여 하나씩 cancel()을 호출하고 있습니다. 이 부분에 if() 조건으로 orderItemId를 체크해서 취소하는 방법도 가능하고, 혹은 orderItem에서 orderItemId()를 가지고 조회하여 해당 주문만 취소하는 식으로도 구현할 수 있겠죠?

.

또 부분취소에서 고려해야 할 점은, 2개를 구매하 뒤 1개만 부분취소할 경우입니다. 무조건 주문상태를 취소로 변경하면 끝나는것이 아니고 구매 수량 전체를 취소할건가 일부만 취소할것인가 하는 문제가 남아있습니다. 이런 복잡성 때문에 부분취소는 수업예제에서 다루지 않은것 같습니다 :)

.

예제를 응용해서 부분취소 기능을 구현해보신다면 많은 공부가 되리라 생각합니다.

.감사합니다.

전한울님의 프로필 이미지
전한울

작성한 질문수

질문하기