diff --git a/src/main/java/com/amcamp/domain/team/api/TeamController.java b/src/main/java/com/amcamp/domain/team/api/TeamController.java index 6f0a1e61..856098be 100644 --- a/src/main/java/com/amcamp/domain/team/api/TeamController.java +++ b/src/main/java/com/amcamp/domain/team/api/TeamController.java @@ -12,6 +12,7 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Slice; import org.springframework.http.ResponseEntity; @@ -78,6 +79,7 @@ public TeamAdminResponse teamFindAdmin(@PathVariable Long teamId) { return teamService.findTeamAdmin(teamId); } + @Deprecated @Operation(summary = "팀 목록 조회", description = "회원이 참여한 팀 목록을 조회합니다.") @GetMapping("/list") public Slice teamFindAll( @@ -88,4 +90,10 @@ public Slice teamFindAll( int pageSize) { return teamService.findAllTeam(lastTeamId, pageSize); } + + @Operation(summary = "팀 목록 조회 V2", description = "회원이 참여한 팀 목록을 조회합니다.") + @GetMapping("/list/all") + public List teamFindAll() { + return teamService.findAllTeam(); + } } diff --git a/src/main/java/com/amcamp/domain/team/application/TeamService.java b/src/main/java/com/amcamp/domain/team/application/TeamService.java index c9bdf2dc..651ea801 100644 --- a/src/main/java/com/amcamp/domain/team/application/TeamService.java +++ b/src/main/java/com/amcamp/domain/team/application/TeamService.java @@ -20,6 +20,7 @@ import com.amcamp.global.util.MemberUtil; import com.amcamp.global.util.RandomUtil; import com.amcamp.global.util.RedisUtil; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Slice; @@ -179,6 +180,12 @@ public Slice findAllTeam(Long lastTeamId, int pageSize) { return teamRepository.findAllTeamByMemberId(currentMember.getId(), lastTeamId, pageSize); } + @Transactional(readOnly = true) + public List findAllTeam() { + Member currentMember = memberUtil.getCurrentMember(); + return teamRepository.findAllTeamByMemberId(currentMember.getId()); + } + @Transactional(readOnly = true) public TeamAdminResponse findTeamAdmin(Long teamId) { Member member = memberUtil.getCurrentMember(); diff --git a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java index ae43fc26..3c2e1f32 100644 --- a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java +++ b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java @@ -1,8 +1,11 @@ package com.amcamp.domain.team.dao; import com.amcamp.domain.team.dto.response.TeamInfoResponse; +import java.util.List; import org.springframework.data.domain.Slice; public interface TeamRepositoryCustom { Slice findAllTeamByMemberId(Long memberId, Long lastTeamId, int pageSize); + + List findAllTeamByMemberId(Long memberId); } diff --git a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java index 2aff504f..5e61f208 100644 --- a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java +++ b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java @@ -8,6 +8,7 @@ import com.amcamp.global.exception.errorcode.TeamErrorCode; import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; import lombok.RequiredArgsConstructor; @@ -26,19 +27,8 @@ public class TeamRepositoryImpl implements TeamRepositoryCustom { public Slice findAllTeamByMemberId( Long memberId, Long lastTeamId, int pageSize) { List results = - jpaQueryFactory - .select( - Projections.constructor( - TeamInfoResponse.class, - team.id, - team.name, - team.description, - team.emoji)) - .from(teamParticipant) - .leftJoin(teamParticipant.team, team) - .on(team.id.eq(teamParticipant.team.id)) - .where(lastTeamId(lastTeamId), teamParticipant.member.id.eq(memberId)) - .orderBy(teamParticipant.createdDt.desc()) + createTeamQueryByMemberId(memberId) + .where(lastTeamId(lastTeamId)) .limit(pageSize + 1) .fetch(); @@ -49,6 +39,27 @@ public Slice findAllTeamByMemberId( return checkLastPage(pageSize, results); } + @Override + public List findAllTeamByMemberId(Long memberId) { + return createTeamQueryByMemberId(memberId).fetch(); + } + + private JPAQuery createTeamQueryByMemberId(Long memberId) { + return jpaQueryFactory + .select( + Projections.constructor( + TeamInfoResponse.class, + team.id, + team.name, + team.description, + team.emoji)) + .from(teamParticipant) + .leftJoin(teamParticipant.team, team) + .on(team.id.eq(teamParticipant.team.id)) + .where(teamParticipant.member.id.eq(memberId)) + .orderBy(teamParticipant.createdDt.desc()); + } + private BooleanExpression lastTeamId(Long teamId) { if (teamId == null) { return null;