롯데ON의 주문 기능은 CartDTO 하나로 장바구니 기반 주문과 바로 주문을 통합해 관리하며, DB와 세션을 상황에 맞게 활용해 유연한 주문 흐름을 제공합니다. 장바구니 주문의 경우 DB에서 Cart Entity를 조회해 CartDTO로 변환한 뒤 주문 페이지에 전달하고, 바로 주문은 ItemRequestDTO로 즉시 CartDTO를 생성해 세션에 보관한 후 주문 화면으로 연결합니다. 이를 통해 코드 중복을 최소화하고, 주문 중 이탈 시에도 세션 복원으로 사용 편의성을 높였습니다.
/product/order(장바구니) vs /product/order/direct(바로 주문)ProductService, UserService, CouponIssueRepository 활용src/ └── main/ │── java/ │ │── kr.co.lotteon/ │ │── controller/ │ │ └── product/ │ │ └── ProductOrderController.java │ │── service/ │ │ └── product/ │ │ │── ProductOrderService.java │ │ └── UserService.java │ │── repository/ │ │ │── product/ │ │ │ └── ProductRepository.java │ │ │── coupon/ │ │ │ └── CouponIssueRepository.java │ │ │── cart/ │ │ │ └── CartRepository.java │ │ └── user/ │ │ └── UserRepository.java │ │ └── UserDetailsRepository.java │ │── entity/ │ │ │── order/ │ │ │ └── Order.java │ │ │── coupon/ │ │ │ └── CouponIssue.java │ │ │── cart/ │ │ │ └── Cart.java │ │ └── user/ │ │ └── User.java │ │ └── UserDetails.java │ └── dto/ │ │── order/ │ │ └── OrderDTO.java │ │── coupon/ │ │ └── CouponIssueDTO.java │ │── cart/ │ │ └── CartDTO.java │ │── user/ │ │ └── UserDTO.java │ │ └── UserDetailsDTO.java │ └── page/ │ └── ItemRequestDTO.java └── resources/ │── templates/ │ └── product/ │ └── order/ │ └── order.html └── static/ └── js/ └── product/ └── order.js