From f5067ecbd4770365ae719628baf87878462ba007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B5=AC=ED=99=98=EC=A4=80/=EB=AA=A8=EA=B1=B4?= Date: Mon, 27 May 2024 23:48:35 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=EC=A0=84=ED=99=94=EB=B2=88=ED=98=B8?= =?UTF-8?q?=EB=A5=BC=20=EC=9D=B4=EC=9A=A9=ED=95=9C=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=20=ED=99=95=EC=9D=B8=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../invitation/implement/InvitationQueryAdapter.java | 3 +++ .../invitation/persistence/InvitationRepository.java | 2 ++ .../treehouse/server/api/user/business/UserMapper.java | 7 +++++++ .../server/api/user/business/UserService.java | 10 ++++++++++ .../server/api/user/implement/UserQueryAdapter.java | 4 ++++ .../server/api/user/presentation/UserApi.java | 8 ++++++++ .../api/user/presentation/dto/UserRequestDTO.java | 5 +++++ .../api/user/presentation/dto/UserResponseDTO.java | 10 ++++++++++ 8 files changed, 49 insertions(+) diff --git a/src/main/java/treehouse/server/api/invitation/implement/InvitationQueryAdapter.java b/src/main/java/treehouse/server/api/invitation/implement/InvitationQueryAdapter.java index cdfd2e8..1532b24 100644 --- a/src/main/java/treehouse/server/api/invitation/implement/InvitationQueryAdapter.java +++ b/src/main/java/treehouse/server/api/invitation/implement/InvitationQueryAdapter.java @@ -23,4 +23,7 @@ public List findAllByPhone(String phone) { return invitationRepository.findAllByPhone(phone); } + public Boolean existByPhoneNumber(String phoneNumber) { + return invitationRepository.existsByPhone(phoneNumber); + } } diff --git a/src/main/java/treehouse/server/api/invitation/persistence/InvitationRepository.java b/src/main/java/treehouse/server/api/invitation/persistence/InvitationRepository.java index 24b4265..3d954bb 100644 --- a/src/main/java/treehouse/server/api/invitation/persistence/InvitationRepository.java +++ b/src/main/java/treehouse/server/api/invitation/persistence/InvitationRepository.java @@ -13,4 +13,6 @@ public interface InvitationRepository extends JpaRepository { List findAllByPhone(String phone); Invitation findByPhoneAndTreeHouse(String phone, TreeHouse treeHouse); + + Boolean existsByPhone(String phoneNumber); } diff --git a/src/main/java/treehouse/server/api/user/business/UserMapper.java b/src/main/java/treehouse/server/api/user/business/UserMapper.java index 951058d..c85f5d5 100644 --- a/src/main/java/treehouse/server/api/user/business/UserMapper.java +++ b/src/main/java/treehouse/server/api/user/business/UserMapper.java @@ -53,4 +53,11 @@ public static UserResponseDTO.reissue toReissue(String accessToken, String refre .refreshToken(refreshToken) .build(); } + + public static UserResponseDTO.checkUserStatus toCheckUserStatus(Boolean isNewUser, Boolean isInvited){ + return UserResponseDTO.checkUserStatus.builder() + .isNewUser(isNewUser) + .isInvited(isInvited) + .build(); + } } diff --git a/src/main/java/treehouse/server/api/user/business/UserService.java b/src/main/java/treehouse/server/api/user/business/UserService.java index b66feaf..36154dd 100644 --- a/src/main/java/treehouse/server/api/user/business/UserService.java +++ b/src/main/java/treehouse/server/api/user/business/UserService.java @@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import treehouse.server.api.invitation.implement.InvitationQueryAdapter; import treehouse.server.api.user.implement.UserCommandAdapter; import treehouse.server.api.user.implement.UserQueryAdapter; import treehouse.server.api.user.presentation.dto.UserRequestDTO; @@ -30,6 +31,8 @@ public class UserService { private final RedisService redisService; + private final InvitationQueryAdapter invitationQueryAdapter; + @Transactional(readOnly = true) public UserResponseDTO.checkName checkName(UserRequestDTO.checkName request){ return UserMapper.toCheckNameDTO(userQueryAdapter.checkName(request)); @@ -69,4 +72,11 @@ public UserResponseDTO.reissue reissue(UserRequestDTO.reissue request){ } + public UserResponseDTO.checkUserStatus checkUserStatus(UserRequestDTO.checkUserStatus request) { + + Boolean isNewUser = !userQueryAdapter.existByPhoneNumber(request.getPhoneNumber()); + Boolean isInvited = invitationQueryAdapter.existByPhoneNumber(request.getPhoneNumber()); + + return UserMapper.toCheckUserStatus(isNewUser, isInvited); + } } diff --git a/src/main/java/treehouse/server/api/user/implement/UserQueryAdapter.java b/src/main/java/treehouse/server/api/user/implement/UserQueryAdapter.java index 3d68dd3..18ca1b7 100644 --- a/src/main/java/treehouse/server/api/user/implement/UserQueryAdapter.java +++ b/src/main/java/treehouse/server/api/user/implement/UserQueryAdapter.java @@ -37,4 +37,8 @@ public User findById(Long id){ public Optional optionalUserFindById(Long id){ return userRepository.findById(id); } + + public Boolean existByPhoneNumber(String phoneNumber) { + return userRepository.existsByPhone(phoneNumber); + } } diff --git a/src/main/java/treehouse/server/api/user/presentation/UserApi.java b/src/main/java/treehouse/server/api/user/presentation/UserApi.java index 52282e8..5578ea3 100644 --- a/src/main/java/treehouse/server/api/user/presentation/UserApi.java +++ b/src/main/java/treehouse/server/api/user/presentation/UserApi.java @@ -55,4 +55,12 @@ public CommonResponse loginTemp( ){ return CommonResponse.onSuccess((userService.login(request))); } + + @PostMapping("/phone") + @Operation(summary = "휴대폰으로 상태 확인", description = "휴대폰 번호로 유저의 상태(신규 유저인지, 초대를 하나라도 받았는지)를 조회합니다.") + public CommonResponse checkPhoneAuth( + @RequestBody final UserRequestDTO.checkUserStatus request + ){ + return CommonResponse.onSuccess(userService.checkUserStatus(request)); + } } diff --git a/src/main/java/treehouse/server/api/user/presentation/dto/UserRequestDTO.java b/src/main/java/treehouse/server/api/user/presentation/dto/UserRequestDTO.java index 8f50686..5602b84 100644 --- a/src/main/java/treehouse/server/api/user/presentation/dto/UserRequestDTO.java +++ b/src/main/java/treehouse/server/api/user/presentation/dto/UserRequestDTO.java @@ -59,4 +59,9 @@ public String toString() { private String phoneNum; private Integer authNum; } + + @Getter + public static class checkUserStatus { + private String phoneNumber; + } } diff --git a/src/main/java/treehouse/server/api/user/presentation/dto/UserResponseDTO.java b/src/main/java/treehouse/server/api/user/presentation/dto/UserResponseDTO.java index d6fb168..3cb96ec 100644 --- a/src/main/java/treehouse/server/api/user/presentation/dto/UserResponseDTO.java +++ b/src/main/java/treehouse/server/api/user/presentation/dto/UserResponseDTO.java @@ -47,4 +47,14 @@ public static class checkPhoneAuth{ public static class checkSentSms{ boolean messageSent; } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class checkUserStatus{ + + Boolean isNewUser; + Boolean isInvited; + } }