diff --git a/src/main/java/briefing/briefing/api/BriefingApi.java b/src/main/java/briefing/briefing/api/BriefingApi.java index cf13a4e..6a82606 100644 --- a/src/main/java/briefing/briefing/api/BriefingApi.java +++ b/src/main/java/briefing/briefing/api/BriefingApi.java @@ -5,9 +5,11 @@ import briefing.briefing.application.dto.*; import briefing.briefing.domain.BriefingType; import java.time.LocalDate; +import java.util.Optional; import briefing.common.response.CommonResponse; import briefing.member.domain.Member; +import briefing.scrap.application.ScrapQueryService; import briefing.security.handler.annotation.AuthMember; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; @@ -31,6 +33,7 @@ public class BriefingApi { private final BriefingQueryService briefingQueryService; private final BriefingCommandService briefingCommandService; + private final ScrapQueryService scrapQueryService; @GetMapping public CommonResponse findBriefings( @@ -43,7 +46,12 @@ public CommonResponse findBriefings( @GetMapping("/{id}") @Parameter(name = "member", hidden = true) public CommonResponse findBriefing(@PathVariable final Long id, @AuthMember Member member) { - return CommonResponse.onSuccess(BriefingConverter.toBriefingDetailDTO(briefingQueryService.findBriefing(id))); + + Boolean isScrap = Optional.ofNullable(member) + .map(m -> scrapQueryService.existsByMemberIdAndBriefingId(m.getId(), id)) + .orElseGet(() -> Boolean.FALSE); + + return CommonResponse.onSuccess(BriefingConverter.toBriefingDetailDTO(briefingQueryService.findBriefing(id), isScrap)); } @PostMapping diff --git a/src/main/java/briefing/briefing/api/BriefingConverter.java b/src/main/java/briefing/briefing/api/BriefingConverter.java index d40e921..3d44c25 100644 --- a/src/main/java/briefing/briefing/api/BriefingConverter.java +++ b/src/main/java/briefing/briefing/api/BriefingConverter.java @@ -41,7 +41,7 @@ public static BriefingResponseDTO.ArticleResponseDTO toArticleResponseDTO(final .build(); } - public static BriefingResponseDTO.BriefingDetailDTO toBriefingDetailDTO(Briefing briefing){ + public static BriefingResponseDTO.BriefingDetailDTO toBriefingDetailDTO(Briefing briefing, Boolean isScrap){ List articleResponseDTOList = briefing.getBriefingArticles().stream() .map(article -> toArticleResponseDTO(article.getArticle())).toList(); @@ -54,6 +54,7 @@ public static BriefingResponseDTO.BriefingDetailDTO toBriefingDetailDTO(Briefing .content(briefing.getContent()) .date(briefing.getCreatedAt().toLocalDate()) .articles(articleResponseDTOList) + .isScrap(isScrap) .build(); } diff --git a/src/main/java/briefing/member/api/MemberApi.java b/src/main/java/briefing/member/api/MemberApi.java index 630349a..40add5c 100644 --- a/src/main/java/briefing/member/api/MemberApi.java +++ b/src/main/java/briefing/member/api/MemberApi.java @@ -22,10 +22,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.sql.Ref; import java.util.Arrays; import java.util.List; -import java.util.UUID; @Tag(name = "02-Member \uD83D\uDC64",description = "사용자 관련 API") @RestController diff --git a/src/main/java/briefing/scrap/application/ScrapQueryService.java b/src/main/java/briefing/scrap/application/ScrapQueryService.java index 7b35120..859c1d5 100644 --- a/src/main/java/briefing/scrap/application/ScrapQueryService.java +++ b/src/main/java/briefing/scrap/application/ScrapQueryService.java @@ -18,4 +18,9 @@ public class ScrapQueryService { public List getScrapsByMemberId(Long memberId) { return scrapRepository.findByMember_Id(memberId); } + + + public Boolean existsByMemberIdAndBriefingId(Long memberId, Long briefingId) { + return scrapRepository.existsByMember_IdAndBriefing_Id(memberId, briefingId); + } }