diff --git a/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java b/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java index 1255b74f..6226eb27 100644 --- a/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java +++ b/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java @@ -14,6 +14,7 @@ import com.tiki.server.memberteammanager.entity.MemberTeamManager; import com.tiki.server.team.adapter.TeamFinder; import com.tiki.server.team.entity.Team; +import com.tiki.server.team.exception.TeamException; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -22,6 +23,7 @@ import static com.tiki.server.email.teaminvitation.messages.ErrorCode.ALREADY_INVITED_MEMBER; import static com.tiki.server.email.teaminvitation.messages.ErrorCode.NOT_MATCHED_MEMBER_INFORM; +import static com.tiki.server.team.message.ErrorCode.EXCEED_TEAM_NUMBER; @Service @RequiredArgsConstructor @@ -44,6 +46,7 @@ public TeamInvitationInformGetResponse getInvitationInform(final long invitation public void createTeamMemberFromInvitation(final long memberId, final long teamId, final long invitationId) { checkIsPresentTeamMember(memberId, teamId); Member member = memberFinder.findById(memberId); + checkTeamNumber(memberId); Team team = teamFinder.findById(teamId); TeamInvitation invitation = teamInvitationFinder.findByInvitationId(invitationId); checkMemberMatched(invitation, member); @@ -84,4 +87,12 @@ private void checkIsPresentTeamMember(long memberId, long teamId) { throw new TeamInvitationException(ALREADY_INVITED_MEMBER); } } + + private void checkTeamNumber(final long memberId) { + List joinedTeams = memberTeamManagerFinder.findAllByMemberIdOrderByCreatedAt( + memberId); + if (joinedTeams.size() > 8) { + throw new TeamException(EXCEED_TEAM_NUMBER); + } + } } diff --git a/src/main/java/com/tiki/server/team/message/ErrorCode.java b/src/main/java/com/tiki/server/team/message/ErrorCode.java index 3aac099a..c39412da 100644 --- a/src/main/java/com/tiki/server/team/message/ErrorCode.java +++ b/src/main/java/com/tiki/server/team/message/ErrorCode.java @@ -15,6 +15,7 @@ public enum ErrorCode { TOO_HIGH_AUTHORIZATION(BAD_REQUEST, "어드민은 진행할 수 없습니다."), TOO_SHORT_PERIOD(BAD_REQUEST, "30일이 지나야 이름을 변경할 수 있습니다."), EXCEED_TEAM_CAPACITY(BAD_REQUEST, "팀 사용 가능 용량을 초과하였습니다."), + EXCEED_TEAM_NUMBER(BAD_REQUEST, "팀은 최대 8개까지 가입 가능합니다."), /* 403 FORBIDDEN : 권한 없음 */ INVALID_AUTHORIZATION_DELETE(FORBIDDEN, "권한이 없습니다."), diff --git a/src/main/java/com/tiki/server/team/service/TeamService.java b/src/main/java/com/tiki/server/team/service/TeamService.java index 0109ad36..e9244215 100644 --- a/src/main/java/com/tiki/server/team/service/TeamService.java +++ b/src/main/java/com/tiki/server/team/service/TeamService.java @@ -1,7 +1,9 @@ package com.tiki.server.team.service; import static com.tiki.server.common.entity.Position.ADMIN; +import static com.tiki.server.team.message.ErrorCode.EXCEED_TEAM_NUMBER; +import com.tiki.server.team.exception.TeamException; import java.util.List; import com.tiki.server.document.adapter.DeletedDocumentAdapter; @@ -72,6 +74,7 @@ public class TeamService { @Transactional public TeamCreateResponse createTeam(final long memberId, final TeamCreateRequest request) { Member member = memberFinder.findById(memberId); + checkTeamNumber(memberId); Team team = teamSaver.save(createTeam(request, member.getUniv())); memberTeamManagerSaver.save(createMemberTeamManager(member, team, ADMIN)); return TeamCreateResponse.from(team); @@ -165,4 +168,13 @@ private void deleteTimeBlocks(final long teamId) { timeBlocks.forEach(dtbAdapter::deleteAllByTimeBlock); timeBlockDeleter.deleteAllByTeamId(teamId); } + + private void checkTeamNumber(final long memberId) { + List joinedTeams = memberTeamManagerFinder.findAllByMemberIdOrderByCreatedAt( + memberId); + if (joinedTeams.size() > 8) { + throw new TeamException(EXCEED_TEAM_NUMBER); + } + } } +