
찜 추가, 삭제 다이어그램.drawio
WishListController
// 찜 추가
@RequestMapping(value = "/wishLists.do", method = {RequestMethod.GET, RequestMethod.POST})
public String wishList(@RequestParam("productNo") int productNo,
@RequestParam("productName") String productName,
HttpSession session) throws Exception {
System.out.println("찜 상품 번호 : " + productNo);
System.out.println("찜 상품 이름 : " + productName);
// 세션에서 아이디 가져오기
if((MemberDomain) session.getAttribute("member") != null) {
MemberDomain memberDomain = (MemberDomain) session.getAttribute("member");
String memberId = memberDomain.getMemberId();
System.out.println("상품에서 아이디 확인 : " + memberId);
// no는 찜 추가,삭제 작업, yes는 리스트 조회할때 찜 여부만 가져오기
String check = "no";
// 찜 여부 확인하여 추가 삭제
wishListService.isWishList(productNo, memberId, check, productName);
// 찜 숫자를 세션에 담기
int wishListTotal = wishListService.allwishListCount(memberId);
session.setAttribute("wishListTotal", wishListTotal);
}
// productName이 깨져서 url로 들어가 utf-8로 다시 인코딩.
String encProductName = URLEncoder.encode(productName, "UTF-8");
return "redirect:/product/selectProduct.do?productNO=" + productNo + "&productName=" + encProductName;
}
WishListServiceImpl
// 찜하기
@Override
public String isWishList(int productNo, String memberId, String check, String productName) throws Exception {
Map<String, Object> wishListCheck = new HashMap<>();
wishListCheck.put("productNo", productNo);
wishListCheck.put("memberId", memberId);
wishListCheck.put("productName", productName);
String isWishList = wishListDAO.isWishList(wishListCheck);
if(check.equals("no")) {
System.out.println("뭐냐 진짜 : " + isWishList);
if(isWishList.equals("noWishList")) {
addWishList(wishListCheck);
}else {
deleteWishList(wishListCheck);}
}
return isWishList;
}
// 찜하기 삭제
private void deleteWishList(Map<String, Object> wishListCheck) {
wishListDAO.deleteWishList(wishListCheck);
}
// 찜하기 추가
private void addWishList(Map<String, Object> wishListCheck) {
wishListDAO.addWishList(wishListCheck);
}
WishListDAOImpl
// 찜하기
@Override
public String isWishList(Map<String, Object> wishListCheck) throws DataAccessException {
return sqlSession.selectOne("mapper.wishList.isWishList", wishListCheck);
}
// 찜하기 삭제
@Override
public void deleteWishList(Map<String, Object> wishListCheck) throws DataAccessException {
sqlSession.delete("mapper.wishList.deleteWishList", wishListCheck);
}
// 찜하기 추가
@Override
public void addWishList(Map<String, Object> wishListCheck) throws DataAccessException {
sqlSession.update("mapper.wishList.addWishList", wishListCheck);
}
WishList.xml
<!-- 찜하기 체크 -->
<select id="isWishList" parameterType="Map" resultType="String">
<![CDATA[
SELECT CASE
WHEN EXISTS (SELECT 0 FROM wishList WHERE productName=#{productName} and memberId = #{memberId})
THEN 'wishList'
ELSE 'noWishList'
END
FROM dual
]]>
</select>
<!-- 찜하기 추가 -->
<insert id="addWishList" parameterType="Map">
INSERT INTO wishList (productName, memberId)
VALUES (#{productName}, #{memberId})
</insert>
<!-- 찜하기 삭제 -->
<delete id="deleteWishList" parameterType="Map">
DELETE FROM wishList
WHERE productName = #{productName} AND memberId = #{memberId}
</delete>
WishList.jsp
/* 좋아요 추가 */
function like(button, event) {
var like = $(button).closest('form');
var contextPath = `${contextPath}`;
// 로그인 여부 확인
if (isLogOn == 'true' && isLogOn != null) {
var boardMyhomeArticleNo = $("#likeArticleNo").val();
$.ajax({
url: "/gami/mypage/like/likes.do",
type: 'POST',
data: {
boardMyhomeArticleNo: boardMyhomeArticleNo
},
success: function() {
location.reload();
},
error: function(status) {
}
});
} else {
// 비로그인 시 로그인 페이지로 이동 여부 묻고 확인 누르면 이동
if (confirm("로그인 후에 이용이 가능합니다. 로그인 페이지로 이동하시겠습니까?")) {
window.location.href = contextPath + '/member/loginForm.do';
}
}
}