diff --git a/src/main/java/com/dowe/elasticsearch/mapper/TeamMapper.java b/src/main/java/com/dowe/elasticsearch/mapper/TeamMapper.java index 878f7d4..744e533 100644 --- a/src/main/java/com/dowe/elasticsearch/mapper/TeamMapper.java +++ b/src/main/java/com/dowe/elasticsearch/mapper/TeamMapper.java @@ -10,6 +10,7 @@ public interface TeamMapper { @Mapping(target = "maxPeople", expression = "java(AppConstants.TEAM_MAX_SIZE)") - TeamOutline toTeamOutline(Team team); + @Mapping(target = "currentPeople", source = "currentPeople") + TeamOutline toTeamOutline(Team team, int currentPeople); } diff --git a/src/main/java/com/dowe/member/application/MemberService.java b/src/main/java/com/dowe/member/application/MemberService.java index 113ec5e..88f57ef 100644 --- a/src/main/java/com/dowe/member/application/MemberService.java +++ b/src/main/java/com/dowe/member/application/MemberService.java @@ -3,6 +3,7 @@ import static com.dowe.util.RandomUtil.*; import com.dowe.elasticsearch.mapper.TeamMapper; +import com.dowe.profile.infrastructure.ProfileRepository; import java.util.List; import java.util.Optional; @@ -29,6 +30,7 @@ public class MemberService { private final TeamMapper teamMapper; + private final ProfileRepository profileRepository; private final MemberRepository memberRepository; private final MemberCodeStorage memberCodeStorage; private final TeamRepository teamRepository; @@ -81,7 +83,10 @@ public FetchMyTeamResponse fetchMyTeam( List teamOutlines = teamRepository.findAllTeamsByMemberId(member.getId()) .stream() - .map(teamMapper::toTeamOutline) + .map(team -> { + int currentPeople = profileRepository.countByTeamId(team.getId()); + return teamMapper.toTeamOutline(team, currentPeople); + }) .toList(); return FetchMyTeamResponse.from(teamOutlines); diff --git a/src/main/java/com/dowe/profile/infrastructure/ProfileRepository.java b/src/main/java/com/dowe/profile/infrastructure/ProfileRepository.java index 5a0ee21..e8ed33d 100644 --- a/src/main/java/com/dowe/profile/infrastructure/ProfileRepository.java +++ b/src/main/java/com/dowe/profile/infrastructure/ProfileRepository.java @@ -8,4 +8,5 @@ public interface ProfileRepository extends JpaRepository { long countByMemberId(Long memberId); + int countByTeamId(Long teamId); } diff --git a/src/main/java/com/dowe/random/application/RandomService.java b/src/main/java/com/dowe/random/application/RandomService.java index 66e55cb..55f2d70 100644 --- a/src/main/java/com/dowe/random/application/RandomService.java +++ b/src/main/java/com/dowe/random/application/RandomService.java @@ -6,6 +6,7 @@ import com.dowe.exception.member.MemberNotFoundException; import com.dowe.member.Member; import com.dowe.member.infrastructure.MemberRepository; +import com.dowe.profile.infrastructure.ProfileRepository; import com.dowe.random.dto.response.RandomTeamsResponse; import com.dowe.team.dto.TeamOutline; import com.dowe.team.infrastructure.TeamRepository; @@ -20,6 +21,7 @@ @RequiredArgsConstructor public class RandomService { + private final ProfileRepository profileRepository; private final TeamRepository teamRepository; private final MemberRepository memberRepository; private final TeamMapper teamMapper; @@ -38,7 +40,10 @@ public RandomTeamsResponse getRandomTeams( List randomTeamOutlines = teamRepository.findTeamsNotJoinedByMemberWithOffset(memberId, randomOffset) .stream() - .map(teamMapper::toTeamOutline) + .map(team -> { + int currentPeople = profileRepository.countByTeamId(team.getId()); + return teamMapper.toTeamOutline(team, currentPeople); + }) .toList(); return RandomTeamsResponse.from(randomTeamOutlines);