북마크 추가, 삭재 다이어그램.drawio.png

북마크 추가, 삭재 다이어그램.drawio

BookMarkController

  // 북마크 추가
  @RequestMapping(value = "/bookMark.do", method = {RequestMethod.GET, RequestMethod.POST})
  public String bookMark(@RequestParam("boardMyhomeArticleNo") int boardMyhomeArticleNo, 
  	        HttpSession session) throws Exception {
  		
  		System.out.println("북마크 확인 : " + boardMyhomeArticleNo);
  		
  		// 세션에서 아이디 가져오기
  		if((MemberDomain) session.getAttribute("member") != null) {
  	  	MemberDomain memberDomain = (MemberDomain) session.getAttribute("member");
  	  	String memberId = memberDomain.getMemberId();
  	  	
  	  	// no는 북마크 추가,삭제 작업, yes는 리스트 조회할때 북마크 여부만 가져오기
  	  	String check = "no";
  	  	
  	  	// 북마크 여부 확인하여 추가 삭제
  	  bookMarkService.isBookmark(boardMyhomeArticleNo, memberId, check);
  	  	
  	  	// 북마크 숫자를 세션에 담기
  	  	int bookMarkTotal =  bookMarkService.selectTotArticle(memberId);
  	  	session.setAttribute("bookMarkTotal", bookMarkTotal);
  		}
  		
  		return "redirect:/board/board_myhome/myHomeSelect.do?boardMyhomeArticleNo=" + boardMyhomeArticleNo;
  	}

BookMarkServiceImpl

 // 북마크
	@Override
	public String isBookmark(int boardMyhomeArticleNo, String memberId, String check) throws Exception {
		
		Map<String, Object> bookCheck = new HashMap<>();
		
		bookCheck.put("boardMyhomeArticleNo", boardMyhomeArticleNo);
		bookCheck.put("memberId", memberId);
		
		String isBookMark = bookMarkDAO.isBookmark(bookCheck);
		
		System.out.println("isBookMark : " + isBookMark);
	
		if(check.equals("no")) {
		if(isBookMark.equals("nobook")) {
			addBookmark(bookCheck);
		}else {
			deleteBookmark(bookCheck);}
		}
		
		return isBookMark;
	}
	
	// 북마크 삭제
	private void deleteBookmark(Map<String, Object> bookCheck) {
		bookMarkDAO.deleteBookmark(bookCheck);
	}
	
	// 북마크 추가
	private void addBookmark(Map<String, Object> bookCheck) {
		bookMarkDAO.addBookmark(bookCheck);
	}

BookMarkDAO

	// 북마크 삭제
	@Override
	public void deleteBookmark(Map<String, Object> bookCheck) throws DataAccessException {
		sqlSession.delete("mapper.bookMark.deleteBookmark", bookCheck);
	}

	// 북마크 추가
	@Override
	public void addBookmark(Map<String, Object> bookCheck) throws DataAccessException {
		sqlSession.update("mapper.bookMark.addBookmark", bookCheck);
	}
	
	// 북마크 체크
	@Override
	public String isBookmark(Map<String, Object> bookCheck) throws DataAccessException {
		return sqlSession.selectOne("mapper.bookMark.isBookmark", bookCheck);
	}

bookMark.xml

    <!-- 북마크 추가 -->
    <insert id="addBookmark" parameterType="Map">
        INSERT INTO bookMark (articleNo, memberId) 
        VALUES (#{boardMyhomeArticleNo}, #{memberId})
    </insert>
    
     <!-- 북마크 삭제 -->
    <delete id="deleteBookmark" parameterType="Map">
        DELETE FROM bookMark 
        WHERE articleNo = #{boardMyhomeArticleNo} AND memberId = #{memberId}
    </delete>
    
    <!-- 북마크 체크 -->
     <select id="isBookmark" parameterType="Map" resultType="String">
        <![CDATA[
            SELECT CASE 
            WHEN EXISTS (SELECT 0 FROM bookmark WHERE articleNo=#{boardMyhomeArticleNo} and memberId = #{memberId}) 
            THEN 'book' 
            ELSE 'nobook' 
            END
            FROM dual
        ]]>
    </select>

myHomeSelect.jsp

    /* 북마크 추가 */
    function bookMark(button, event) {
        event.preventDefault();
        var bookMark = $(button).closest('form');
        var contextPath = `${contextPath}`;

        // 로그인 여부 확인
        if (isLogOn == 'true' && isLogOn != null) {
        	var boardMyhomeArticleNo = $("#bookMarkArticleNo").val();
        	$.ajax({
                url: "/gami/mypage/bookmark/bookMark.do",
                type: 'POST',
                data: {
                    boardMyhomeArticleNo: boardMyhomeArticleNo
                },
                success: function() {
                	location.reload();
                },
                error: function(status) {
                }
            });
        } else {
            // 비로그인 시 로그인 페이지로 이동 여부 묻고 확인 누르면 이동
            if (confirm("로그인 후에 이용이 가능합니다. 로그인 페이지로 이동하시겠습니까?")) {
                window.location.href = contextPath + '/member/loginForm.do';
            }
        }
    }