Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -50,11 +51,19 @@ public ResponseEntity<BookmarkResponse> delete(

@GetMapping("/feed")
@ApiResponse(code = 200, message = "북마크 리스트 전달 성공")
@ApiOperation(value = "포즈 피드", notes = "북마크 리스트 조회")
@ApiOperation(value = "북마크 피드", notes = "북마크 리스트 조회")
public ResponseEntity<Slice<PoseInfoResponse>> 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<IsBookmarkedResponse> isBookmarked(
@RequestHeader(value= "Authorization", required=false) String accessToken, @RequestParam Long poseId) throws Exception {
return ResponseEntity.ok(bookmarkService.isBookmarked(accessToken,poseId));
}

}
11 changes: 11 additions & 0 deletions src/main/java/com/dndoz/PosePicker/Dto/IsBookmarkedResponse.java
Original file line number Diff line number Diff line change
@@ -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;
}
17 changes: 17 additions & 0 deletions src/main/java/com/dndoz/PosePicker/Service/BookmarkService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -96,4 +97,20 @@ public Slice<PoseInfoResponse> 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;
}
}