diff --git a/src/main/java/org/runnect/server/scrap/controller/ScrapController.java b/src/main/java/org/runnect/server/scrap/controller/ScrapController.java index 435d6f8..52da6ca 100644 --- a/src/main/java/org/runnect/server/scrap/controller/ScrapController.java +++ b/src/main/java/org/runnect/server/scrap/controller/ScrapController.java @@ -21,12 +21,10 @@ public class ScrapController { @ResponseStatus(HttpStatus.OK) public ApiResponseDto createAndDeleteScrap(@UserId Long userId, @RequestBody @Valid final CreateAndDeleteScrapRequestDto request) { - scrapService.createAndDeleteScrap(userId, request); - if (request.getScrapTF() == true) { - return ApiResponseDto.success(SuccessStatus.CREATE_SCRAP_SUCCESS); + return ApiResponseDto.success(SuccessStatus.CREATE_SCRAP_SUCCESS, scrapService.createAndDeleteScrap(userId, request)); } - return ApiResponseDto.success(SuccessStatus.DELETE_SCRAP_SUCCESS); + return ApiResponseDto.success(SuccessStatus.DELETE_SCRAP_SUCCESS, scrapService.createAndDeleteScrap(userId, request)); } @GetMapping("scrap/user") diff --git a/src/main/java/org/runnect/server/scrap/dto/response/CreateAndDeleteScrapResponseDto.java b/src/main/java/org/runnect/server/scrap/dto/response/CreateAndDeleteScrapResponseDto.java new file mode 100644 index 0000000..57f8d2f --- /dev/null +++ b/src/main/java/org/runnect/server/scrap/dto/response/CreateAndDeleteScrapResponseDto.java @@ -0,0 +1,17 @@ +package org.runnect.server.scrap.dto.response; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class CreateAndDeleteScrapResponseDto { + private Long scrapCount; + + public static CreateAndDeleteScrapResponseDto of (Long scrapCount) { + return new CreateAndDeleteScrapResponseDto(scrapCount); + } +} diff --git a/src/main/java/org/runnect/server/scrap/service/ScrapService.java b/src/main/java/org/runnect/server/scrap/service/ScrapService.java index a96c88e..f4de63b 100644 --- a/src/main/java/org/runnect/server/scrap/service/ScrapService.java +++ b/src/main/java/org/runnect/server/scrap/service/ScrapService.java @@ -8,10 +8,7 @@ import org.runnect.server.publicCourse.entity.PublicCourse; import org.runnect.server.publicCourse.repository.PublicCourseRepository; import org.runnect.server.scrap.dto.request.CreateAndDeleteScrapRequestDto; -import org.runnect.server.scrap.dto.response.DepartureResponse; -import org.runnect.server.scrap.dto.response.GetScrapCourseResponseDto; -import org.runnect.server.scrap.dto.response.ScrapResponse; -import org.runnect.server.scrap.dto.response.UserResponse; +import org.runnect.server.scrap.dto.response.*; import org.runnect.server.scrap.entity.Scrap; import org.runnect.server.scrap.repository.ScrapRepository; import org.runnect.server.user.entity.RunnectUser; @@ -32,15 +29,15 @@ public class ScrapService { private final UserStampService userStampService; @Transactional - public void createAndDeleteScrap(Long userId, CreateAndDeleteScrapRequestDto request) { + public CreateAndDeleteScrapResponseDto createAndDeleteScrap(Long userId, CreateAndDeleteScrapRequestDto request) { Scrap scrap = scrapRepository.findByUserIdAndPublicCourseId(userId, request.getPublicCourseId()).orElse(null); RunnectUser user = userRepository.findById(userId).orElseThrow(() -> new NotFoundUserException(ErrorStatus.NOT_FOUND_USER_EXCEPTION, ErrorStatus.NOT_FOUND_USER_EXCEPTION.getMessage())); + PublicCourse publicCourse = publicCourseRepository.findById(request.getPublicCourseId()) + .orElseThrow(() -> new NotFoundException(ErrorStatus.NOT_FOUND_PUBLICCOURSE_EXCEPTION, ErrorStatus.NOT_FOUND_PUBLICCOURSE_EXCEPTION.getMessage())); // 스크랩 생성 if (request.getScrapTF() == true) { if (scrap == null) { // 기존 스크랩한 내역이 없을 때 - PublicCourse publicCourse = publicCourseRepository.findById(request.getPublicCourseId()) - .orElseThrow(() -> new NotFoundException(ErrorStatus.NOT_FOUND_PUBLICCOURSE_EXCEPTION, ErrorStatus.NOT_FOUND_PUBLICCOURSE_EXCEPTION.getMessage())); Scrap newScrap = Scrap.builder() .scrapTF(true) .publicCourse(publicCourse) @@ -60,6 +57,11 @@ public void createAndDeleteScrap(Long userId, CreateAndDeleteScrapRequestDto req else { scrap.updateScrapTF(false); } + + // 해당 public course의 전체 스크랩 개수 + Long scrapCount = scrapRepository.countByPublicCourseAndScrapTFIsTrue(publicCourse); + + return CreateAndDeleteScrapResponseDto.of(scrapCount); } public GetScrapCourseResponseDto getScrapCourseByUser(Long userId) {