diff --git a/src/main/java/com/threestar/trainus/domain/user/controller/UserController.java b/src/main/java/com/threestar/trainus/domain/user/controller/UserController.java index 177e8af..d19bbfd 100644 --- a/src/main/java/com/threestar/trainus/domain/user/controller/UserController.java +++ b/src/main/java/com/threestar/trainus/domain/user/controller/UserController.java @@ -2,6 +2,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -17,6 +18,7 @@ import com.threestar.trainus.domain.user.dto.PasswordUpdateDto; import com.threestar.trainus.domain.user.dto.SignupRequestDto; import com.threestar.trainus.domain.user.dto.SignupResponseDto; +import com.threestar.trainus.domain.user.dto.UserInfoResponseDto; import com.threestar.trainus.domain.user.service.EmailVerificationService; import com.threestar.trainus.domain.user.service.UserService; import com.threestar.trainus.global.annotation.LoginUser; @@ -100,4 +102,13 @@ public ResponseEntity> updatePassword( userService.updatePassword(request, loginUserId); return BaseResponse.ok("비밀번호 변경이 완료되었습니다.", null, HttpStatus.OK); } + + @GetMapping("/me") + @Operation(summary = "현재 로그인한 사용자 정보 조회 api") + public ResponseEntity> getCurrentUser( + @LoginUser Long loginUserId + ) { + UserInfoResponseDto response = userService.getCurrentUserInfo(loginUserId); + return BaseResponse.ok("사용자 정보 조회가 완료되었습니다.", response, HttpStatus.OK); + } } diff --git a/src/main/java/com/threestar/trainus/domain/user/dto/UserInfoResponseDto.java b/src/main/java/com/threestar/trainus/domain/user/dto/UserInfoResponseDto.java new file mode 100644 index 0000000..bdb861f --- /dev/null +++ b/src/main/java/com/threestar/trainus/domain/user/dto/UserInfoResponseDto.java @@ -0,0 +1,7 @@ +package com.threestar.trainus.domain.user.dto; + +public record UserInfoResponseDto( + Long userId, + String nickname +) { +} diff --git a/src/main/java/com/threestar/trainus/domain/user/mapper/UserMapper.java b/src/main/java/com/threestar/trainus/domain/user/mapper/UserMapper.java index 084ff76..531812d 100644 --- a/src/main/java/com/threestar/trainus/domain/user/mapper/UserMapper.java +++ b/src/main/java/com/threestar/trainus/domain/user/mapper/UserMapper.java @@ -3,6 +3,7 @@ import com.threestar.trainus.domain.user.dto.LoginResponseDto; import com.threestar.trainus.domain.user.dto.SignupRequestDto; import com.threestar.trainus.domain.user.dto.SignupResponseDto; +import com.threestar.trainus.domain.user.dto.UserInfoResponseDto; import com.threestar.trainus.domain.user.entity.User; import com.threestar.trainus.domain.user.entity.UserRole; @@ -38,4 +39,11 @@ public static LoginResponseDto toLoginResponseDto(User user) { user.getNickname() ); } + + public static UserInfoResponseDto toUserInfoResponseDto(User user) { + return new UserInfoResponseDto( + user.getId(), + user.getNickname() + ); + } } diff --git a/src/main/java/com/threestar/trainus/domain/user/service/UserService.java b/src/main/java/com/threestar/trainus/domain/user/service/UserService.java index 8b88b10..fdcde1f 100644 --- a/src/main/java/com/threestar/trainus/domain/user/service/UserService.java +++ b/src/main/java/com/threestar/trainus/domain/user/service/UserService.java @@ -14,6 +14,7 @@ import com.threestar.trainus.domain.user.dto.PasswordUpdateDto; import com.threestar.trainus.domain.user.dto.SignupRequestDto; import com.threestar.trainus.domain.user.dto.SignupResponseDto; +import com.threestar.trainus.domain.user.dto.UserInfoResponseDto; import com.threestar.trainus.domain.user.entity.User; import com.threestar.trainus.domain.user.entity.UserRole; import com.threestar.trainus.domain.user.mapper.UserMapper; @@ -138,4 +139,10 @@ public void updatePassword(PasswordUpdateDto request, Long userId) { userRepository.save(user); } + + @Transactional(readOnly = true) + public UserInfoResponseDto getCurrentUserInfo(Long userId) { + User user = getUserById(userId); + return UserMapper.toUserInfoResponseDto(user); + } }