diff --git a/src/main/java/com/back/web7_9_codecrete_be/domain/users/controller/UserController.java b/src/main/java/com/back/web7_9_codecrete_be/domain/users/controller/UserController.java index d294ff74..b38eb8de 100644 --- a/src/main/java/com/back/web7_9_codecrete_be/domain/users/controller/UserController.java +++ b/src/main/java/com/back/web7_9_codecrete_be/domain/users/controller/UserController.java @@ -5,6 +5,7 @@ import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdateBirthRequest; import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdateNicknameRequest; import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdatePasswordRequest; +import com.back.web7_9_codecrete_be.domain.users.dto.response.UserPublicResponse; import com.back.web7_9_codecrete_be.domain.users.dto.response.UserResponse; import com.back.web7_9_codecrete_be.domain.users.dto.response.UserSettingResponse; import com.back.web7_9_codecrete_be.domain.users.entity.User; @@ -118,4 +119,13 @@ public RsData updateMySettings( userService.updateMySettings(user, req); return RsData.success("유저 설정 수정 성공"); } + + @Operation(summary = "유저 ID로 사용자 정보 조회", description = "유저 ID를 기반으로 공개 가능한 사용자 정보를 조회합니다.") + @GetMapping("/{userId}") + public RsData getUserById( + @PathVariable Long userId + ) { + UserPublicResponse response = userService.getUserById(userId); + return RsData.success("사용자 정보 조회 성공", response); + } } diff --git a/src/main/java/com/back/web7_9_codecrete_be/domain/users/dto/response/UserPublicResponse.java b/src/main/java/com/back/web7_9_codecrete_be/domain/users/dto/response/UserPublicResponse.java new file mode 100644 index 00000000..8da6a2c2 --- /dev/null +++ b/src/main/java/com/back/web7_9_codecrete_be/domain/users/dto/response/UserPublicResponse.java @@ -0,0 +1,22 @@ +package com.back.web7_9_codecrete_be.domain.users.dto.response; + + +import com.back.web7_9_codecrete_be.domain.users.entity.User; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class UserPublicResponse { + private Long id; + private String nickname; + private String profileImageUrl; + + public static UserPublicResponse from(User user) { + return UserPublicResponse.builder() + .id(user.getId()) + .nickname(user.getNickname()) + .profileImageUrl(user.getProfileImage()) + .build(); + } +} diff --git a/src/main/java/com/back/web7_9_codecrete_be/domain/users/service/UserService.java b/src/main/java/com/back/web7_9_codecrete_be/domain/users/service/UserService.java index 4560681d..a9d12539 100644 --- a/src/main/java/com/back/web7_9_codecrete_be/domain/users/service/UserService.java +++ b/src/main/java/com/back/web7_9_codecrete_be/domain/users/service/UserService.java @@ -8,6 +8,7 @@ import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdateBirthRequest; import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdateNicknameRequest; import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdatePasswordRequest; +import com.back.web7_9_codecrete_be.domain.users.dto.response.UserPublicResponse; import com.back.web7_9_codecrete_be.domain.users.dto.response.UserResponse; import com.back.web7_9_codecrete_be.domain.users.dto.response.UserSettingResponse; import com.back.web7_9_codecrete_be.domain.users.entity.SocialType; @@ -260,4 +261,11 @@ public void updateMySettings(User user, UserSettingUpdateRequest req) { setting.changeDarkMode(req.getDarkMode()); } } + + public UserPublicResponse getUserById(Long userId) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new BusinessException(UserErrorCode.USER_NOT_FOUND)); + + return UserPublicResponse.from(user); + } }