diff --git a/src/main/java/com/mpnp/baechelin/bookmark/service/BookmarkService.java b/src/main/java/com/mpnp/baechelin/bookmark/service/BookmarkService.java index a1d1e3c..e6bf03f 100644 --- a/src/main/java/com/mpnp/baechelin/bookmark/service/BookmarkService.java +++ b/src/main/java/com/mpnp/baechelin/bookmark/service/BookmarkService.java @@ -44,15 +44,14 @@ public void bookmark(BookmarkRequestDto bookmarkRequestDto, String socialId) { .storeId(store) .userId(user) .build(); - - storeRepository.save(store.updateBookmarkCount(1)); + storeRepository.save(store.updateBookmarkCount()); bookmarkRepository.save(bookmark); } public void bookmarkDelete(int bookmarkId, String socialId) { - User user = userRepository.findBySocialId(socialId); if(user == null) { throw new IllegalArgumentException("해당하는 유저가 없습니다."); } - bookmarkRepository.findById(bookmarkId).orElseThrow(()-> new IllegalArgumentException("해당하는 북마크는 이미 삭제 되었습니다")); + Bookmark bookmark = bookmarkRepository.findById(bookmarkId).orElseThrow(() -> new IllegalArgumentException("해당하는 북마크는 이미 삭제 되었습니다")); + storeRepository.save(bookmark.getStoreId().updateBookmarkCount()); bookmarkRepository.deleteById(bookmarkId); } @@ -69,9 +68,6 @@ public List bookmarkTop(String socialId, Pageable pageable) { BookmarkInfoDto bookmarkInfoDto = new BookmarkInfoDto(bookmark); bookmarkList.add(bookmarkInfoDto); } - - - return bookmarkList; } } 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 566df7c..4a3bd9f 100644 --- a/src/main/java/com/mpnp/baechelin/review/service/ReviewService.java +++ b/src/main/java/com/mpnp/baechelin/review/service/ReviewService.java @@ -39,65 +39,68 @@ @RequiredArgsConstructor @Transactional public class ReviewService { - private final AwsS3Manager awsS3Manager; - private final TagRepository tagRepository; - private final UserRepository userRepository; - private final StoreRepository storeRepository; - private final ReviewRepository reviewRepository; + private final AwsS3Manager awsS3Manager; + private final TagRepository tagRepository; + private final UserRepository userRepository; + private final StoreRepository storeRepository; + private final ReviewRepository reviewRepository; private final ReviewImageRepository reviewImageRepository; private final ReviewQueryRepository reviewQueryRepository; - - /** 리뷰 작성 */ + /** + * 리뷰 작성 + */ public void review(ReviewRequestDto reviewRequestDto, String socialId) throws IOException { - long storeId = reviewRequestDto.getStoreId(); - Store store = storeRepository.findById(storeId).orElseThrow(() -> new IllegalArgumentException("해당하는 업장이 존재하지 않습니다.")); - User user = userRepository.findBySocialId(socialId); - Review review = new Review(reviewRequestDto, store, user); + long storeId = reviewRequestDto.getStoreId(); + Store store = storeRepository.findById(storeId).orElseThrow(() -> new IllegalArgumentException("해당하는 업장이 존재하지 않습니다.")); + User user = userRepository.findBySocialId(socialId); + Review review = new Review(reviewRequestDto, store, user); // todo 태크 매핑 List tagList = new ArrayList<>(); for (String s : reviewRequestDto.getTagList()) { - System.out.println("tag --> "+ s); + System.out.println("tag --> " + s); tagList.add(new Tag(s, review)); } // 태그 -> 엔티티 변환 List reviewImageUrlList = new ArrayList<>(); - List newReviewImage = reviewRequestDto.getImageFile(); + List newReviewImage = reviewRequestDto.getImageFile(); // todo 이미지가 널값이 아니라면 업로드 실행 - if(newReviewImage != null) { + if (newReviewImage != null) { for (MultipartFile reviewImageFile : newReviewImage) { String fileDir = awsS3Manager.uploadFile(reviewImageFile); - log.info("upload --> "+ fileDir); + log.info("upload --> " + fileDir); reviewImageUrlList.add(ReviewImage.builder().reviewId(review).reviewImageUrl(fileDir).build()); } // 리뷰이미지 -> url -> 엔티티 변환 } - tagRepository .saveAll(tagList); + tagRepository.saveAll(tagList); reviewImageRepository.saveAll(reviewImageUrlList); - reviewRepository .save(review); // 아래의 {store.updatePointAvg()} 보다 리뷰가 먼저 처리되게 해야한다. + reviewRepository.save(review); // 아래의 {store.updatePointAvg()} 보다 리뷰가 먼저 처리되게 해야한다. storeRepository.save(store.updatePointAvg()); //별점 평균 구하는 코드 } - /** 리뷰 조회 */ + /** + * 리뷰 조회 + */ public PageInfoResponseDto getReview(long storeId, String socialId, Pageable pageable) { - User myUser = userRepository.findBySocialId(socialId); - Store store = storeRepository.findById(storeId).orElseThrow(() -> new IllegalArgumentException("해당 가게가 없습니다")); + User myUser = userRepository.findBySocialId(socialId); + Store store = storeRepository.findById(storeId).orElseThrow(() -> new IllegalArgumentException("해당 가게가 없습니다")); Page reviewList = reviewRepository.findAllByStoreId(store, pageable); List reviewResponseDtoList = new ArrayList<>(); - for(Review review: reviewList){ + for (Review review : reviewList) { ReviewResponseDto reviewResponseDto = new ReviewResponseDto(review); Optional user = userRepository.findById(reviewResponseDto.getUserId()); reviewResponseDto.userInfo(user.get(), myUser); @@ -123,7 +126,7 @@ public PageInfoResponseDto getReview(long storeId, String socialId, Pageable pag @Transactional /** 리뷰 수정 */ - public void reviewUpdate(ReviewRequestDto reviewRequestDto, String socialId, int reviewId){ + public void reviewUpdate(ReviewRequestDto reviewRequestDto, String socialId, int reviewId) { } @@ -201,14 +204,18 @@ public void reviewUpdate(ReviewRequestDto reviewRequestDto, String socialId, int // reviewImageRepository.deleteAll(reviewImageList); // } - /** 리뷰 삭제 */ + /** + * 리뷰 삭제 + */ public void reviewDelete(String socialId, int reviewId) { - User user = userRepository.findBySocialId(socialId); // 유저 매핑 - Optional review = reviewRepository.findById(reviewId); // 리뷰 매핑 + User user = userRepository.findBySocialId(socialId); // 유저 매핑 + Optional review = reviewRepository.findById(reviewId); // 리뷰 매핑 - if(user == null){ new IllegalArgumentException("해당하는 소셜아이디를 찾을 수 없습니다."); } // 유저 유무 확인 예외처리 + if (user == null) { + new IllegalArgumentException("해당하는 소셜아이디를 찾을 수 없습니다."); + } // 유저 유무 확인 예외처리 review.orElseThrow(() -> new IllegalArgumentException("해당하는 리뷰가 이미 삭제 되었습니다.")); // 리뷰 유무 확인 예외처리 @@ -217,12 +224,13 @@ public void reviewDelete(String socialId, int reviewId) { // todo 1.리뷰삭제 -> 2.이미지 삭제 reviewRepository.deleteById(review.get().getId()); // 1 - if(!review.get().getReviewImageList().isEmpty()) { // 2 + if (!review.get().getReviewImageList().isEmpty()) { // 2 for (ReviewImage reviewImage : imageList) { - System.out.println("delete -> "+reviewImage.getReviewImageUrl().substring(reviewImage.getReviewImageUrl().indexOf("com/")+4)); - awsS3Manager.deleteFile(reviewImage.getReviewImageUrl().substring(reviewImage.getReviewImageUrl().indexOf("com/")+4)); + System.out.println("delete -> " + reviewImage.getReviewImageUrl().substring(reviewImage.getReviewImageUrl().indexOf("com/") + 4)); + awsS3Manager.deleteFile(reviewImage.getReviewImageUrl().substring(reviewImage.getReviewImageUrl().indexOf("com/") + 4)); } } + storeRepository.save(review.get().getStoreId().updatePointAvg()); // 별점 평점 구하는 코드 } public List getRecentReview(BigDecimal lat, BigDecimal lng, int limit) { diff --git a/src/main/java/com/mpnp/baechelin/store/domain/Store.java b/src/main/java/com/mpnp/baechelin/store/domain/Store.java index 7518b40..ded4d36 100644 --- a/src/main/java/com/mpnp/baechelin/store/domain/Store.java +++ b/src/main/java/com/mpnp/baechelin/store/domain/Store.java @@ -100,8 +100,8 @@ public Store(PublicApiV1Form.Row row) { this.category = row.getCategory(); } - public Store updateBookmarkCount(int upOrDown) { - this.bookMarkCount += upOrDown; + public Store updateBookmarkCount() { + this.bookMarkCount = this.getBookmarkList().size(); return this; }