From 6e996315f92bfc75d7ef87ff0e466e45108480e9 Mon Sep 17 00:00:00 2001 From: rud15dns Date: Thu, 19 Feb 2026 15:39:39 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix/#85:=20=EC=B6=94=EC=B2=9C=20=EC=8B=9C?= =?UTF-8?q?=20photourl=20null=20=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../meetkey/server/domain/match/service/MatchServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java b/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java index 2dc734c..fe15360 100644 --- a/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java +++ b/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java @@ -19,6 +19,7 @@ import com.meetkey.server.domain.member.repository.MemberLocationRepository; import com.meetkey.server.domain.member.repository.MemberRepository; import com.meetkey.server.domain.member.repository.PreferenceRepository; +import com.meetkey.server.global.s3.S3Service; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +46,7 @@ public class MatchServiceImpl implements MatchService { private final RecommendationQueueRepository recommendationQueueRepository; private final ChatRoomMemberRepository chatRoomMemberRepository; private final com.meetkey.server.domain.badge.respository.PointHistoryRepository pointHistoryRepository; + private final S3Service s3Service; @Transactional @Override @@ -364,7 +366,7 @@ private RecommendationResDTO convertToDTO(Member member, Preference pref, double .build()) .interests(interests) .personality(personalityDTO) - .photoUrls(Collections.emptyList()) // 플레이스홀더 + .photoUrls(Collections.singletonList(s3Service.generateGetPresignedUrl(member.getProfileImageUrl())))// 플레이스홀더 .introduction(member.getBio()) .badge(RecommendationResDTO.BadgeInfoDTO.builder() .level(badgeLevel) From e387afeea6937421b355f876332c5c61e0b9f563 Mon Sep 17 00:00:00 2001 From: rud15dns Date: Thu, 19 Feb 2026 15:43:17 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix/#85:=20=EC=BD=94=EB=93=9C=20=EA=B0=80?= =?UTF-8?q?=EB=8F=85=EC=84=B1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/match/service/MatchServiceImpl.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java b/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java index fe15360..c8e6ea5 100644 --- a/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java +++ b/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java @@ -27,10 +27,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -344,6 +341,11 @@ private RecommendationResDTO convertToDTO(Member member, Preference pref, double .build(); } + List photoUrls = Optional.ofNullable(member.getProfileImageUrl()) + .map(s3Service::generateGetPresignedUrl) + .map(Collections::singletonList) + .orElseGet(Collections::emptyList); + // 관심사 목록 조회 List interests = member.getInterestMembers().stream() .map(im -> im.getInterest().getType().name()) @@ -366,7 +368,7 @@ private RecommendationResDTO convertToDTO(Member member, Preference pref, double .build()) .interests(interests) .personality(personalityDTO) - .photoUrls(Collections.singletonList(s3Service.generateGetPresignedUrl(member.getProfileImageUrl())))// 플레이스홀더 + .photoUrls(photoUrls)// 플레이스홀더 .introduction(member.getBio()) .badge(RecommendationResDTO.BadgeInfoDTO.builder() .level(badgeLevel) From 82fa023c94067996755b07dbc75c15ac01f0baa6 Mon Sep 17 00:00:00 2001 From: rud15dns Date: Thu, 19 Feb 2026 15:53:33 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=EC=A0=84=ED=99=94=EB=B2=88=ED=98=B8?= =?UTF-8?q?=20=EC=A4=91=EB=B3=B5=20=EC=84=9C=EB=B9=84=EC=8A=A4=EB=8B=A8=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/auth/exception/AuthErrorStatus.java | 1 + .../domain/member/repository/MemberRepository.java | 1 + .../server/domain/member/service/MemberService.java | 9 +++++++++ 3 files changed, 11 insertions(+) diff --git a/src/main/java/com/meetkey/server/domain/auth/exception/AuthErrorStatus.java b/src/main/java/com/meetkey/server/domain/auth/exception/AuthErrorStatus.java index c4fca3e..e869d02 100644 --- a/src/main/java/com/meetkey/server/domain/auth/exception/AuthErrorStatus.java +++ b/src/main/java/com/meetkey/server/domain/auth/exception/AuthErrorStatus.java @@ -15,6 +15,7 @@ public enum AuthErrorStatus implements BaseCode { SEND_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "AUTH5001", "인증번호 발송에 실패했습니다."), INVALID_SOCIAL(HttpStatus.BAD_REQUEST, "AUTH4003", "잘못된 소셜 로그인 형식입니다."), + DUPLICATE_PHONE_NUMBER(HttpStatus.BAD_REQUEST, "AUTH4004", "중복된 전화번호입니다.") ; private final HttpStatus status; private final String code; diff --git a/src/main/java/com/meetkey/server/domain/member/repository/MemberRepository.java b/src/main/java/com/meetkey/server/domain/member/repository/MemberRepository.java index c5e51d0..11ee227 100644 --- a/src/main/java/com/meetkey/server/domain/member/repository/MemberRepository.java +++ b/src/main/java/com/meetkey/server/domain/member/repository/MemberRepository.java @@ -6,4 +6,5 @@ import java.util.Optional; public interface MemberRepository extends JpaRepository { + Boolean existsByPhoneNumber(String phoneNumber); } diff --git a/src/main/java/com/meetkey/server/domain/member/service/MemberService.java b/src/main/java/com/meetkey/server/domain/member/service/MemberService.java index 84d5165..a64aef3 100644 --- a/src/main/java/com/meetkey/server/domain/member/service/MemberService.java +++ b/src/main/java/com/meetkey/server/domain/member/service/MemberService.java @@ -1,6 +1,8 @@ package com.meetkey.server.domain.member.service; +import com.meetkey.server.domain.auth.exception.AuthErrorStatus; +import com.meetkey.server.domain.auth.exception.AuthException; import com.meetkey.server.domain.member.dto.MemberReqDTO; import com.meetkey.server.domain.member.dto.MemberResDTO; import com.meetkey.server.domain.member.entity.Member; @@ -31,6 +33,9 @@ public class MemberService { @Transactional public Member signup(Provider provider, String providerId, MemberReqDTO.Signup req) { + if (memberRepository.existsByPhoneNumber(req.phoneNumber())){ + throw new AuthException(AuthErrorStatus.DUPLICATE_PHONE_NUMBER); + } Member member = Member.builder() .name(req.name()) .targetLanguage(req.targetLanguage()) @@ -56,6 +61,10 @@ public Member signup(Provider provider, String providerId, MemberReqDTO.Signup r @Transactional public Member devSignup(Provider provider, String providerId, MemberReqDTO.Signup req, String name) { + if (memberRepository.existsByPhoneNumber(req.phoneNumber())){ + throw new AuthException(AuthErrorStatus.DUPLICATE_PHONE_NUMBER); + } + Member member = Member.builder() .gender(req.gender()) .name(name)