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