diff --git a/src/main/java/com/parentsgowork/server/converter/UserConverter.java b/src/main/java/com/parentsgowork/server/converter/UserConverter.java index 8d83c20..946ae33 100644 --- a/src/main/java/com/parentsgowork/server/converter/UserConverter.java +++ b/src/main/java/com/parentsgowork/server/converter/UserConverter.java @@ -24,6 +24,21 @@ public static User toUser(UserRequestDTO.UserInfoDTO userInfoDTO) { .build(); } + public static UserResponseDTO.UserPageInfoDTO toGetUserInfo(User user) { + return UserResponseDTO.UserPageInfoDTO.builder() + .id(user.getId()) + .name(user.getName()) + .age(user.getAge()) + .gender(user.getGender()) + .region(user.getRegion()) + .job(user.getJob()) + .career(user.getCareer()) + .finalEdu(user.getFinalEdu()) + .build(); + } + + + public static UserResponseDTO.DeleteUserResponseDTO toDeletedUser(User deleteUser) { return UserResponseDTO.DeleteUserResponseDTO.builder() .name(deleteUser.getName()) diff --git a/src/main/java/com/parentsgowork/server/repository/UserRepository.java b/src/main/java/com/parentsgowork/server/repository/UserRepository.java index da66dd5..58376c2 100644 --- a/src/main/java/com/parentsgowork/server/repository/UserRepository.java +++ b/src/main/java/com/parentsgowork/server/repository/UserRepository.java @@ -1,5 +1,7 @@ package com.parentsgowork.server.repository; +import com.parentsgowork.server.domain.EducationInfo; +import com.parentsgowork.server.domain.JobInfo; import com.parentsgowork.server.domain.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; diff --git a/src/main/java/com/parentsgowork/server/service/userService/UserQueryService.java b/src/main/java/com/parentsgowork/server/service/userService/UserQueryService.java index f6c74f3..b978cb5 100644 --- a/src/main/java/com/parentsgowork/server/service/userService/UserQueryService.java +++ b/src/main/java/com/parentsgowork/server/service/userService/UserQueryService.java @@ -1,5 +1,10 @@ package com.parentsgowork.server.service.userService; +import com.parentsgowork.server.web.dto.UserDTO.UserResponseDTO; + public interface UserQueryService { + + UserResponseDTO.UserPageInfoDTO getUserPageInfo(Long userId); + boolean isUserInactive(Long userId); } diff --git a/src/main/java/com/parentsgowork/server/service/userService/UserQueryServiceImpl.java b/src/main/java/com/parentsgowork/server/service/userService/UserQueryServiceImpl.java index a92624a..bee8981 100644 --- a/src/main/java/com/parentsgowork/server/service/userService/UserQueryServiceImpl.java +++ b/src/main/java/com/parentsgowork/server/service/userService/UserQueryServiceImpl.java @@ -2,8 +2,10 @@ import com.parentsgowork.server.apiPayload.code.status.ErrorStatus; import com.parentsgowork.server.apiPayload.exception.UserHandler; +import com.parentsgowork.server.converter.UserConverter; import com.parentsgowork.server.domain.User; import com.parentsgowork.server.repository.UserRepository; +import com.parentsgowork.server.web.dto.UserDTO.UserResponseDTO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -15,6 +17,15 @@ public class UserQueryServiceImpl implements UserQueryService { private final UserRepository userRepository; + @Override + public UserResponseDTO.UserPageInfoDTO getUserPageInfo(Long userId) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new UserHandler(ErrorStatus.USER_NOT_FOUND)); + + return UserConverter.toGetUserInfo(user); + } + + @Override public boolean isUserInactive(Long userId) { User user = userRepository.findById(userId) .orElseThrow(() -> new UserHandler(ErrorStatus.USER_NOT_FOUND)); diff --git a/src/main/java/com/parentsgowork/server/web/controller/UserController.java b/src/main/java/com/parentsgowork/server/web/controller/UserController.java index 2379e8d..233cb7e 100644 --- a/src/main/java/com/parentsgowork/server/web/controller/UserController.java +++ b/src/main/java/com/parentsgowork/server/web/controller/UserController.java @@ -2,7 +2,9 @@ import com.parentsgowork.server.apiPayload.ApiResponse; import com.parentsgowork.server.service.userService.UserCommandService; +import com.parentsgowork.server.service.userService.UserQueryService; import com.parentsgowork.server.web.controller.specification.UserSpecification; +import com.parentsgowork.server.web.dto.PolicyInfoDTO.PolicyInfoResponseDTO; import com.parentsgowork.server.web.dto.UserDTO.UserRequestDTO; import com.parentsgowork.server.web.dto.UserDTO.UserResponseDTO; import io.swagger.v3.oas.annotations.tags.Tag; @@ -10,10 +12,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @Tag(name = "User", description = "사용자 관련 API") @RestController @@ -22,6 +23,17 @@ public class UserController implements UserSpecification { private final UserCommandService userCommandService; + private final UserQueryService userQueryService; + + @Override + @GetMapping("") + public ApiResponse getUserPageInfo() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Long userId = (Long) authentication.getPrincipal(); + + UserResponseDTO.UserPageInfoDTO response = userQueryService.getUserPageInfo(userId); + return ApiResponse.onSuccess(response); + } @Override @PatchMapping("/password") diff --git a/src/main/java/com/parentsgowork/server/web/controller/specification/UserSpecification.java b/src/main/java/com/parentsgowork/server/web/controller/specification/UserSpecification.java index c96f11a..42752ad 100644 --- a/src/main/java/com/parentsgowork/server/web/controller/specification/UserSpecification.java +++ b/src/main/java/com/parentsgowork/server/web/controller/specification/UserSpecification.java @@ -9,11 +9,21 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import jakarta.validation.Valid; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.RequestBody; public interface UserSpecification { + @GetMapping("") + @Operation(summary = "회원정보 조회 API", description = "회원정보를 조회하는 API입니다.") + @ApiResponses({ + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "⭕ SUCCESS, 성공"), + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "USER4001", description = "❌ 회원을 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ApiResponse.class))), + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON400", description = "❌ BAD, 잘못된 요청", content = @Content(schema = @Schema(implementation = ApiResponse.class))) + }) + ApiResponse getUserPageInfo(); + @PatchMapping("/password") @Operation(summary = "비밀번호 변경 API", description = "사용자의 비밀번호를 변경하는 API입니다.", security = @SecurityRequirement(name = "tempToken")) @ApiResponses({ diff --git a/src/main/java/com/parentsgowork/server/web/dto/UserDTO/UserResponseDTO.java b/src/main/java/com/parentsgowork/server/web/dto/UserDTO/UserResponseDTO.java index 5e79ff2..ac0e734 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/UserDTO/UserResponseDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/UserDTO/UserResponseDTO.java @@ -1,11 +1,31 @@ package com.parentsgowork.server.web.dto.UserDTO; +import com.parentsgowork.server.domain.enums.FinalEdu; +import com.parentsgowork.server.domain.enums.Gender; +import com.parentsgowork.server.domain.enums.Region; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; public class UserResponseDTO { + + // 마이페이지 회원 조회 DTO + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class UserPageInfoDTO { + private Long id; + private String name; + private int age; + private Gender gender; + private Region region; + private String job; + private Integer career; + private FinalEdu finalEdu; + } + // 회원 탈퇴 응답 DTO @Getter @Builder