찜 추가, 삭제 다이어그램.drawio.png

찜 추가, 삭제 다이어그램.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';
            }
        }
    }