스프링부트+jsp로 배달사이트 만들기-18 주문상세 페이지
2021. 12. 9. 13:20ㆍ스프링부트
OrderController에 추가 합니다
@GetMapping("/orderListDetail/{orderNum}")
public String orderDetail(@PathVariable String orderNum, Model model, @AuthenticationPrincipal LoginService user) {
OrderList orderDetail = orderService.orderListDetail(orderNum);
if (user != null && (user.getUser().getId() != orderDetail.getUserId())) {
System.out.println("다른 사용자");
return "redirect:/";
} else if (user == null) {
System.out.println("비로그인");
return "redirect:/";
}
List<Cart> list = FoodInfoFromJson.foodInfoFromJson(orderDetail.getFoodInfo());
model.addAttribute("orderDetail", orderDetail);
model.addAttribute("cart", list);
return "order/orderListDetail";
}
주문번호로 주문상세를 불러오고 비로그인 사용자나, 주문자의 아이디가 일치하지 않으면 접근할 수 없도록 구현했습니다
주문상세의 json형태의 메뉴정보를 리스트로 변환해 화면에 출력합니다
OrderService
// 주문목록 상세보기
OrderList orderListDetail(String orderNum);
OrderServiceImp
@Override
public OrderList orderListDetail(String orderNum) {
return orderDAO.orderListDetail(orderNum);
}
OrderDAO
// 주문목록 상세보기 페이지
OrderList orderListDetail(String orderNum);
OrderDAOImp
@Override
public OrderList orderListDetail(String orderNum) {
return sql.selectOne("order.orderListDetail", orderNum);
}
orderMapper
<select id="orderListDetail" resultType="OrderList">
SELECT o.order_num,
o.user_id,
o.order_date,
o.pay_method,
o.delevery_status,
o.phone,
o.delevery_address1,
o.delevery_address2,
o.delevery_address3,
o.store_id,
o.total_price,
o.used_point,
o.request,
d.food_info,
s.store_name,
s.delevery_tip
FROM bm_order_user o
LEFT JOIN (SELECT ORDER_NUM,
LISTAGG(FOOD_INFO, '/') food_info
FROM BM_ORDER_DETAIL_USER
GROUP BY ORDER_NUM) d
ON o.order_num = d.order_num
LEFT JOIN bm_store s
ON o.store_id = s.id
LEFT JOIN bm_review r
ON o.order_num = r.order_num
WHERE o.order_num = #{orderNum }
ORDER BY o.order_date desc
</select>
화면을 출력할 jsp와 css입니다
orderListDetail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/view/include/link.jsp"%>
<link rel="stylesheet" href="/css/order/orderDetail.css">
<!-- <link rel="stylesheet" href="/css/layout/nav.css"> -->
<%@ include file="/WEB-INF/view/include/header.jsp"%>
<section class="title">
<h1>주문 상세</h1>
</section>
<main>
<div class="detail_box">
<div class="order_cont">
<div>${orderDetail.deleveryStatus }</div>
<div class="store_name">${orderDetail.storeName }</div>
<div class="order_info">
<div>
주문일시 :
<fm:formatDate value="${orderDetail.orderDate }"
pattern="yyyy년 MM월 dd일 (E) a hh:mm" />
</div>
<div>주문번호 : ${orderDetail.orderNum }</div>
</div>
</div>
<ul class="order_menu">
<c:forEach begin="0" end="${fn:length(cart) -1 }" var="i">
<li>
<div><span>${cart[i].foodName } ${amount[i] }개</span></div>
<ul>
<li>기본가격 <fm:formatNumber value="${cart[i].foodPrice }" />원</li>
<c:set var="foodTotalPrice" value="${cart[i].foodPrice }" />
<c:if test="${fn:length(cart[i].optionName) != 0}">
<c:forEach begin="0" end="${fn:length(cart[i].optionName) -1 }" var="j">
<li>
<span>${cart[i].optionName[j] }</span>
<span><fm:formatNumber value="${cart[i].optionPrice[j] }" pattern="###,###" />원</span>
</li>
<c:set var="foodTotalPrice" value="${foodTotalPrice + cart[i].optionPrice[j] }" />
</c:forEach>
</c:if>
<li class="menu_price_sum"><fm:formatNumber value="${foodTotalPrice }" pattern="###,###" />원</li>
</ul>
<hr>
</li>
</c:forEach>
</ul>
<div class="price">
<div>
<span>총 주문금액 </span><span><fm:formatNumber value="${orderDetail.totalPrice }" pattern="###,###" />원</span>
</div>
<div>
<span>배달팁 </span><span><fm:formatNumber value="${orderDetail.deleveryTip }" pattern="###,###" />원</span>
</div>
<div>
<c:if test="${orderDetail.usedPoint != 0 }">
<span>포인트 사용 </span>
<span>-<fm:formatNumber value="${orderDetail.usedPoint }" pattern="###,###" />원</span>
</c:if>
</div>
<hr>
</div>
<div class="total">
<div>
<span>총 결제금액 </span>
<span class="sum"><fm:formatNumber value="${orderDetail.totalPrice + orderDetail.deleveryTip - orderDetail.usedPoint }" pattern="###,###" />원</span>
</div>
<div>
<span>결제방법 </span><span>${orderDetail.payMethod }</span>
</div>
</div>
<hr>
<hr>
<div class="address">
<div>배달주소</div>
<ul>
<li>${orderDetail.deleveryAddress1 }</li>
<li>${orderDetail.deleveryAddress2 }</li>
<li>${orderDetail.deleveryAddress3 }</li>
</ul>
<hr>
</div>
<div>
<div>전화번호</div>
<div>${orderDetail.phone }</div>
<hr>
</div>
<div>
<div>요청사항</div>
<div>${orderDetail.request }</div>
<hr>
</div>
</div>
</main>
<!-- 하단 메뉴 -->
<%-- <%@ include file="/WEB-INF/view/include/nav.jsp"%> --%>
<!-- 하단 메뉴 -->
<!-- 푸터 -->
<%@ include file="/WEB-INF/view/include/footer.jsp"%>
<!-- 푸터 -->
</body>
</html>
orderDetail.css
main {
width: 800px;
margin : 0 auto 50px ;
}
.detail_box {
width: 95%;
margin-left: auto;
}
section.title {
width: 100%;
}
section.title h1 {
text-align: center;
margin : 30px 0 50px 0 ;
}
main .order_cont {
margin-bottom: 30px;
}
main div {
font-size: 1.5rem;
}
main .order_cont .store_name {
font-size: 2rem;
font-weight: bold;
}
main .order_cont .order_info {
margin-top: 10px;
font-size: 1.5rem;
}
main .order_menu {
margin-bottom: 30px;
}
main .order_menu li {
position: relative;
}
main .order_menu li div,
main .price div,
main .total div {
display: flex;
justify-content: space-between;
}
main .order_menu li .menu_price,
main .price div span:last-child,
main .total div span:last-child {
position: relative;
right: 0;
}
main .order_menu li ul li {
font-size: 1.5rem;
list-style: disc;
margin-left: 20px;
color: #a5a5a5;
}
main .order_menu li ul li.menu_price_sum {
list-style: none;
margin: 0;
color: black;
font-weight: bold;
}
main .price {
margin-bottom: 30px;
}
main .price div {
font-size: 1.8rem;
font-weight: bold;
}
main .total{
margin-bottom: 30px;
}
main .total div {
font-size: 2rem;
font-weight: bold;
}
main .address li {
color: #a5a5a5;
}
@media (max-width:1024px) {
main {
width: 95%;
}
.detail_box {
margin: 0 auto;
}
}
@media (max-width:767px) {
}
'스프링부트' 카테고리의 다른 글
스프링부트+jsp로 배달사이트 만들기-19 매장목록 수정/페이징 (0) | 2021.12.09 |
---|---|
스프링부트+jsp로 배달사이트 만들기-17 xss 방어하기 (0) | 2021.12.09 |
스프링부트+jsp로 배달사이트 만들기-16 리뷰 사진 올리기 (0) | 2021.12.09 |
스프링부트+jsp로 배달사이트 만들기-15 리뷰작성 (0) | 2021.12.08 |
스프링부트+jsp로 배달사이트 만들기-14 주문완료 (6) | 2021.12.08 |