From e8a53ac7e156f299ba29eabe2e19e5b5e4ff73ea Mon Sep 17 00:00:00 2001 From: hee9841 Date: Wed, 11 Dec 2024 17:56:39 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20=EC=96=B4=EC=A0=9C=20=EA=B8=B0=EB=A1=9D?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20if=20=EC=B2=98=EB=A6=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95,=20=EC=B1=8C=EB=A6=B0=EC=A7=80=20=EB=AA=A9=ED=91=9C?= =?UTF-8?q?=EA=B0=92=20=EC=B6=94=EA=B0=80=20=EA=B4=80=EB=A0=A8=ED=95=B4?= =?UTF-8?q?=EC=84=9C=20for=EB=AC=B8=EC=97=90=EC=84=9C=20=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A6=BC=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../challenge/ChallengeService.java | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/dnd/runus/application/challenge/ChallengeService.java b/src/main/java/com/dnd/runus/application/challenge/ChallengeService.java index 073acf4f..d563af37 100644 --- a/src/main/java/com/dnd/runus/application/challenge/ChallengeService.java +++ b/src/main/java/com/dnd/runus/application/challenge/ChallengeService.java @@ -13,7 +13,6 @@ import java.util.Collections; import java.util.List; import java.util.Random; -import java.util.stream.Collectors; import static com.dnd.runus.global.constant.TimeConstant.SERVER_TIMEZONE_ID; @@ -37,31 +36,25 @@ public List getChallenges(long memberId) { List allChallengesWithConditions = new ArrayList<>(challengeRepository.findAllActiveChallengesWithConditions()); - // 어제 기록이 없으면 + // 어제 기록이 없으면 어제 기록과 관련된 챌린지 삭제 if (runningRecords.isEmpty()) { - allChallengesWithConditions = allChallengesWithConditions.stream() + allChallengesWithConditions.removeIf( + challengeWithCondition -> challengeWithCondition.challenge().isDefeatYesterdayChallenge()); + } else { + // 어제의 기록과 관련된 챌린지면, 챌린지 비교할 값(성공 유무를 위한 목표 값) 재등록 + allChallengesWithConditions.stream() .filter(challengeWithCondition -> - !challengeWithCondition.challenge().isDefeatYesterdayChallenge()) - .collect(Collectors.toList()); + challengeWithCondition.challenge().isDefeatYesterdayChallenge()) + .forEach(challengeWithCondition -> challengeWithCondition + .conditions() + .forEach(condition -> condition.registerComparisonValue( + condition.goalMetricType().getActualValue(runningRecords.getFirst())))); } // 랜덤으로 2개 리턴 Random randomWithSeed = new Random(todayMidnight.toEpochSecond()); Collections.shuffle(allChallengesWithConditions, randomWithSeed); - List randomChallengeWithConditions = allChallengesWithConditions.subList(0, 2); - - if (!runningRecords.isEmpty()) { - for (ChallengeWithCondition challenge : randomChallengeWithConditions) { - if (challenge.challenge().isDefeatYesterdayChallenge()) { - // 어제의 기록과 관련된 챌린지면, 챌린지 비교할 값(성공 유무를 위한 목표 값) 재등록 - challenge - .conditions() - .forEach(condition -> condition.registerComparisonValue( - condition.goalMetricType().getActualValue(runningRecords.getFirst()))); - } - } - } - return randomChallengeWithConditions; + return allChallengesWithConditions.subList(0, 2); } }