From d33aa83549fb9cd11a04ec2ff1c340c46db1df34 Mon Sep 17 00:00:00 2001 From: SJ Hwang Date: Mon, 27 Oct 2025 18:17:11 +0900 Subject: [PATCH] =?UTF-8?q?[Refactor/#169]=20-=20paperContent=20=EC=97=86?= =?UTF-8?q?=EC=9D=84=20=EC=8B=9C=20null=20=EC=B2=98=EB=A6=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/map/dto/MapResponseDTO.java | 1 - .../domain/map/service/MapServiceImpl.java | 24 ++++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/assu/server/domain/map/dto/MapResponseDTO.java b/src/main/java/com/assu/server/domain/map/dto/MapResponseDTO.java index 204352d..1277b40 100644 --- a/src/main/java/com/assu/server/domain/map/dto/MapResponseDTO.java +++ b/src/main/java/com/assu/server/domain/map/dto/MapResponseDTO.java @@ -67,7 +67,6 @@ public static class StoreMapResponseDTO { private Double longitude; private String profileUrl; private String phoneNumber; - } @Getter @NoArgsConstructor @AllArgsConstructor @Builder diff --git a/src/main/java/com/assu/server/domain/map/service/MapServiceImpl.java b/src/main/java/com/assu/server/domain/map/service/MapServiceImpl.java index 0647116..9d2c66b 100644 --- a/src/main/java/com/assu/server/domain/map/service/MapServiceImpl.java +++ b/src/main/java/com/assu/server/domain/map/service/MapServiceImpl.java @@ -144,6 +144,13 @@ public List getStores(MapRequestDTO.ViewOnMa : null; final String profileUrl = (key != null ? amazonS3Manager.generatePresignedUrl(key) : null); + // phoneNumber null-safe 처리 (빈 문자열로 변환) + final String phoneNumber = (s.getPartner() != null + && s.getPartner().getMember() != null + && s.getPartner().getMember().getPhoneNum() != null) + ? s.getPartner().getMember().getPhoneNum() + : ""; + // 2-4) DTO 빌드 (content null 허용) return MapResponseDTO.StoreMapResponseDTO.builder() .storeId(s.getId()) @@ -162,7 +169,7 @@ public List getStores(MapRequestDTO.ViewOnMa .latitude(s.getLatitude()) .longitude(s.getLongitude()) .profileUrl(profileUrl) - .phoneNumber(s.getPartner().getMember().getPhoneNum()) + .phoneNumber(phoneNumber) .build(); }).toList(); } @@ -174,9 +181,7 @@ public List searchStores(String keyword) { return stores.stream().map(s -> { boolean hasPartner = s.getPartner() != null; PaperContent content = paperContentRepository.findTopByPaperStoreIdOrderByIdDesc(s.getId()) - .orElseThrow( - () -> new GeneralException(ErrorStatus.NO_SUCH_CONTENT) - ); + .orElse(null); String key = (s.getPartner() != null) ? s.getPartner().getMember().getProfileUrl() : null; String url = amazonS3Manager.generatePresignedUrl(key); @@ -206,9 +211,16 @@ else if (content.getOptionType() == OptionType.SERVICE) { } } + // phoneNumber null-safe 처리 (빈 문자열로 변환) + String phoneNumber = (s.getPartner() != null + && s.getPartner().getMember() != null + && s.getPartner().getMember().getPhoneNum() != null) + ? s.getPartner().getMember().getPhoneNum() + : ""; + return MapResponseDTO.StoreMapResponseDTO.builder() .storeId(s.getId()) - .adminName(admin.getName()) + .adminName(admin != null ? admin.getName() : null) .adminId(adminId) .name(s.getName()) .address(s.getAddress() != null ? s.getAddress() : s.getDetailAddress()) @@ -223,7 +235,7 @@ else if (content.getOptionType() == OptionType.SERVICE) { .latitude(s.getLatitude()) .longitude(s.getLongitude()) .profileUrl(url) - .phoneNumber(s.getPartner().getMember().getPhoneNum()) + .phoneNumber(phoneNumber) .build(); }).toList(); }