Skip to content

Commit ec88607

Browse files
안훈기안훈기
authored andcommitted
♻️Refactor: MatchDetailResponse 응답 구조 개선
1 parent 49c2144 commit ec88607

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

src/main/java/com/be/sportizebe/domain/match/dto/response/MatchDetailResponse.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.be.sportizebe.domain.match.dto.response;
22

3+
import com.be.sportizebe.domain.facility.entity.SportsFacility;
34
import com.be.sportizebe.domain.match.entity.MatchParticipantStatus;
45
import com.be.sportizebe.domain.match.entity.MatchRoom;
56
import com.be.sportizebe.common.enums.SportType;
@@ -21,6 +22,12 @@ public record MatchDetailResponse(
2122
@Schema(description = "체육시설 ID", example = "987")
2223
Long facilityId,
2324

25+
@Schema(description = "체육시설 이름", example = "마포 풋살파크")
26+
String facilityName,
27+
28+
@Schema(description = "체육시설 주소", example = "서울 마포구 월드컵로 123")
29+
String facilityAddress,
30+
2431
@Schema(description = "최대 참여 가능 인원", example = "12")
2532
Integer maxMembers,
2633

@@ -39,26 +46,27 @@ public record MatchDetailResponse(
3946
) {
4047
public static MatchDetailResponse of(
4148
MatchRoom matchRoom,
42-
User user
49+
User user,
50+
SportsFacility facility
4351
) {
44-
// JOINED 상태인 참가자만 추출
4552
List<Long> participantIds = matchRoom.getParticipants().stream()
4653
.filter(p -> p.getStatus() == MatchParticipantStatus.JOINED)
4754
.map(p -> p.getUser().getId())
4855
.toList();
4956

50-
// 요청 유저가 참가 중인지 여부 판단
5157
boolean joined = participantIds.contains(user.getId());
5258

5359
return new MatchDetailResponse(
5460
matchRoom.getId(),
5561
matchRoom.getSportsName(),
5662
matchRoom.getFacilityId(),
63+
facility.getFacilityName(),
64+
facility.getAddress(),
5765
matchRoom.getMaxMembers(),
5866
participantIds.size(),
5967
participantIds,
6068
joined,
6169
matchRoom.getScheduledAt()
6270
);
6371
}
64-
}
72+
}

src/main/java/com/be/sportizebe/domain/match/service/MatchServiceImpl.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
import com.be.sportizebe.domain.match.exception.MatchErrorCode;
1111
import com.be.sportizebe.domain.match.repository.MatchParticipantRepository;
1212
import com.be.sportizebe.domain.match.repository.MatchRoomRepository;
13+
import com.be.sportizebe.domain.facility.entity.SportsFacility;
14+
import com.be.sportizebe.domain.facility.exception.FacilityErrorCode;
15+
import com.be.sportizebe.domain.facility.repository.SportsFacilityRepository;
1316
import com.be.sportizebe.domain.user.entity.User;
1417
import com.be.sportizebe.domain.user.exception.UserErrorCode;
1518
import com.be.sportizebe.domain.user.repository.UserRepository;
@@ -29,6 +32,7 @@ public class MatchServiceImpl implements MatchService {
2932
private final MatchRoomRepository matchRoomRepository;
3033
private final MatchParticipantRepository matchParticipantRepository;
3134
private final UserRepository userRepository;
35+
private final SportsFacilityRepository sportsFacilityRepository;
3236

3337
@Override
3438
// 실제로는 관리자용 메서드인데 더미 넣으려고 만듦
@@ -117,13 +121,13 @@ public void leaveMatch(Long matchId, Long userId) {
117121
@Override
118122
@Transactional(readOnly = true)
119123
public MatchDetailResponse getMatchDetail(Long matchId, Long userId) {
120-
// 1) 매칭방 존재 확인
121124
MatchRoom matchRoom = matchRoomRepository.findById(matchId)
122125
.orElseThrow(() -> new CustomException(MatchErrorCode.MATCH_NOT_FOUND));
123126
User user = userRepository.findById(userId)
124127
.orElseThrow(() -> new CustomException(UserErrorCode.USER_NOT_FOUND));
125-
// 2) 응답 DTO 생성 (matchRoom + user 기준 정보 포함)
126-
return MatchDetailResponse.of(matchRoom, user);
128+
SportsFacility facility = sportsFacilityRepository.findById(matchRoom.getFacilityId())
129+
.orElseThrow(() -> new CustomException(FacilityErrorCode.FACILITY_NOT_FOUND));
130+
return MatchDetailResponse.of(matchRoom, user, facility);
127131
}
128132

129133
@Override

0 commit comments

Comments
 (0)