Skip to content

Commit 4185fd8

Browse files
authored
Merge pull request #135 from team-ppointer/develop
문항 바로 풀러가기 안됨 오류 해결
2 parents 9d13ae6 + 35fbbe7 commit 4185fd8

File tree

6 files changed

+44
-26
lines changed

6 files changed

+44
-26
lines changed

src/main/java/com/moplus/moplus_server/domain/concept/repository/ConceptTagRepository.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,13 @@ default void existsByIdElseThrow(Set<Long> ids) {
2323

2424
default List<ConceptTag> findAllByIdsElseThrow(Set<Long> ids) {
2525
List<ConceptTag> conceptTags = findAllById(ids);
26+
List<Long> foundIds = conceptTags.stream()
27+
.map(ConceptTag::getId)
28+
.toList();
29+
2630
if (conceptTags.size() != ids.size()) {
2731
throw new NotFoundException(ErrorCode.CONCEPT_TAG_NOT_FOUND_IN_LIST,
28-
"targetIds: " + ids + " / foundIds: " + conceptTags);
32+
"targetIds: " + ids + " / foundIds: " + foundIds);
2933
}
3034
return conceptTags;
3135
}

src/main/java/com/moplus/moplus_server/statistic/Problem/repository/ChildProblemStatisticRepository.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
import com.moplus.moplus_server.global.error.exception.ErrorCode;
44
import com.moplus.moplus_server.global.error.exception.NotFoundException;
55
import com.moplus.moplus_server.statistic.Problem.domain.ChildProblemStatistic;
6+
import java.util.Optional;
67
import org.springframework.data.jpa.repository.JpaRepository;
78

89
public interface ChildProblemStatisticRepository extends JpaRepository<ChildProblemStatistic, Long> {
9-
default ChildProblemStatistic findByIdElseThrow(Long id) {
10-
return findById(id)
11-
.orElseThrow(() -> new NotFoundException(ErrorCode.CHILD_PROBLEM_STATISTIC_NOT_FOUND));
10+
11+
Optional<ChildProblemStatistic> findByChildProblemId(Long childProblemId);
12+
13+
default ChildProblemStatistic findByChildProblemIdOrElse(Long childProblemId) {
14+
return findByChildProblemId(childProblemId)
15+
.orElseThrow(() -> new NotFoundException(ErrorCode.CHILD_PROBLEM_STATISTIC_NOT_FOUND));
1216
}
1317
}

src/main/java/com/moplus/moplus_server/statistic/Problem/repository/ProblemSetStatisticRepository.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,4 @@ default ProblemSetStatistic findByProblemSetIdElseThrow(Long id) {
1414
return findByProblemSetId(id)
1515
.orElseThrow(() -> new NotFoundException(ErrorCode.PROBLEM_SET_STATISTIC_NOT_FOUND));
1616
}
17-
18-
default ProblemSetStatistic findByIdElseThrow(Long id) {
19-
return findById(id)
20-
.orElseThrow(() -> new NotFoundException(ErrorCode.PROBLEM_SET_STATISTIC_NOT_FOUND));
21-
}
2217
}

src/main/java/com/moplus/moplus_server/statistic/Problem/repository/ProblemStatisticRepository.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33
import com.moplus.moplus_server.global.error.exception.ErrorCode;
44
import com.moplus.moplus_server.global.error.exception.NotFoundException;
55
import com.moplus.moplus_server.statistic.Problem.domain.ProblemStatistic;
6+
import java.util.Optional;
67
import org.springframework.data.jpa.repository.JpaRepository;
78

9+
810
public interface ProblemStatisticRepository extends JpaRepository<ProblemStatistic, Long> {
9-
default ProblemStatistic findByIdElseThrow(Long id) {
10-
return findById(id)
11-
.orElseThrow(() -> new NotFoundException(ErrorCode.PROBLEM_STATISTIC_NOT_FOUND));
11+
12+
Optional<ProblemStatistic> findByProblemId(Long problemId);
13+
14+
default ProblemStatistic findByProblemIdElseThrow(Long problemId) {
15+
return findByProblemId(problemId)
16+
.orElseThrow(() -> new NotFoundException(ErrorCode.PROBLEM_STATISTIC_NOT_FOUND));
1217
}
1318
}

src/main/java/com/moplus/moplus_server/statistic/Problem/service/CountStatisticsUpdateService.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
import com.moplus.moplus_server.statistic.Problem.repository.ProblemSetStatisticRepository;
1111
import com.moplus.moplus_server.statistic.Problem.repository.ProblemStatisticRepository;
1212
import lombok.RequiredArgsConstructor;
13+
import lombok.extern.slf4j.Slf4j;
1314
import org.springframework.stereotype.Service;
1415
import org.springframework.transaction.annotation.Transactional;
1516

17+
@Slf4j
1618
@Service
1719
@RequiredArgsConstructor
1820
public class CountStatisticsUpdateService {
@@ -21,8 +23,8 @@ public class CountStatisticsUpdateService {
2123
private final ChildProblemStatisticRepository childProblemStatisticRepository;
2224

2325
@Transactional
24-
public void updateStatistics(Long statisticId, StatisticFieldType type, StatisticEntityTarget target) {
25-
StatisticCounter statistic = findStatistic(statisticId, target);
26+
public void updateStatistics(Long statisticEntityTargetId, StatisticFieldType type, StatisticEntityTarget target) {
27+
StatisticCounter statistic = findStatistic(statisticEntityTargetId, target);
2628
statistic.updateCount(type);
2729
}
2830

@@ -35,11 +37,19 @@ public void createStatistics(Long statisticId, StatisticEntityTarget target) {
3537
}
3638
}
3739

38-
private StatisticCounter findStatistic(Long statisticId, StatisticEntityTarget target) {
39-
return switch (target) {
40-
case PROBLEM -> problemStatisticRepository.findByIdElseThrow(statisticId);
41-
case PROBLEM_SET -> problemSetStatisticRepository.findByIdElseThrow(statisticId);
42-
case CHILD_PROBLEM -> childProblemStatisticRepository.findByIdElseThrow(statisticId);
43-
};
40+
private StatisticCounter findStatistic(Long statisticEntityTargetId, StatisticEntityTarget target) {
41+
try {
42+
return switch (target) {
43+
case PROBLEM -> problemStatisticRepository.findByProblemIdElseThrow(statisticEntityTargetId);
44+
case PROBLEM_SET -> problemSetStatisticRepository.findByProblemSetIdElseThrow(statisticEntityTargetId);
45+
case CHILD_PROBLEM ->
46+
childProblemStatisticRepository.findByChildProblemIdOrElse(statisticEntityTargetId);
47+
};
48+
} catch (Exception e) {
49+
String message = String.format("📌 [통계 조회 실패] targetType=%s, id=%d, error=%s", target,
50+
statisticEntityTargetId, e.getMessage());
51+
log.warn(message, e);
52+
throw e;
53+
}
4454
}
4555
}

src/test/java/com/moplus/moplus_server/statistic/Problem/service/CountStatisticsUpdateServiceTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ class CountStatisticsUpdateServiceTest {
3636
// given
3737
Long problemId = 1L;
3838
ProblemStatistic problemStatistic = new ProblemStatistic(problemId);
39-
given(problemStatisticRepository.findByIdElseThrow(problemId))
39+
given(problemStatisticRepository.findByProblemIdElseThrow(problemId))
4040
.willReturn(problemStatistic);
4141

4242
// when
4343
countStatisticsUpdateService.updateStatistics(problemId, StatisticFieldType.VIEW,
4444
StatisticEntityTarget.PROBLEM);
4545

4646
// then
47-
verify(problemStatisticRepository).findByIdElseThrow(problemId);
47+
verify(problemStatisticRepository).findByProblemIdElseThrow(problemId);
4848
assertThat(problemStatistic.getViewCount()).isEqualTo(1L);
4949
assertThat(problemStatistic.getSubmitCount()).isEqualTo(0L);
5050
}
@@ -54,15 +54,15 @@ class CountStatisticsUpdateServiceTest {
5454
// given
5555
Long problemSetId = 1L;
5656
ProblemSetStatistic problemSetStatistic = new ProblemSetStatistic(problemSetId);
57-
given(problemSetStatisticRepository.findByIdElseThrow(problemSetId))
57+
given(problemSetStatisticRepository.findByProblemSetIdElseThrow(problemSetId))
5858
.willReturn(problemSetStatistic);
5959

6060
// when
6161
countStatisticsUpdateService.updateStatistics(problemSetId, StatisticFieldType.SUBMIT,
6262
StatisticEntityTarget.PROBLEM_SET);
6363

6464
// then
65-
verify(problemSetStatisticRepository).findByIdElseThrow(problemSetId);
65+
verify(problemSetStatisticRepository).findByProblemSetIdElseThrow(problemSetId);
6666
assertThat(problemSetStatistic.getSubmitCount()).isEqualTo(1L);
6767
assertThat(problemSetStatistic.getViewCount()).isEqualTo(0L);
6868
}
@@ -72,15 +72,15 @@ class CountStatisticsUpdateServiceTest {
7272
// given
7373
Long childProblemId = 1L;
7474
ChildProblemStatistic childProblemStatistic = new ChildProblemStatistic(childProblemId);
75-
given(childProblemStatisticRepository.findByIdElseThrow(childProblemId))
75+
given(childProblemStatisticRepository.findByChildProblemIdOrElse(childProblemId))
7676
.willReturn(childProblemStatistic);
7777

7878
// when
7979
countStatisticsUpdateService.updateStatistics(childProblemId, StatisticFieldType.VIEW,
8080
StatisticEntityTarget.CHILD_PROBLEM);
8181

8282
// then
83-
verify(childProblemStatisticRepository).findByIdElseThrow(childProblemId);
83+
verify(childProblemStatisticRepository).findByChildProblemIdOrElse(childProblemId);
8484
assertThat(childProblemStatistic.getViewCount()).isEqualTo(1L);
8585
assertThat(childProblemStatistic.getSubmitCount()).isEqualTo(0L);
8686
}

0 commit comments

Comments
 (0)