GET /api/matches/received/{dogId} → 신청 견 이름·견종 포함(ReceivedMatchResponse).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ package com.dog.dognation.api;
|
|||||||
|
|
||||||
import com.dog.dognation.api.dto.CreateMatchRequest;
|
import com.dog.dognation.api.dto.CreateMatchRequest;
|
||||||
import com.dog.dognation.api.dto.MatchResponse;
|
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.MatchingRequest;
|
||||||
import com.dog.dognation.domain.matching.MatchingService;
|
import com.dog.dognation.domain.matching.MatchingService;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
@@ -46,12 +47,10 @@ public class MatchingController {
|
|||||||
return MatchResponse.from(matchingService.respond(id, false));
|
return MatchResponse.from(matchingService.respond(id, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 특정 견이 받은 대기중 신청 목록. */
|
/** 특정 견이 받은 대기중 신청 목록 (신청 견 정보 포함). */
|
||||||
@GetMapping("/received/{dogId}")
|
@GetMapping("/received/{dogId}")
|
||||||
public List<MatchResponse> received(@PathVariable Long dogId) {
|
public List<ReceivedMatchResponse> received(@PathVariable Long dogId) {
|
||||||
return matchingService.findPendingReceived(dogId).stream()
|
return matchingService.receivedDetail(dogId);
|
||||||
.map(MatchResponse::from)
|
|
||||||
.toList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 특정 견이 보낸 대기중 신청 목록 (진행중 표시용). */
|
/** 특정 견이 보낸 대기중 신청 목록 (진행중 표시용). */
|
||||||
|
|||||||
@@ -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
|
||||||
|
) {
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.dog.dognation.domain.matching;
|
package com.dog.dognation.domain.matching;
|
||||||
|
|
||||||
import com.dog.dognation.api.dto.MatchNotification;
|
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.chat.ChatService;
|
||||||
import com.dog.dognation.domain.dog.Dog;
|
import com.dog.dognation.domain.dog.Dog;
|
||||||
import com.dog.dognation.domain.dog.DogRepository;
|
import com.dog.dognation.domain.dog.DogRepository;
|
||||||
@@ -126,6 +127,21 @@ public class MatchingService {
|
|||||||
targetDogId, MatchingStatus.PENDING);
|
targetDogId, MatchingStatus.PENDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 받은 대기중 신청 — 수락/거절 UI용(신청 견 정보 포함). */
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public List<ReceivedMatchResponse> receivedDetail(Long targetDogId) {
|
||||||
|
List<MatchingRequest> 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)
|
@Transactional(readOnly = true)
|
||||||
public List<MatchingRequest> findSentPending(Long requesterDogId) {
|
public List<MatchingRequest> findSentPending(Long requesterDogId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user