Skip to content

Commit

Permalink
[REFACTOR] BadgeService adapter 구현하여 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
unanchoi committed Mar 21, 2024
1 parent 63d4a5d commit 1b6c2a2
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 26 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.smeem.api.badge.service;

import com.smeem.api.badge.service.dto.response.BadgeListServiceResponse;
import com.smeem.common.exception.BadgeException;
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.badge.repository.BadgeRepository;
import com.smeem.domain.member.adapter.MemberBadgeFinder;
import com.smeem.domain.member.adapter.MemberBadgeSaver;
import com.smeem.domain.member.model.Member;
import com.smeem.domain.member.model.MemberBadge;
import com.smeem.domain.member.repository.MemberBadgeRepository;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.springframework.stereotype.Service;
Expand All @@ -18,51 +18,46 @@
import java.util.List;
import java.util.Map;

import static com.smeem.common.code.failure.BadgeFailureCode.INVALID_BADGE;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class BadgeService {

private final MemberBadgeRepository memberBadgeRepository;
private final BadgeRepository badgeRepository;
private final BadgeFinder badgeFinder;
private final MemberBadgeSaver memberBadgeSaver;
private final MemberBadgeFinder memberBadgeFinder;

@Transactional
public void saveMemberBadge(final Member member, final Badge badge) {
memberBadgeRepository.save(MemberBadge.builder()
val memberBadge = MemberBadge.builder()
.member(member)
.badge(badge)
.build());
.build();
memberBadgeSaver.save(memberBadge);
}
public BadgeListServiceResponse getBadges(final long memberId) {
val badges = badgeRepository.findAllOrderById();
val badges = badgeFinder.findAllOrderById();
val badgeMap = classifiedByType(badges);
val memberBadges = memberBadgeRepository.findAllByMemberId(memberId);
val memberBadges = memberBadgeFinder.findAllByMemberId(memberId);
return BadgeListServiceResponse.of(badgeMap, memberBadges);
}

public Badge get(final long id) {
return badgeRepository.findById(id)
.orElseThrow(() -> new BadgeException(INVALID_BADGE));
}

public Badge getBadgeByCountOfDiary(final int diaryCount) {
return switch (diaryCount) {
case 50 -> get(5L);
case 30 -> get(4L);
case 10 -> get(3L);
case 1 -> get(2L);
case 50 -> badgeFinder.findById(5L);
case 30 -> badgeFinder.findById(4L);
case 10 -> badgeFinder.findById(3L);
case 1 -> badgeFinder.findById(2L);
default -> null;
};
}

public Badge getBadgeByComboCountOfDiary(final int diaryComboCount) {
return switch (diaryComboCount) {
case 30 -> get(9L);
case 15 -> get(8L);
case 7 -> get(7L);
case 3 -> get(6L);
case 30 -> badgeFinder.findById(9L);
case 15 -> badgeFinder.findById(8L);
case 7 -> badgeFinder.findById(7L);
case 3 -> badgeFinder.findById(6L);
default -> null;
};
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.smeem.domain.badge.adapter;


import com.smeem.common.exception.BadgeException;
import com.smeem.domain.badge.model.Badge;
import com.smeem.domain.badge.repository.BadgeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.List;

import static com.smeem.common.code.failure.BadgeFailureCode.INVALID_BADGE;

@Component
@RequiredArgsConstructor
public class BadgeFinder {

private final BadgeRepository badgeRepository;


public Badge findById(final long id) {
return badgeRepository.findById(id)
.orElseThrow(() -> new BadgeException(INVALID_BADGE));
}

public List<Badge> findAllOrderById() {
return badgeRepository.findAllOrderById();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.smeem.domain.member.adapter;

import com.smeem.domain.member.model.MemberBadge;
import com.smeem.domain.member.repository.MemberBadgeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@RequiredArgsConstructor
public class MemberBadgeFinder {

private final MemberBadgeRepository memberBadgeRepository;

public List<MemberBadge> findAllByMemberId(final long id) {
return memberBadgeRepository.findAllByMemberId(id);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.smeem.domain.member.adapter;

import com.smeem.domain.member.model.Member;
import com.smeem.domain.member.model.MemberBadge;
import com.smeem.domain.member.repository.MemberBadgeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class MemberBadgeSaver {

private final MemberBadgeRepository memberBadgeRepository;

public void save(MemberBadge memberBadge) {
memberBadgeRepository.save(memberBadge);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@

public interface MemberBadgeRepository extends JpaRepository<MemberBadge, Long> {

List<MemberBadge> findAllByMemberId(Long memberId);
Optional<MemberBadge> findFirstByMemberIdOrderByCreatedAtDesc(Long memberId);
List<MemberBadge> findAllByMemberId(final long memberId);
Optional<MemberBadge> findFirstByMemberIdOrderByCreatedAtDesc(final long memberId);
}

0 comments on commit 1b6c2a2

Please sign in to comment.