diff --git a/src/main/java/com/dog/dognation/api/MatchingController.java b/src/main/java/com/dog/dognation/api/MatchingController.java index dc0b570..3e9872c 100644 --- a/src/main/java/com/dog/dognation/api/MatchingController.java +++ b/src/main/java/com/dog/dognation/api/MatchingController.java @@ -2,6 +2,7 @@ package com.dog.dognation.api; import com.dog.dognation.api.dto.CreateMatchRequest; import com.dog.dognation.api.dto.MatchResponse; +import com.dog.dognation.api.dto.ReceivedMatchResponse; import com.dog.dognation.domain.matching.MatchingRequest; import com.dog.dognation.domain.matching.MatchingService; import jakarta.validation.Valid; @@ -46,12 +47,10 @@ public class MatchingController { return MatchResponse.from(matchingService.respond(id, false)); } - /** 특정 견이 받은 대기중 신청 목록. */ + /** 특정 견이 받은 대기중 신청 목록 (신청 견 정보 포함). */ @GetMapping("/received/{dogId}") - public List received(@PathVariable Long dogId) { - return matchingService.findPendingReceived(dogId).stream() - .map(MatchResponse::from) - .toList(); + public List received(@PathVariable Long dogId) { + return matchingService.receivedDetail(dogId); } /** 특정 견이 보낸 대기중 신청 목록 (진행중 표시용). */ diff --git a/src/main/java/com/dog/dognation/api/dto/ReceivedMatchResponse.java b/src/main/java/com/dog/dognation/api/dto/ReceivedMatchResponse.java new file mode 100644 index 0000000..9da80c8 --- /dev/null +++ b/src/main/java/com/dog/dognation/api/dto/ReceivedMatchResponse.java @@ -0,0 +1,14 @@ +package com.dog.dognation.api.dto; + +import java.time.OffsetDateTime; + +/** 받은 매칭 신청 — 수락/거절 UI용. 신청 견 정보 포함. */ +public record ReceivedMatchResponse( + Long id, + Long requesterDogId, + String requesterDogName, + String requesterDogBreed, + OffsetDateTime createdAt, + OffsetDateTime expiresAt +) { +} \ No newline at end of file diff --git a/src/main/java/com/dog/dognation/domain/matching/MatchingService.java b/src/main/java/com/dog/dognation/domain/matching/MatchingService.java index bdf64e7..17767b1 100644 --- a/src/main/java/com/dog/dognation/domain/matching/MatchingService.java +++ b/src/main/java/com/dog/dognation/domain/matching/MatchingService.java @@ -1,6 +1,7 @@ package com.dog.dognation.domain.matching; import com.dog.dognation.api.dto.MatchNotification; +import com.dog.dognation.api.dto.ReceivedMatchResponse; import com.dog.dognation.domain.chat.ChatService; import com.dog.dognation.domain.dog.Dog; import com.dog.dognation.domain.dog.DogRepository; @@ -126,6 +127,21 @@ public class MatchingService { targetDogId, MatchingStatus.PENDING); } + /** 받은 대기중 신청 — 수락/거절 UI용(신청 견 정보 포함). */ + @Transactional(readOnly = true) + public List receivedDetail(Long targetDogId) { + List reqs = matchingRequestRepository + .findByTargetDogIdAndStatusOrderByCreatedAtDesc(targetDogId, MatchingStatus.PENDING); + return reqs.stream().map(r -> { + Dog d = dogRepository.findById(r.getRequesterDogId()).orElse(null); + return new ReceivedMatchResponse( + r.getId(), r.getRequesterDogId(), + d != null ? d.getName() : "알 수 없음", + d != null ? d.getBreed() : null, + r.getCreatedAt(), r.getExpiresAt()); + }).toList(); + } + /** 내가 보낸 대기중 신청 — 프론트 "진행중" 표시용. */ @Transactional(readOnly = true) public List findSentPending(Long requesterDogId) {