From 6bd068d783d45e5695423fced20cb7d9385a0993 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:19:01 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9C=A0=EC=A0=80=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=20api=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/code/status/SuccessStatus.java | 1 + .../user/api/controller/UserController.java | 18 ++++++++++++++++-- .../dto/response/UserInfoResponse.java | 16 ++++++++++++++++ .../dayoook_e/user/api/mapper/UserMapper.java | 8 ++++++++ .../user/api/service/UserService.java | 3 +++ .../user/api/service/UserServiceImpl.java | 17 +++++++++++++++++ 6 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/main/java/inha/dayoook_e/user/api/controller/dto/response/UserInfoResponse.java diff --git a/src/main/java/inha/dayoook_e/common/code/status/SuccessStatus.java b/src/main/java/inha/dayoook_e/common/code/status/SuccessStatus.java index dc02812..debee4e 100644 --- a/src/main/java/inha/dayoook_e/common/code/status/SuccessStatus.java +++ b/src/main/java/inha/dayoook_e/common/code/status/SuccessStatus.java @@ -19,6 +19,7 @@ public enum SuccessStatus implements BaseCode { TUTEE_SIGNUP_OK(HttpStatus.CREATED, "USER2010", "튜티 회원가입 성공"), TUTOR_SIGNUP_OK(HttpStatus.CREATED, "USER2011", "튜터 회원가입 성공"), + USER_INFO_OK(HttpStatus.OK, "USER2000", "유저 정보 조회 성공"), SONG_CREATE_OK(HttpStatus.CREATED, "SONG2000", "동요 생성 성공"), SONG_SEARCH_PAGE_OK(HttpStatus.OK, "SONG2001", "동요 조건 검색 성공"), diff --git a/src/main/java/inha/dayoook_e/user/api/controller/UserController.java b/src/main/java/inha/dayoook_e/user/api/controller/UserController.java index 2d6a12f..fa14da5 100644 --- a/src/main/java/inha/dayoook_e/user/api/controller/UserController.java +++ b/src/main/java/inha/dayoook_e/user/api/controller/UserController.java @@ -4,6 +4,7 @@ import inha.dayoook_e.user.api.controller.dto.request.TuteeSignupRequest; import inha.dayoook_e.user.api.controller.dto.request.TutorSignupRequest; import inha.dayoook_e.user.api.controller.dto.response.SignupResponse; +import inha.dayoook_e.user.api.controller.dto.response.UserInfoResponse; import inha.dayoook_e.user.api.service.UserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -14,8 +15,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import static inha.dayoook_e.common.code.status.SuccessStatus.TUTEE_SIGNUP_OK; -import static inha.dayoook_e.common.code.status.SuccessStatus.TUTOR_SIGNUP_OK; +import static inha.dayoook_e.common.code.status.SuccessStatus.*; /** @@ -30,6 +30,20 @@ public class UserController { private final UserService userService; + /** + * fast api 검증용 유저 정보 조회 API + * + *

유저 정보를 조회.

+ * + * @param email 이메일 + * @return 유저 정보를 포함하는 BaseResponse + */ + @GetMapping("/info") + @Operation(summary = "유저 정보 조회 API", description = "유저 정보를 조회합니다.") + public BaseResponse getUserInfo(@RequestParam("email") String email) { + return BaseResponse.of(USER_INFO_OK, userService.getUserInfo(email)); + } + /** * 튜티 회원가입 API * diff --git a/src/main/java/inha/dayoook_e/user/api/controller/dto/response/UserInfoResponse.java b/src/main/java/inha/dayoook_e/user/api/controller/dto/response/UserInfoResponse.java new file mode 100644 index 0000000..620f3e1 --- /dev/null +++ b/src/main/java/inha/dayoook_e/user/api/controller/dto/response/UserInfoResponse.java @@ -0,0 +1,16 @@ +package inha.dayoook_e.user.api.controller.dto.response; + +import inha.dayoook_e.user.domain.enums.Role; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; + +public record UserInfoResponse( + @NotNull + @Schema(description = "유저 ID", example = "1") + Integer id, + + @NotNull + @Schema(description = "유저 역할", example = "TUTOR") + Role role +) { +} diff --git a/src/main/java/inha/dayoook_e/user/api/mapper/UserMapper.java b/src/main/java/inha/dayoook_e/user/api/mapper/UserMapper.java index aa360bc..8868d8a 100644 --- a/src/main/java/inha/dayoook_e/user/api/mapper/UserMapper.java +++ b/src/main/java/inha/dayoook_e/user/api/mapper/UserMapper.java @@ -5,6 +5,7 @@ import inha.dayoook_e.user.api.controller.dto.request.TuteeSignupRequest; import inha.dayoook_e.user.api.controller.dto.request.TutorSignupRequest; import inha.dayoook_e.user.api.controller.dto.response.SignupResponse; +import inha.dayoook_e.user.api.controller.dto.response.UserInfoResponse; import inha.dayoook_e.user.domain.User; import inha.dayoook_e.user.domain.UserLanguage; import inha.dayoook_e.user.domain.id.UserLanguageId; @@ -78,4 +79,11 @@ default List toUserLanguages(List languageIds, User user, SignupResponse userToSignupResponse(User savedUser); + /** + * User를 UserInfoResponse로 변환 + * + * @param user 유저 엔티티 + * @return UserInfoResponse + */ + UserInfoResponse userToUserInfoResponse(User user); } diff --git a/src/main/java/inha/dayoook_e/user/api/service/UserService.java b/src/main/java/inha/dayoook_e/user/api/service/UserService.java index bf7b5cd..8432300 100644 --- a/src/main/java/inha/dayoook_e/user/api/service/UserService.java +++ b/src/main/java/inha/dayoook_e/user/api/service/UserService.java @@ -3,10 +3,13 @@ import inha.dayoook_e.user.api.controller.dto.request.TuteeSignupRequest; import inha.dayoook_e.user.api.controller.dto.request.TutorSignupRequest; import inha.dayoook_e.user.api.controller.dto.response.SignupResponse; +import inha.dayoook_e.user.api.controller.dto.response.UserInfoResponse; import org.springframework.web.multipart.MultipartFile; public interface UserService { SignupResponse tuteeSignup(TuteeSignupRequest tuteeSignupRequest, MultipartFile profileImage); SignupResponse tutorSignup(TutorSignupRequest tutorSignupRequest, MultipartFile profileImage); + + UserInfoResponse getUserInfo(String email); } diff --git a/src/main/java/inha/dayoook_e/user/api/service/UserServiceImpl.java b/src/main/java/inha/dayoook_e/user/api/service/UserServiceImpl.java index e01b2bd..8435dd5 100644 --- a/src/main/java/inha/dayoook_e/user/api/service/UserServiceImpl.java +++ b/src/main/java/inha/dayoook_e/user/api/service/UserServiceImpl.java @@ -1,5 +1,6 @@ package inha.dayoook_e.user.api.service; +import inha.dayoook_e.common.exceptions.BaseException; import inha.dayoook_e.mapping.domain.Language; import inha.dayoook_e.mapping.domain.repository.LanguageJpaRepository; import inha.dayoook_e.song.domain.repository.SongJpaRepository; @@ -14,6 +15,7 @@ import inha.dayoook_e.user.api.controller.dto.request.TuteeSignupRequest; import inha.dayoook_e.user.api.controller.dto.request.TutorSignupRequest; import inha.dayoook_e.user.api.controller.dto.response.SignupResponse; +import inha.dayoook_e.user.api.controller.dto.response.UserInfoResponse; import inha.dayoook_e.user.api.mapper.UserMapper; import inha.dayoook_e.user.domain.User; import inha.dayoook_e.user.domain.UserLanguage; @@ -30,7 +32,9 @@ import java.util.List; +import static inha.dayoook_e.common.BaseEntity.State.ACTIVE; import static inha.dayoook_e.common.Constant.PROFILE_IMAGE_DIR; +import static inha.dayoook_e.common.code.status.ErrorStatus.NOT_FIND_USER; /** * UserServiceImpl은 유저 관련 비즈니스 로직을 처리하는 서비스 클래스. @@ -129,6 +133,19 @@ public SignupResponse tutorSignup(TutorSignupRequest tutorSignupRequest, Multipa return userMapper.userToSignupResponse(savedUser); } + /** + * 유저 정보 조회 + * + * @param email 이메일 + * @return 유저 정보 응답 + */ + @Override + public UserInfoResponse getUserInfo(String email) { + User user = userJpaRepository.findByEmailAndState(email, ACTIVE) + .orElseThrow(() -> new BaseException(NOT_FIND_USER)); + return userMapper.userToUserInfoResponse(user); + } + /** * 프로필 이미지 처리