Skip to content

Commit

Permalink
[BSVR-176] 홈 피드 화면 조회 API GUI 버전 적용 (#100)
Browse files Browse the repository at this point in the history
* feat : 레벨업까지 남은 리뷰 수 구현

* feat : 레벨업까지 남은 리뷰 수 구현

* feat : 홈 피드 API 추가

* refactor : 유저 정보 내에 칭호 이미지, 레벨업까지 남은 리뷰 수 추가

* refactor : 홈 피드 API Response 수정

* refactor : 레벨별 마스코트 필드명 수정

* refactor : 레벨별 마스코트 리턴하도록 변경

* refactor : 리뷰 카운트와 다음 레벨까지 남은 리뷰 수의 타입을 원시 타입으로 변경(not null)

* refactor : 레벨업까지 남은 리뷰 수 계산 메서드를 레벨 도메인으로 이동

* refactor : 다음 레벨에 요구되는 최소 리뷰 수에 해당하는 변수명 알기 쉽도록 변경

* refactor : conflict 해결
  • Loading branch information
wjdwnsdnjs13 authored Aug 3, 2024
1 parent 15a9247 commit aeba0e5
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,10 @@ public Boolean deleteMember(
}

@CurrentMember
@GetMapping("/memberInfo")
@GetMapping("/homeFeed")
@ResponseStatus(HttpStatus.OK)
@Operation(summary = "로그인 유저 정보 조회 API")
public MyHomeResponse findMemberInfo(@Parameter(hidden = true) Long memberId) {
@Operation(summary = "홈 피드 화면 조회 API")
public MyHomeResponse findMemberHomeFeed(@Parameter(hidden = true) Long memberId) {
MemberInfo memberInfo = memberUsecase.findMemberInfo(memberId);

return MyHomeResponse.from(memberInfo);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,21 @@

@Builder
public record MyHomeResponse(
String profileImageUrl,
String nickname,
Integer level,
String teamName,
Long teamId,
String levelTitle,
String teamImageUrl,
Long teamId) {
Long reviewCntToLevelUp,
String mascotImageUrl) {

public static MyHomeResponse from(MemberInfo memberInfo) {
return MyHomeResponse.builder()
.profileImageUrl(memberInfo.getProfileImageUrl())
.nickname(memberInfo.getNickname())
.level(memberInfo.getLevel())
.levelTitle(memberInfo.getLevelTitle())
.teamImageUrl(memberInfo.getTeamImageUrl())
.teamName(memberInfo.getTeamName())
.teamId(memberInfo.getTeamId())
.levelTitle(memberInfo.getLevelTitle())
.reviewCntToLevelUp(memberInfo.getReviewCntToLevelUp())
.mascotImageUrl(memberInfo.getMascotImageUrl())
.build();
}
}
18 changes: 18 additions & 0 deletions domain/src/main/java/org/depromeet/spot/domain/member/Level.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,22 @@ public static int calculateLevel(final long reviewCnt) {
}
return 6;
}

public static long calculateReviewCntToLevelUp(long reviewCnt) {
int nextLevelMinimumReview;
if (reviewCnt == 0) {
nextLevelMinimumReview = 1;
} else if (reviewCnt <= 2) {
nextLevelMinimumReview = 3;
} else if (2 < reviewCnt && reviewCnt <= 4) {
nextLevelMinimumReview = 5;
} else if (4 < reviewCnt && reviewCnt <= 7) {
nextLevelMinimumReview = 8;
} else if (7 < reviewCnt && reviewCnt <= 13) {
nextLevelMinimumReview = 14;
} else if (13 < reviewCnt && reviewCnt <= 20) {
nextLevelMinimumReview = 21;
} else return 0;
return nextLevelMinimumReview - reviewCnt;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,11 @@ class MemberInfo {
private final String profileImageUrl;
private final int level;
private final String levelTitle;
private final String mascotImageUrl;
private String teamImageUrl;
private final Long teamId;
private final String teamName;
private final Long reviewCntToLevelUp;

public static MemberInfo from(Member member) {
return MemberInfo.builder()
Expand All @@ -45,14 +48,18 @@ public static MemberInfo from(Member member) {
.build();
}

public static MemberInfo of(Member member, BaseballTeam baseballTeam) {
public static MemberInfo of(
Member member, BaseballTeam baseballTeam, Long reviewCntToLevelUp) {
return MemberInfo.builder()
.nickname(member.getNickname())
.profileImageUrl(member.getProfileImage())
.level(member.getLevel().getValue())
.levelTitle(member.getLevel().getTitle())
.mascotImageUrl(member.getLevel().getMascotImageUrl())
.teamImageUrl(baseballTeam.getLogo())
.teamId(baseballTeam.getId())
.teamName(baseballTeam.getName())
.reviewCntToLevelUp(reviewCntToLevelUp)
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ MyReviewListResult findMyReviewsByUserId(

ReadReviewResult findReviewById(Long reviewId);

long countByIdByMemberId(Long memberId);

@Builder
record BlockReviewListResult(
LocationInfo location,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.depromeet.spot.usecase.port.in.member.MemberUsecase;
import org.depromeet.spot.usecase.port.in.member.ReadLevelUsecase;
import org.depromeet.spot.usecase.port.in.member.ReadMemberUsecase;
import org.depromeet.spot.usecase.port.in.review.ReadReviewUsecase;
import org.depromeet.spot.usecase.port.in.team.ReadBaseballTeamUsecase;
import org.depromeet.spot.usecase.port.out.member.MemberRepository;
import org.depromeet.spot.usecase.port.out.oauth.OauthRepository;
Expand All @@ -29,6 +30,8 @@ public class MemberService implements MemberUsecase {
private final ReadLevelUsecase readLevelUsecase;
private final ReadBaseballTeamUsecase readBaseballTeamUsecase;

private final ReadReviewUsecase readReviewUsecase;

@Override
public Member create(String accessToken, Member member) {
if (memberRepository.existsByNickname(member.getNickname())) {
Expand Down Expand Up @@ -82,7 +85,11 @@ public MemberInfo findMemberInfo(Long memberId) {
return MemberInfo.from(member);
}
BaseballTeam baseballTeam = readBaseballTeamUsecase.findById(member.getTeamId());
return MemberInfo.of(member, baseballTeam);

long reviewCount = readReviewUsecase.countByIdByMemberId(memberId);
long reviewCntToLevelUp = Level.calculateReviewCntToLevelUp(reviewCount);

return MemberInfo.of(member, baseballTeam, reviewCntToLevelUp);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ public ReadReviewResult findReviewById(Long reviewId) {
return ReadReviewResult.builder().review(reviewWithKeywords).build();
}

@Override
public long countByIdByMemberId(Long memberId) {
return reviewRepository.countByIdByMemberId(memberId);
}

@Override
public MyRecentReviewResult findLastReviewByMemberId(Long memberId) {
Review review = reviewRepository.findLastReviewByMemberId(memberId);
Expand Down

0 comments on commit aeba0e5

Please sign in to comment.