diff --git a/src/main/java/konkuk/thip/user/adapter/in/web/response/UserFollowersResponse.java b/src/main/java/konkuk/thip/user/adapter/in/web/response/UserFollowersResponse.java index 3ef9c4fdf..96955af43 100644 --- a/src/main/java/konkuk/thip/user/adapter/in/web/response/UserFollowersResponse.java +++ b/src/main/java/konkuk/thip/user/adapter/in/web/response/UserFollowersResponse.java @@ -18,7 +18,8 @@ public record FollowerDto( String profileImageUrl, String aliasName, String aliasColor, - Integer followerCount + Integer followerCount, + boolean isMyself ){ } diff --git a/src/main/java/konkuk/thip/user/application/mapper/FollowQueryMapper.java b/src/main/java/konkuk/thip/user/application/mapper/FollowQueryMapper.java index 4633e8b2e..de416e8c4 100644 --- a/src/main/java/konkuk/thip/user/application/mapper/FollowQueryMapper.java +++ b/src/main/java/konkuk/thip/user/application/mapper/FollowQueryMapper.java @@ -3,13 +3,22 @@ import konkuk.thip.user.adapter.in.web.response.UserFollowersResponse; import konkuk.thip.user.adapter.in.web.response.UserFollowingResponse; import konkuk.thip.user.application.port.out.dto.UserQueryDto; +import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import org.mapstruct.Named; @Mapper(componentModel = "spring") public interface FollowQueryMapper { - UserFollowersResponse.FollowerDto toFollowerDto(UserQueryDto dto); + // UserQueryDto의 userId와 Context로 넘어온 userId를 비교해서 true,false를 isMyself 필드에 주입 + @Mapping(target = "isMyself", source = "dto.userId", qualifiedByName = "isMyself") + UserFollowersResponse.FollowerDto toFollowerDto(UserQueryDto dto, @Context Long loginUserId); + + @Named("isMyself") + default boolean isMyself(Long userId, @Context Long loginUserId) { + return userId != null && userId.equals(loginUserId); + } @Mapping(target = "isFollowing", constant = "true") UserFollowingResponse.FollowingDto toFollowingDto(UserQueryDto dto); diff --git a/src/main/java/konkuk/thip/user/application/service/following/UserGetFollowService.java b/src/main/java/konkuk/thip/user/application/service/following/UserGetFollowService.java index 0c1bdf3da..469c7671a 100644 --- a/src/main/java/konkuk/thip/user/application/service/following/UserGetFollowService.java +++ b/src/main/java/konkuk/thip/user/application/service/following/UserGetFollowService.java @@ -36,7 +36,7 @@ public UserFollowersResponse getUserFollowers(Long userId, String cursor, int si ); var followers = result.contents().stream() - .map(followQueryMapper::toFollowerDto) + .map(dto -> followQueryMapper.toFollowerDto(dto, userId)) .toList(); return UserFollowersResponse.builder() diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java index e831645d4..c4b8d2610 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java @@ -263,7 +263,7 @@ void getFeedsByBook_cursor_paging_success() throws Exception { } @Test - @DisplayName("비공개 피드 제외 및 자기 자신 피드 제외 검증") + @DisplayName("비공개 피드 제외 검증") void getFeedsByBook_visibility_and_self_filter() throws Exception { // given AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); @@ -304,7 +304,7 @@ void getFeedsByBook_visibility_and_self_filter() throws Exception { JsonNode feeds = root.path("data").path("feeds"); // 자기 자신 글 제외 비공개 제외로 인해 only othersPublic 만 남아야 함 - assertThat(feeds.size()).isEqualTo(1); + assertThat(feeds.size()).isEqualTo(2); assertThat(feeds.get(0).path("creatorId").asLong()).isEqualTo(other.getUserId()); assertThat(feeds.get(0).path("isWriter").asBoolean()).isFalse(); }