diff --git a/doorip-api/src/main/java/org/doorip/trip/api/TripApiController.java b/doorip-api/src/main/java/org/doorip/trip/api/TripApiController.java index 3801849..793969f 100644 --- a/doorip-api/src/main/java/org/doorip/trip/api/TripApiController.java +++ b/doorip-api/src/main/java/org/doorip/trip/api/TripApiController.java @@ -51,8 +51,9 @@ public ResponseEntity> entryTrip(@PathVariable final Long tripId, } @GetMapping("/{tripId}/my") - public ResponseEntity> getMyTodoDetail(@PathVariable final Long tripId) { - final MyTodoResponse response = tripDetailService.getMyTodoDetail(tripId); + public ResponseEntity> getMyTodoDetail(@UserId final Long userId, + @PathVariable final Long tripId) { + final MyTodoResponse response = tripDetailService.getMyTodoDetail(userId, tripId); return ApiResponseUtil.success(SuccessMessage.OK, response); } diff --git a/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java b/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java index 4d13dc3..cde9b07 100644 --- a/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java +++ b/doorip-api/src/main/java/org/doorip/trip/service/TripDetailService.java @@ -30,9 +30,9 @@ public class TripDetailService { private final TripRepository tripRepository; private final TodoRepository todoRepository; - public MyTodoResponse getMyTodoDetail(Long tripId) { + public MyTodoResponse getMyTodoDetail(Long userId, Long tripId) { Trip findTrip = getTrip(tripId); - int count = getIncompleteTodoCount(tripId); + int count = getIncompleteTodoCount(userId, tripId); return MyTodoResponse.of(findTrip.getTitle(), count); } @@ -61,8 +61,8 @@ private Map createDefaultPropensity() { }; } - private int getIncompleteTodoCount(Long tripId) { - return todoRepository.countTodoByTripIdAndProgress(tripId, Progress.INCOMPLETE); + private int getIncompleteTodoCount(Long userId, Long tripId) { + return todoRepository.countTodoByTripIdAndUserIdAndProgress(tripId, userId, Progress.INCOMPLETE); } private boolean judgeTrip(Trip trip) { diff --git a/doorip-domain/src/main/java/org/doorip/trip/repository/TodoRepository.java b/doorip-domain/src/main/java/org/doorip/trip/repository/TodoRepository.java index d268c3f..377b725 100644 --- a/doorip-domain/src/main/java/org/doorip/trip/repository/TodoRepository.java +++ b/doorip-domain/src/main/java/org/doorip/trip/repository/TodoRepository.java @@ -38,4 +38,19 @@ public interface TodoRepository extends JpaRepository { List findMyTodoByTripId(@Param("tripId") Long tripId, @Param("userId") Long userId, @Param("progress") Progress progress); int countTodoByTripIdAndProgress(Long tripId, Progress progress); + + @Query("select count(*) " + + "from Todo d " + + "join Trip i " + + "on d.trip = i " + + "join Allocator a " + + "on a.todo = d " + + "join Participant p " + + "on a.participant = p " + + "join User u " + + "on p.user = u " + + "where i.id = :tripId " + + "and u.id = :userId " + + "and d.progress = :progress") + int countTodoByTripIdAndUserIdAndProgress(@Param("tripId") Long tripId, @Param("userId") Long userId, @Param("progress") Progress progress); }