diff --git a/src/main/java/com/depromeet/stonebed/domain/missionRecord/api/MissionRecordController.java b/src/main/java/com/depromeet/stonebed/domain/missionRecord/api/MissionRecordController.java index 371ea7da..6ef014dc 100644 --- a/src/main/java/com/depromeet/stonebed/domain/missionRecord/api/MissionRecordController.java +++ b/src/main/java/com/depromeet/stonebed/domain/missionRecord/api/MissionRecordController.java @@ -29,8 +29,8 @@ public class MissionRecordController { @Operation(summary = "미션 탭 완료된 기록 리스트", description = "미션 탭에서 완료된 기록 리스트를 조회한다.") @GetMapping - public MissionRecordTabListResponse missionRecordsFind() { - return missionRecordService.findCompleteMissionRecords(); + public MissionRecordTabListResponse missionRecordsFind(@RequestParam Long missionId) { + return missionRecordService.findCompleteMissionRecords(missionId); } @Operation(summary = "미션 탭 상태 조회", description = "미션 탭의 상태를 조회한다.") diff --git a/src/main/java/com/depromeet/stonebed/domain/missionRecord/application/MissionRecordService.java b/src/main/java/com/depromeet/stonebed/domain/missionRecord/application/MissionRecordService.java index 54e068e1..92f0d74a 100644 --- a/src/main/java/com/depromeet/stonebed/domain/missionRecord/application/MissionRecordService.java +++ b/src/main/java/com/depromeet/stonebed/domain/missionRecord/application/MissionRecordService.java @@ -278,9 +278,27 @@ public void expiredMissionsToNotCompletedUpdate() { } @Transactional(readOnly = true) - public MissionRecordTabListResponse findCompleteMissionRecords() { + public MissionRecordTabListResponse findCompleteMissionRecords(Long missionId) { final Member member = memberUtil.getCurrentMember(); + Mission mission = + missionRepository + .findById(missionId) + .orElseThrow(() -> new CustomException(ErrorCode.MISSION_NOT_FOUND)); + + MissionHistory missionHistory = + findMissionHistoryByIdAndRaisePet(missionId, mission.getRaisePet()); + + MissionRecord missionRecord = + missionRecordRepository + .findByMemberAndMissionHistory(member, missionHistory) + .orElse(null); + + MissionRecordStatus missionRecordStatus = MissionRecordStatus.COMPLETED; + if (missionRecord == null) { + missionRecordStatus = MissionRecordStatus.NOT_COMPLETED; + } return MissionRecordTabListResponse.from( + missionRecordStatus, missionRecordRepository.findAllTabMissionsByMemberAndStatus( member, MissionRecordStatus.COMPLETED)); } diff --git a/src/main/java/com/depromeet/stonebed/domain/missionRecord/dto/response/MissionRecordTabListResponse.java b/src/main/java/com/depromeet/stonebed/domain/missionRecord/dto/response/MissionRecordTabListResponse.java index 0303a632..51f0bcda 100644 --- a/src/main/java/com/depromeet/stonebed/domain/missionRecord/dto/response/MissionRecordTabListResponse.java +++ b/src/main/java/com/depromeet/stonebed/domain/missionRecord/dto/response/MissionRecordTabListResponse.java @@ -1,9 +1,11 @@ package com.depromeet.stonebed.domain.missionRecord.dto.response; +import com.depromeet.stonebed.domain.missionRecord.domain.MissionRecordStatus; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; public record MissionRecordTabListResponse( + @Schema(description = "미션 당일 상태", example = "NOT_COMPLETED") MissionRecordStatus status, @Schema( description = "미션 탭 목록", example = @@ -19,7 +21,8 @@ public record MissionRecordTabListResponse( + "}" + "]") List list) { - public static MissionRecordTabListResponse from(List list) { - return new MissionRecordTabListResponse(list); + public static MissionRecordTabListResponse from( + MissionRecordStatus status, List list) { + return new MissionRecordTabListResponse(status, list); } }