Skip to content

Commit b2970d0

Browse files
authored
Merge pull request #62 from JocketDan/refactor/tour-details-add-bookmark-boolean
Refactor/tour details add bookmark boolean
2 parents 3e0bd2f + cbd4e78 commit b2970d0

4 files changed

Lines changed: 40 additions & 2 deletions

File tree

tour/src/main/java/com/jocketdan/tour/controller/TourOpenApiController.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import lombok.AccessLevel;
88
import lombok.RequiredArgsConstructor;
99
import lombok.experimental.FieldDefaults;
10+
import org.springframework.security.core.Authentication;
1011
import org.springframework.web.bind.annotation.GetMapping;
1112
import org.springframework.web.bind.annotation.RequestParam;
1213
import org.springframework.web.bind.annotation.RestController;
@@ -211,8 +212,11 @@ public LocationBasedListResponseDTO getLocationBasedList(
211212
)
212213
@GetMapping("/details")
213214
public DetailsResponseDTO getDetails(
214-
@Parameter(description = "관광 콘텐츠 ID", example = "1234567") @RequestParam String contentId
215+
@Parameter(description = "관광 콘텐츠 ID", example = "1234567") @RequestParam String contentId,
216+
Authentication authentication
215217
) {
216-
return tourOpenApiService.getDetails(contentId);
218+
String userEmail = authentication.getName();
219+
220+
return tourOpenApiService.getDetailsWithBookmark(contentId, userEmail);
217221
}
218222
}

tour/src/main/java/com/jocketdan/tour/dto/openApi/DetailsResponseDTO.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
44
import lombok.AccessLevel;
55
import lombok.Getter;
6+
import lombok.Setter;
67
import lombok.experimental.FieldDefaults;
78

89
import java.util.List;
@@ -44,6 +45,7 @@ public static class Items {
4445
}
4546

4647
@Getter
48+
@Setter
4749
@FieldDefaults(level = AccessLevel.PRIVATE)
4850
@JsonIgnoreProperties(ignoreUnknown = true)
4951
public static class Item {
@@ -75,5 +77,7 @@ public static class Item {
7577
String lclsSystm1;
7678
String lclsSystm2;
7779
String lclsSystm3;
80+
81+
boolean bookMark = false;
7882
}
7983
}

tour/src/main/java/com/jocketdan/tour/repository/BookmarkRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
public interface BookmarkRepository extends JpaRepository<Bookmark, Long> {
1515

16+
boolean existsByUserEmailAndContentId_ContentId(String userEmail, String contentId);
17+
1618
boolean existsByUserEmailAndContentId(String userEmail, OpenApiPlaceDetail contentId);
1719

1820
List<Bookmark> findByUserEmailAndContentId_ContentIdIn(String userEmail, List<String> contentIds);

tour/src/main/java/com/jocketdan/tour/service/TourOpenApiService.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.jocketdan.tour.entity.OpenApiPlaceDetail;
55
import com.jocketdan.tour.exception.CustomException;
66
import com.jocketdan.tour.exception.ExceptionType;
7+
import com.jocketdan.tour.repository.BookmarkRepository;
78
import com.jocketdan.tour.repository.OpenApiPlaceDetailRepository;
89
import lombok.AccessLevel;
910
import lombok.RequiredArgsConstructor;
@@ -24,6 +25,7 @@ public class TourOpenApiService {
2425

2526
PublicDataApiClient publicDataApiClient;
2627
OpenApiPlaceDetailRepository openApiPlaceDetailRepository;
28+
BookmarkRepository bookmarkRepository;
2729

2830
public AreaBasedListResponseDTO getAreaBasedList(
2931
int numOfRows,
@@ -148,6 +150,32 @@ public DetailsResponseDTO getDetails(String contentId) {
148150
);
149151
}
150152

153+
public DetailsResponseDTO getDetailsWithBookmark(String contentId, String userEmail) {
154+
DetailsResponseDTO response = publicDataApiClient.call(
155+
"/detailCommon2",
156+
Map.of("contentId", contentId),
157+
DetailsResponseDTO.class
158+
);
159+
160+
if (response != null
161+
&& response.getResponse() != null
162+
&& response.getResponse().getBody() != null
163+
&& response.getResponse().getBody().getItems() != null
164+
&& response.getResponse().getBody().getItems().getItem() != null
165+
&& !response.getResponse().getBody().getItems().getItem().isEmpty()) {
166+
167+
DetailsResponseDTO.Item item = response.getResponse().getBody().getItems().getItem().getFirst();
168+
169+
boolean isBookmarked = userEmail != null && item.getContentid() != null
170+
&& bookmarkRepository.existsByUserEmailAndContentId_ContentId(userEmail, item.getContentid());
171+
172+
item.setBookMark(isBookmarked);
173+
}
174+
175+
return response;
176+
}
177+
178+
151179
@Transactional
152180
public OpenApiPlaceDetail getOrFetchPlaceDetail(String contentId) {
153181
return openApiPlaceDetailRepository.findByContentId(contentId)

0 commit comments

Comments
 (0)