🌞 Day 055
🎄 주문 하기
- 장바구니 페이지에서 "주문하기" 버튼을 클릭하면 현재 페이지의 cart 레코드들이 한 번에 주문하기가 된다.
(cart테이블 => orders, order_detail 테이블)
- 해당 버튼을 클릭하면 JS함수 go_order_insert()가 호출이 된다.
🎁 추가 : mypage.js
function go_order_insert(){
document.formm.action="shop.do?command=orderInsert";
document.formm.submit();
}
🎁 OrderInsertAction
- 주문자 아이디로 검색한 카트 목록(지금 주문 처리할) 먼저 조회한다
- 조회한 list와 주문자의 아이디를 전달인수로 OrderDao의 insertOrder()메서드를 호출하여 orders와 order_detail테이블에 데이터 추가한다
- 방금 주문에 성공한 주문 번호를 가지고 오더 리스트로 이동하여 주문번호로 주문 내역을 다시 조회하고 jsp로 이동한다.

- OrderDao에 insertOrder(cartList, mvo.getId())메서드를 생성한다. (OrderVO, OrderDao 필요)
🎁 OrderVO
- 조회할 때 order테이블 보다는 미리 만들어 둔 order_view를 사용하므로 order_view를 참고하여 OrderVO를 만든다.

🎄 구매완료 페이지
🎁 OrderlistAction

🎁 mypage/orderList.jsp

🎄 MyPage - 주문 내역
<li><a href="shop.do?command=mypage">MY PAGE</a></li>
<li><a href="shop.do?command=qnaList">Q&A</a></li>
🎁 MyPageAction
-
진행중인 주문 내역
: 현재 로그인 한 사용자의 배송 안된 주문내역이 보여진다.
-
예를 들어 한 번에 2,3개의 상품씩 3회에 걸쳐서 주문한 상태라면... 그리고 그 주문들이 하나도 배송이 안된 상태(배송전)이라면 진행중인 주문 내역은 3줄이 표시된다.
(orders테이블 기준 주문 건별 표시)
-
표시내용은 주문 건별 대표상품의 이름 이용하여 슬리퍼 포함3, 겨울용부츠 외2 .. 등등의 내용으로 총 3줄이 표시된다.
-
그리고 각 행에는 상세포기 버튼이 있어서 클릭하면 그 주문에 속한 세 개의 상품을 볼 수 있다.
-
이를 위해서 가장 먼저 필요한 사항은 주문 번호들이다.
order_view에서 주문자 아이디로 검색하고, result가 1인 주문들을 검색해서, 주문 번호들을 조회한다. 위의 예를 든 상태라면 주문번호들이 다음과 같다.
22 22 22 24 24 26 26 26 27 27 27 <- 조회된 주문 번호들
-
우리에게 필요한건 22 24 26 27 이므로, 조회할 때 distinct키워드를 써서 조회한다.(중복삭제)
select distinct oseq from order_view where id=? and result='1';
주문번호(oseq)만 조회할 것이라면 orders테이블에서 distinct 없이 조회하면 될 듯 하지만 orders테이블에는 result필드가 없어서 배송 전 주문이 구분된 번호가 조회되지 않는다.

🎁 mypage/mypage.jsp

🎁 OrderAllAction
- 총 주문 내역 mypage.jsp 그대로 사용
파라미터 title 수정 + odao 메서드 수정

🎄 주문 상세 조회
- orderList에서 '조회'(a태그)를 클릭하면 해당 주문의 상세 페이지로 이동한다.
🎁 OrderDetailAction

🎁 mypage/orderDetail.jsp

🎄 Q&A : List ⇒ Paging
🎁 QnaListAction
- Q&A List만 조회하는 클래스를 만든 후 paging을 추가하였음
- selectQna(mvo.getId()) 메서드는 먼저 만든 메서드로 로그인한 사용자의 전체 Q&A를 조회하는 메서드이고,
listQna(mvo.getId(), paging) 메서드는 paging을 만든 후 각 페이지에서 보여질 해당 사용자의 Q&A만 조회하는 메서드 이다.

🎁 QnaVO

🎁 qna/qnaList.jsp
- qnaList.jsp를 먼저 만들고 페이지 표시할 div를 추가


🎁 Paging

🎄 Dao
🎁 QnaDao

- listQna 메서드의 sql문이 복잡해서 따로 정리
: 한 줄짜리를 개행으로 쪼개놓았음

🎁 OrderDao
- insertOrder메서드가 pstmt를 몇 번 재활용 해야하고, 반복실행도 2번이 들어가는 복잡한 메서드이므로 차근차근 읽으며 복습할 것!!!

🎁 ActionFactory
