diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java b/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java index 9f558af2..5525c84a 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java @@ -10,6 +10,7 @@ import org.hankki.hankkiserver.api.favorite.service.FavoriteQueryService; import org.hankki.hankkiserver.api.favorite.service.command.*; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteGetResponse; +import org.hankki.hankkiserver.api.favorite.service.response.FavoriteUserNicknameGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteOwnershipGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoritesWithStatusGetResponse; import org.hankki.hankkiserver.auth.UserId; @@ -78,4 +79,9 @@ public HankkiResponse createSharedFavorite(@UserId final Long userId, @Pat public HankkiResponse checkFavoriteOwnership(@UserId Long userId, @PathVariable("favoriteId") final long favoriteId) { return HankkiResponse.success(CommonSuccessCode.OK, favoriteQueryService.checkFavoriteOwnership(FavoriteOwnershipGetCommand.of(userId, favoriteId))); } + + @GetMapping("/favorites/{favoriteId}/users/me") + public HankkiResponse getFavoriteUserNickname(@PathVariable("favoriteId") final long id) { + return HankkiResponse.success(CommonSuccessCode.OK, favoriteQueryService.getFavoriteUserNickname(id)); + } } diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java index 8777f954..75410d68 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java @@ -2,10 +2,12 @@ import java.util.ArrayList; import lombok.RequiredArgsConstructor; +import org.hankki.hankkiserver.api.auth.service.UserInfoFinder; import org.hankki.hankkiserver.api.favorite.service.command.FavoriteOwnershipGetCommand; import org.hankki.hankkiserver.api.favorite.service.command.FavoritesGetCommand; import org.hankki.hankkiserver.api.favorite.service.command.FavoritesWithStatusGetCommand; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteGetResponse; +import org.hankki.hankkiserver.api.favorite.service.response.FavoriteUserNicknameGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteOwnershipGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoritesWithStatusGetResponse; import org.hankki.hankkiserver.api.store.service.StoreFinder; @@ -25,6 +27,7 @@ public class FavoriteQueryService { private final FavoriteFinder favoriteFinder; private final StoreFinder storeFinder; + private final UserInfoFinder userInfoFinder; @Transactional(readOnly = true) public FavoriteGetResponse findFavorite(final FavoritesGetCommand command) { @@ -59,6 +62,7 @@ private boolean favoriteHasNoStore(final Favorite favorite) { return favorite.getFavoriteStores().isEmpty(); } + @Transactional(readOnly = true) public FavoriteOwnershipGetResponse checkFavoriteOwnership(final FavoriteOwnershipGetCommand command) { return FavoriteOwnershipGetResponse.of(isOwner(getOwnerIdById(command.favoriteId()), command.userId())); } @@ -70,4 +74,13 @@ private long getOwnerIdById(final long id) { private boolean isOwner(final long ownerId, final long userId) { return ownerId == userId; } + + @Transactional(readOnly = true) + public FavoriteUserNicknameGetResponse getFavoriteUserNickname(final long id) { + return FavoriteUserNicknameGetResponse.of(getNicknameByOwnerId(getOwnerIdById(id))); + } + + private String getNicknameByOwnerId(final long userId) { + return userInfoFinder.getUserInfo(userId).getNickname(); + } } diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteUserNicknameGetResponse.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteUserNicknameGetResponse.java new file mode 100644 index 00000000..7c611a9a --- /dev/null +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteUserNicknameGetResponse.java @@ -0,0 +1,9 @@ +package org.hankki.hankkiserver.api.favorite.service.response; + +public record FavoriteUserNicknameGetResponse( + String nickname +) { + public static FavoriteUserNicknameGetResponse of(final String nickname) { + return new FavoriteUserNicknameGetResponse(nickname); + } +}