결제완료.drawio

결제완료.drawio.png

OrderController

폼 데이터 수신

// 결제 완료 - 정희준
	@RequestMapping(value = "/completeOrder.do", method = RequestMethod.POST)
	public String completeOrder(@ModelAttribute OrderDomain orderDomain,
			@RequestParam("productNoList") List<Integer> productNoList,
			@RequestParam("productPriceList") List<Integer> productPriceList,
			@RequestParam("orderQtyList") List<Integer> orderQtyList,
			@RequestParam("orderProductOptionsList") List<String> orderProductOptionsList, // 옵션 추가
			HttpSession session, Model model) {
		System.out.println("completeOrder invoked, orderDomain: " + orderDomain);

주문 정보 세팅 및 옵션 초기화

// 폼에서 전달된 상품 정보를 OrderDomain에 세팅
		orderDomain.setProductNoList(productNoList);
		orderDomain.setProductPriceList(productPriceList);
		orderDomain.setOrderQtyList(orderQtyList);
		orderDomain.setOrderProductOptionsList(orderProductOptionsList); // 옵션 리스트 추가

		// orderProductOptionsList가 null이면 빈 리스트로 초기화
		if (orderProductOptionsList == null || orderProductOptionsList.isEmpty()) {
			orderProductOptionsList = new ArrayList<>();
			for (int i = 0; i < productNoList.size(); i++) {
				orderProductOptionsList.add(""); // 빈 옵션 추가
			}
		}
		orderDomain.setOrderProductOptionsList(orderProductOptionsList);

총 주문금액 계산

// 총 주문금액 계산
		int shippingFee = 3500;
		int totalAmount = shippingFee;
		if (productPriceList != null && orderQtyList != null) {
			// 리스트 크기가 동일한지 확인 (불일치 시 예외 처리 또는 로그 남기기)
			int size = productPriceList.size();
			for (int i = 0; i < size; i++) {
				// 각 요소가 null이면 기본값 0으로 처리
				Integer price = productPriceList.get(i);
				Integer qty = orderQtyList.get(i);
				if (price == null) {
					price = 0;
				}
				if (qty == null) {
					qty = 0;
				}
				totalAmount += price * qty;
			}
		}
		orderDomain.setOrderAmount(totalAmount);
		System.out.println("Computed Order Amount: " + totalAmount);

OrderService , order.xml

주문 완료 처리 (서비스 호출)