Skip to content

Commit d9a5cdc

Browse files
안훈기안훈기
authored andcommitted
♻️Refactor: 가입 신청 목록 조회 응답을 경량 DTO(JoinClubRequestSummaryResponse)로 분리
1 parent 87fb0c0 commit d9a5cdc

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

src/main/java/com/be/sportizebe/domain/notification/controller/JoinClubRequestController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.be.sportizebe.domain.notification.dto.request.JoinClubApplicationRequest;
44
import com.be.sportizebe.domain.notification.dto.response.JoinClubRequestResponse;
5+
import com.be.sportizebe.domain.notification.dto.response.JoinClubRequestSummaryResponse;
56
import com.be.sportizebe.domain.notification.service.JoinClubRequestService;
67
import com.be.sportizebe.global.cache.dto.UserAuthInfo;
78
import com.be.sportizebe.global.response.BaseResponse;
@@ -75,10 +76,10 @@ public ResponseEntity<BaseResponse<JoinClubRequestResponse>> rejectRequest(
7576

7677
@GetMapping("/{clubId}/join-requests")
7778
@Operation(summary = "대기 중인 가입 신청 목록", description = "동호회의 대기 중인 가입 신청 목록을 조회합니다. 동호회장만 가능합니다.")
78-
public ResponseEntity<BaseResponse<List<JoinClubRequestResponse>>> getPendingRequests(
79+
public ResponseEntity<BaseResponse<List<JoinClubRequestSummaryResponse>>> getPendingRequests(
7980
@Parameter(description = "동호회 ID") @PathVariable Long clubId,
8081
@AuthenticationPrincipal UserAuthInfo userAuthInfo) {
81-
List<JoinClubRequestResponse> response = joinClubRequestService.getPendingRequests(clubId, userAuthInfo.getId());
82+
List<JoinClubRequestSummaryResponse> response = joinClubRequestService.getPendingRequests(clubId, userAuthInfo.getId());
8283
return ResponseEntity.ok(BaseResponse.success("가입 신청 목록 조회 성공", response));
8384
}
8485

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.be.sportizebe.domain.notification.dto.response;
2+
3+
import com.be.sportizebe.domain.notification.entity.JoinClubRequest;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Builder;
6+
7+
@Builder
8+
@Schema(title = "JoinClubRequestSummaryResponse DTO", description = "가입 신청 목록 응답 (요약)")
9+
public record JoinClubRequestSummaryResponse(
10+
@Schema(description = "가입 신청 ID") Long id,
11+
@Schema(description = "신청자 ID") Long userId,
12+
@Schema(description = "신청자 닉네임") String userNickname,
13+
@Schema(description = "동호회 ID") Long clubId,
14+
@Schema(description = "동호회 이름") String clubName
15+
) {
16+
public static JoinClubRequestSummaryResponse from(JoinClubRequest request) {
17+
return JoinClubRequestSummaryResponse.builder()
18+
.id(request.getId())
19+
.userId(request.getUser().getId())
20+
.userNickname(request.getUser().getNickname())
21+
.clubId(request.getClub().getId())
22+
.clubName(request.getClub().getName())
23+
.build();
24+
}
25+
}

src/main/java/com/be/sportizebe/domain/notification/service/JoinClubRequestService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.be.sportizebe.domain.notification.service;
22

33
import com.be.sportizebe.domain.notification.dto.response.JoinClubRequestResponse;
4+
import com.be.sportizebe.domain.notification.dto.response.JoinClubRequestSummaryResponse;
45

56
import java.util.List;
67

@@ -22,7 +23,7 @@ public interface JoinClubRequestService {
2223
JoinClubRequestResponse rejectRequest(Long requestId, Long leaderId);
2324

2425
// 동호회의 대기 중인 가입 신청 목록 조회 (동호회장만)
25-
List<JoinClubRequestResponse> getPendingRequests(Long clubId, Long leaderId);
26+
List<JoinClubRequestSummaryResponse> getPendingRequests(Long clubId, Long leaderId);
2627

2728
// 내 가입 신청 목록 조회
2829
List<JoinClubRequestResponse> getMyRequests(Long userId);

src/main/java/com/be/sportizebe/domain/notification/service/JoinClubRequestServiceImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.be.sportizebe.domain.club.repository.ClubMemberRepository;
77
import com.be.sportizebe.domain.club.repository.ClubRepository;
88
import com.be.sportizebe.domain.notification.dto.response.JoinClubRequestResponse;
9+
import com.be.sportizebe.domain.notification.dto.response.JoinClubRequestSummaryResponse;
910
import com.be.sportizebe.domain.notification.entity.JoinClubRequest;
1011
import com.be.sportizebe.domain.notification.exception.JoinClubRequestErrorCode;
1112
import com.be.sportizebe.domain.notification.repository.JoinClubRequestRepository;
@@ -82,7 +83,7 @@ public JoinClubRequestResponse getJoinRequest(Long requestId, Long userId) {
8283

8384
// 동호회장 또는 신청자 본인만 조회 가능
8485
boolean isLeader = request.getClub().isLeader(userId);
85-
boolean isApplicant = request.getUser().getId().equals(userId);
86+
boolean isApplicant = userId.equals(request.getUser().getId());
8687
if (!isLeader && !isApplicant) {
8788
throw new CustomException(ClubErrorCode.CLUB_UPDATE_DENIED);
8889
}
@@ -175,7 +176,7 @@ public JoinClubRequestResponse rejectRequest(Long requestId, Long leaderId) {
175176
}
176177

177178
@Override
178-
public List<JoinClubRequestResponse> getPendingRequests(Long clubId, Long leaderId) {
179+
public List<JoinClubRequestSummaryResponse> getPendingRequests(Long clubId, Long leaderId) {
179180
Club club = findClubById(clubId);
180181

181182
// 동호회장만 조회 가능
@@ -186,7 +187,7 @@ public List<JoinClubRequestResponse> getPendingRequests(Long clubId, Long leader
186187
return joinClubRequestRepository
187188
.findByClubAndStatus(club, JoinClubRequest.JoinClubRequestStatus.PENDING)
188189
.stream()
189-
.map(JoinClubRequestResponse::from)
190+
.map(JoinClubRequestSummaryResponse::from)
190191
.toList();
191192
}
192193

0 commit comments

Comments
 (0)