diff --git a/src/main/java/com/haejwo/tripcometrue/domain/review/triprecordreview/service/TripRecordReviewService.java b/src/main/java/com/haejwo/tripcometrue/domain/review/triprecordreview/service/TripRecordReviewService.java index 58f8a462..4a602cf3 100644 --- a/src/main/java/com/haejwo/tripcometrue/domain/review/triprecordreview/service/TripRecordReviewService.java +++ b/src/main/java/com/haejwo/tripcometrue/domain/review/triprecordreview/service/TripRecordReviewService.java @@ -104,8 +104,8 @@ public void modifyTripRecordReview( validateRightMemberAccess(loginMember, tripRecordReview); isContentAlreadyRegistered(tripRecordReview); - TripRecord tripRecord = getTripRecordById(tripRecordReview.getTripRecord().getId()); - tripRecord.calculateAverageRating(requestDto.ratingScore()); + TripRecord tripRecord = tripRecordReview.getTripRecord(); + tripRecord.updateAverageRating(requestDto.ratingScore(), tripRecordReview); tripRecordReview.update(requestDto, loginMember); } diff --git a/src/main/java/com/haejwo/tripcometrue/domain/triprecord/entity/TripRecord.java b/src/main/java/com/haejwo/tripcometrue/domain/triprecord/entity/TripRecord.java index 46ece44a..31518644 100644 --- a/src/main/java/com/haejwo/tripcometrue/domain/triprecord/entity/TripRecord.java +++ b/src/main/java/com/haejwo/tripcometrue/domain/triprecord/entity/TripRecord.java @@ -67,11 +67,11 @@ public class TripRecord extends BaseTimeEntity { @Builder private TripRecord(Long id, String title, String content, ExpenseRangeType expenseRangeType, - String countries, LocalDate tripStartDay, LocalDate tripEndDay, Integer totalDays, - Double averageRating, Integer viewCount, Integer storeCount, Integer reviewCount, - Integer commentCount, List tripRecordSchedules, - List tripRecordTags, List tripRecordImages, - List tripRecordStores, Member member) { + String countries, LocalDate tripStartDay, LocalDate tripEndDay, Integer totalDays, + Double averageRating, Integer viewCount, Integer storeCount, Integer reviewCount, + Integer commentCount, List tripRecordSchedules, + List tripRecordTags, List tripRecordImages, + List tripRecordStores, Member member) { this.id = id; this.title = title; this.content = content; @@ -98,12 +98,12 @@ public void update(TripRecordRequestDto requestDto) { this.expenseRangeType = requestDto.expenseRangeType(); this.tripStartDay = requestDto.tripStartDay(); this.tripEndDay = requestDto.tripEndDay(); - this.totalDays = (int)ChronoUnit.DAYS.between(this.tripStartDay, this.tripEndDay)+1; + this.totalDays = (int) ChronoUnit.DAYS.between(this.tripStartDay, this.tripEndDay) + 1; this.countries = requestDto.countries(); } public void incrementViewCount() { - if(this.viewCount == null) { + if (this.viewCount == null) { this.viewCount = 1; } else { this.viewCount++; @@ -111,7 +111,7 @@ public void incrementViewCount() { } public void incrementStoreCount() { - if(this.storeCount == null) { + if (this.storeCount == null) { this.storeCount = 1; } else { this.storeCount++; @@ -119,13 +119,13 @@ public void incrementStoreCount() { } public void decrementStoreCount() { - if(this.storeCount > 0) { + if (this.storeCount > 0) { this.storeCount--; } } public void incrementReviewCount() { - if(this.reviewCount == null) { + if (this.reviewCount == null) { this.reviewCount = 1; } else { this.reviewCount++; @@ -133,7 +133,7 @@ public void incrementReviewCount() { } public void incrementCommentCount() { - if(this.commentCount == null) { + if (this.commentCount == null) { this.commentCount = 1; } else { this.commentCount++; @@ -150,6 +150,16 @@ public void calculateAverageRating(double ratingScore) { } } + public void updateAverageRating(double newRatingScore, TripRecordReview tripRecordReview) { + double totalRating = averageRating * tripRecordReviews.size(); + double previousRatingScore = tripRecordReview.getRatingScore(); + + totalRating -= previousRatingScore; + totalRating += newRatingScore; + + averageRating = totalRating / tripRecordReviews.size(); + } + public void decreaseCommentCount(int count) { this.commentCount -= count; } @@ -172,6 +182,6 @@ private int calculateTotalDays() { if (this.tripStartDay == null || this.tripEndDay == null) { return 0; } - return (int) ChronoUnit.DAYS.between(this.tripStartDay, this.tripEndDay)+1; + return (int) ChronoUnit.DAYS.between(this.tripStartDay, this.tripEndDay) + 1; } }