Skip to content

Commit

Permalink
#18 [Refactor] count column 업데이트 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
JSoi committed Jul 29, 2022
1 parent 15d61fa commit acfe257
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);

}
Expand All @@ -69,9 +68,6 @@ public List<BookmarkInfoDto> bookmarkTop(String socialId, Pageable pageable) {
BookmarkInfoDto bookmarkInfoDto = new BookmarkInfoDto(bookmark);
bookmarkList.add(bookmarkInfoDto);
}



return bookmarkList;
}
}
66 changes: 37 additions & 29 deletions src/main/java/com/mpnp/baechelin/review/service/ReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Tag> 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<ReviewImage> reviewImageUrlList = new ArrayList<>();
List<MultipartFile> newReviewImage = reviewRequestDto.getImageFile();
List<MultipartFile> 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<Review> reviewList = reviewRepository.findAllByStoreId(store, pageable);


List<ReviewResponseDto> reviewResponseDtoList = new ArrayList<>();
for(Review review: reviewList){
for (Review review : reviewList) {
ReviewResponseDto reviewResponseDto = new ReviewResponseDto(review);
Optional<User> user = userRepository.findById(reviewResponseDto.getUserId());
reviewResponseDto.userInfo(user.get(), myUser);
Expand All @@ -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) {


}
Expand Down Expand Up @@ -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> review = reviewRepository.findById(reviewId); // 리뷰 매핑
User user = userRepository.findBySocialId(socialId); // 유저 매핑
Optional<Review> review = reviewRepository.findById(reviewId); // 리뷰 매핑


if(user == null){ new IllegalArgumentException("해당하는 소셜아이디를 찾을 수 없습니다."); } // 유저 유무 확인 예외처리
if (user == null) {
new IllegalArgumentException("해당하는 소셜아이디를 찾을 수 없습니다.");
} // 유저 유무 확인 예외처리
review.orElseThrow(() -> new IllegalArgumentException("해당하는 리뷰가 이미 삭제 되었습니다.")); // 리뷰 유무 확인 예외처리


Expand All @@ -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<ReviewMainResponseDto> getRecentReview(BigDecimal lat, BigDecimal lng, int limit) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/mpnp/baechelin/store/domain/Store.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down

0 comments on commit acfe257

Please sign in to comment.