diff --git a/src/main/java/org/withtime/be/withtimebe/domain/member/repository/GradeRepository.java b/src/main/java/org/withtime/be/withtimebe/domain/member/repository/GradeRepository.java index c7cefa5..d9fb5f7 100644 --- a/src/main/java/org/withtime/be/withtimebe/domain/member/repository/GradeRepository.java +++ b/src/main/java/org/withtime/be/withtimebe/domain/member/repository/GradeRepository.java @@ -1,21 +1,7 @@ package org.withtime.be.withtimebe.domain.member.repository; -import java.util.Optional; - import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import org.withtime.be.withtimebe.domain.member.entity.Grade; public interface GradeRepository extends JpaRepository { - - @Query("SELECT g FROM Grade g " + - "WHERE g.requiredPoint <= :point " + - "ORDER BY g.requiredPoint DESC") - Optional findCurrentGrade(@Param("point") int point); - - @Query("SELECT g FROM Grade g " + - "WHERE g.requiredPoint > :point " + - "ORDER BY g.requiredPoint ASC") - Optional findNextGrade(@Param("point") int point); } diff --git a/src/main/java/org/withtime/be/withtimebe/domain/member/service/query/GradeQueryServiceImpl.java b/src/main/java/org/withtime/be/withtimebe/domain/member/service/query/GradeQueryServiceImpl.java index a0e611f..6e1f1aa 100644 --- a/src/main/java/org/withtime/be/withtimebe/domain/member/service/query/GradeQueryServiceImpl.java +++ b/src/main/java/org/withtime/be/withtimebe/domain/member/service/query/GradeQueryServiceImpl.java @@ -1,5 +1,8 @@ package org.withtime.be.withtimebe.domain.member.service.query; +import java.util.Comparator; +import java.util.List; + import org.springframework.stereotype.Service; import org.springframework.web.ErrorResponseException; import org.withtime.be.withtimebe.domain.member.converter.GradeConverter; @@ -23,10 +26,21 @@ public GradeResponseDTO.FindMyGrade findMyGrade(Member member) { int currentPoint = member.getPoint(); - Grade currentGrade = gradeRepository.findCurrentGrade(currentPoint) + List gradeList = gradeRepository.findAll(); + + // 필요 포인트 기준 오름차순 정렬 + gradeList.sort(Comparator.comparingInt(Grade::getRequiredPoint)); + + // 현재 Grade + Grade currentGrade = gradeList.stream() + .filter(g -> g.getRequiredPoint() <= currentPoint) + .max(Comparator.comparingInt(Grade::getRequiredPoint)) .orElseThrow(() -> new GradeException(GradeErrorCode.GRADE_NOT_FOUND)); - Grade nextGrade = gradeRepository.findNextGrade(currentPoint) + // 다음 Grade + Grade nextGrade = gradeList.stream() + .filter(g -> g.getRequiredPoint() > currentPoint) + .findFirst() .orElse(null); return GradeConverter.toFindMyGrade(member, currentGrade, nextGrade);