diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/client/UserClientInfoResponses.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/client/UserClientInfoResponses.java index 4c9cc03f..b71db662 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/client/UserClientInfoResponses.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/client/UserClientInfoResponses.java @@ -1,8 +1,9 @@ package com.asyncgate.guild_server.client; +import java.time.LocalDate; import java.util.List; public record UserClientInfoResponses(List responses) { - public record UserClientInfoResponse(String userId, String name, String nickname, String profileImageUrl) { + public record UserClientInfoResponse(String userId, String name, String nickname, String profileImageUrl, String email, LocalDate birth) { } } diff --git a/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java b/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java index 3258ad4c..434058e5 100644 --- a/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java +++ b/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java @@ -1,13 +1,18 @@ package com.asyncgate.user_server.controller; import com.asyncgate.user_server.controller.docs.MemberControllerDocs; -import com.asyncgate.user_server.dto.request.*; +import com.asyncgate.user_server.dto.request.LoginMemberRequest; +import com.asyncgate.user_server.dto.request.RegisterTemporaryMemberRequest; +import com.asyncgate.user_server.dto.request.UpdateDeviceTokenRequest; +import com.asyncgate.user_server.dto.request.ValidateAuthenticationCodeRequest; import com.asyncgate.user_server.dto.response.CheckEmailDuplicateResponse; import com.asyncgate.user_server.dto.response.DefaultJsonWebTokenResponse; import com.asyncgate.user_server.dto.response.UserClientInfoResponses; +import com.asyncgate.user_server.dto.response.UserClientInfoResponses.UserClientInfoResponse; import com.asyncgate.user_server.security.annotation.MemberID; import com.asyncgate.user_server.support.response.SuccessResponse; import com.asyncgate.user_server.usecase.*; +import io.swagger.v3.oas.annotations.Hidden; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -85,7 +90,7 @@ public SuccessResponse checkEmailDuplicate( @Override @PatchMapping("/device-token") public SuccessResponse updateDeviceToken( - @MemberID final String userId, + final @MemberID String userId, @RequestBody final UpdateDeviceTokenRequest request ) { UpdateDeviceTokenUseCase.execute(userId, request); @@ -98,7 +103,7 @@ public SuccessResponse updateDeviceToken( @Override @PatchMapping("/info") public SuccessResponse updateUserInfo( - @MemberID final String userId, + final @MemberID String userId, @RequestPart(value = "name", required = false) final String name, @RequestPart(value = "nickname", required = false) final String nickname, @RequestPart(value = "profile_image", required = false) final MultipartFile profileImage @@ -112,20 +117,31 @@ public SuccessResponse updateUserInfo( */ @Override @DeleteMapping("/auth") - public SuccessResponse deleteUser(@MemberID final String userId) { + public SuccessResponse deleteUser(final @MemberID String userId) { DeleteUserUseCase.execute(userId); return SuccessResponse.ok("회원탈퇴 완료"); } + /* + 서버 내부 통신 전용 + */ + @Hidden @GetMapping("/users") public SuccessResponse getMembers( @RequestParam(required = false) List memberIds ) { - UserClientInfoResponses byUserIds = findUserInfoUseCase.getByUserIds(memberIds); System.out.println("byUserIds = " + byUserIds); return SuccessResponse.ok( byUserIds ); } + + @GetMapping("/info") + public SuccessResponse getMemberInfo(final @MemberID String userId) { + UserClientInfoResponse response = findUserInfoUseCase.getByUserId(userId); + return SuccessResponse.ok( + response + ); + } } \ No newline at end of file diff --git a/src/backend/user-server/src/main/java/com/asyncgate/user_server/dto/response/UserClientInfoResponses.java b/src/backend/user-server/src/main/java/com/asyncgate/user_server/dto/response/UserClientInfoResponses.java index 974d6596..83ac7fd1 100644 --- a/src/backend/user-server/src/main/java/com/asyncgate/user_server/dto/response/UserClientInfoResponses.java +++ b/src/backend/user-server/src/main/java/com/asyncgate/user_server/dto/response/UserClientInfoResponses.java @@ -2,6 +2,7 @@ import com.asyncgate.user_server.domain.Member; +import java.time.LocalDate; import java.util.List; public record UserClientInfoResponses(List responses) { @@ -13,10 +14,10 @@ public static UserClientInfoResponses from(List members) { ); } - private record UserClientInfoResponse(String userId, String name, String nickname, String profileImageUrl) { - private static UserClientInfoResponse from(final Member member) { + public record UserClientInfoResponse(String userId, String name, String nickname, String profileImageUrl, String email, LocalDate birth) { + public static UserClientInfoResponse from(final Member member) { return new UserClientInfoResponse( - member.getId(), member.getName(), member.getNickname(), member.getProfileImgUrl() + member.getId(), member.getName(), member.getNickname(), member.getProfileImgUrl(), member.getEmail(), member.getBirth() ); } } diff --git a/src/backend/user-server/src/main/java/com/asyncgate/user_server/service/FindUserInfoService.java b/src/backend/user-server/src/main/java/com/asyncgate/user_server/service/FindUserInfoService.java index a9e13c68..a505f423 100644 --- a/src/backend/user-server/src/main/java/com/asyncgate/user_server/service/FindUserInfoService.java +++ b/src/backend/user-server/src/main/java/com/asyncgate/user_server/service/FindUserInfoService.java @@ -1,6 +1,10 @@ package com.asyncgate.user_server.service; +import com.asyncgate.user_server.domain.Member; import com.asyncgate.user_server.dto.response.UserClientInfoResponses; +import com.asyncgate.user_server.dto.response.UserClientInfoResponses.UserClientInfoResponse; +import com.asyncgate.user_server.exception.FailType; +import com.asyncgate.user_server.exception.UserServerException; import com.asyncgate.user_server.repository.MemberRepository; import com.asyncgate.user_server.usecase.FindUserInfoUseCase; import lombok.RequiredArgsConstructor; @@ -22,4 +26,11 @@ public UserClientInfoResponses getByUserIds(final List memberIds) { memberRepository.getByMemberIds(memberIds) ); } + + @Override + public UserClientInfoResponse getByUserId(final String userId) { + Member member = memberRepository.findById(userId) + .orElseThrow(() -> new UserServerException(FailType.MEMBER_NOT_FOUND)); + return UserClientInfoResponse.from(member); + } } diff --git a/src/backend/user-server/src/main/java/com/asyncgate/user_server/usecase/FindUserInfoUseCase.java b/src/backend/user-server/src/main/java/com/asyncgate/user_server/usecase/FindUserInfoUseCase.java index 5ffa26f0..9540d22c 100644 --- a/src/backend/user-server/src/main/java/com/asyncgate/user_server/usecase/FindUserInfoUseCase.java +++ b/src/backend/user-server/src/main/java/com/asyncgate/user_server/usecase/FindUserInfoUseCase.java @@ -1,10 +1,13 @@ package com.asyncgate.user_server.usecase; import com.asyncgate.user_server.dto.response.UserClientInfoResponses; +import com.asyncgate.user_server.dto.response.UserClientInfoResponses.UserClientInfoResponse; import java.util.List; public interface FindUserInfoUseCase { UserClientInfoResponses getByUserIds(List memberIds); + + UserClientInfoResponse getByUserId(String userId); }