create or replace view v_cart as
select
c.CART_ID , p.price, c.AMOUNT, c.PRODUCT_ID, c.USERID, m.USERNAME ,p.PRODUCT_NAME ,p.PICTURE_URL,
p.AMOUNT as product_amount ,p.PRODUCT_STATE, (price*c.amount) as money , c.CART_REGDATE
from
cart c, TBL_MEMBER m, PRODUCT p
where c.USERID=m.USERID and c.PRODUCT_ID =p.PRODUCT_ID ;
@Data
public class CartVO {
private Integer cart_id;
private String userid;
private String username;
private Integer product_id;
private String product_name;
private Integer price;
private Integer money;
private Integer amount; //구매수량
private String product_state;
private String picture_url;
private Date cart_regdate;
private Integer product_amount; //상품 수량
private Integer deliver=10000 ; //배송비 만원 이하 2500원 추가
private Integer deliver_money=2500; //기본 배송룡 2500
private Integer total_deliver_money; //총 배송료
private Integer total_sum;
}
마지막 사이즈에 전체 가격을 저장한다.
서비스 영역에서 설정 view 영역은 view 만
@Override
public List<CartVO> listCart(String userid) {
List<CartVO> list =null;
try {
list=dao.listCart(userid);
//전체 합계 계산
int sum=0;
int sum_deliver=0;
for(CartVO vo :list){
sum +=vo.getMoney();
//배송비 차감
if(vo.getMoney() < vo.getDeliver()){
sum =sum-vo.getDeliver_money();
}else{
//배송비 0원
vo.setDeliver_money(0);
}
//배송비
sum_deliver =vo.getDeliver_money();
vo.setTotal_deliver_money(sum_deliver);
//전체가격
vo.setTotal_sum(sum);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
컨트롤
@RequestMapping("/list.do")
public ModelAndView list(HttpSession session, ModelAndView mav){
Map<String, Object> map =new HashMap<>();
MemberDTO member=(MemberDTO)session.getAttribute("loginUser");
List<CartVO> cartList= cartService.listCart(member.getUserid());
for(CartVO vo :cartList){
logger.info(" 0000 : " +vo.toString());
}
map.put("cartList", cartList);
map.put("cartSize", cartList.size());
mav.addObject("map", map);
mav.setViewName(JSP_PAGE+"cart_list");
return mav;
}
뷰에 서 마지막 List 객체 가져오기
<c:set value="${map.cartList.get(map.cartList.size()-1) }" var="list" />
<!-- cart box -->
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>상품명</th>
<th>가격</th>
<th>수량</th>
<th>구매가격</th>
<th>배송비</th>
<th>#</th>
</tr>
</thead>
<tbody>
<c:forEach items="${map.cartList }" var="row">
<tr>
<td><img src="/products/img/${row.picture_url }" style="max-width: 150px; max-height: 100px;"></td>
<td>${row.product_name }<span class="label label-warning">${row.product_state }</span></td>
<td>₩<fmt:formatNumber value="${row.price }" pattern="#,###" /></td>
<td>
<select>
<c:forEach begin="1" end="${row.product_amount }" var="i">
<c:choose>
<c:when test="${ i ==row.amount}">
<option value="${i }" selected="selected">${i }</option>
</c:when>
<c:otherwise>
<option value="${i }">${i }</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</td>
<td><span style="font-weight: bold;">₩<fmt:formatNumber value="${row.money }" pattern="#,###" /></span></td>
<td>₩<fmt:formatNumber value="${row.deliver_money }" pattern="#.###" /></td>
<th scope="row"><button class="btn btn-danger" type="button" onclick="cartDelete();">삭제</button></th>
</tr>
<tr>
</c:forEach>
</tbody>
</table>
</div>
<!-- cart box end-->
<div class="table-responsive">
<h3 style="text-align: center; ">장바구니 총 내역</h3>
<h3></h3>
<!-- 마지막 List 가져오기 -->
<c:set value="${map.cartList.get(map.cartList.size()-1) }" var="list" />
<table class="table table-hover">
<tbody>
<tr>
<th>배송비</th>
<td>
<c:choose>
<c:when test="${list.total_deliver_money >0}">
<fmt:formatNumber pattern="#,###" value="${list.total_deliver_money }" />
</c:when>
<c:otherwise>
₩ 0
</c:otherwise>
</c:choose>
</td>
</tr>
<tr>
<th>전체 구매 가격</th>
<td>
₩ <fmt:formatNumber pattern="#,###" value="${list.total_sum }" />
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2" style="text-align: center;">
<a href="#" class="btn btn-primary">구매하기</a>
<a href="/shop/products/list.do" class="btn btn-info">쇼핑 계속하기</a>
</td>
</tr>
</tfoot>
</table>
</div>
댓글 ( 5)
댓글 남기기