diff --git a/notification-domain/src/main/kotlin/io/github/v1servicenotification/detail/spi/PostDetailUserSpi.kt b/notification-domain/src/main/kotlin/io/github/v1servicenotification/detail/spi/PostDetailUserSpi.kt index ba9dd872..bd4b4eaf 100644 --- a/notification-domain/src/main/kotlin/io/github/v1servicenotification/detail/spi/PostDetailUserSpi.kt +++ b/notification-domain/src/main/kotlin/io/github/v1servicenotification/detail/spi/PostDetailUserSpi.kt @@ -3,7 +3,7 @@ package io.github.v1servicenotification.detail.spi import java.util.UUID interface PostDetailUserSpi { - fun getExcludeUserIdList(userIdList: List): List + fun getExcludeUserIdList(userIdList: List?): List fun getDeviceToken(userId: UUID): String fun getDeviceTokenList(userIdList: List): List } diff --git a/notification-domain/src/main/kotlin/io/github/v1servicenotification/stubs/InMemoryUser.kt b/notification-domain/src/main/kotlin/io/github/v1servicenotification/stubs/InMemoryUser.kt index 944cb54c..7194b507 100644 --- a/notification-domain/src/main/kotlin/io/github/v1servicenotification/stubs/InMemoryUser.kt +++ b/notification-domain/src/main/kotlin/io/github/v1servicenotification/stubs/InMemoryUser.kt @@ -11,7 +11,7 @@ class InMemoryUser: PostDetailUserSpi { this.userId = userId } - override fun getExcludeUserIdList(userIdList: List): List { + override fun getExcludeUserIdList(userIdList: List?): List { return listOf(userId) } diff --git a/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/domain/user/domain/repository/CustomPostDetailUserImpl.kt b/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/domain/user/domain/repository/CustomPostDetailUserImpl.kt index 691ddc6f..16e06e5c 100644 --- a/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/domain/user/domain/repository/CustomPostDetailUserImpl.kt +++ b/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/domain/user/domain/repository/CustomPostDetailUserImpl.kt @@ -2,6 +2,7 @@ package io.github.v1servicenotification.domain.user.domain.repository import io.github.v1servicenotification.detail.spi.PostDetailUserSpi import io.github.v1servicenotification.infrastructure.feign.client.UserClient +import io.github.v1servicenotification.infrastructure.feign.client.dto.request.ExcludeUserIdsRequest import io.github.v1servicenotification.infrastructure.feign.error.FeignBadRequestException import org.springframework.stereotype.Component import java.util.UUID @@ -9,15 +10,16 @@ import java.util.UUID @Component class CustomPostDetailUserImpl( private val userClient: UserClient -): PostDetailUserSpi { - override fun getExcludeUserIdList(userIdList: List): List { - return userClient.getExcludeUserIdList(userIdList).userIdList +) : PostDetailUserSpi { + override fun getExcludeUserIdList(userIdList: List?): List { + val userIdsRequest = ExcludeUserIdsRequest(userIdList) + return userClient.getExcludeUserIdList(userIdsRequest).userIdList } override fun getDeviceToken(userId: UUID): String { val result = userClient.token(listOf(userId)).tokens - if(result.isEmpty()) { + if (result.isEmpty()) { throw FeignBadRequestException.EXCEPTION } return result[0] diff --git a/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/infrastructure/feign/client/UserClient.kt b/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/infrastructure/feign/client/UserClient.kt index 9f810c20..aebe76a5 100644 --- a/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/infrastructure/feign/client/UserClient.kt +++ b/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/infrastructure/feign/client/UserClient.kt @@ -1,9 +1,11 @@ package io.github.v1servicenotification.infrastructure.feign.client +import io.github.v1servicenotification.infrastructure.feign.client.dto.request.ExcludeUserIdsRequest import io.github.v1servicenotification.infrastructure.feign.client.dto.response.TokenResponse import io.github.v1servicenotification.infrastructure.feign.client.dto.response.UserIdListResponse import org.springframework.cloud.openfeign.FeignClient import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestParam import java.util.UUID @@ -14,5 +16,5 @@ interface UserClient { fun token(@RequestParam("users") userList: List): TokenResponse @GetMapping("/users/exclude") - fun getExcludeUserIdList(@RequestParam("users") userList: List): UserIdListResponse + fun getExcludeUserIdList(@RequestBody request: ExcludeUserIdsRequest): UserIdListResponse } diff --git a/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/infrastructure/feign/client/dto/request/ExcludeUserIdsRequest.kt b/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/infrastructure/feign/client/dto/request/ExcludeUserIdsRequest.kt new file mode 100644 index 00000000..b8d5b85a --- /dev/null +++ b/notification-infrastructure/src/main/kotlin/io/github/v1servicenotification/infrastructure/feign/client/dto/request/ExcludeUserIdsRequest.kt @@ -0,0 +1,9 @@ +package io.github.v1servicenotification.infrastructure.feign.client.dto.request + +import java.util.UUID +import javax.annotation.Nullable + +data class ExcludeUserIdsRequest( + @field:Nullable + val userIds: List?, +)