From 18ad8f21eb799b4fc696bb8d2fafdaa53bf394a6 Mon Sep 17 00:00:00 2001 From: leejw-lu Date: Tue, 27 Aug 2024 19:40:24 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=8F=AC=EC=A6=88=EC=83=81=EC=84=B8=20?= =?UTF-8?q?=EB=B6=81=EB=A7=88=ED=81=AC=20=EC=97=AC=EB=B6=80=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/BookmarkController.java | 11 ++++++++++- .../PosePicker/Dto/IsBookmarkedResponse.java | 11 +++++++++++ .../PosePicker/Service/BookmarkService.java | 17 +++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/dndoz/PosePicker/Dto/IsBookmarkedResponse.java diff --git a/src/main/java/com/dndoz/PosePicker/Controller/BookmarkController.java b/src/main/java/com/dndoz/PosePicker/Controller/BookmarkController.java index 582d596..52152a5 100644 --- a/src/main/java/com/dndoz/PosePicker/Controller/BookmarkController.java +++ b/src/main/java/com/dndoz/PosePicker/Controller/BookmarkController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import com.dndoz.PosePicker.Dto.BookmarkResponse; +import com.dndoz.PosePicker.Dto.IsBookmarkedResponse; import com.dndoz.PosePicker.Dto.PoseInfoResponse; import com.dndoz.PosePicker.Service.BookmarkService; @@ -50,11 +51,19 @@ public ResponseEntity delete( @GetMapping("/feed") @ApiResponse(code = 200, message = "북마크 리스트 전달 성공") - @ApiOperation(value = "포즈 피드", notes = "북마크 리스트 조회") + @ApiOperation(value = "북마크 피드", notes = "북마크 리스트 조회") public ResponseEntity> findBookmark( @RequestHeader(value= "Authorization", required=false) String accessToken, @RequestParam final Integer pageNumber, @RequestParam final Integer pageSize) throws Exception { return ResponseEntity.ok(bookmarkService.findBookmark(accessToken, pageNumber, pageSize)); } + @GetMapping("/{poseId}") + @ApiResponse(code = 200, message = "해당 포즈에 대한 북마크 여부 조회") + @ApiOperation(value = "북마크여부", notes = "북마크 여부 조회") + public ResponseEntity isBookmarked( + @RequestHeader(value= "Authorization", required=false) String accessToken, @RequestParam Long poseId) throws Exception { + return ResponseEntity.ok(bookmarkService.isBookmarked(accessToken,poseId)); + } + } diff --git a/src/main/java/com/dndoz/PosePicker/Dto/IsBookmarkedResponse.java b/src/main/java/com/dndoz/PosePicker/Dto/IsBookmarkedResponse.java new file mode 100644 index 0000000..e4311bb --- /dev/null +++ b/src/main/java/com/dndoz/PosePicker/Dto/IsBookmarkedResponse.java @@ -0,0 +1,11 @@ +package com.dndoz.PosePicker.Dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class IsBookmarkedResponse { + private Long poseId; + private boolean isBookmarked; +} diff --git a/src/main/java/com/dndoz/PosePicker/Service/BookmarkService.java b/src/main/java/com/dndoz/PosePicker/Service/BookmarkService.java index 40e35ab..64b6254 100644 --- a/src/main/java/com/dndoz/PosePicker/Service/BookmarkService.java +++ b/src/main/java/com/dndoz/PosePicker/Service/BookmarkService.java @@ -12,6 +12,7 @@ import com.dndoz.PosePicker.Domain.PoseInfo; import com.dndoz.PosePicker.Domain.User; import com.dndoz.PosePicker.Dto.BookmarkResponse; +import com.dndoz.PosePicker.Dto.IsBookmarkedResponse; import com.dndoz.PosePicker.Dto.PoseInfoResponse; import com.dndoz.PosePicker.Global.error.exception.BookmarkException; import com.dndoz.PosePicker.Repository.BookmarkRepository; @@ -96,4 +97,20 @@ public Slice findBookmark(String accessToken, final Integer pa return poseInfos.map(poseInfo -> new PoseInfoResponse(urlPrefix, poseInfo)); } + public IsBookmarkedResponse isBookmarked(String accessToken, Long poseId) throws IllegalAccessException { + String token = jwtTokenProvider.extractJwtToken(accessToken); + if (!jwtTokenProvider.validateToken(token)) { + return null; + } + Long userId = Long.valueOf(jwtTokenProvider.extractUid(token)); + User user = userRepository.findById(userId).orElseThrow(NullPointerException::new); + PoseInfo poseInfo = poseInfoRepository.findByPoseId(poseId).orElseThrow(NullPointerException::new); + + //북마크 있으면 북마크 여부 true, 없으면 false로 세팅 + IsBookmarkedResponse response = new IsBookmarkedResponse(); + response.setPoseId(poseInfo.getPoseId()); + response.setBookmarked(bookmarkRepository.findByUserAndPoseInfo(user, poseInfo).isPresent()); + + return response; + } }