Skip to content

Commit

Permalink
#28 [update]
Browse files Browse the repository at this point in the history
북마크 폴더 목록 조회 리팩토링
  • Loading branch information
kokoa322 committed Jul 27, 2022
1 parent 24cd227 commit a7f8c41
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public ResponseEntity<?> folderUpdate (@PathVariable int folderId,


/** 폴더 리스트 */
@PostMapping("/folderList")
@GetMapping("/folderList")
public List<FolderResponseDto> folderList (@AuthenticationPrincipal User user){

return folderService.folderList(user.getUsername());
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/com/mpnp/baechelin/bookmark/dto/BookmarkInfoDto.java
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class FolderResponseDto {
private int id;
private String folderName;

private List<List<String>> bookmarkList;
private List<BookmarkInfoDto> bookmarkList;

public FolderResponseDto(Folder folder) {
this.id = folder.getId();
Expand All @@ -28,28 +28,35 @@ public FolderResponseDto(Folder folder) {
public static FolderResponseDto FolderDtoRes(Folder folder) {

/** 북마크의 정보를 담는 작업 */
List<List<String>> bookmarks = new ArrayList<>();
List<BookmarkInfoDto> 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<String> tempBookmarkList = new ArrayList<>(); // 정보를 담는 리스트
List<StoreImage> 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<BookmarkInfoDto> BookmarkInfoDtoList = new ArrayList<>(); // 정보를 담는 리스트
List<StoreImage> 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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -33,14 +35,21 @@ public class ReviewController {
private final ReviewService reviewService;

@GetMapping("/review/{storeId}")
public ResponseEntity<List<ReviewResponseDto>> getStoreReview(@PathVariable int storeId,
@AuthenticationPrincipal User user
//@PageableDefault(page = 0, size = 10, sort = "id", direction = Sort.Direction.DESC) Pageable pageable
) {
List<ReviewResponseDto> reviewList = reviewService.getReview(storeId, user.getUsername());
return new ResponseEntity<>(reviewList, HttpStatus.OK);
public ResponseEntity<PageInfoResponseDto> 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<List<ReviewResponseDto>> getStoreReview(@PathVariable int storeId,
// @AuthenticationPrincipal User user) {
// List<ReviewResponseDto> reviewList = reviewService.getReview(storeId, user.getUsername());
// return new ResponseEntity<>(reviewList, HttpStatus.OK);
// }

/** 리뷰 작성 */
@PostMapping("/review")
public ResponseEntity<?> review(@ModelAttribute ReviewRequestDto reviewRequestDto,
Expand Down
Original file line number Diff line number Diff line change
@@ -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<ReviewResponseDto> reviewResponseDtoList;

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
@NoArgsConstructor
@Getter @Setter
public class ReviewResponseDto {


private int reviewId; // storeId
private long storeId;
private int userId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@
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;
import java.util.Optional;

public interface ReviewRepository extends JpaRepository<Review, Integer> {
List<Review> findAllByStoreId(Store store);
Page<Review> findAllByStoreId(Store store, Pageable pageable);

}
26 changes: 20 additions & 6 deletions src/main/java/com/mpnp/baechelin/review/service/ReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -84,26 +86,38 @@ public void review(ReviewRequestDto reviewRequestDto, String socialId) throws IO



public List<ReviewResponseDto> getReview(long storeId, String socialId) {
public PageInfoResponseDto getReview(long storeId, String socialId, Pageable pageable) {

Store store = storeRepository.findById(storeId).orElseThrow(() -> new IllegalArgumentException("해당 가게가 없습니다"));
List<Review> reviewList = reviewRepository.findAllByStoreId(store);
Page<Review> reviewList = reviewRepository.findAllByStoreId(store, pageable);
List<ReviewResponseDto> reviewResponseDtoList = new ArrayList<>();
User myUser = userRepository.findBySocialId(socialId);



for(Review review: reviewList){
ReviewResponseDto reviewResponseDto = new ReviewResponseDto(review);
Optional<User> 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;
}



Expand Down

0 comments on commit a7f8c41

Please sign in to comment.