diff --git a/src/main/java/com/mpnp/baechelin/bookmark/controller/FolderController.java b/src/main/java/com/mpnp/baechelin/bookmark/controller/FolderController.java index 3779130..60511ee 100644 --- a/src/main/java/com/mpnp/baechelin/bookmark/controller/FolderController.java +++ b/src/main/java/com/mpnp/baechelin/bookmark/controller/FolderController.java @@ -59,7 +59,7 @@ public ResponseEntity folderUpdate (@PathVariable int folderId, /** 폴더 리스트 */ - @PostMapping("/folderList") + @GetMapping("/folderList") public List folderList (@AuthenticationPrincipal User user){ return folderService.folderList(user.getUsername()); diff --git a/src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkInfoDto.java b/src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkInfoDto.java new file mode 100644 index 0000000..b5fb24e --- /dev/null +++ b/src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkInfoDto.java @@ -0,0 +1,24 @@ +package com.mpnp.baechelin.bookmark.dto; + + +import com.mpnp.baechelin.store.domain.StoreImage; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class BookmarkInfoDto { + + private double pointAvg; + private String name; + private String address; + private String category; + private String phoneNumber; + private int bookmarkId; + private int storeId; + String storeImageList; +} diff --git a/src/main/java/com/mpnp/baechelin/bookmark/dto/FolderResponseDto.java b/src/main/java/com/mpnp/baechelin/bookmark/dto/FolderResponseDto.java index a4b69aa..255d3e0 100644 --- a/src/main/java/com/mpnp/baechelin/bookmark/dto/FolderResponseDto.java +++ b/src/main/java/com/mpnp/baechelin/bookmark/dto/FolderResponseDto.java @@ -18,7 +18,7 @@ public class FolderResponseDto { private int id; private String folderName; - private List> bookmarkList; + private List bookmarkList; public FolderResponseDto(Folder folder) { this.id = folder.getId(); @@ -28,28 +28,35 @@ public FolderResponseDto(Folder folder) { public static FolderResponseDto FolderDtoRes(Folder folder) { /** 북마크의 정보를 담는 작업 */ - List> bookmarks = new ArrayList<>(); + List bookmarks = new ArrayList<>(); if(folder.getBookmarkList() != null) { for (Bookmark bookmark : folder.getBookmarkList()) { - String pointAvg = String.valueOf(bookmark.getStoreId().getPointAvg()); // 업장 별점 - String name = bookmark.getStoreId().getName(); // 업장 이름 - String address = bookmark.getStoreId().getAddress(); // 업장 주소 - String category = bookmark.getStoreId().getCategory(); // 업장 카테고리 - String PhoneNumber = bookmark.getStoreId().getPhoneNumber(); // 업장 전화번호 - - List tempBookmarkList = new ArrayList<>(); // 정보를 담는 리스트 - List storeImageList = bookmark.getStoreId().getStoreImageList();// 업장 이미지 리스트 - - tempBookmarkList.add(name); - tempBookmarkList.add(pointAvg); - tempBookmarkList.add(address); - tempBookmarkList.add(category); - tempBookmarkList.add(PhoneNumber); - if(!storeImageList.isEmpty()) { tempBookmarkList.add(storeImageList.get(0).getStoreImageUrl()); } - - bookmarks.add(tempBookmarkList); + double pointAvg = Math.round(bookmark.getStoreId().getPointAvg()*10)/10.0; // 업장 별점 + String name = bookmark.getStoreId().getName(); // 업장 이름 + String address = bookmark.getStoreId().getAddress(); // 업장 주소 + String category = bookmark.getStoreId().getCategory(); // 업장 카테고리 + String PhoneNumber = bookmark.getStoreId().getPhoneNumber(); // 업장 전화번호 + int bookmarkId = bookmark.getId(); + int storeId = (int) bookmark.getStoreId().getId(); + + List BookmarkInfoDtoList = new ArrayList<>(); // 정보를 담는 리스트 + List storeImageList = bookmark.getStoreId().getStoreImageList();// 업장 이미지 리스트 + + BookmarkInfoDto bookmarkInfoDto = BookmarkInfoDto + .builder() + .bookmarkId(bookmarkId) + .storeId(storeId) + .address(address) + .phoneNumber(PhoneNumber) + .category(category) + .pointAvg(pointAvg) + .name(name) + .storeImageList(!storeImageList.isEmpty() ? storeImageList.get(0).getStoreImageUrl():"") + .build(); + + bookmarks.add(bookmarkInfoDto); } } else if(folder.getBookmarkList() == null) { diff --git a/src/main/java/com/mpnp/baechelin/review/controller/ReviewController.java b/src/main/java/com/mpnp/baechelin/review/controller/ReviewController.java index c11a4bf..669f399 100644 --- a/src/main/java/com/mpnp/baechelin/review/controller/ReviewController.java +++ b/src/main/java/com/mpnp/baechelin/review/controller/ReviewController.java @@ -1,6 +1,7 @@ package com.mpnp.baechelin.review.controller; import com.mpnp.baechelin.review.domain.Review; +import com.mpnp.baechelin.review.dto.PageInfoResponseDto; import com.mpnp.baechelin.review.dto.ReviewMainResponseDto; import com.mpnp.baechelin.review.dto.ReviewRequestDto; import com.mpnp.baechelin.review.dto.ReviewResponseDto; @@ -10,6 +11,7 @@ import com.mpnp.baechelin.store.domain.Store; import com.mpnp.baechelin.store.repository.StoreRepository; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.web.PageableDefault; @@ -33,14 +35,21 @@ public class ReviewController { private final ReviewService reviewService; @GetMapping("/review/{storeId}") - public ResponseEntity> getStoreReview(@PathVariable int storeId, - @AuthenticationPrincipal User user - //@PageableDefault(page = 0, size = 10, sort = "id", direction = Sort.Direction.DESC) Pageable pageable - ) { - List reviewList = reviewService.getReview(storeId, user.getUsername()); - return new ResponseEntity<>(reviewList, HttpStatus.OK); + public ResponseEntity getStoreReview(@PathVariable int storeId, + @AuthenticationPrincipal User user, + @PageableDefault(page = 0, size = 5, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { + + PageInfoResponseDto pageInfoResponseDto = reviewService.getReview(storeId, user.getUsername(), pageable); + return new ResponseEntity<>(pageInfoResponseDto, HttpStatus.OK); } +// @GetMapping("/review/{storeId}") +// public ResponseEntity> getStoreReview(@PathVariable int storeId, +// @AuthenticationPrincipal User user) { +// List reviewList = reviewService.getReview(storeId, user.getUsername()); +// return new ResponseEntity<>(reviewList, HttpStatus.OK); +// } + /** 리뷰 작성 */ @PostMapping("/review") public ResponseEntity review(@ModelAttribute ReviewRequestDto reviewRequestDto, diff --git a/src/main/java/com/mpnp/baechelin/review/dto/PageInfoResponseDto.java b/src/main/java/com/mpnp/baechelin/review/dto/PageInfoResponseDto.java new file mode 100644 index 0000000..7efd5b9 --- /dev/null +++ b/src/main/java/com/mpnp/baechelin/review/dto/PageInfoResponseDto.java @@ -0,0 +1,24 @@ +package com.mpnp.baechelin.review.dto; + +import lombok.*; + +import java.util.List; + +@Builder +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class PageInfoResponseDto { + + boolean hasNextPage; // 이전페이지가 없다면 true + boolean hasPreviousPage; // 다음페이지가 없다면 true + + private int size; // 페이지안에 있는 데이터 갯수 + private int totalPages; // 총 페이지 수 + private int totalElements; // 총 데이터 갯수 + private int number; // 현재 페이지 넘버 + + List reviewResponseDtoList; + +} diff --git a/src/main/java/com/mpnp/baechelin/review/dto/ReviewResponseDto.java b/src/main/java/com/mpnp/baechelin/review/dto/ReviewResponseDto.java index 6333183..de04d3e 100644 --- a/src/main/java/com/mpnp/baechelin/review/dto/ReviewResponseDto.java +++ b/src/main/java/com/mpnp/baechelin/review/dto/ReviewResponseDto.java @@ -14,6 +14,8 @@ @NoArgsConstructor @Getter @Setter public class ReviewResponseDto { + + private int reviewId; // storeId private long storeId; private int userId; diff --git a/src/main/java/com/mpnp/baechelin/review/repository/ReviewRepository.java b/src/main/java/com/mpnp/baechelin/review/repository/ReviewRepository.java index 232816a..e413b8a 100644 --- a/src/main/java/com/mpnp/baechelin/review/repository/ReviewRepository.java +++ b/src/main/java/com/mpnp/baechelin/review/repository/ReviewRepository.java @@ -3,6 +3,8 @@ import com.mpnp.baechelin.review.domain.Review; import com.mpnp.baechelin.store.domain.Store; import com.mpnp.baechelin.user.domain.User; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -10,5 +12,6 @@ public interface ReviewRepository extends JpaRepository { List findAllByStoreId(Store store); + Page findAllByStoreId(Store store, Pageable pageable); } diff --git a/src/main/java/com/mpnp/baechelin/review/service/ReviewService.java b/src/main/java/com/mpnp/baechelin/review/service/ReviewService.java index 67a2edd..151f8f8 100644 --- a/src/main/java/com/mpnp/baechelin/review/service/ReviewService.java +++ b/src/main/java/com/mpnp/baechelin/review/service/ReviewService.java @@ -2,6 +2,7 @@ import com.mpnp.baechelin.review.domain.Review; import com.mpnp.baechelin.review.domain.ReviewImage; +import com.mpnp.baechelin.review.dto.PageInfoResponseDto; import com.mpnp.baechelin.review.dto.ReviewMainResponseDto; import com.mpnp.baechelin.review.dto.ReviewRequestDto; import com.mpnp.baechelin.review.dto.ReviewResponseDto; @@ -26,6 +27,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -84,26 +86,38 @@ public void review(ReviewRequestDto reviewRequestDto, String socialId) throws IO - public List getReview(long storeId, String socialId) { + public PageInfoResponseDto getReview(long storeId, String socialId, Pageable pageable) { Store store = storeRepository.findById(storeId).orElseThrow(() -> new IllegalArgumentException("해당 가게가 없습니다")); - List reviewList = reviewRepository.findAllByStoreId(store); + Page reviewList = reviewRepository.findAllByStoreId(store, pageable); List reviewResponseDtoList = new ArrayList<>(); User myUser = userRepository.findBySocialId(socialId); + + for(Review review: reviewList){ ReviewResponseDto reviewResponseDto = new ReviewResponseDto(review); Optional user = userRepository.findById(reviewResponseDto.getUserId()); - reviewResponseDto.userInfo(user.get(), myUser); reviewResponseDtoList.add(reviewResponseDto); } + reviewList.isFirst(); + + PageInfoResponseDto pageInfoResponseDto = PageInfoResponseDto + .builder() + .totalElements((int) reviewList.getTotalElements()) + .totalPages(reviewList.getTotalPages()) + .number(reviewList.getNumber()) + .size(reviewList.getSize()) + .reviewResponseDtoList(reviewResponseDtoList) + .hasNextPage(reviewList.isFirst() ? false : true) + .hasPreviousPage(reviewList.isLast() ? false : true) + .build(); - return reviewResponseDtoList; -// return reviewRepository.findAllByStoreId(store).stream().map(ReviewResponseDto::new).collect(Collectors.toList()); - } + return pageInfoResponseDto; + }