From 1a566847a7cd8ba52f92407f8d796b1a3956f952 Mon Sep 17 00:00:00 2001 From: kim Date: Tue, 2 Feb 2021 13:59:10 +0900 Subject: [PATCH] jpablog : write comment --- .../controller/api/BoardApiController.java | 11 ++++++++++ .../java/com/example/jpablog/model/Board.java | 1 + .../example/jpablog/service/BoardService.java | 11 ++++++++++ jpablog/src/main/resources/static/js/board.js | 21 +++++++++++++++++++ .../webapp/WEB-INF/views/board/detail.jsp | 7 +++++-- 5 files changed, 49 insertions(+), 2 deletions(-) diff --git a/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java b/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java index c8194f75..7bd3ebb8 100644 --- a/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java +++ b/jpablog/src/main/java/com/example/jpablog/controller/api/BoardApiController.java @@ -3,6 +3,7 @@ package com.example.jpablog.controller.api; import com.example.jpablog.config.auth.PrincipalDetail; import com.example.jpablog.dto.ResponseDto; import com.example.jpablog.model.Board; +import com.example.jpablog.model.Reply; import com.example.jpablog.model.User; import com.example.jpablog.service.BoardService; import com.example.jpablog.service.UserService; @@ -37,6 +38,16 @@ public class BoardApiController { return new ResponseDto<>(result, HttpStatus.OK.value()); } + @PostMapping("/api/board/{boardId}/reply") + public ResponseDto replySave( + @PathVariable Long boardId, + @RequestBody Reply reply, + @AuthenticationPrincipal PrincipalDetail principal) { + + boardService.댓글쓰기(principal.getUser(), boardId, reply); + return new ResponseDto<>(1, HttpStatus.OK.value()); + } + /*// 기본 로그인 @PostMapping("/user/login") public ResponseDto login(@RequestBody User user, HttpSession session) { diff --git a/jpablog/src/main/java/com/example/jpablog/model/Board.java b/jpablog/src/main/java/com/example/jpablog/model/Board.java index ed68e000..f7deeca6 100644 --- a/jpablog/src/main/java/com/example/jpablog/model/Board.java +++ b/jpablog/src/main/java/com/example/jpablog/model/Board.java @@ -36,6 +36,7 @@ public class Board { @OneToMany(mappedBy = "board") @JsonIgnoreProperties({"board"}) + @OrderBy("id desc") private List replies = new ArrayList<>(); @CreationTimestamp diff --git a/jpablog/src/main/java/com/example/jpablog/service/BoardService.java b/jpablog/src/main/java/com/example/jpablog/service/BoardService.java index 29fd3c7a..8b64bf22 100644 --- a/jpablog/src/main/java/com/example/jpablog/service/BoardService.java +++ b/jpablog/src/main/java/com/example/jpablog/service/BoardService.java @@ -2,8 +2,10 @@ package com.example.jpablog.service; import com.example.jpablog.config.auth.PrincipalDetail; import com.example.jpablog.model.Board; +import com.example.jpablog.model.Reply; import com.example.jpablog.model.User; import com.example.jpablog.repository.BoardRepository; +import com.example.jpablog.repository.ReplyRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -20,6 +22,7 @@ import java.util.List; public class BoardService { private final BoardRepository boardRepository; + private final ReplyRepository replyRepository; @Transactional public void 글쓰기(Board board, User user) { @@ -60,4 +63,12 @@ public class BoardService { } return -1; } + + @Transactional + public void 댓글쓰기(User user, Long boardId, Reply requestReply) { + Board board = boardRepository.findById(boardId).orElseThrow(() -> new IllegalArgumentException("댓글쓰기 실패")); + requestReply.setUser(user); + requestReply.setBoard(board); + replyRepository.save(requestReply); + } } diff --git a/jpablog/src/main/resources/static/js/board.js b/jpablog/src/main/resources/static/js/board.js index 995d3b78..de894f5c 100644 --- a/jpablog/src/main/resources/static/js/board.js +++ b/jpablog/src/main/resources/static/js/board.js @@ -9,6 +9,9 @@ let index = { $("#btn-update").on("click", () => { this.update(); }) + $("#btn-reply-save").on("click", () => { + this.replySave(); + }) }, save : function () { let data = { @@ -64,6 +67,24 @@ let index = { alert(JSON.stringify(error)); }); }, + replySave : function () { + let data = { + boardId: $("#boardId").val(), + content: $("#reply-content").val(), + }; + $.ajax({ + type: "post", + url: `/api/board/${data.boardId}/reply`, + data: JSON.stringify(data), + contentType: "application/json; charset=utf-8", + dataType: "json" + }).done(function (resp){ + alert("댓글 작성 완료!"); + location.href = `/board/${data.boardId}`; + }).fail(function (error){ + alert(JSON.stringify(error)); + }); + }, } index.init(); \ No newline at end of file diff --git a/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp b/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp index 4521e903..9ed631de 100644 --- a/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp +++ b/jpablog/src/main/webapp/WEB-INF/views/board/detail.jsp @@ -24,8 +24,11 @@
-
- + +
+ +
+