diff --git a/src/main/java/com/dog/dognation/api/SpotController.java b/src/main/java/com/dog/dognation/api/SpotController.java index 4801a09..647bb6c 100644 --- a/src/main/java/com/dog/dognation/api/SpotController.java +++ b/src/main/java/com/dog/dognation/api/SpotController.java @@ -49,10 +49,11 @@ public class SpotController { return ResponseEntity.status(HttpStatus.CREATED).body(body); } - /** 스팟에 현재 체크인 중인 메이트 목록 */ + /** 스팟에 현재 체크인 중인 메이트 목록 (userId 지정 시 본인 강아지 제외) */ @GetMapping("/{id}/mates") - public List mates(@PathVariable Long id) { - return spotService.activeMates(id).stream().map(MateResponse::from).toList(); + public List mates(@PathVariable Long id, + @RequestParam(required = false) Long userId) { + return spotService.activeMates(id, userId).stream().map(MateResponse::from).toList(); } /** AI 궁합 메이트 추천 — 내 강아지(dogId)와 사이좋게 지낼 만한 스팟 내 강아지 목록 */ diff --git a/src/main/java/com/dog/dognation/domain/spot/SpotService.java b/src/main/java/com/dog/dognation/domain/spot/SpotService.java index dd353bb..12476bb 100644 --- a/src/main/java/com/dog/dognation/domain/spot/SpotService.java +++ b/src/main/java/com/dog/dognation/domain/spot/SpotService.java @@ -58,9 +58,12 @@ public class SpotService { return saved; } - /** 스팟에 현재 체크인 중인 강아지(메이트) 목록 — 최근 24시간(Redis), 최신순. */ + /** + * 스팟에 현재 체크인 중인 강아지(메이트) 목록 — 최근 24시간(Redis), 최신순. + * excludeUserId 가 주어지면 해당 회원 소유 강아지(=본인 강아지)는 제외한다. + */ @Transactional(readOnly = true) - public List activeMates(Long spotId) { + public List activeMates(Long spotId, Long excludeUserId) { List dogIds = checkInRedisStore.activeDogIds(spotId); if (dogIds.isEmpty()) { return List.of(); @@ -68,7 +71,11 @@ public class SpotService { // Redis 최신순 유지 — findAllById 는 순서를 보장하지 않으므로 매핑 후 재정렬. Map byId = dogRepository.findAllById(dogIds).stream() .collect(Collectors.toMap(Dog::getId, Function.identity())); - return dogIds.stream().map(byId::get).filter(Objects::nonNull).toList(); + return dogIds.stream() + .map(byId::get) + .filter(Objects::nonNull) + .filter(d -> excludeUserId == null || !excludeUserId.equals(d.getUserId())) + .toList(); } @Transactional(readOnly = true)