From f999db44f494f8331630600cd1c9a5e23b60f895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Fri, 19 Jul 2024 17:37:40 +0900 Subject: [PATCH 01/14] =?UTF-8?q?feat=20-=20#183=20=EC=B1=8C=EB=A6=B0?= =?UTF-8?q?=EC=A7=80=20=EC=83=81=ED=83=9C=EA=B0=92=EC=9D=84=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=ED=95=98=EB=8A=94=20response=20record=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/ChallengeStatusesResponse.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/main/java/sopt/org/hmh/domain/dailychallenge/dto/response/ChallengeStatusesResponse.java diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/dto/response/ChallengeStatusesResponse.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/dto/response/ChallengeStatusesResponse.java new file mode 100644 index 00000000..370a187b --- /dev/null +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/dto/response/ChallengeStatusesResponse.java @@ -0,0 +1,10 @@ +package sopt.org.hmh.domain.dailychallenge.dto.response; + +import sopt.org.hmh.domain.dailychallenge.domain.Status; + +import java.util.List; + +public record ChallengeStatusesResponse( + List statuses +) { +} From 445cb0234fad6000a0e1c5bd1504b2b204cec536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Fri, 19 Jul 2024 17:39:08 +0900 Subject: [PATCH 02/14] =?UTF-8?q?feat=20-=20#183=20controller=EC=9D=98=20B?= =?UTF-8?q?aseResponse=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DailyChallengeApi.java | 5 +++-- .../controller/DailyChallengeController.java | 13 +++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeApi.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeApi.java index 486d1562..fd8158d5 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeApi.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeApi.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestHeader; import sopt.org.hmh.domain.dailychallenge.dto.request.FinishedDailyChallengeListRequest; import sopt.org.hmh.domain.dailychallenge.dto.request.FinishedDailyChallengeStatusListRequest; +import sopt.org.hmh.domain.dailychallenge.dto.response.ChallengeStatusesResponse; import sopt.org.hmh.global.auth.jwt.JwtConstants; import sopt.org.hmh.global.common.constant.CustomHeaderType; import sopt.org.hmh.global.common.response.BaseResponse; @@ -34,7 +35,7 @@ public interface DailyChallengeApi { responseCode = "500", description = "서버 내부 오류입니다.", content = @Content)}) - ResponseEntity> orderAddHistoryDailyChallenge( + ResponseEntity> orderAddHistoryDailyChallenge( @Parameter(hidden = true) final Long userId, @RequestHeader(CustomHeaderType.TIME_ZONE) final String os, @RequestHeader(CustomHeaderType.TIME_ZONE) final String timeZone, @@ -55,7 +56,7 @@ ResponseEntity> orderAddHistoryDailyChallenge( responseCode = "500", description = "서버 내부 오류입니다.", content = @Content)}) - ResponseEntity> orderChangeStatusDailyChallenge( + ResponseEntity> orderChangeStatusDailyChallenge( @Parameter(hidden = true) final Long userId, @RequestHeader(CustomHeaderType.TIME_ZONE) final String timeZone, @RequestBody final FinishedDailyChallengeStatusListRequest request diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java index 06e6a6fc..64158c96 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java @@ -4,9 +4,12 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import sopt.org.hmh.domain.challenge.dto.response.ChallengeResponse; +import sopt.org.hmh.domain.challenge.service.ChallengeFacade; import sopt.org.hmh.domain.dailychallenge.domain.exception.DailyChallengeSuccess; import sopt.org.hmh.domain.dailychallenge.dto.request.FinishedDailyChallengeListRequest; import sopt.org.hmh.domain.dailychallenge.dto.request.FinishedDailyChallengeStatusListRequest; +import sopt.org.hmh.domain.dailychallenge.dto.response.ChallengeStatusesResponse; import sopt.org.hmh.domain.dailychallenge.service.DailyChallengeFacade; import sopt.org.hmh.global.auth.UserId; import sopt.org.hmh.global.common.constant.CustomHeaderType; @@ -22,7 +25,7 @@ public class DailyChallengeController implements DailyChallengeApi { @Override @PostMapping("/finish") - public ResponseEntity> orderAddHistoryDailyChallenge( + public ResponseEntity> orderAddHistoryDailyChallenge( @UserId final Long userId, @RequestHeader(CustomHeaderType.OS) final String os, @RequestHeader(CustomHeaderType.TIME_ZONE) final String timeZone, @@ -31,12 +34,13 @@ public ResponseEntity> orderAddHistoryDailyChall dailyChallengeFacade.addFinishedDailyChallengeHistory(userId, request, os); return ResponseEntity .status(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS.getHttpStatus()) - .body(BaseResponse.success(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS, new EmptyJsonResponse())); + .body(BaseResponse.success(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS, + new ChallengeStatusesResponse(dailyChallengeFacade.getChangedChallengeStatuses(userId)))); } @Override @PostMapping("/success") - public ResponseEntity> orderChangeStatusDailyChallenge( + public ResponseEntity> orderChangeStatusDailyChallenge( @UserId final Long userId, @RequestHeader(CustomHeaderType.TIME_ZONE) final String timeZone, @RequestBody final FinishedDailyChallengeStatusListRequest request @@ -44,6 +48,7 @@ public ResponseEntity> orderChangeStatusDailyCha dailyChallengeFacade.changeDailyChallengeStatusByIsSuccess(userId, request); return ResponseEntity .status(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS.getHttpStatus()) - .body(BaseResponse.success(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS, new EmptyJsonResponse())); + .body(BaseResponse.success(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS, + new ChallengeStatusesResponse(dailyChallengeFacade.getChangedChallengeStatuses(userId)))); } } \ No newline at end of file From 39006e5da7351e98c305506b5dbd42ce78a21b0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Fri, 19 Jul 2024 17:40:44 +0900 Subject: [PATCH 03/14] =?UTF-8?q?feat=20-=20#183=20=EC=9D=BC=EB=B3=84=20?= =?UTF-8?q?=EC=B1=8C=EB=A6=B0=EC=A7=80=20=EA=B2=B0=EA=B3=BC=20=EC=A0=84?= =?UTF-8?q?=EC=86=A1=20=ED=9B=84=20=EC=B1=8C=EB=A6=B0=EC=A7=80=EC=9D=98=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=EA=B0=92=EB=93=A4=EC=9D=84=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=ED=95=98=EB=8A=94=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dailychallenge/service/DailyChallengeFacade.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index f6f3bbbf..53b854dc 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -54,4 +54,13 @@ public void changeDailyChallengeStatusByIsSuccess(Long userId, FinishedDailyChal } }); } + + public List getChangedChallengeStatuses(Long userId) { + Long currentChallengeId = userService.getCurrentChallengeIdByUserId(userId); + return challengeService.findByIdOrElseThrow(currentChallengeId) + .getHistoryDailyChallenges() + .stream() + .map(DailyChallenge::getStatus) + .toList(); + } } From 7189932213ccab5816d70ec0dc95107ec55808a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Sun, 21 Jul 2024 23:42:16 +0900 Subject: [PATCH 04/14] =?UTF-8?q?modify=20-=20#183=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EB=82=B4=EC=9D=98=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=20=ED=95=98=EB=82=98=EB=A7=8C=20=ED=98=B8=EC=B6=9C?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dailychallenge/controller/DailyChallengeController.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java index 64158c96..f8d900ea 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/controller/DailyChallengeController.java @@ -31,11 +31,10 @@ public ResponseEntity> orderAddHistoryDa @RequestHeader(CustomHeaderType.TIME_ZONE) final String timeZone, @RequestBody @Valid final FinishedDailyChallengeListRequest request ) { - dailyChallengeFacade.addFinishedDailyChallengeHistory(userId, request, os); return ResponseEntity .status(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS.getHttpStatus()) .body(BaseResponse.success(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS, - new ChallengeStatusesResponse(dailyChallengeFacade.getChangedChallengeStatuses(userId)))); + new ChallengeStatusesResponse(dailyChallengeFacade.addFinishedDailyChallengeHistory(userId, request, os)))); } @Override @@ -45,10 +44,9 @@ public ResponseEntity> orderChangeStatus @RequestHeader(CustomHeaderType.TIME_ZONE) final String timeZone, @RequestBody final FinishedDailyChallengeStatusListRequest request ) { - dailyChallengeFacade.changeDailyChallengeStatusByIsSuccess(userId, request); return ResponseEntity .status(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS.getHttpStatus()) .body(BaseResponse.success(DailyChallengeSuccess.SEND_FINISHED_DAILY_CHALLENGE_SUCCESS, - new ChallengeStatusesResponse(dailyChallengeFacade.getChangedChallengeStatuses(userId)))); + new ChallengeStatusesResponse(dailyChallengeFacade.changeDailyChallengeStatusByIsSuccess(userId, request)))); } } \ No newline at end of file From a0169259df434b1ae48ad2c0956de734401998b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Sun, 21 Jul 2024 23:42:47 +0900 Subject: [PATCH 05/14] =?UTF-8?q?modify=20-=20#183=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=EC=9D=98=20return=ED=98=95=ED=83=9C?= =?UTF-8?q?=20void=EC=97=90=EC=84=9C=20List=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EB=B6=88=EB=9F=AC=EC=98=A8=20=EC=B1=8C?= =?UTF-8?q?=EB=A6=B0=EC=A7=80=EB=A5=BC=20=EC=9E=AC=ED=99=9C=EC=9A=A9=20?= =?UTF-8?q?=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/DailyChallengeFacade.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index 53b854dc..4c10a4b0 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -6,6 +6,7 @@ import org.springframework.transaction.annotation.Transactional; import sopt.org.hmh.domain.app.domain.ChallengeApp; import sopt.org.hmh.domain.app.service.HistoryAppService; +import sopt.org.hmh.domain.challenge.domain.Challenge; import sopt.org.hmh.domain.challenge.service.ChallengeService; import sopt.org.hmh.domain.dailychallenge.domain.DailyChallenge; import sopt.org.hmh.domain.dailychallenge.domain.Status; @@ -23,27 +24,31 @@ public class DailyChallengeFacade { private final UserService userService; @Transactional - public void addFinishedDailyChallengeHistory(Long userId, FinishedDailyChallengeListRequest requests, String os) { - Long currentChallengeId = userService.getCurrentChallengeIdByUserId(userId); - List currentChallengeApps = - challengeService.getCurrentChallengeAppByChallengeId(currentChallengeId); + public List addFinishedDailyChallengeHistory(Long userId, FinishedDailyChallengeListRequest requests, String os) { + Challenge challenge = challengeService.findByIdOrElseThrow(userService.getCurrentChallengeIdByUserId(userId)); requests.finishedDailyChallenges().forEach(request -> { DailyChallenge dailyChallenge = dailyChallengeService.findDailyChallengeByChallengeIdAndChallengePeriodIndex( - currentChallengeId, request.challengePeriodIndex()); + challenge.getId(), request.challengePeriodIndex()); dailyChallengeService.changeStatusByCurrentStatus(dailyChallenge); - historyAppService.addHistoryApp(currentChallengeApps, request.apps(), dailyChallenge, os); + historyAppService.addHistoryApp(challenge.getApps(), request.apps(), dailyChallenge, os); }); + + return challenge.getHistoryDailyChallenges() + .stream() + .map(DailyChallenge::getStatus) + .toList(); } @Transactional - public void changeDailyChallengeStatusByIsSuccess(Long userId, FinishedDailyChallengeStatusListRequest requests) { - Long currentChallengeId = userService.getCurrentChallengeIdByUserId(userId); + public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedDailyChallengeStatusListRequest requests) { + Challenge challenge = challengeService.findByIdOrElseThrow(userService.getCurrentChallengeIdByUserId(userId)); + requests.finishedDailyChallenges().forEach(request -> { DailyChallenge dailyChallenge = dailyChallengeService.findDailyChallengeByChallengeIdAndChallengePeriodIndex( - currentChallengeId, request.challengePeriodIndex()); + challenge.getId(), request.challengePeriodIndex()); if (request.isSuccess()) { dailyChallengeService.validateDailyChallengeStatus(dailyChallenge.getStatus(), List.of(Status.NONE)); dailyChallenge.changeStatus(Status.UNEARNED); @@ -53,12 +58,8 @@ public void changeDailyChallengeStatusByIsSuccess(Long userId, FinishedDailyChal dailyChallenge.changeStatus(Status.FAILURE); } }); - } - public List getChangedChallengeStatuses(Long userId) { - Long currentChallengeId = userService.getCurrentChallengeIdByUserId(userId); - return challengeService.findByIdOrElseThrow(currentChallengeId) - .getHistoryDailyChallenges() + return challenge.getHistoryDailyChallenges() .stream() .map(DailyChallenge::getStatus) .toList(); From d3fa095242f7ed94165aa3c3ac473fc1929c67fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Sun, 21 Jul 2024 23:58:38 +0900 Subject: [PATCH 06/14] =?UTF-8?q?feat=20-=20#183=20challengeDate=EB=A1=9C?= =?UTF-8?q?=20=EC=A0=95=EB=A0=AC=ED=95=98=EB=8A=94=20=EC=A1=B0=EA=B1=B4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dailychallenge/service/DailyChallengeFacade.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index 4c10a4b0..2ca46dca 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -1,5 +1,6 @@ package sopt.org.hmh.domain.dailychallenge.service; +import java.util.Comparator; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -37,6 +38,7 @@ public List addFinishedDailyChallengeHistory(Long userId, FinishedDailyC return challenge.getHistoryDailyChallenges() .stream() + .sorted(Comparator.comparing(DailyChallenge::getChallengeDate)) .map(DailyChallenge::getStatus) .toList(); } @@ -61,6 +63,7 @@ public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedD return challenge.getHistoryDailyChallenges() .stream() + .sorted(Comparator.comparing(DailyChallenge::getChallengeDate)) .map(DailyChallenge::getStatus) .toList(); } From 1886a83568f0bd516eef5e08ff98978567c384aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 22 Jul 2024 14:54:29 +0900 Subject: [PATCH 07/14] =?UTF-8?q?feat=20-=20#183=20challengeResponse?= =?UTF-8?q?=EC=9D=98=20of=20=EB=A9=94=EC=86=8C=EB=93=9C=EC=97=90=EC=84=9C?= =?UTF-8?q?=20challengeDate=EB=A5=BC=20=EA=B8=B0=EC=A4=80=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=95=EB=A0=AC=ED=95=B4=EC=84=9C=20=EB=A6=AC?= =?UTF-8?q?=ED=84=B4=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmh/domain/challenge/dto/response/ChallengeResponse.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java b/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java index cebed4f1..0069d456 100644 --- a/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java +++ b/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java @@ -9,6 +9,7 @@ import sopt.org.hmh.domain.dailychallenge.domain.DailyChallenge; import sopt.org.hmh.domain.dailychallenge.domain.Status; +import java.util.Comparator; import java.util.List; @Builder @@ -25,6 +26,7 @@ public static ChallengeResponse of(Challenge challenge, String timeZone) { .period(challenge.getPeriod()) .statuses(challenge.getHistoryDailyChallenges() .stream() + .sorted(Comparator.comparing(DailyChallenge::getChallengeDate)) .map(DailyChallenge::getStatus) .toList()) .todayIndex(calculateTodayIndex(challenge, LocalDate.now(ZoneId.of(timeZone)))) From b4f96b87b713aab46caaa7b73d7117b1729a5027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 22 Jul 2024 14:55:43 +0900 Subject: [PATCH 08/14] =?UTF-8?q?chore=20-=20#183=20challengeDate=EB=A1=9C?= =?UTF-8?q?=20=EC=A0=95=EB=A0=AC=ED=95=B4=EC=84=9C=20historyDailyChallenge?= =?UTF-8?q?=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8A=94=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=A9=94=EC=86=8C=EB=93=9C=EB=A1=9C=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dailychallenge/service/DailyChallengeFacade.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index 2ca46dca..e2959383 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -36,11 +36,7 @@ public List addFinishedDailyChallengeHistory(Long userId, FinishedDailyC historyAppService.addHistoryApp(challenge.getApps(), request.apps(), dailyChallenge, os); }); - return challenge.getHistoryDailyChallenges() - .stream() - .sorted(Comparator.comparing(DailyChallenge::getChallengeDate)) - .map(DailyChallenge::getStatus) - .toList(); + return getHistoryDailyChallengesOrderByChallengeDate(challenge); } @Transactional @@ -61,6 +57,10 @@ public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedD } }); + return getHistoryDailyChallengesOrderByChallengeDate(challenge); + } + + private List getHistoryDailyChallengesOrderByChallengeDate(Challenge challenge) { return challenge.getHistoryDailyChallenges() .stream() .sorted(Comparator.comparing(DailyChallenge::getChallengeDate)) From 22ab912012671ad218323b8be83aef2362e6ae40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 22 Jul 2024 14:58:05 +0900 Subject: [PATCH 09/14] =?UTF-8?q?chore=20-=20#183=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B3=80=EC=88=98=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dailychallenge/service/DailyChallengeFacade.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index e2959383..0fd00c46 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -25,29 +25,29 @@ public class DailyChallengeFacade { private final UserService userService; @Transactional - public List addFinishedDailyChallengeHistory(Long userId, FinishedDailyChallengeListRequest requests, String os) { + public List addFinishedDailyChallengeHistory(Long userId, FinishedDailyChallengeListRequest request, String os) { Challenge challenge = challengeService.findByIdOrElseThrow(userService.getCurrentChallengeIdByUserId(userId)); - requests.finishedDailyChallenges().forEach(request -> { + request.finishedDailyChallenges().forEach(challengeRequest -> { DailyChallenge dailyChallenge = dailyChallengeService.findDailyChallengeByChallengeIdAndChallengePeriodIndex( challenge.getId(), request.challengePeriodIndex()); dailyChallengeService.changeStatusByCurrentStatus(dailyChallenge); - historyAppService.addHistoryApp(challenge.getApps(), request.apps(), dailyChallenge, os); + historyAppService.addHistoryApp(challenge.getApps(), challengeRequest.apps(), dailyChallenge, os); }); return getHistoryDailyChallengesOrderByChallengeDate(challenge); } @Transactional - public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedDailyChallengeStatusListRequest requests) { + public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedDailyChallengeStatusListRequest request) { Challenge challenge = challengeService.findByIdOrElseThrow(userService.getCurrentChallengeIdByUserId(userId)); - requests.finishedDailyChallenges().forEach(request -> { + request.finishedDailyChallenges().forEach(challengeRequest -> { DailyChallenge dailyChallenge = dailyChallengeService.findDailyChallengeByChallengeIdAndChallengePeriodIndex( challenge.getId(), request.challengePeriodIndex()); - if (request.isSuccess()) { + if (challengeRequest.isSuccess()) { dailyChallengeService.validateDailyChallengeStatus(dailyChallenge.getStatus(), List.of(Status.NONE)); dailyChallenge.changeStatus(Status.UNEARNED); } else { From 2ca0d576930b53f23a5ccb37d142244587fb9d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 22 Jul 2024 14:58:39 +0900 Subject: [PATCH 10/14] =?UTF-8?q?modify=20-=20#183=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=BF=BC=EB=A6=AC=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9D=B4=20=EC=97=86=EB=8F=84=EB=A1=9D=20dailyChallenge?= =?UTF-8?q?=EA=B5=AC=ED=95=B4=EC=98=A4=EB=8A=94=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dailychallenge/service/DailyChallengeFacade.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index 0fd00c46..6b9ea1d6 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -30,8 +30,7 @@ public List addFinishedDailyChallengeHistory(Long userId, FinishedDailyC request.finishedDailyChallenges().forEach(challengeRequest -> { DailyChallenge dailyChallenge = - dailyChallengeService.findDailyChallengeByChallengeIdAndChallengePeriodIndex( - challenge.getId(), request.challengePeriodIndex()); + challenge.getHistoryDailyChallenges().get(challengeRequest.challengePeriodIndex()); dailyChallengeService.changeStatusByCurrentStatus(dailyChallenge); historyAppService.addHistoryApp(challenge.getApps(), challengeRequest.apps(), dailyChallenge, os); }); @@ -45,8 +44,7 @@ public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedD request.finishedDailyChallenges().forEach(challengeRequest -> { DailyChallenge dailyChallenge = - dailyChallengeService.findDailyChallengeByChallengeIdAndChallengePeriodIndex( - challenge.getId(), request.challengePeriodIndex()); + challenge.getHistoryDailyChallenges().get(challengeRequest.challengePeriodIndex()); if (challengeRequest.isSuccess()) { dailyChallengeService.validateDailyChallengeStatus(dailyChallenge.getStatus(), List.of(Status.NONE)); dailyChallenge.changeStatus(Status.UNEARNED); From 62c0b7a88f99842f368ce1e2bd7ca9a878116a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 29 Jul 2024 14:23:08 +0900 Subject: [PATCH 11/14] =?UTF-8?q?feat=20-=20#183=20historyDailyChallenges?= =?UTF-8?q?=EA=B0=80=20=ED=95=AD=EC=83=81=20challengeDate=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=EC=9C=BC=EB=A1=9C=20=EC=A0=95=EB=A0=AC=EB=90=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/sopt/org/hmh/domain/challenge/domain/Challenge.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/sopt/org/hmh/domain/challenge/domain/Challenge.java b/src/main/java/sopt/org/hmh/domain/challenge/domain/Challenge.java index 53ce7817..0cadad54 100644 --- a/src/main/java/sopt/org/hmh/domain/challenge/domain/Challenge.java +++ b/src/main/java/sopt/org/hmh/domain/challenge/domain/Challenge.java @@ -39,6 +39,7 @@ public class Challenge extends BaseTimeEntity { private List apps; @OneToMany(mappedBy = "challenge", cascade = CascadeType.REMOVE, orphanRemoval = true) + @OrderBy("challengeDate ASC") private List historyDailyChallenges; @Builder From e78100d29e2d31aa0c26e16d17fa0dba28f79a18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 29 Jul 2024 15:32:54 +0900 Subject: [PATCH 12/14] =?UTF-8?q?feat=20-=20#183=20sorted=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmh/domain/challenge/dto/response/ChallengeResponse.java | 1 - .../hmh/domain/dailychallenge/service/DailyChallengeFacade.java | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java b/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java index 0069d456..8533e952 100644 --- a/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java +++ b/src/main/java/sopt/org/hmh/domain/challenge/dto/response/ChallengeResponse.java @@ -26,7 +26,6 @@ public static ChallengeResponse of(Challenge challenge, String timeZone) { .period(challenge.getPeriod()) .statuses(challenge.getHistoryDailyChallenges() .stream() - .sorted(Comparator.comparing(DailyChallenge::getChallengeDate)) .map(DailyChallenge::getStatus) .toList()) .todayIndex(calculateTodayIndex(challenge, LocalDate.now(ZoneId.of(timeZone)))) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index 6b9ea1d6..8c914609 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -1,6 +1,5 @@ package sopt.org.hmh.domain.dailychallenge.service; -import java.util.Comparator; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -61,7 +60,6 @@ public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedD private List getHistoryDailyChallengesOrderByChallengeDate(Challenge challenge) { return challenge.getHistoryDailyChallenges() .stream() - .sorted(Comparator.comparing(DailyChallenge::getChallengeDate)) .map(DailyChallenge::getStatus) .toList(); } From 8377bead86f6355b579ccefe68eed609c0a34363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 29 Jul 2024 15:35:02 +0900 Subject: [PATCH 13/14] =?UTF-8?q?chore=20-=20#183=20index=EB=A1=9C=20daily?= =?UTF-8?q?Challenge=20=EA=B5=AC=ED=95=98=EA=B3=A0=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=ED=95=98=EB=8A=94=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dailychallenge/service/DailyChallengeService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java index f84ec706..ec3d828c 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java @@ -24,9 +24,9 @@ public DailyChallenge findDailyChallengeByChallengeDateAndUserIdOrElseThrow(Loca .orElseThrow(() -> new DailyChallengeException(DailyChallengeError.DAILY_CHALLENGE_NOT_FOUND)); } - public DailyChallenge findDailyChallengeByChallengeIdAndChallengePeriodIndex(Long challengeId, Integer challengePeriodIndex) { + public DailyChallenge findDailyChallengeByChallengePeriodIndex(Challenge challenge, Integer challengePeriodIndex) { return Optional.ofNullable( - dailyChallengeRepository.findAllByChallengeIdOrderByChallengeDate(challengeId).get(challengePeriodIndex) + challenge.getHistoryDailyChallenges().get(challengePeriodIndex) ).orElseThrow(() -> new DailyChallengeException(DailyChallengeError.DAILY_CHALLENGE_PERIOD_INDEX_NOT_FOUND)); } From 4fbb30fcaec062bfb8c42fb689008e086ecc1e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=AE=E1=84=86?= =?UTF-8?q?=E1=85=B5=E1=86=AB?= Date: Mon, 29 Jul 2024 15:35:42 +0900 Subject: [PATCH 14/14] =?UTF-8?q?chore=20-=20#183=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=EB=AA=85=EC=97=90=EC=84=9C=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=EC=97=86=EB=8A=94=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/DailyChallengeJpaRepository.java | 2 +- .../repository/DailyChallengeRepository.java | 2 +- .../repository/DailyChallengeRepositoryImpl.java | 4 ++-- .../service/DailyChallengeFacade.java | 15 +++++++-------- .../service/DailyChallengeService.java | 6 +++--- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeJpaRepository.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeJpaRepository.java index 56f1ce01..fc59e683 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeJpaRepository.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeJpaRepository.java @@ -10,5 +10,5 @@ public interface DailyChallengeJpaRepository extends JpaRepository findByChallengeDateAndUserId(LocalDate challengeDate, Long userId); - List findAllByChallengeIdOrderByChallengeDate(Long challengeId); + List findAllByChallengeId(Long challengeId); } diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepository.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepository.java index 50093ab3..26d91fce 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepository.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepository.java @@ -11,7 +11,7 @@ public interface DailyChallengeRepository { Optional findByChallengeDateAndUserId(LocalDate challengeDate, Long userId); - List findAllByChallengeIdOrderByChallengeDate(Long challengeId); + List findAllByChallengeId(Long challengeId); boolean existsByUserIdAndChallengeDateIn(Long userId, List localDates); } \ No newline at end of file diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepositoryImpl.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepositoryImpl.java index 23a4c556..64b5ccd6 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepositoryImpl.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/repository/DailyChallengeRepositoryImpl.java @@ -27,8 +27,8 @@ public Optional findByChallengeDateAndUserId(LocalDate challenge } @Override - public List findAllByChallengeIdOrderByChallengeDate(Long challengeId) { - return dailyChallengeJpaRepository.findAllByChallengeIdOrderByChallengeDate(challengeId); + public List findAllByChallengeId(Long challengeId) { + return dailyChallengeJpaRepository.findAllByChallengeId(challengeId); } @Override diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java index 8c914609..ae44fee0 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeFacade.java @@ -4,7 +4,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import sopt.org.hmh.domain.app.domain.ChallengeApp; import sopt.org.hmh.domain.app.service.HistoryAppService; import sopt.org.hmh.domain.challenge.domain.Challenge; import sopt.org.hmh.domain.challenge.service.ChallengeService; @@ -28,13 +27,13 @@ public List addFinishedDailyChallengeHistory(Long userId, FinishedDailyC Challenge challenge = challengeService.findByIdOrElseThrow(userService.getCurrentChallengeIdByUserId(userId)); request.finishedDailyChallenges().forEach(challengeRequest -> { - DailyChallenge dailyChallenge = - challenge.getHistoryDailyChallenges().get(challengeRequest.challengePeriodIndex()); + DailyChallenge dailyChallenge = dailyChallengeService + .findDailyChallengeByChallengePeriodIndex(challenge, challengeRequest.challengePeriodIndex()); dailyChallengeService.changeStatusByCurrentStatus(dailyChallenge); historyAppService.addHistoryApp(challenge.getApps(), challengeRequest.apps(), dailyChallenge, os); }); - return getHistoryDailyChallengesOrderByChallengeDate(challenge); + return getHistoryDailyChallenges(challenge); } @Transactional @@ -42,8 +41,8 @@ public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedD Challenge challenge = challengeService.findByIdOrElseThrow(userService.getCurrentChallengeIdByUserId(userId)); request.finishedDailyChallenges().forEach(challengeRequest -> { - DailyChallenge dailyChallenge = - challenge.getHistoryDailyChallenges().get(challengeRequest.challengePeriodIndex()); + DailyChallenge dailyChallenge = dailyChallengeService + .findDailyChallengeByChallengePeriodIndex(challenge, challengeRequest.challengePeriodIndex()); if (challengeRequest.isSuccess()) { dailyChallengeService.validateDailyChallengeStatus(dailyChallenge.getStatus(), List.of(Status.NONE)); dailyChallenge.changeStatus(Status.UNEARNED); @@ -54,10 +53,10 @@ public List changeDailyChallengeStatusByIsSuccess(Long userId, FinishedD } }); - return getHistoryDailyChallengesOrderByChallengeDate(challenge); + return getHistoryDailyChallenges(challenge); } - private List getHistoryDailyChallengesOrderByChallengeDate(Challenge challenge) { + private List getHistoryDailyChallenges(Challenge challenge) { return challenge.getHistoryDailyChallenges() .stream() .map(DailyChallenge::getStatus) diff --git a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java index ec3d828c..8186daae 100644 --- a/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java +++ b/src/main/java/sopt/org/hmh/domain/dailychallenge/service/DailyChallengeService.java @@ -85,12 +85,12 @@ private List createDailyChallengeByChallengePeriod(Challenge cha .toList(); } - public List getDailyChallengesByChallengeIdOrderByChallengeDate(Long challengeId) { - return dailyChallengeRepository.findAllByChallengeIdOrderByChallengeDate(challengeId); + public List getDailyChallengesByChallengeId(Long challengeId) { + return dailyChallengeRepository.findAllByChallengeId(challengeId); } public void changeInfoOfDailyChallenges(Long challengeId, List statuses, LocalDate challengeDate) { - List dailyChallenges = this.getDailyChallengesByChallengeIdOrderByChallengeDate(challengeId); + List dailyChallenges = this.getDailyChallengesByChallengeId(challengeId); changeStatusOfDailyChallenges(dailyChallenges, statuses); changeChallengeDateOfDailyChallenges(dailyChallenges, challengeDate); }