Skip to content

Commit 169bf95

Browse files
authored
Merge pull request #328 from EAT-SSU/develop
[Release] v2.1.4 마이페이지 rating 문제 해결을 위한 배포
2 parents d96b2ef + 0bccc08 commit 169bf95

5 files changed

Lines changed: 76 additions & 31 deletions

File tree

src/main/java/ssu/eatssu/domain/review/entity/Review.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package ssu.eatssu.domain.review.entity;
22

3-
import java.util.ArrayList;
4-
import java.util.List;
5-
import java.util.Map;
6-
import java.util.stream.Collectors;
7-
83
import jakarta.persistence.AttributeOverride;
94
import jakarta.persistence.AttributeOverrides;
105
import jakarta.persistence.CascadeType;
@@ -30,6 +25,11 @@
3025
import ssu.eatssu.domain.user.entity.BaseTimeEntity;
3126
import ssu.eatssu.domain.user.entity.User;
3227

28+
import java.util.ArrayList;
29+
import java.util.List;
30+
import java.util.Map;
31+
import java.util.stream.Collectors;
32+
3333
/*
3434
* 251001 이정민
3535
* 해당 엔티티의 rating은 reviewV1, reviewV2 api의 유지를 위해 지우지 마셔야 합니다.

src/main/java/ssu/eatssu/domain/review/presentation/ReviewControllerV2.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import ssu.eatssu.domain.auth.security.CustomUserDetails;
2929
import ssu.eatssu.domain.restaurant.entity.Restaurant;
3030
import ssu.eatssu.domain.review.dto.CreateMealReviewRequest;
31-
import ssu.eatssu.domain.review.dto.CreateMenuReviewRequest;
3231
import ssu.eatssu.domain.review.dto.CreateMenuReviewRequestV2;
3332
import ssu.eatssu.domain.review.dto.MealReviewResponse;
3433
import ssu.eatssu.domain.review.dto.MealReviewsV2Response;

src/main/java/ssu/eatssu/domain/review/repository/ReviewRepository.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package ssu.eatssu.domain.review.repository;
22

3-
import java.util.Collection;
4-
import java.util.List;
53
import org.springframework.data.domain.Page;
64
import org.springframework.data.domain.Pageable;
75
import org.springframework.data.jpa.repository.JpaRepository;
@@ -10,6 +8,10 @@
108
import ssu.eatssu.domain.menu.entity.Meal;
119
import ssu.eatssu.domain.menu.entity.Menu;
1210
import ssu.eatssu.domain.review.entity.Review;
11+
import ssu.eatssu.domain.user.entity.User;
12+
13+
import java.util.Collection;
14+
import java.util.List;
1315

1416
public interface ReviewRepository extends JpaRepository<Review, Long>, ReviewRepositoryCustom {
1517

@@ -39,13 +41,26 @@ OR r.menu.id IN (SELECT mm.menu.id FROM MealMenu mm WHERE mm.meal.id = :mealId))
3941
List<Review> findAllMealAndMenuReviews(@Param("mealId") Long mealId);
4042

4143
@Query("""
42-
SELECT r FROM Review r
43-
WHERE (r.meal.id = :mealId
44-
OR r.menu.id IN (SELECT mm.menu.id FROM MealMenu mm WHERE mm.meal.id = :mealId))
45-
AND (:lastReviewId IS NULL OR r.id < :lastReviewId)
46-
ORDER BY r.id DESC
47-
""")
44+
SELECT r FROM Review r
45+
WHERE (r.meal.id = :mealId
46+
OR r.menu.id IN (SELECT mm.menu.id FROM MealMenu mm WHERE mm.meal.id = :mealId))
47+
AND (:lastReviewId IS NULL OR r.id < :lastReviewId)
48+
ORDER BY r.id DESC
49+
""")
4850
Page<Review> findMealAndMenuReviews(@Param("mealId") Long mealId,
49-
@Param("lastReviewId") Long lastReviewId,
50-
Pageable pageable);
51+
@Param("lastReviewId") Long lastReviewId,
52+
Pageable pageable);
53+
54+
@Query("""
55+
select r
56+
from Review r
57+
where r.user = :user
58+
and (:lastReviewId is null or r.id < :lastReviewId)
59+
order by r.id desc
60+
""")
61+
List<Review> findMyReviews(
62+
@Param("user") User user,
63+
@Param("lastReviewId") Long lastReviewId,
64+
Pageable pageable
65+
);
5166
}

src/main/java/ssu/eatssu/domain/review/service/ReviewServiceV2.java

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,5 @@
11
package ssu.eatssu.domain.review.service;
22

3-
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_MEAL;
4-
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_MENU;
5-
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_REVIEW;
6-
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_USER;
7-
import static ssu.eatssu.global.handler.response.BaseResponseStatus.REVIEW_PERMISSION_DENIED;
8-
9-
import java.util.Collections;
10-
import java.util.List;
11-
import java.util.Map;
12-
import java.util.Objects;
13-
import java.util.Optional;
14-
import java.util.stream.Collectors;
153
import lombok.RequiredArgsConstructor;
164
import lombok.extern.slf4j.Slf4j;
175
import org.springframework.context.ApplicationEventPublisher;
@@ -27,6 +15,7 @@
2715
import ssu.eatssu.domain.menu.persistence.MealRepository;
2816
import ssu.eatssu.domain.menu.persistence.MenuRepository;
2917
import ssu.eatssu.domain.menu.service.MealRatingService;
18+
import ssu.eatssu.domain.rating.entity.Ratings;
3019
import ssu.eatssu.domain.restaurant.entity.Restaurant;
3120
import ssu.eatssu.domain.review.dto.CreateMealReviewRequest;
3221
import ssu.eatssu.domain.review.dto.CreateMenuReviewRequestV2;
@@ -51,6 +40,19 @@
5140
import ssu.eatssu.global.handler.response.BaseException;
5241
import ssu.eatssu.global.log.event.LogEvent;
5342

43+
import java.util.Collections;
44+
import java.util.List;
45+
import java.util.Map;
46+
import java.util.Objects;
47+
import java.util.Optional;
48+
import java.util.stream.Collectors;
49+
50+
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_MEAL;
51+
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_MENU;
52+
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_REVIEW;
53+
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_USER;
54+
import static ssu.eatssu.global.handler.response.BaseResponseStatus.REVIEW_PERMISSION_DENIED;
55+
5456
@Slf4j
5557
@Service
5658
@RequiredArgsConstructor
@@ -112,7 +114,6 @@ public void createMenuReview(CustomUserDetails userDetails, CreateMenuReviewRequ
112114
request.getImageUrls().forEach(review::addReviewImage);
113115
reviewRepository.save(review);
114116

115-
116117
menu.addReview(review);
117118

118119
eventPublisher.publishEvent(LogEvent.of(
@@ -427,6 +428,7 @@ public void deleteReview(CustomUserDetails userDetails, Long reviewId) {
427428
/**
428429
* 내 리뷰 리스트 조회
429430
*/
431+
@Transactional(readOnly = true)
430432
public SliceResponse<MyMealReviewResponse> findMyReviews(CustomUserDetails userDetails, Long lastReviewId,
431433
Pageable pageable) {
432434
User user = userRepository.findById(userDetails.getId())
@@ -435,6 +437,18 @@ public SliceResponse<MyMealReviewResponse> findMyReviews(CustomUserDetails userD
435437
Slice<Review> sliceReviews = reviewRepository.findByUserOrderByIdDesc(user, lastReviewId,
436438
pageable);
437439

440+
441+
sliceReviews.forEach(item -> {
442+
Ratings r = item.getRatings();
443+
log.info(
444+
"reviewId=" + item.getId()
445+
+ ", ratingCol=" + item.getRating()
446+
+ ", ratingsObj=" + (r == null ? "null" : "not-null")
447+
+ ", main=" + (r == null ? null : r.getMainRating())
448+
+ ", amount=" + (r == null ? null : r.getAmountRating())
449+
);
450+
});
451+
438452
List<MyMealReviewResponse> myMealReviewResponses = sliceReviews.getContent().stream()
439453
.map(MyMealReviewResponse::from).toList();
440454

@@ -445,7 +459,6 @@ public SliceResponse<MyMealReviewResponse> findMyReviews(CustomUserDetails userD
445459
.build();
446460
}
447461

448-
449462
public ValidMenuForViewResponse validMenuForReview(Long mealId) {
450463
Meal meal = mealRepository.findById(mealId)
451464
.orElseThrow(() -> new BaseException(NOT_FOUND_MEAL));

src/main/java/ssu/eatssu/domain/user/dto/MyMealReviewResponse.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import lombok.AllArgsConstructor;
55
import lombok.Builder;
66
import lombok.Getter;
7+
import lombok.extern.slf4j.Slf4j;
8+
import ssu.eatssu.domain.rating.entity.Ratings;
79
import ssu.eatssu.domain.review.dto.MenuIdNameLikeDto;
810
import ssu.eatssu.domain.review.entity.Review;
911
import ssu.eatssu.domain.review.entity.ReviewMenuLike;
@@ -20,6 +22,7 @@
2022
@Builder
2123
@Schema(title = "리뷰 상세 - 내 리뷰 리스트 조회 용")
2224
@Getter
25+
@Slf4j
2326
public class MyMealReviewResponse {
2427
@Schema(description = "리뷰 식별자", example = "123")
2528
Long reviewId;
@@ -82,10 +85,25 @@ public static MyMealReviewResponse from(Review review) {
8285
);
8386
}
8487

88+
log.info("ratings = {}", review.getRatings());
89+
if (review.getRatings() != null) {
90+
log.info("mainRating = {}", review.getRatings().getMainRating());
91+
}
92+
log.info("legacy rating = {}", review.getRating());
93+
94+
Ratings ratings = review.getRatings();
95+
Integer rating = null;
96+
97+
if (ratings != null && ratings.getMainRating() != null) {
98+
rating = ratings.getMainRating();
99+
} else if (review.getRating() != null) {
100+
rating = review.getRating();
101+
}
102+
85103
return MyMealReviewResponse
86104
.builder()
87105
.reviewId(review.getId())
88-
.rating(review.getRating())
106+
.rating(rating)
89107
.writtenAt(review.getCreatedDate().toLocalDate())
90108
.content(review.getContent())
91109
.imageUrls(imgUrlList)

0 commit comments

Comments
 (0)