|
1 | 1 | package com.cona.KUsukKusuk.spot.service;
|
2 | 2 |
|
| 3 | +import com.cona.KUsukKusuk.bookmark.domain.Bookmark; |
| 4 | +import com.cona.KUsukKusuk.bookmark.repository.BookmarkRepository; |
3 | 5 | import com.cona.KUsukKusuk.global.exception.HttpExceptionCode;
|
4 | 6 | import com.cona.KUsukKusuk.global.response.HttpResponse;
|
5 | 7 | import com.cona.KUsukKusuk.global.s3.S3Service;
|
| 8 | +import com.cona.KUsukKusuk.like.UserLike; |
| 9 | +import com.cona.KUsukKusuk.like.repository.UserLikeRepository; |
6 | 10 | import com.cona.KUsukKusuk.spot.domain.Spot;
|
7 | 11 | import com.cona.KUsukKusuk.spot.dto.SpotDetailResponse;
|
8 | 12 | import com.cona.KUsukKusuk.spot.dto.SpotGetResponse;
|
@@ -37,6 +41,8 @@ public class SpotService {
|
37 | 41 | private final SpotRepository spotRepository;
|
38 | 42 | private final UserService userService;
|
39 | 43 | private final UserRepository userRepository;
|
| 44 | + private final BookmarkRepository bookmarkRepository; |
| 45 | + private final UserLikeRepository userLikeRepository; |
40 | 46 | private final S3Service s3Service;
|
41 | 47 |
|
42 | 48 |
|
@@ -68,25 +74,52 @@ public Spot uploadSpot(List<MultipartFile> images, SpotUploadRequest spotUploadR
|
68 | 74 | public List<SpotGetResponse> getAllSpots() {
|
69 | 75 | String userId = userService.getUsernameBySecurityContext();
|
70 | 76 | User user = userService.findUserByUserid(userId);
|
| 77 | + List<Bookmark> bookmarks = bookmarkRepository.findByUser(user); |
| 78 | + List<UserLike> userLikes = userLikeRepository.findByUser(user); |
71 | 79 |
|
72 | 80 | List<Spot> spots = spotRepository.findAll();
|
73 | 81 | return spots.stream()
|
74 |
| - .map(spot -> SpotGetResponse.of(spot, spot.getUser().equals(user))) |
| 82 | + .map(spot -> { |
| 83 | + boolean isBookmarkedByUser = bookmarks != null && bookmarks.stream() |
| 84 | + .anyMatch(bookmark -> bookmark.getSpot().equals(spot)); |
| 85 | + boolean isLikedByUser = userLikes != null && userLikes.stream() |
| 86 | + .anyMatch(like -> like.getSpot().equals(spot)); |
| 87 | + return SpotGetResponse.of(spot, spot.getUser().equals(user), isBookmarkedByUser, isLikedByUser); |
| 88 | + }) |
75 | 89 | .collect(Collectors.toList());
|
76 | 90 | }
|
77 | 91 | public SpotDetailResponse getSpotDetails(Long spotId) {
|
| 92 | + String username = SecurityContextHolder.getContext().getAuthentication() |
| 93 | + .getName(); |
| 94 | + |
| 95 | + Boolean isBookmark=false; |
| 96 | + Boolean isLike=true; |
78 | 97 |
|
79 | 98 | Spot spot = spotRepository.findById(spotId)
|
80 | 99 | .orElseThrow(() -> new SpotNotFoundException());
|
81 | 100 |
|
| 101 | + if (!username.equals("anonymousUser")) { |
| 102 | + |
| 103 | + User user = userService.findUserByUserid(username); |
| 104 | + List<UserLike> userLikes = userLikeRepository.findByUser(user); |
| 105 | + List<Bookmark> bookmarks = bookmarkRepository.findByUser(user); |
| 106 | + |
| 107 | + isLike = userLikes != null && userLikes.stream().anyMatch(like -> like.getSpot().equals(spot)); |
| 108 | + |
| 109 | + isBookmark = bookmarks != null && bookmarks.stream().anyMatch(bookmark -> bookmark.getSpot().equals(spot)); |
| 110 | + |
| 111 | + } |
| 112 | + |
| 113 | + |
| 114 | + |
82 | 115 | boolean isUsersOwnSpot = spot.getUser().getId().equals(false);
|
83 |
| - return SpotDetailResponse.fromSpot(spot); |
| 116 | + return SpotDetailResponse.fromSpot(spot,isBookmark,isLike); |
84 | 117 | }
|
85 | 118 | public List<SpotGetResponse> getAllPublicSpots() {
|
86 | 119 |
|
87 | 120 | List<Spot> spots = spotRepository.findAll();
|
88 | 121 | return spots.stream()
|
89 |
| - .map(spot -> SpotGetResponse.of(spot, false)) |
| 122 | + .map(spot -> SpotGetResponse.of(spot, false,false,false)) |
90 | 123 | .collect(Collectors.toList());
|
91 | 124 | }
|
92 | 125 | public Spot updateSpot(Long spotId,List<MultipartFile> images, SpotUpdateRequest spotUpdateRequest) throws IOException {
|
|
0 commit comments