초코딩(chocoding)

[Project - 게시판 / spring boot] Board 좋아요 기능 구현 본문

Project

[Project - 게시판 / spring boot] Board 좋아요 기능 구현

sweetychocoding 2024. 2. 22. 15:10
728x90

아.......... 오늘 너무 힘들다.................

 

 

Likes Insert

// Likes Insert =====================================================
	@ResponseBody
	@PostMapping("/likesInsert/{board_id}/{useremail}")
	public ResponseEntity<?> postLikesInsert(@PathVariable("board_id") int board_id, @PathVariable("useremail") String useremail) {
	    Board boardEntity = boardService.selectDetail(board_id);

	    if (boardEntity != null) {
	        LikesId likesId = new LikesId(board_id, useremail);
	        Likes existingLike = likesService.findById(likesId);
	        
	        if (existingLike != null) {
	            // 이미 좋아요를 눌렀다면 삭제
	        	boardEntity.setBoard_likes(boardEntity.getBoard_likes() - 1);
	            likesService.delete(existingLike);
		        boardService.save(boardEntity);
	            return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); // 클라이언트에게 좋아요 삭제 상태 반환
	        } else {
	            // 좋아요를 누르지 않았다면 추가
	            Likes newLike = new Likes();
	            newLike.setUseremail(useremail);
	            newLike.setBoard_id(board_id);
	            boardEntity.setBoard_likes(boardEntity.getBoard_likes() + 1);
	            likesService.save(newLike);
		        boardService.save(boardEntity);
	            return ResponseEntity.ok().build(); // 클라이언트에게 좋아요 추가 상태 반환
	        }

	    } else {
	        return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Board not found");
	    }
	}

 

<script>
    function toggleLike(board_id, useremail) {
        console.log(board_id, useremail);
        
        let url = "/board/likesInsert/" + board_id + "/" + useremail;

        axios.post(url)
            .then(response => {
                let likeCountElement = document.getElementById('likeCount');
                let currentLikeCount = parseInt(likeCountElement.textContent);
                
                if (response.status === 200) {
                    likeCountElement.textContent = currentLikeCount + 1; // 좋아요 추가
                } else if (response.status === 204) {
                    likeCountElement.textContent = currentLikeCount - 1; // 좋아요 삭제
                }
            })
            .catch(error => {
                console.error('Error toggling like:', error);
            });
    }
</script>

 

<div>
	<button id="likeButton" onclick="toggleLike(${requestScope.boardDetail.board_id}, '${sessionScope.loginUser.useremail}')">❤️👍</button>
    <span id="likeCount">${requestScope.boardDetail.board_likes}</span>
</div>

 

 

 

....알아서들 보세요........

728x90