인프런 커뮤니티 질문&답변
주문취소 관련 질문있습니다.
작성
·
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개만 부분취소할 경우입니다. 무조건 주문상태를 취소로 변경하면 끝나는것이 아니고 구매 수량 전체를 취소할건가 일부만 취소할것인가 하는 문제가 남아있습니다. 이런 복잡성 때문에 부분취소는 수업예제에서 다루지 않은것 같습니다 :)
.
예제를 응용해서 부분취소 기능을 구현해보신다면 많은 공부가 되리라 생각합니다.
.감사합니다.





