Skip to content

Commit

Permalink
[FEAT] 뱃지 조회 API 로직 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
unanchoi committed Apr 16, 2024
1 parent fe23f6c commit 065875c
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.smeem.api.badge.service;

import com.smeem.api.badge.service.dto.response.BadgeGetServiceResponse;
import com.smeem.api.badge.service.dto.response.BadgeListServiceResponse;
import com.smeem.domain.badge.adapter.BadgeFinder;
import com.smeem.domain.badge.model.Badge;
import com.smeem.domain.badge.model.BadgeType;
import com.smeem.domain.member.adapter.member.MemberFinder;
import com.smeem.domain.member.adapter.memberbadge.MemberBadgeFinder;
import com.smeem.domain.member.adapter.memberbadge.MemberBadgeSaver;
import com.smeem.domain.member.model.Member;
import com.smeem.domain.member.model.MemberBadge;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.springframework.stereotype.Service;
Expand All @@ -22,6 +25,16 @@ public class BadgeService {
private final BadgeFinder badgeFinder;
private final MemberBadgeSaver memberBadgeSaver;
private final MemberBadgeFinder memberBadgeFinder;
private final MemberFinder memberFinder;

public BadgeGetServiceResponse getBadge(final long badgeId, final long memberId) {
val memberBadge = memberBadgeFinder.findByBadgeIdAndMemberId(badgeId, memberId);
val badge = memberBadge.getBadge();
val memberCount = memberFinder.count();
val badgeAcquiredMemberCount = memberBadgeFinder.countByBadgeId(memberId);
val badgeAcquiredPercent = String.format("%.2f", (float) badgeAcquiredMemberCount / memberCount * 100);
return BadgeGetServiceResponse.of(badge, badgeAcquiredPercent);
}

public BadgeListServiceResponse getBadges(final long memberId) {
val badges = badgeFinder.findAllOrderById();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ public Member findMemberCanWriteDiaryById(final long id) {
}
return member;
}

public long count() {
return memberRepository.count();
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,18 @@ public class MemberBadgeFinder {
public List<MemberBadge> findAllByMemberId(final long id) {
return memberBadgeRepository.findAllByMemberId(id);
}
public MemberBadge findByBadgeIdAndMemberId(final long badgeId, final long memberId) {
return memberBadgeRepository.findByBadgeIdAndMemberId(badgeId, memberId)
.orElseThrow(() -> new MemberException(MemberFailureCode.EMPTY_MEMBER));
}

public MemberBadge findFirstByMemberIdOrderByCreatedAtDesc(final long id) {
return memberBadgeRepository.findFirstByMemberIdOrderByCreatedAtDesc(id)
.orElseThrow(() -> new MemberException(MemberFailureCode.EMPTY_MEMBER));
}

public long countByBadgeId(final long badgeId) {
return memberBadgeRepository.countByBadgeId(badgeId);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,9 @@
public interface MemberBadgeRepository extends JpaRepository<MemberBadge, Long> {

List<MemberBadge> findAllByMemberId(final long memberId);

Optional<MemberBadge> findByBadgeIdAndMemberId(final long badgeId, final long memberId);
Optional<MemberBadge> findFirstByMemberIdOrderByCreatedAtDesc(final long memberId);

long countByBadgeId(final long memberId);
}

0 comments on commit 065875c

Please sign in to comment.