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/match/service/MatchServiceImpl.java b/src/main/java/com/meetkey/server/domain/match/service/MatchServiceImpl.java index 2dc734c..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 @@ -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; @@ -26,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 @@ -45,6 +43,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 @@ -342,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()) @@ -364,7 +368,7 @@ private RecommendationResDTO convertToDTO(Member member, Preference pref, double .build()) .interests(interests) .personality(personalityDTO) - .photoUrls(Collections.emptyList()) // 플레이스홀더 + .photoUrls(photoUrls)// 플레이스홀더 .introduction(member.getBio()) .badge(RecommendationResDTO.BadgeInfoDTO.builder() .level(badgeLevel) 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)