diff --git a/src/main/java/com/repo/whopper/application/notice/impl/EditNoticeService.java b/src/main/java/com/repo/whopper/application/notice/impl/ChangeNoticeService.java similarity index 60% rename from src/main/java/com/repo/whopper/application/notice/impl/EditNoticeService.java rename to src/main/java/com/repo/whopper/application/notice/impl/ChangeNoticeService.java index 145b933..26b0b8b 100644 --- a/src/main/java/com/repo/whopper/application/notice/impl/EditNoticeService.java +++ b/src/main/java/com/repo/whopper/application/notice/impl/ChangeNoticeService.java @@ -1,7 +1,8 @@ package com.repo.whopper.application.notice.impl; -import com.repo.whopper.application.notice.usecase.EditNoticeUseCase; +import com.repo.whopper.application.notice.usecase.ChangeNoticeUseCase; import com.repo.whopper.common.exception.notice.NoticeNotFoundException; +import com.repo.whopper.domain.notice.NoticeModel; import com.repo.whopper.domain.notice.NoticeRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -9,9 +10,19 @@ @Service @RequiredArgsConstructor -public class EditNoticeService implements EditNoticeUseCase { +public class ChangeNoticeService implements ChangeNoticeUseCase { private final NoticeRepository noticeRepository; + @Override + @Transactional + public void checkNotice(String noticeId) { + NoticeModel notice = noticeRepository.findById(noticeId) + .orElseThrow(() -> NoticeNotFoundException.EXCEPTION); + + var newNotice = notice.checkNotice(); + noticeRepository.save(newNotice); + } + @Override @Transactional public void editNotice(String noticeId, String title, String content) { diff --git a/src/main/java/com/repo/whopper/application/notice/impl/FetchNoticeService.java b/src/main/java/com/repo/whopper/application/notice/impl/FetchNoticeService.java index 8a3146a..f205222 100644 --- a/src/main/java/com/repo/whopper/application/notice/impl/FetchNoticeService.java +++ b/src/main/java/com/repo/whopper/application/notice/impl/FetchNoticeService.java @@ -1,11 +1,8 @@ package com.repo.whopper.application.notice.impl; import com.repo.whopper.application.notice.usecase.FetchNoticeUseCase; -import com.repo.whopper.common.exception.notice.NoticeNotFoundException; import com.repo.whopper.common.http.dto.DataResponseInfo; -import com.repo.whopper.domain.notice.NoticeModel; import com.repo.whopper.domain.notice.NoticeRepository; -import com.repo.whopper.interfaces.notice.dto.response.NoticeDetailResponse; import com.repo.whopper.interfaces.notice.dto.response.NoticeResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -16,18 +13,6 @@ public class FetchNoticeService implements FetchNoticeUseCase { private final NoticeRepository noticeRepository; - @Override - @Transactional(readOnly = true) - public NoticeDetailResponse fetchNoticeDetailResponse(String noticeId){ - NoticeModel notice = noticeRepository.findById(noticeId) - .orElseThrow(() -> NoticeNotFoundException.EXCEPTION); - - var newNotice = notice.checkNotice(); - noticeRepository.save(newNotice); - - return new NoticeDetailResponse(notice); - } - @Override @Transactional(readOnly = true) public DataResponseInfo fetchNotice() { diff --git a/src/main/java/com/repo/whopper/application/notice/usecase/EditNoticeUseCase.java b/src/main/java/com/repo/whopper/application/notice/usecase/ChangeNoticeUseCase.java similarity index 61% rename from src/main/java/com/repo/whopper/application/notice/usecase/EditNoticeUseCase.java rename to src/main/java/com/repo/whopper/application/notice/usecase/ChangeNoticeUseCase.java index 89abf7d..5f3f1cf 100644 --- a/src/main/java/com/repo/whopper/application/notice/usecase/EditNoticeUseCase.java +++ b/src/main/java/com/repo/whopper/application/notice/usecase/ChangeNoticeUseCase.java @@ -1,5 +1,6 @@ package com.repo.whopper.application.notice.usecase; -public interface EditNoticeUseCase { +public interface ChangeNoticeUseCase { + void checkNotice(String noticeId); void editNotice(String noticeId, String title, String content); } diff --git a/src/main/java/com/repo/whopper/application/notice/usecase/FetchNoticeUseCase.java b/src/main/java/com/repo/whopper/application/notice/usecase/FetchNoticeUseCase.java index 879811a..a8f4b8a 100644 --- a/src/main/java/com/repo/whopper/application/notice/usecase/FetchNoticeUseCase.java +++ b/src/main/java/com/repo/whopper/application/notice/usecase/FetchNoticeUseCase.java @@ -1,10 +1,8 @@ package com.repo.whopper.application.notice.usecase; import com.repo.whopper.common.http.dto.DataResponseInfo; -import com.repo.whopper.interfaces.notice.dto.response.NoticeDetailResponse; import com.repo.whopper.interfaces.notice.dto.response.NoticeResponse; public interface FetchNoticeUseCase { - NoticeDetailResponse fetchNoticeDetailResponse(String noticeId); DataResponseInfo fetchNotice(); } diff --git a/src/main/java/com/repo/whopper/common/swagger/notice/EditNoticeApiDocumentation.java b/src/main/java/com/repo/whopper/common/swagger/notice/ChangeNoticeApiDocumentation.java similarity index 58% rename from src/main/java/com/repo/whopper/common/swagger/notice/EditNoticeApiDocumentation.java rename to src/main/java/com/repo/whopper/common/swagger/notice/ChangeNoticeApiDocumentation.java index 3fa4fb5..457fa62 100644 --- a/src/main/java/com/repo/whopper/common/swagger/notice/EditNoticeApiDocumentation.java +++ b/src/main/java/com/repo/whopper/common/swagger/notice/ChangeNoticeApiDocumentation.java @@ -7,7 +7,18 @@ import io.swagger.v3.oas.annotations.tags.Tag; @Tag(name = "Edit_notice", description = "공지 수정 API") -public interface EditNoticeApiDocumentation { +public interface ChangeNoticeApiDocumentation { + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "OK, 성공!" + ) + }) + @Operation( + summary = "공지 확인 API", + description = "클라이언트에서 받은 id로 공지를 검색하고, 검색한 확인 상태로 변경합니다." + ) + void checkNotice(String noticeId); @ApiResponses({ @ApiResponse( responseCode = "200", @@ -16,7 +27,7 @@ public interface EditNoticeApiDocumentation { }) @Operation( summary = "공지 수정 API", - description = "클라이언트에서 받은 id로 공지를 검색하고, 검색한 공지의 제목과 내용을 수정합니다." + description = "클라이언트에서 받은 id로 공지를 검색하고, 검색한 공지의 제목과 내용을 변경합니다." ) void editNotice(String noticeId, NoticeRequest request); } diff --git a/src/main/java/com/repo/whopper/common/swagger/notice/FetchNoticeApiDocumentation.java b/src/main/java/com/repo/whopper/common/swagger/notice/FetchNoticeApiDocumentation.java index 0214b5c..109b665 100644 --- a/src/main/java/com/repo/whopper/common/swagger/notice/FetchNoticeApiDocumentation.java +++ b/src/main/java/com/repo/whopper/common/swagger/notice/FetchNoticeApiDocumentation.java @@ -1,8 +1,6 @@ package com.repo.whopper.common.swagger.notice; -import com.repo.whopper.common.error.ErrorResponse; import com.repo.whopper.common.http.dto.DataResponseInfo; -import com.repo.whopper.interfaces.notice.dto.response.NoticeDetailResponse; import com.repo.whopper.interfaces.notice.dto.response.NoticeResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; @@ -14,33 +12,6 @@ @Tag(name = "Fetch_notice", description = "공지 조회 API") public interface FetchNoticeApiDocumentation { - @ApiResponses({ - @ApiResponse( - responseCode = "200", - description = "OK, 성공!", - content = @Content( - mediaType = MediaType.APPLICATION_JSON_VALUE, - schema = @Schema( - implementation = NoticeDetailResponse.class - ) - ) - ), - @ApiResponse( - responseCode = "404", - description = "요청하신 공지를 찾지 못했습니다.", - content = @Content( - mediaType = MediaType.APPLICATION_JSON_VALUE, - schema = @Schema( - implementation = ErrorResponse.class - ) - ) - ) - }) - @Operation( - summary = "공지 상세 조회 API", - description = "클라이언트에서 받은 id로 공지를 검색합니다." - ) - NoticeDetailResponse fetchNoticeDetailResponse(String noticeId); @ApiResponses({ @ApiResponse( responseCode = "200", diff --git a/src/main/java/com/repo/whopper/interfaces/notice/EditNoticeController.java b/src/main/java/com/repo/whopper/interfaces/notice/ChangeNoticeController.java similarity index 56% rename from src/main/java/com/repo/whopper/interfaces/notice/EditNoticeController.java rename to src/main/java/com/repo/whopper/interfaces/notice/ChangeNoticeController.java index 319c7e8..269b1fd 100644 --- a/src/main/java/com/repo/whopper/interfaces/notice/EditNoticeController.java +++ b/src/main/java/com/repo/whopper/interfaces/notice/ChangeNoticeController.java @@ -1,12 +1,13 @@ package com.repo.whopper.interfaces.notice; -import com.repo.whopper.application.notice.usecase.EditNoticeUseCase; +import com.repo.whopper.application.notice.usecase.ChangeNoticeUseCase; import com.repo.whopper.common.annotation.OnlyTeacher; -import com.repo.whopper.common.swagger.notice.EditNoticeApiDocumentation; +import com.repo.whopper.common.swagger.notice.ChangeNoticeApiDocumentation; import com.repo.whopper.interfaces.notice.dto.request.NoticeRequest; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -14,12 +15,17 @@ @RestController @RequiredArgsConstructor @RequestMapping("/notice") -public class EditNoticeController implements EditNoticeApiDocumentation { - private final EditNoticeUseCase editNoticeUseCase; +public class ChangeNoticeController implements ChangeNoticeApiDocumentation { + private final ChangeNoticeUseCase changeNoticeUseCase; + + @PostMapping("/{noticeId}") + public void checkNotice(@PathVariable String noticeId) { + changeNoticeUseCase.checkNotice(noticeId); + } @OnlyTeacher @PatchMapping("/{noticeId}") public void editNotice(@PathVariable String noticeId, @RequestBody NoticeRequest request) { - editNoticeUseCase.editNotice(noticeId, request.title(), request.content()); + changeNoticeUseCase.editNotice(noticeId, request.title(), request.content()); } } diff --git a/src/main/java/com/repo/whopper/interfaces/notice/FetchNoticeController.java b/src/main/java/com/repo/whopper/interfaces/notice/FetchNoticeController.java index 6641df2..91d6eb2 100644 --- a/src/main/java/com/repo/whopper/interfaces/notice/FetchNoticeController.java +++ b/src/main/java/com/repo/whopper/interfaces/notice/FetchNoticeController.java @@ -3,11 +3,9 @@ import com.repo.whopper.application.notice.usecase.FetchNoticeUseCase; import com.repo.whopper.common.http.dto.DataResponseInfo; import com.repo.whopper.common.swagger.notice.FetchNoticeApiDocumentation; -import com.repo.whopper.interfaces.notice.dto.response.NoticeDetailResponse; import com.repo.whopper.interfaces.notice.dto.response.NoticeResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,11 +15,6 @@ public class FetchNoticeController implements FetchNoticeApiDocumentation { private final FetchNoticeUseCase fetchNoticeUseCase; - @GetMapping("/{noticeId}") - public NoticeDetailResponse fetchNoticeDetailResponse(@PathVariable String noticeId) { - return fetchNoticeUseCase.fetchNoticeDetailResponse(noticeId); - } - @GetMapping public DataResponseInfo fetchNotice() { return fetchNoticeUseCase.fetchNotice(); diff --git a/src/main/java/com/repo/whopper/interfaces/notice/dto/response/NoticeDetailResponse.java b/src/main/java/com/repo/whopper/interfaces/notice/dto/response/NoticeDetailResponse.java deleted file mode 100644 index a113c11..0000000 --- a/src/main/java/com/repo/whopper/interfaces/notice/dto/response/NoticeDetailResponse.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.repo.whopper.interfaces.notice.dto.response; - -import com.repo.whopper.domain.notice.NoticeModel; - -import java.time.LocalDateTime; - -public record NoticeDetailResponse( - String id, - String title, - String content, - String writerName, - LocalDateTime createdAt, - Boolean checked -) { - public NoticeDetailResponse(NoticeModel notice) { - this(notice.id(), notice.title(), notice.content(), notice.writerName(), notice.createdAt(), notice.checked()); - } -}