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);
+ }
+
/**
* 프로필 이미지 처리