Skip to content

Commit

Permalink
fix: review likecount logics
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeongh00 committed Aug 1, 2024
1 parent 51f34fe commit 302e271
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
package com.likelion.apimodule.review.application;

import com.likelion.apimodule.review.dto.ReviewInfo;
import com.likelion.apimodule.security.util.JwtUtil;
import com.likelion.coremodule.menu.domain.Menu;
import com.likelion.coremodule.menu.service.MenuQueryService;
import com.likelion.coremodule.review.domain.Review;
import com.likelion.coremodule.review.service.ReviewQueryService;
import com.likelion.coremodule.store.domain.Store;
import com.likelion.coremodule.store.service.StoreQueryService;
import com.likelion.coremodule.user.application.UserQueryService;
import com.likelion.coremodule.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.Duration;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

@Service
Expand All @@ -21,15 +25,22 @@ public class ReviewFindUseCase {

private final ReviewQueryService reviewQueryService;
private final StoreQueryService storeQueryService;
private final UserQueryService userQueryService;
private final MenuQueryService menuQueryService;
private final JwtUtil jwtUtil;

public List<ReviewInfo> findAllReviews() {
public List<ReviewInfo> findAllReviews(String accessToken) {

List<Review> allReviews = reviewQueryService.findAllReviews();
List<ReviewInfo> reviewInfos = new ArrayList<>();

String email = jwtUtil.getEmail(accessToken);
User myUser = userQueryService.findByEmail(email);

for (Review review : allReviews) {
User user = review.getUser();
Menu menu = review.getMenu();

User user = userQueryService.findById(review.getUser().getUserId());
Menu menu = menuQueryService.findMenuById(review.getMenu().getId());

String name = user.getName();
String picture = user.getPicture();
Expand All @@ -46,16 +57,21 @@ public List<ReviewInfo> findAllReviews() {
LocalDateTime now = LocalDateTime.now();
LocalDateTime reviewTime = review.getCreatedAt();
Integer hourDifference = (int) Duration.between(reviewTime, now).toHours();
Integer dayDifference = (int) Duration.between(reviewTime, now).toDays();
Integer weekDifference = (int) (dayDifference / 7);

int dayDifference = (int) Duration.between(reviewTime, now).toDays();
Integer weekDifference = dayDifference / 7;

boolean isMine = user.getUserId().equals(myUser.getUserId());
ReviewInfo reviewInfo = new ReviewInfo(id, name, picture, rating, content, image,
likeCount, storeName, menuName, hourDifference, dayDifference, weekDifference);
likeCount, storeName, menuName, hourDifference, dayDifference, weekDifference, isMine);
reviewInfos.add(reviewInfo);
}

reviewInfos.sort(Comparator.comparing(ReviewInfo::isMine)
.thenComparingInt(info -> Integer.parseInt(info.likeCount()))
.reversed());

return reviewInfos;
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ public record ReviewInfo(Long reviewId,
String menuName,
Integer beforeHours,
Integer beforeDay,
Integer beforeWeek) {
Integer beforeWeek,
Boolean isMine) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,11 @@ public class ReviewController {
}
)
@Operation(summary = "전체 리뷰 확인 API", description = "전체 리뷰 확인 API 입니다.")
public ApplicationResponse<List<ReviewInfo>> getReviewInfo() {
public ApplicationResponse<List<ReviewInfo>> getReviewInfo(
@RequestHeader(AuthConsts.ACCESS_TOKEN_HEADER) String accessToken
) {

List<ReviewInfo> infos = reviewFindUseCase.findAllReviews();
List<ReviewInfo> infos = reviewFindUseCase.findAllReviews(accessToken);
return ApplicationResponse.ok(infos);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ public class UserQueryService {
private final UserRepository userRepository;

public User findByEmail(String email) {

return userRepository.findByEmail(email).orElseThrow(() -> new UserException(UserErrorCode.No_USER_INFO));
}

public User findById(Long userId) {
return userRepository.findById(userId).orElseThrow(() -> new UserException(UserErrorCode.No_USER_INFO));
}
}

0 comments on commit 302e271

Please sign in to comment.