From b42e65803a97c361aca72ecdedc95f077afae7a0 Mon Sep 17 00:00:00 2001 From: Donghoon Jeong <112836685+jjeongdong@users.noreply.github.com> Date: Tue, 7 Jan 2025 22:01:41 +0900 Subject: [PATCH] =?UTF-8?q?fix=20:=20=EC=9E=84=EC=8B=9C=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/board/controller/BoardController.java | 9 ++++----- .../domain/board/converter/BoardConverter.java | 1 + .../com/back/catchmate/domain/board/entity/Board.java | 11 +++++++++++ .../domain/board/repository/BoardRepository.java | 2 +- .../catchmate/domain/board/service/BoardService.java | 2 +- .../domain/board/service/BoardServiceImpl.java | 4 ++-- .../domain/enroll/service/EnrollServiceImpl.java | 6 +++++- 7 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/back/catchmate/domain/board/controller/BoardController.java b/src/main/java/com/back/catchmate/domain/board/controller/BoardController.java index 3746c2e..0cbdda9 100644 --- a/src/main/java/com/back/catchmate/domain/board/controller/BoardController.java +++ b/src/main/java/com/back/catchmate/domain/board/controller/BoardController.java @@ -69,11 +69,10 @@ public PagedBoardInfo getBoardListByUserId(@JwtValidation Long loginUserId, return boardService.getBoardListByUserId(loginUserId, userId, pageable); } - @GetMapping("/temp/{boardId}") + @GetMapping("/temp") @Operation(summary = "임시저장된 게시글 단일 조회 API", description = "임시저장된 게시글 단일 조회하는 API 구현.") - public BoardInfo getBoardListByUserId(@JwtValidation Long userId, - @PathVariable Long boardId) { - return boardService.getTempBoard(userId, boardId); + public BoardInfo getBoardListByUserId(@JwtValidation Long userId) { + return boardService.getTempBoard(userId); } @PostMapping("/bookmark/{boardId}") @@ -116,7 +115,7 @@ public BoardDeleteInfo deleteBoard(@JwtValidation Long userId, @PatchMapping("/{boardId}/lift-up") @Operation(summary = "게시글 끌어올리기 API", description = "게시글을 끌어올립니다.") public BoardInfo updateLiftUpDate(@JwtValidation Long userId, - @PathVariable Long boardId){ + @PathVariable Long boardId) { return boardService.updateLiftUpDate(userId, boardId); } } diff --git a/src/main/java/com/back/catchmate/domain/board/converter/BoardConverter.java b/src/main/java/com/back/catchmate/domain/board/converter/BoardConverter.java index 1d5725c..b5cc984 100644 --- a/src/main/java/com/back/catchmate/domain/board/converter/BoardConverter.java +++ b/src/main/java/com/back/catchmate/domain/board/converter/BoardConverter.java @@ -30,6 +30,7 @@ public Board toEntity(User user, Game game, Club cheerClub, CreateOrUpdateBoardR .title(boardRequest.getTitle()) .content(boardRequest.getContent()) .maxPerson(boardRequest.getMaxPerson()) + .currentPerson(0) .user(user) .club(cheerClub) .game(game) diff --git a/src/main/java/com/back/catchmate/domain/board/entity/Board.java b/src/main/java/com/back/catchmate/domain/board/entity/Board.java index bb640ad..cfba4d2 100644 --- a/src/main/java/com/back/catchmate/domain/board/entity/Board.java +++ b/src/main/java/com/back/catchmate/domain/board/entity/Board.java @@ -39,6 +39,9 @@ public class Board extends BaseTimeEntity { @Column(nullable = false) private String content; + @Column(nullable = false) + private int currentPerson; + @Column(nullable = false) private int maxPerson; @@ -115,4 +118,12 @@ public void deleteBoard() { // 삭제 시간 기록 super.delete(); } + + public boolean canIncrementCurrentPerson() { + return currentPerson < maxPerson; + } + + public void incrementCurrentPerson() { + this.currentPerson++; + } } diff --git a/src/main/java/com/back/catchmate/domain/board/repository/BoardRepository.java b/src/main/java/com/back/catchmate/domain/board/repository/BoardRepository.java index 4fe728a..f9de712 100644 --- a/src/main/java/com/back/catchmate/domain/board/repository/BoardRepository.java +++ b/src/main/java/com/back/catchmate/domain/board/repository/BoardRepository.java @@ -22,5 +22,5 @@ public interface BoardRepository extends JpaRepository, BoardReposi Page findAllByUserIdAndDeletedAtIsNullAndIsCompletedIsTrue(Long userId, Pageable pageable); - Optional findByIdAndUserIdAndIsCompletedIsFalse(Long boardId, Long userId); + Optional findTopByUserIdAndIsCompletedIsFalseOrderByCreatedAtDesc(Long userId); } diff --git a/src/main/java/com/back/catchmate/domain/board/service/BoardService.java b/src/main/java/com/back/catchmate/domain/board/service/BoardService.java index 86b2b07..d08e56d 100644 --- a/src/main/java/com/back/catchmate/domain/board/service/BoardService.java +++ b/src/main/java/com/back/catchmate/domain/board/service/BoardService.java @@ -18,7 +18,7 @@ public interface BoardService { PagedBoardInfo getBoardListByUserId(Long loginUserId, Long userId, Pageable pageable); - BoardInfo getTempBoard(Long userId, Long boardId); + BoardInfo getTempBoard(Long userId); BoardDeleteInfo deleteBoard(Long userId, Long boardId); diff --git a/src/main/java/com/back/catchmate/domain/board/service/BoardServiceImpl.java b/src/main/java/com/back/catchmate/domain/board/service/BoardServiceImpl.java index 933ea74..851dd55 100644 --- a/src/main/java/com/back/catchmate/domain/board/service/BoardServiceImpl.java +++ b/src/main/java/com/back/catchmate/domain/board/service/BoardServiceImpl.java @@ -136,11 +136,11 @@ public PagedBoardInfo getBoardListByUserId(Long loginUserId, Long userId, Pageab @Override @Transactional - public BoardInfo getTempBoard(Long userId, Long boardId) { + public BoardInfo getTempBoard(Long userId) { User user = userRepository.findById(userId) .orElseThrow(() -> new BaseException(ErrorCode.USER_NOT_FOUND)); - Board tempBoard = boardRepository.findByIdAndUserIdAndIsCompletedIsFalse(boardId, user.getId()) + Board tempBoard = boardRepository.findTopByUserIdAndIsCompletedIsFalseOrderByCreatedAtDesc(user.getId()) .orElseThrow(() -> new BaseException(ErrorCode.TEMP_BOARD_NOT_FOUND)); if (user.isDifferentUserFrom(tempBoard.getUser())) { diff --git a/src/main/java/com/back/catchmate/domain/enroll/service/EnrollServiceImpl.java b/src/main/java/com/back/catchmate/domain/enroll/service/EnrollServiceImpl.java index 88594e3..f202dec 100644 --- a/src/main/java/com/back/catchmate/domain/enroll/service/EnrollServiceImpl.java +++ b/src/main/java/com/back/catchmate/domain/enroll/service/EnrollServiceImpl.java @@ -158,6 +158,11 @@ public UpdateEnrollInfo acceptEnroll(Long enrollId, Long userId) throws IOExcept User enrollApplicant = userRepository.findById(enroll.getUser().getId()) .orElseThrow(() -> new BaseException(ErrorCode.USER_NOT_FOUND)); + Board board = enroll.getBoard(); + if (board.canIncrementCurrentPerson()) { + board.incrementCurrentPerson(); + } + // 게시글 작성자와 로그인한 사용자가 다를 경우 예외 발생 if (loginUser.isDifferentUserFrom(boardWriter)) { throw new BaseException(ErrorCode.ENROLL_ACCEPT_INVALID); @@ -171,7 +176,6 @@ public UpdateEnrollInfo acceptEnroll(Long enrollId, Long userId) throws IOExcept // 데이터베이스에 저장 notificationService.createNotification(title, body, boardWriter.getProfileImageUrl(), enroll.getBoard().getId(), enrollApplicant.getId()); - enroll.respondToEnroll(AcceptStatus.ACCEPTED); return enrollConverter.toUpdateEnrollInfo(enroll, AcceptStatus.ACCEPTED); }