Skip to content

Commit 239b076

Browse files
authored
v2.0.1 (#51)
v2.0.1
2 parents caf43c2 + e410c97 commit 239b076

9 files changed

Lines changed: 401 additions & 54 deletions

File tree

โ€Žsrc/main/java/com/funeat/auth/util/AuthHandlerInterceptor.javaโ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,21 @@
88
import jakarta.servlet.http.HttpSession;
99
import org.springframework.stereotype.Component;
1010
import org.springframework.web.servlet.HandlerInterceptor;
11+
import org.springframework.web.util.UriTemplate;
1112

1213
@Component
1314
public class AuthHandlerInterceptor implements HandlerInterceptor {
1415

16+
private static final String GET = "GET";
17+
private static final UriTemplate SORTING_REVIEW_URI_TEMPLATE = new UriTemplate("/api/products/{productId}/reviews");
18+
1519
@Override
1620
public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response,
1721
final Object handler) {
22+
if (GET.equals(request.getMethod()) && SORTING_REVIEW_URI_TEMPLATE.matches(request.getRequestURI())) {
23+
return true;
24+
}
25+
1826
final HttpSession session = request.getSession(false);
1927

2028
if (Objects.isNull(session)) {

โ€Žsrc/main/java/com/funeat/member/domain/Member.javaโ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ public Member(final String nickname, final String profileImage, final String pla
4343
this.platformId = platformId;
4444
}
4545

46+
public static Member createGuest() {
47+
return new Member("Guest", "", "-1");
48+
}
49+
4650
public Long getId() {
4751
return id;
4852
}
@@ -81,4 +85,8 @@ public void modifyNickname(final String nickname) {
8185
}
8286
this.nickname = nickname;
8387
}
88+
89+
public boolean isGuest() {
90+
return platformId.equals("-1");
91+
}
8492
}

โ€Žsrc/main/java/com/funeat/review/application/ReviewService.javaโ€Ž

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class ReviewService {
6060
private static final int START_INDEX = 0;
6161
private static final int ONE = 1;
6262
private static final String EMPTY_URL = "";
63-
private static final int RANKING_SIZE = 3;
63+
private static final int RANKING_SIZE = 2;
6464
private static final long RANKING_MINIMUM_FAVORITE_COUNT = 1L;
6565
private static final int REVIEW_PAGE_SIZE = 10;
6666

@@ -156,12 +156,12 @@ public void updateProductImage(final Long productId) {
156156

157157
public SortingReviewsResponse sortingReviews(final Long productId, final Long memberId,
158158
final SortingReviewRequest request) {
159-
final Member findMember = memberRepository.findById(memberId)
160-
.orElseThrow(() -> new MemberNotFoundException(MEMBER_NOT_FOUND, memberId));
159+
final Member guestOrFindMember = memberRepository.findById(memberId)
160+
.orElse(Member.createGuest());
161161
final Product findProduct = productRepository.findById(productId)
162162
.orElseThrow(() -> new ProductNotFoundException(PRODUCT_NOT_FOUND, productId));
163163

164-
final List<SortingReviewDto> sortingReviews = getSortingReviews(findMember, findProduct, request);
164+
final List<SortingReviewDto> sortingReviews = getSortingReviews(guestOrFindMember, findProduct, request);
165165
final int resultSize = getResultSize(sortingReviews);
166166

167167
final List<SortingReviewDto> resizeSortingReviews = sortingReviews.subList(START_INDEX, resultSize);
@@ -170,14 +170,13 @@ public SortingReviewsResponse sortingReviews(final Long productId, final Long me
170170
return SortingReviewsResponse.toResponse(resizeSortingReviews, hasNext);
171171
}
172172

173-
private List<SortingReviewDto> getSortingReviews(final Member member, final Product product,
174-
final SortingReviewRequest request) {
173+
private List<SortingReviewDto> getSortingReviews(final Member guestOrFindMember, final Product product,
174+
final SortingReviewRequest request) {
175175
final Long lastReviewId = request.getLastReviewId();
176176
final String sortOption = request.getSort();
177177

178178
final Specification<Review> specification = getSortingSpecification(product, sortOption, lastReviewId);
179-
final List<SortingReviewDtoWithoutTag> sortingReviewDtoWithoutTags = reviewRepository.getSortingReview(member,
180-
specification, sortOption);
179+
final List<SortingReviewDtoWithoutTag> sortingReviewDtoWithoutTags = reviewRepository.getSortingReview(guestOrFindMember, specification, sortOption);
181180

182181
return addTagsToSortingReviews(sortingReviewDtoWithoutTags);
183182
}

โ€Žsrc/main/java/com/funeat/review/persistence/ReviewRepositoryImpl.javaโ€Ž

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class ReviewRepositoryImpl implements ReviewCustomRepository {
2626
private EntityManager em;
2727

2828
@Override
29-
public List<SortingReviewDtoWithoutTag> getSortingReview(final Member loginMember,
29+
public List<SortingReviewDtoWithoutTag> getSortingReview(final Member guestOrLoginMember,
3030
final Specification<Review> specification,
3131
final String sortOption) {
3232
final CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -43,8 +43,11 @@ public List<SortingReviewDtoWithoutTag> getSortingReview(final Member loginMembe
4343

4444
// left join
4545
final Join<Review, ReviewFavorite> leftJoinReviewFavorite = root.join("reviewFavorites", JoinType.LEFT);
46-
final Predicate condition = cb.equal(leftJoinReviewFavorite.get("member"), loginMember);
47-
leftJoinReviewFavorite.on(condition);
46+
leftJoinReviewFavorite.on(cb.disjunction()); // ๋น„๋กœ๊ทธ์ธ ์ข‹์•„์š” ๊ธฐ๋ณธ๊ฐ’์€ false
47+
if (!guestOrLoginMember.isGuest()) { // ๋กœ๊ทธ์ธ ์ข‹์•„์š”๋Š” ์‚ฌ์šฉ์ž์˜ ์ข‹์•„์š” ์œ ๋ฌด์— ๋”ฐ๋ผ ๊ฒฐ์ •
48+
final Predicate condition = cb.equal(leftJoinReviewFavorite.get("member"), guestOrLoginMember);
49+
leftJoinReviewFavorite.on(condition);
50+
}
4851

4952
// select - from - where - order by
5053
cq.select(getConstruct(root, cb, joinMember, leftJoinReviewFavorite))

0 commit comments

Comments
ย (0)