[Spring][쇼핑몰 프로젝트][36] 장바구니 기능(장바구니 추가(뷰 구현)) - 5

https://kimvampa.tistory.com/264
This commit is contained in:
SeoJin Kim
2021-11-18 18:17:48 +09:00
parent eefe054f9e
commit 467ae88379
2 changed files with 331 additions and 3 deletions

View File

@@ -130,10 +130,10 @@
<div class="button">
<div class="button_quantity">
주문수량
<input type="text" value="1">
<input type="text" class="quantity_input" value="1">
<span>
<button>+</button>
<button>-</button>
<button class="plus_btn">+</button>
<button class="minus_btn">-</button>
</span>
</div>
<div class="button_set">
@@ -232,6 +232,51 @@ $(document).ready(function(){
$(".publeyear").html(publeYear);
});
// 수량 버튼 조작
let quantity = $(".quantity_input").val();
$(".plus_btn").on("click", function(){
$(".quantity_input").val(++quantity);
});
$(".minus_btn").on("click", function(){
if(quantity > 1){
$(".quantity_input").val(--quantity);
}
});
// 서버로 전송할 데이터
const form = {
memberId : '${member.memberId}',
bookId : '${goodsInfo.bookId}',
bookCount : ''
}
// 장바구니 추가 버튼
$(".btn_cart").on("click", function(e){
form.bookCount = $(".quantity_input").val();
$.ajax({
url: '/cart/add',
type: 'POST',
data: form,
success: function(result){
cartAlert(result);
}
})
});
function cartAlert(result){
if(result == '0'){
alert("장바구니에 추가를 하지 못하였습니다.");
} else if(result == '1'){
alert("장바구니에 추가되었습니다.");
} else if(result == '2'){
alert("장바구니에 이미 추가되어져 있습니다.");
} else if(result == '5'){
alert("로그인이 필요합니다.");
}
}
</script>
</body>

View File

@@ -0,0 +1,283 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Welcome BookMall</title>
<link rel="stylesheet" href="/resources/css/goodsDetail.css">
<script
src="https://code.jquery.com/jquery-3.4.1.js"
integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
crossorigin="anonymous"></script>
</head>
<body>
<div class="wrapper">
<div class="wrap">
<div class="top_gnb_area">
<ul class="list">
<c:if test = "${member == null}"> <!-- 로그인 x -->
<li >
<a href="/member/login">로그인</a>
</li>
<li>
<a href="/member/join">회원가입</a>
</li>
</c:if>
<c:if test="${member != null }"> <!-- 로그인 o -->
<c:if test="${member.adminCk == 1 }"> <!-- 관리자 계정 -->
<li><a href="/admin/main">관리자 페이지</a></li>
</c:if>
<li>
<a id="gnb_logout_button">로그아웃</a>
</li>
<li>
마이룸
</li>
<li>
장바구니
</li>
</c:if>
<li>
고객센터
</li>
</ul>
</div>
<div class="top_area">
<!-- 로고영역 -->
<div class="logo_area">
<a href="/main"><img src="/resources/img/mLogo.png"></a>
</div>
<div class="search_area">
<div class="search_wrap">
<form id="searchForm" action="/search" method="get">
<div class="search_input">
<select name="type">
<option value="T">책 제목</option>
<option value="A">작가</option>
</select>
<input type="text" name="keyword" value="<c:out value="${pageMaker.cri.keyword}"/>">
<button class='btn search_btn'>검 색</button>
</div>
</form>
</div>
</div>
<div class="login_area">
<!-- 로그인 하지 않은 상태 -->
<c:if test = "${member == null }">
<div class="login_button"><a href="/member/login">로그인</a></div>
<span><a href="/member/join">회원가입</a></span>
</c:if>
<!-- 로그인한 상태 -->
<c:if test="${ member != null }">
<div class="login_success_area">
<span>회원 : ${member.memberName}</span>
<span>충전금액 : <fmt:formatNumber value="${member.money }" pattern="\#,###.##"/></span>
<span>포인트 : <fmt:formatNumber value="${member.point }" pattern="#,###" /></span>
<a href="/member/logout.do">로그아웃</a>
</div>
</c:if>
</div>
<div class="clearfix"></div>
</div>
<div class="content_area">
<div class="line">
</div>
<div class="content_top">
<div class="ct_left_area">
<div class="image_wrap" data-bookid="${goodsInfo.imageList[0].bookId}" data-path="${goodsInfo.imageList[0].uploadPath}" data-uuid="${goodsInfo.imageList[0].uuid}" data-filename="${goodsInfo.imageList[0].fileName}">
<img>
</div>
</div>
<div class="ct_right_area">
<div class="title">
<h1>
${goodsInfo.bookName}
</h1>
</div>
<div class="line">
</div>
<div class="author">
<span>
${goodsInfo.authorName} 지음
</span>
<span>|</span>
<span>
${goodsInfo.publisher}
</span>
<span>|</span>
<span class="publeyear">
${goodsInfo.publeYear}
</span>
</div>
<div class="line">
</div>
<div class="price">
<div class="sale_price">정가 : <fmt:formatNumber value="${goodsInfo.bookPrice}" pattern="#,### 원" /></div>
<div class="discount_price">
판매가 : <span class="discount_price_number"><fmt:formatNumber value="${goodsInfo.bookPrice - (goodsInfo.bookPrice*goodsInfo.bookDiscount)}" pattern="#,### 원" /></span>
[<fmt:formatNumber value="${goodsInfo.bookDiscount*100}" pattern="###" />%
<fmt:formatNumber value="${goodsInfo.bookPrice*goodsInfo.bookDiscount}" pattern="#,### 원" /> 할인]</div>
</div>
<div class="line">
</div>
<div class="button">
<div class="button_quantity">
주문수량
<input type="text" class="quantity_input" value="1">
<span>
<button class="plus_btn">+</button>
<button class="minus_btn">-</button>
</span>
</div>
<div class="button_set">
<a class="btn_cart">장바구니 담기</a>
<a class="btn_buy">바로구매</a>
</div>
</div>
</div>
</div>
<div class="line">
</div>
<div class="content_middle">
<div class="book_intro">
${goodsInfo.bookIntro}
</div>
<div class="book_content">
${goodsInfo.bookContents }
</div>
</div>
<div class="line">
</div>
<div class="content_bottom">
리뷰
</div>
</div>
<!-- Footer 영역 -->
<div class="footer_nav">
<div class="footer_nav_container">
<ul>
<li>회사소개</li>
<span class="line">|</span>
<li>이용약관</li>
<span class="line">|</span>
<li>고객센터</li>
<span class="line">|</span>
<li>광고문의</li>
<span class="line">|</span>
<li>채용정보</li>
<span class="line">|</span>
</ul>
</div>
</div> <!-- class="footer_nav" -->
<div class="footer">
<div class="footer_container">
<div class="footer_left">
<img src="/resources/img/Logo.png">
</div>
<div class="footer_right">
(주) VamBook 대표이사 : OOO
<br>
사업자등록번호 : ooo-oo-ooooo
<br>
대표전화 : oooo-oooo(발신자 부담전화)
<br>
<br>
COPYRIGHT(C) <strong>kimvampa.tistory.com</strong> ALL RIGHTS RESERVED.
</div>
<div class="clearfix"></div>
</div>
</div> <!-- class="footer" -->
</div> <!-- class="wrap" -->
</div> <!-- class="wrapper" -->
<script>
$(document).ready(function(){
/* 이미지 삽입 */
const bobj = $(".image_wrap");
if(bobj.data("bookid")){
const uploadPath = bobj.data("path");
const uuid = bobj.data("uuid");
const fileName = bobj.data("filename");
const fileCallPath = encodeURIComponent(uploadPath + "/s_" + uuid + "_" + fileName);
bobj.find("img").attr('src', '/display?fileName=' + fileCallPath);
} else {
bobj.find("img").attr('src', '/resources/img/goodsNoImage.png');
}
/* publeyear */
const year = "${goodsInfo.publeYear}";
let tempYear = year.substr(0,10);
let yearArray = tempYear.split("-")
let publeYear = yearArray[0] + "년 " + yearArray[1] + "월 " + yearArray[2] + "일";
$(".publeyear").html(publeYear);
});
// 수량 버튼 조작
let quantity = $(".quantity_input").val();
$(".plus_btn").on("click", function(){
$(".quantity_input").val(++quantity);
});
$(".minus_btn").on("click", function(){
if(quantity > 1){
$(".quantity_input").val(--quantity);
}
});
// 서버로 전송할 데이터
const form = {
memberId : '${member.memberId}',
bookId : '${goodsInfo.bookId}',
bookCount : ''
}
// 장바구니 추가 버튼
$(".btn_cart").on("click", function(e){
form.bookCount = $(".quantity_input").val();
$.ajax({
url: '/cart/add',
type: 'POST',
data: form,
success: function(result){
cartAlert(result);
}
})
});
function cartAlert(result){
if(result == '0'){
alert("장바구니에 추가를 하지 못하였습니다.");
} else if(result == '1'){
alert("장바구니에 추가되었습니다.");
} else if(result == '2'){
alert("장바구니에 이미 추가되어져 있습니다.");
} else if(result == '5'){
alert("로그인이 필요합니다.");
}
}
</script>
</body>
</html>