간펴니
간편 자바프로그래밍
간펴니
전체 방문자
오늘
어제
  • 전체보기 (185)
    • 알고리즘 (2)
    • JAVA (69)
      • 이펙티브 자바 (47)
      • JAVA 병렬프로그래밍 (5)
      • 자바 (17)
    • SPRING (60)
      • Spring (12)
      • IceWater Community (37)
      • Homme Shop (10)
      • 토비의 스프링 (1)
    • SPRING BOOT (4)
      • WhiteRecord (7)
    • 오류 (9)
    • DB (10)
      • ORACLE (5)
      • MYSQL (1)
      • MYBATIS (4)
      • JPA (0)
      • 대용량 데이터 베이스 (0)
      • SQL (0)
    • FRONT (8)
      • JSP (2)
      • JavaScript (2)
      • Jquery (3)
      • Thymeleaf (1)
    • AWS (6)
    • JNI (10)
    • 회고 (0)
    • MQ (0)
    • Radis (0)
    • Git (0)
    • Docker (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 컨셉 변경

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
간펴니

간편 자바프로그래밍

[스프링] 쇼핑몰 - 주문목록
SPRING/Homme Shop

[스프링] 쇼핑몰 - 주문목록

2021. 12. 9. 01:24
728x90

이번 포스팅은 주문 완료 후 , 

 

사용자가 마이페이지에서 확인 할 수 있는 주문목록에 대한 내용이다.

주문목록

 


 

주문번호를 눌러서 들어온 주문상세내역

 

 


 

 

주문번호를 눌러서 들어온 주문상세내역


주문목록에서는 주문한 상품들의 목록과 배송상태, 취소요청, 리뷰작성을 할 수 있다.

 

리뷰작성은 배송이 시작된 후에 작성 할 수 있도록 했으며, 취소요청을 하면 관리자가 확인 할 수 있다.

 

이 부분은 다음 포스팅에 작성할 관리자의 주문관리 부분과 연결된다.

 

 

주문번호 클릭 시 , 주문상품, 주문시 입력한 구매자 및 수취인의 정보 , 결제내역을 확인 할 수 있다.

 


Mapper

<!-- 주문조회 리스트 -->
<select id="getOrderList" resultMap="OrderItemVO">
	select	 a.ORDERITEM_NO, a.ORDERITEM_IMG, a.ORDERITEM_NAME, a.ORDERITEM_MEM_NO,
			 a.ORDERITEM_OPTION, a.ORDERITEM_PRICE, a.ORDERITEM_ITEM_NO,
			 a.ORDERITEM_SELECT_VOL, a.ORDERITEM_ORDER_NO, a.ORDERITEM_DATE, 
			 b.ordered_no ,b.ordered_paystate,b.ordered_delivstate,b.ordered_delivnum
			 FROM ORDERITEM a left outer join ORDERED b on a.orderitem_order_no = b.ordered_no
			 WHERE ORDERITEM_MEM_NO = #{orderitem_mem_no}
			 ORDER BY ORDERITEM_NO DESC

</select>

	<resultMap type="kr.co.vo.OrderItemVO" id="OrderItemVO">
	<result column="ORDERITEM_NO" property="order_item_no" />
	<result column="ORDERITEM_IMG" property="order_item_img" />
	<result column="ORDERITEM_NAME" property="order_item_name" />
	<result column="ORDERITEM_OPTION" property="order_item_option" />
	<result column="ORDERITEM_PRICE" property="order_item_price" />
	<result column="ORDERITEM_ITEM_NO" property="order_item_no" />
	<result column="ORDERITEM_SELECT_VOL" property="order_select_vol" />
	<result column="ORDERITEM_DATE" property="order_item_date" />
	<collection property="orderedVO" resultMap="OrderedVO"></collection>
	</resultMap>
	
	<resultMap type="kr.co.vo.OrderedVO" id="OrderedVO">
	<result column="ORDERED_NO" property="ordered_no" />
	<result column="ORDERED_PAYSTATE" property="ordered_paystate" />
	<result column="ORDERED_DELIVSTATE" property="ordered_delivstate" />
	<result column="ORDERED_DELIVNUM" property="ordered_delivnum" />
	</resultMap>

주문은 로그인 한 회원만 할 수 있도록 했기 때문에,

 

Session의 회원PR을 가져와 List를 만들었다.

 


Controller

	// 마이페이지 get
	@RequestMapping(value = "/MyPageView", method = RequestMethod.GET)
	public String getMyPageView(HttpSession session, String update, MemberVO vo, Model model, OrderItemVO gvo)
			throws Exception {
		logger.info("get MyPageView");
		// 주문 조회 리스트
		MemberVO memberVO = (MemberVO) session.getAttribute("member");

		List<OrderItemVO> getOrderList = service.orderList(memberVO.getMEM_NO());

		model.addAttribute("getOrderList", getOrderList);

		return "/member/MyPageView";
	}

주문 목록과


	@RequestMapping(value = "/orderDetail", method = RequestMethod.GET)
	public String orderItemView(int ordered_no, Model model) throws Exception {
		logger.info("ordered_no" + ordered_no);
		model.addAttribute("orderItemView", clientService.orderItemView(ordered_no));
		model.addAttribute("orderItemInfo", clientService.orderItemInfo(ordered_no));
		return "/member/orderDetail";
	}

주문 번호를 눌러서 들어갈 수 있는 주문상세 내역의 컨트롤러이다.

 


View

                <tbody>
                    <tr style="vertical-align : middle;" >
                      <th  class="font-alt" style="text-align: center; vertical-align : middle; width:13%;" >주문번호</th>
                      <th  class="font-alt" style="text-align: center; vertical-align : middle; width:8%;">image</th>
                      <th  class="font-alt" class="hidden-xs" style="text-align: center; vertical-align : middle;">item</th>
                      <th  class="font-alt" style="text-align: center; vertical-align : middle; width:14%;">price</th>
                      <th  class="font-alt" style="text-align: center; vertical-align : middle; width:8%;">수량</th>
                      <th  class="font-alt" class="hidden-xs" style="text-align: center; vertical-align : middle; width:13%;">주문상태</th>
                      <th  class="font-alt" style="text-align: center; vertical-align : middle;; width:14%;">배송상태</th>
                    </tr>

                 <c:forEach items="${getOrderList}" var="getOrderList">
                 
                   <tr style="text-align: center; ">
         		
                    <td style="padding-left: 0px; padding-right: 0px; vertical-align : middle;">
                    	<fmt:formatDate value="${getOrderList.order_item_date}"/><br/>
                    	<a href="/member/orderDetail?ordered_no=${getOrderList.orderedVO.ordered_no}">${getOrderList.orderedVO.ordered_no}</a>
                    </td>
                      <td class="hidden-xs" style="vertical-align : middle;"><a href="/main/itemContent?item_no=${getOrderList.order_item_no}"><img src="/img/${getOrderList.order_item_img}" alt="Accessories Pack"/></a></td>
                      <td style="vertical-align : middle;">
                        <h5 class="product-title font-alt">${getOrderList.order_item_name}</h5>
                      </td>
                      <td class="hidden-xs" style="vertical-align : middle;">
                        <h5 class="product-title font-alt">₩ <fmt:formatNumber pattern="###,###,###" value="${getOrderList.order_item_price}"/><br>
                        								  
                        </h5>
                      </td>
                       <td class="hidden-xs" style="vertical-align : middle;">
                        <h5 class="product-title font-alt"> ${getOrderList.order_select_vol}						  
                        </h5>
                      </td>
                        <td class="hidden-xs" style="vertical-align : middle;">
                        <form action="/member/updatePaystate" method="post">
                        <input type="hidden" value="${getOrderList.orderedVO.ordered_no}" name="ordered_no">
                        <h5 class="product-title font-alt"> 
						<c:if test="${getOrderList.orderedVO.ordered_paystate == 1}">입금완료 <button  type="submit" class="btn btn-g btn-round btn-sm">취소신청</button></c:if>
						<c:if test="${getOrderList.orderedVO.ordered_paystate == 2}">주문취소신청</c:if>
						<c:if test="${getOrderList.orderedVO.ordered_paystate == 3}">교환</c:if>
						<c:if test="${getOrderList.orderedVO.ordered_paystate == 4}">환불</c:if>
						  
                        </h5>
                        </form>
                      </td>
                        <td class="hidden-xs" style="vertical-align : middle;">
                        <h5 class="product-title font-alt"> 						  
                       <c:if test="${getOrderList.orderedVO.ordered_delivstate == 1}">물품준비중</c:if>
                       <c:if test="${getOrderList.orderedVO.ordered_delivstate == 2}">배송중<p>${getOrderList.orderedVO.ordered_delivnum}</p> <p><button type="button" class="btn btn-g btn-round btn-sm" onclick="location.href='/main/ireplywrite?item_no=${getOrderList.order_item_no}&item_name=${getOrderList.order_item_name}'" ><span style="font-size:12px">reviews</span></button></p></c:if>
                       <c:if test="${getOrderList.orderedVO.ordered_delivstate == 3}">배송완료<button type="button" class="btn btn-g btn-round btn-sm" onclick="location.href='/main/ireplywrite?item_no=${getOrderList.order_item_no}&item_name=${getOrderList.order_item_name}'" ><span style="font-size:12px">reviews</span></button></c:if>
                        
                        </h5>
                      </td>
                    </tr>
                 </c:forEach>

취소신청 버튼을 누르면 , 주문번호가 담겨있는 form이 submit되어

 

주문테이블의 paystate 컬럼의 숫자를 update 한다.

 

해당 버튼은 paystate가 1 , 즉 정상주문 상태일 때만 출력된다.

 

배송상태를 알려주는 delivstate도 동일한 로직으로 , 관리자페이지에서 관리자가 배송상태를 변경할 수 있다.

 

 

728x90
저작자표시 (새창열림)

'SPRING > Homme Shop' 카테고리의 다른 글

[스프링] 쇼핑몰 - 상품목록과 페이징  (2) 2021.12.09
[스프링] 쇼핑몰 - 주문관리  (0) 2021.12.09
[스프링] 쇼핑몰 - 상품 주문 [ 2 ]  (0) 2021.12.09
[스프링] 쇼핑몰 - 상품 주문 [ 1 ]  (0) 2021.12.08
[스프링] 쇼핑몰 - 비동기 장바구니 [3]  (1) 2021.12.08
    'SPRING/Homme Shop' 카테고리의 다른 글
    • [스프링] 쇼핑몰 - 상품목록과 페이징
    • [스프링] 쇼핑몰 - 주문관리
    • [스프링] 쇼핑몰 - 상품 주문 [ 2 ]
    • [스프링] 쇼핑몰 - 상품 주문 [ 1 ]
    간펴니
    간펴니
    개발공부 기록하는 곳

    티스토리툴바