From 1c8e8dc3d785fa1bba63ea818ecb63d07ed831cc Mon Sep 17 00:00:00 2001 From: hl3470 Date: Mon, 5 Aug 2024 10:16:08 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EA=B0=9C=EC=9D=B8=20=EC=9E=A5?= =?UTF-8?q?=EC=86=8C=20=EC=A1=B0=ED=9A=8C=EC=97=90=EC=84=9C=20=EB=8B=A4?= =?UTF-8?q?=EB=A5=B8=20=EC=82=AC=EB=9E=8C=EB=93=A4=20=EC=9E=A5=EC=86=8C?= =?UTF-8?q?=EB=8F=84=20=EB=A6=AC=ED=84=B4=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../place/controller/PlaceController.java | 4 +++- .../backend/domains/place/dto/PlaceDTO.java | 6 ++++-- .../place/repository/PlaceRepository.java | 5 +++++ .../domains/place/service/PlaceService.java | 21 ++++++++++++++++--- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/middle_point_search/backend/domains/place/controller/PlaceController.java b/backend/src/main/java/middle_point_search/backend/domains/place/controller/PlaceController.java index 7a8f9e3..4eb8d71 100644 --- a/backend/src/main/java/middle_point_search/backend/domains/place/controller/PlaceController.java +++ b/backend/src/main/java/middle_point_search/backend/domains/place/controller/PlaceController.java @@ -109,7 +109,9 @@ public ResponseEntity placesSaveOrUpdateBySelf(@RequestBody Places @Operation( summary = "개개인 장소 조회하기", description = """ - 개개인이 저장한 장소 조회하기. + 개개인이 저장한 장소 및 다른 사람들이 저장한 장소들 조회하기. + + 다른 사람들이 저장한 장소(otherPlaces)에는 당사자가 저장한 장소는 포함되지 않는다. AccessToken 필요.""", parameters = { diff --git a/backend/src/main/java/middle_point_search/backend/domains/place/dto/PlaceDTO.java b/backend/src/main/java/middle_point_search/backend/domains/place/dto/PlaceDTO.java index 8ca513b..0693f9c 100644 --- a/backend/src/main/java/middle_point_search/backend/domains/place/dto/PlaceDTO.java +++ b/backend/src/main/java/middle_point_search/backend/domains/place/dto/PlaceDTO.java @@ -44,8 +44,10 @@ public static class PlacesSaveOrUpdateBySelfRequest { @AllArgsConstructor public static class PlaceFindResponse { - private final Boolean existence; - private final PlaceVO place; + private final Boolean myPlaceExistence; + private final PlaceVO myPlace; + private final Boolean otherPlacesExistence; + private final List otherPlaces; } @Getter diff --git a/backend/src/main/java/middle_point_search/backend/domains/place/repository/PlaceRepository.java b/backend/src/main/java/middle_point_search/backend/domains/place/repository/PlaceRepository.java index a49213f..42a5293 100644 --- a/backend/src/main/java/middle_point_search/backend/domains/place/repository/PlaceRepository.java +++ b/backend/src/main/java/middle_point_search/backend/domains/place/repository/PlaceRepository.java @@ -4,7 +4,9 @@ import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import io.lettuce.core.dynamic.annotation.Param; import middle_point_search.backend.domains.member.domain.Member; import middle_point_search.backend.domains.place.domain.Place; import middle_point_search.backend.domains.room.domain.Room; @@ -22,4 +24,7 @@ public interface PlaceRepository extends JpaRepository { Optional findByRoom_IdentityNumberAndMember_Name(String roomId, String name); void deleteAllByRoom_IdentityNumber(String roomId); + + @Query("select p from Place p where p.member.name != :memberName and p.room.identityNumber = :roomId") + List findAllByRoom_IdentityNumberAndMember_Name(@Param(value = "roomId") String roomId ,@Param(value = "memberName") String memberName); } diff --git a/backend/src/main/java/middle_point_search/backend/domains/place/service/PlaceService.java b/backend/src/main/java/middle_point_search/backend/domains/place/service/PlaceService.java index 9fc3d97..2a010e0 100644 --- a/backend/src/main/java/middle_point_search/backend/domains/place/service/PlaceService.java +++ b/backend/src/main/java/middle_point_search/backend/domains/place/service/PlaceService.java @@ -15,6 +15,7 @@ import middle_point_search.backend.domains.member.domain.Role; import middle_point_search.backend.domains.member.service.MemberService; import middle_point_search.backend.domains.place.domain.Place; +import middle_point_search.backend.domains.place.dto.PlaceDTO; import middle_point_search.backend.domains.place.dto.PlaceDTO.PlaceFindResponse; import middle_point_search.backend.domains.place.dto.PlaceDTO.PlaceSaveOrUpdateRequest; import middle_point_search.backend.domains.place.dto.PlaceDTO.PlaceVO; @@ -97,9 +98,23 @@ private void saveOrUpdatePlacesBySelf(Room room, PlacesSaveOrUpdateBySelfRequest //개개인 장소 조회 public PlaceFindResponse findPlace(String roomId, String memberName) { - return placeRepository.findByRoom_IdentityNumberAndMember_Name(roomId, memberName) - .map(place -> new PlaceFindResponse(true, place.toVO())) - .orElseGet(() -> new PlaceFindResponse(false, null)); + //내 장소 조회 + PlaceVO myPlace = placeRepository.findByRoom_IdentityNumberAndMember_Name(roomId, memberName) + .map(Place:: toVO) + .orElse(null); + + //내 장소 존재 유무 + Boolean myPlaceExistence = myPlace != null; + + //다른 사람들 장소 조회 + List otherPlaces = placeRepository.findAllByRoom_IdentityNumberAndMember_Name(roomId, memberName) + .stream().map(Place::toVO) + .toList(); + + //다른 사람들 장소 유무 + boolean otherPlacesExistence = !otherPlaces.isEmpty(); + + return new PlaceDTO.PlaceFindResponse(myPlaceExistence, myPlace, otherPlacesExistence, otherPlaces); } //개인 장소 조회