diff --git a/src/main/java/org/sopt/app/application/appjamuser/AppjamUserService.java b/src/main/java/org/sopt/app/application/appjamuser/AppjamUserService.java index 6ab8f823..a599f546 100644 --- a/src/main/java/org/sopt/app/application/appjamuser/AppjamUserService.java +++ b/src/main/java/org/sopt/app/application/appjamuser/AppjamUserService.java @@ -29,9 +29,9 @@ public TeamSummary getTeamSummaryByTeamNumber(TeamNumber teamNumber) { } public TeamSummary getTeamSummaryByUserId(Long userId) { - val appjamUser = appjamUserRepository.findByUserId(userId) - .orElseThrow(() -> new NotFoundException(ErrorCode.TEAM_NOT_FOUND)); - return TeamSummary.from(appjamUser); + return appjamUserRepository.findByUserId(userId) + .map(TeamSummary::from) + .orElseGet(TeamSummary::empty); } public boolean isAppjamParticipant(Long userId) { diff --git a/src/main/java/org/sopt/app/application/mission/AppjamMissionService.java b/src/main/java/org/sopt/app/application/mission/AppjamMissionService.java index 29f296ee..fdd3e2fb 100644 --- a/src/main/java/org/sopt/app/application/mission/AppjamMissionService.java +++ b/src/main/java/org/sopt/app/application/mission/AppjamMissionService.java @@ -19,6 +19,7 @@ import org.sopt.app.interfaces.postgres.MissionRepository; import org.sopt.app.interfaces.postgres.SoptampUserRepository; import org.sopt.app.interfaces.postgres.StampRepository; +import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; @Service @@ -30,14 +31,30 @@ public class AppjamMissionService { private final StampRepository stampRepository; private final SoptampUserRepository soptampUserRepository; - public List getDisplayedMissions() { + public List getMissions( + @Nullable TeamNumber teamNumber, + @Nullable Boolean isCompleted + ){ + val missions = (teamNumber != null) + ? getMissionsByTeam(teamNumber) + : getDisplayedMissions(); + + if (isCompleted != null) { + return missions.stream() + .filter(mission -> Objects.equals(mission.isCompleted(), isCompleted)) + .toList(); + } + return missions; + } + + private List getDisplayedMissions() { val displayedMissions = missionRepository.findAllByDisplay(true); return displayedMissions.stream() .map(AppjamMissionInfo::createWhenUncompleted) .toList(); } - public List getMissionsByTeam(TeamNumber teamNumber) { + private List getMissionsByTeam(TeamNumber teamNumber) { val userIds = getTeamUserIds(teamNumber); val stampsByMissionId = getStampMapByUserIds(userIds); val soptampUserByUserId = getSoptampUserMapByUserIds(userIds); @@ -48,15 +65,6 @@ public List getMissionsByTeam(TeamNumber teamNumber) { .toList(); } - public List getMissionsByTeamAndCondition(TeamNumber teamNumber, - boolean isCompleted) { - List allMissions = getMissionsByTeam(teamNumber); - - return allMissions.stream() - .filter(mission -> Objects.equals(mission.isCompleted(), isCompleted)) - .toList(); - } - private AppjamMissionInfo toTeamMissionInfo( Mission mission, Map stampByMissionId, diff --git a/src/main/java/org/sopt/app/facade/MissionFacade.java b/src/main/java/org/sopt/app/facade/MissionFacade.java index f5714848..aaa17679 100644 --- a/src/main/java/org/sopt/app/facade/MissionFacade.java +++ b/src/main/java/org/sopt/app/facade/MissionFacade.java @@ -2,7 +2,6 @@ import lombok.RequiredArgsConstructor; import lombok.val; -import org.sopt.app.application.appjamuser.AppjamUserInfo.AppjamUserStatus; import org.sopt.app.application.appjamuser.AppjamUserInfo.TeamSummary; import org.sopt.app.application.appjamuser.AppjamUserService; import org.sopt.app.application.mission.AppjamMissionService; @@ -25,22 +24,18 @@ public AppjamMissionInfos getTeamMissions( @Nullable TeamNumber teamNumber, @Nullable Boolean complete ) { - if (teamNumber == null) { - val missions = appjamMissionService.getDisplayedMissions(); - return AppjamMissionInfos.of(AppjamUserStatus.appjamNotJoined(), TeamSummary.empty(), - missions); - } - - val teamSummary = appjamUserService.getTeamSummaryByTeamNumber(teamNumber); + val teamSummary = resolveTeamSummary(userId, teamNumber); val appjamUserStatus = appjamUserService.getAppjamUserStatus(userId); - if (complete != null) { - return AppjamMissionInfos.of( - appjamUserStatus, - teamSummary, - appjamMissionService.getMissionsByTeamAndCondition(teamNumber, complete)); - } + return AppjamMissionInfos.of(appjamUserStatus, teamSummary, - appjamMissionService.getMissionsByTeam(teamNumber)); + appjamMissionService.getMissions(teamSummary.getTeamNumber(), complete)); + } + + private TeamSummary resolveTeamSummary(Long userId, TeamNumber teamNumber) { + if (teamNumber != null) { + return appjamUserService.getTeamSummaryByTeamNumber(teamNumber); + } + return appjamUserService.getTeamSummaryByUserId(userId); } } diff --git a/src/main/java/org/sopt/app/presentation/user/UserController.java b/src/main/java/org/sopt/app/presentation/user/UserController.java index 4cc19a95..8cf8543a 100755 --- a/src/main/java/org/sopt/app/presentation/user/UserController.java +++ b/src/main/java/org/sopt/app/presentation/user/UserController.java @@ -158,6 +158,7 @@ public ResponseEntity getMySoptLog( return ResponseEntity.ok(response); } + @Deprecated @Operation(summary = "앱잼 팀 정보 조회") @GetMapping("/appjam-info") public ResponseEntity getTeamInfo(