diff --git a/src/main/java/com/cotato/kampus/domain/board/application/BoardAppender.java b/src/main/java/com/cotato/kampus/domain/board/application/BoardAppender.java index 5d05b64..ba0617f 100644 --- a/src/main/java/com/cotato/kampus/domain/board/application/BoardAppender.java +++ b/src/main/java/com/cotato/kampus/domain/board/application/BoardAppender.java @@ -5,6 +5,7 @@ import com.cotato.kampus.domain.board.dao.BoardRepository; import com.cotato.kampus.domain.board.domain.Board; +import com.cotato.kampus.domain.board.enums.BoardStatus; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; @@ -22,6 +23,7 @@ public Long appendBoard(String boardName, String description, Long universityId, .description(description) .universityId(universityId) .isCategoryRequired(isCategoryRequired) + .boardStatus(BoardStatus.ACTIVE) .build(); return boardRepository.save(board).getId(); diff --git a/src/main/java/com/cotato/kampus/domain/board/application/BoardService.java b/src/main/java/com/cotato/kampus/domain/board/application/BoardService.java index 0fa4d68..f9965c7 100644 --- a/src/main/java/com/cotato/kampus/domain/board/application/BoardService.java +++ b/src/main/java/com/cotato/kampus/domain/board/application/BoardService.java @@ -49,7 +49,7 @@ public List getFavoriteBoardList() { public Long addFavoriteBoard(Long boardId) { // 게시판이 존재하는지 확인 - boardValidator.validateBoardExists(boardId); + boardValidator.validateBoardExistsAndActive(boardId); // 즐겨찾기 추가 return boardFavoriteAppender.appendFavoriteBoard(boardId); diff --git a/src/main/java/com/cotato/kampus/domain/board/application/BoardValidator.java b/src/main/java/com/cotato/kampus/domain/board/application/BoardValidator.java index 3180155..ba152c3 100644 --- a/src/main/java/com/cotato/kampus/domain/board/application/BoardValidator.java +++ b/src/main/java/com/cotato/kampus/domain/board/application/BoardValidator.java @@ -4,6 +4,8 @@ import org.springframework.transaction.annotation.Transactional; import com.cotato.kampus.domain.board.dao.BoardRepository; +import com.cotato.kampus.domain.board.dto.BoardDto; +import com.cotato.kampus.domain.board.enums.BoardStatus; import com.cotato.kampus.global.error.ErrorCode; import com.cotato.kampus.global.error.exception.AppException; @@ -15,10 +17,15 @@ @RequiredArgsConstructor(access = AccessLevel.PROTECTED) public class BoardValidator { private final BoardRepository boardRepository; + private final BoardFinder boardFinder; - public void validateBoardExists(Long boardId){ + public void validateBoardExistsAndActive(Long boardId){ if(!boardRepository.existsById(boardId)) throw new AppException(ErrorCode.BOARD_NOT_FOUND); + + BoardDto boardDto = boardFinder.findBoard(boardId); + if(boardDto.boardStatus()!= BoardStatus.ACTIVE) + throw new AppException(ErrorCode.BOARD_NOT_VALIDATE); } public void validateUniversityBoardExists(Long universityId){ diff --git a/src/main/java/com/cotato/kampus/domain/board/domain/Board.java b/src/main/java/com/cotato/kampus/domain/board/domain/Board.java index 1caf260..74d9847 100644 --- a/src/main/java/com/cotato/kampus/domain/board/domain/Board.java +++ b/src/main/java/com/cotato/kampus/domain/board/domain/Board.java @@ -45,11 +45,12 @@ public class Board extends BaseTimeEntity { private BoardStatus boardStatus; @Builder - public Board(String boardName, String description, Long universityId, Boolean isCategoryRequired) { + public Board(String boardName, String description, Long universityId, Boolean isCategoryRequired, BoardStatus boardStatus) { this.boardName = boardName; this.description = description; this.universityId = universityId; this.isCategoryRequired = isCategoryRequired; + this.boardStatus = boardStatus; } public void update(String boardName, String description, Boolean isCategoryRequired) { diff --git a/src/main/java/com/cotato/kampus/domain/post/application/PostService.java b/src/main/java/com/cotato/kampus/domain/post/application/PostService.java index af3154b..bde9109 100644 --- a/src/main/java/com/cotato/kampus/domain/post/application/PostService.java +++ b/src/main/java/com/cotato/kampus/domain/post/application/PostService.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import com.cotato.kampus.domain.board.application.BoardValidator; import com.cotato.kampus.domain.common.application.ApiUserResolver; import com.cotato.kampus.domain.common.application.ImageValidator; import com.cotato.kampus.domain.post.dto.AnonymousOrPostAuthor; @@ -50,6 +51,7 @@ public class PostService { private final PostValidator postValidator; private static final String POST_IMAGE_FOLDER = "post"; + private final BoardValidator boardValidator; @Transactional public Long createPost( @@ -71,6 +73,9 @@ public Long createPost( List.of() : s3Uploader.uploadFiles(validImages, POST_IMAGE_FOLDER); + // 게시판 유표성 검증 + boardValidator.validateBoardExistsAndActive(boardId); + // 게시글 추가 Long postId = postAppender.append(userId, boardId, title, content, postCategory); diff --git a/src/main/java/com/cotato/kampus/global/error/ErrorCode.java b/src/main/java/com/cotato/kampus/global/error/ErrorCode.java index 9749db2..c59a157 100644 --- a/src/main/java/com/cotato/kampus/global/error/ErrorCode.java +++ b/src/main/java/com/cotato/kampus/global/error/ErrorCode.java @@ -63,6 +63,7 @@ public enum ErrorCode { UNIVERSITY_BOARD_DUPLICATED(HttpStatus.CONFLICT, "이미 해당 대학 게시판이 존재합니다.", "BOARD-004"), BOARD_ALREADY_INACTIVE(HttpStatus.CONFLICT, "이미 게시판이 비활성화 상태입니다.", "BOARD-005"), BOARD_ALREADY_ACTIVE(HttpStatus.CONFLICT, "이미 게시판이 활성화 상태입니다.", "BOARD-006"), + BOARD_NOT_VALIDATE(HttpStatus.BAD_REQUEST, "게시판이 유효하지 않습니다.", "BOARD-007"), //University UNIVERSITY_NOT_FOUND(HttpStatus.NOT_FOUND, "해당 대학을 찾을 수 없습니다.", "UNIVERSITY-001"),