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] (0) | 2021.12.08 |