From 038381424cf73dd1d661c5e018340bad1240993f Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 7 Oct 2025 17:03:49 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20user=20=EB=82=B4=20DTO,=20Mapper=20?= =?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/ReservationService.kt | 3 +-- .../reservation/web/ReservationDto.kt | 2 +- .../roomescape/user/business/UserService.kt | 12 +++++----- .../sangdol/roomescape/user/docs/UserAPI.kt | 6 ++--- .../{web/UserDTO.kt => dto/UserCreateDTO.kt} | 18 +-------------- .../roomescape/user/dto/UserFindDTO.kt | 8 +++++++ .../user/{business => }/dto/UserLoginDTO.kt | 11 ++-------- .../user/mapper/UserMappingExtensions.kt | 22 +++++++++++++++++++ .../roomescape/user/web/UserController.kt | 3 +++ .../sangdol/data/DefaultDataInitializer.kt | 2 +- .../sangdol/roomescape/supports/Fixtures.kt | 4 ++-- .../roomescape/supports/TestAuthUtil.kt | 2 +- .../sangdol/roomescape/user/UserApiTest.kt | 4 ++-- 13 files changed, 53 insertions(+), 44 deletions(-) rename service/src/main/kotlin/com/sangdol/roomescape/user/{web/UserDTO.kt => dto/UserCreateDTO.kt} (65%) create mode 100644 service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserFindDTO.kt rename service/src/main/kotlin/com/sangdol/roomescape/user/{business => }/dto/UserLoginDTO.kt (65%) create mode 100644 service/src/main/kotlin/com/sangdol/roomescape/user/mapper/UserMappingExtensions.kt diff --git a/service/src/main/kotlin/com/sangdol/roomescape/reservation/business/ReservationService.kt b/service/src/main/kotlin/com/sangdol/roomescape/reservation/business/ReservationService.kt index 00ef7fa7..48a680f6 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/reservation/business/ReservationService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/reservation/business/ReservationService.kt @@ -13,7 +13,7 @@ import com.sangdol.roomescape.schedule.infrastructure.persistence.ScheduleStatus import com.sangdol.roomescape.schedule.web.ScheduleOverviewResponse import com.sangdol.roomescape.theme.business.ThemeService import com.sangdol.roomescape.user.business.UserService -import com.sangdol.roomescape.user.web.UserContactResponse +import com.sangdol.roomescape.user.dto.UserContactResponse import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging import org.springframework.data.repository.findByIdOrNull @@ -159,5 +159,4 @@ class ReservationService( } } - } diff --git a/service/src/main/kotlin/com/sangdol/roomescape/reservation/web/ReservationDto.kt b/service/src/main/kotlin/com/sangdol/roomescape/reservation/web/ReservationDto.kt index 6a950ff6..c932910d 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/reservation/web/ReservationDto.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/reservation/web/ReservationDto.kt @@ -4,7 +4,7 @@ import com.sangdol.roomescape.payment.web.PaymentWithDetailResponse import com.sangdol.roomescape.reservation.infrastructure.persistence.ReservationEntity import com.sangdol.roomescape.reservation.infrastructure.persistence.ReservationStatus import com.sangdol.roomescape.schedule.web.ScheduleOverviewResponse -import com.sangdol.roomescape.user.web.UserContactResponse +import com.sangdol.roomescape.user.dto.UserContactResponse import jakarta.validation.constraints.NotEmpty import java.time.Instant import java.time.LocalDate diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/business/UserService.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/business/UserService.kt index e84a49ce..ecf8c7db 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/user/business/UserService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/business/UserService.kt @@ -2,15 +2,15 @@ package com.sangdol.roomescape.user.business import com.sangdol.common.persistence.IDGenerator import com.sangdol.roomescape.common.types.CurrentUserContext -import com.sangdol.roomescape.user.business.dto.UserLoginCredentials -import com.sangdol.roomescape.user.business.dto.toCredentials +import com.sangdol.roomescape.user.dto.UserContactResponse +import com.sangdol.roomescape.user.dto.UserCreateRequest +import com.sangdol.roomescape.user.dto.UserCreateResponse +import com.sangdol.roomescape.user.dto.UserLoginCredentials import com.sangdol.roomescape.user.exception.UserErrorCode import com.sangdol.roomescape.user.exception.UserException import com.sangdol.roomescape.user.infrastructure.persistence.* -import com.sangdol.roomescape.user.web.UserContactResponse -import com.sangdol.roomescape.user.web.UserCreateRequest -import com.sangdol.roomescape.user.web.UserCreateResponse -import com.sangdol.roomescape.user.web.toEntity +import com.sangdol.roomescape.user.mapper.toCredentials +import com.sangdol.roomescape.user.mapper.toEntity import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging import org.springframework.data.repository.findByIdOrNull diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/docs/UserAPI.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/docs/UserAPI.kt index 6e3d116d..4c1069cb 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/user/docs/UserAPI.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/docs/UserAPI.kt @@ -4,9 +4,9 @@ import com.sangdol.common.types.web.CommonApiResponse import com.sangdol.roomescape.auth.web.support.Public import com.sangdol.roomescape.auth.web.support.User import com.sangdol.roomescape.common.types.CurrentUserContext -import com.sangdol.roomescape.user.web.UserContactResponse -import com.sangdol.roomescape.user.web.UserCreateRequest -import com.sangdol.roomescape.user.web.UserCreateResponse +import com.sangdol.roomescape.user.dto.UserContactResponse +import com.sangdol.roomescape.user.dto.UserCreateRequest +import com.sangdol.roomescape.user.dto.UserCreateResponse import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.responses.ApiResponses diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/web/UserDTO.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserCreateDTO.kt similarity index 65% rename from service/src/main/kotlin/com/sangdol/roomescape/user/web/UserDTO.kt rename to service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserCreateDTO.kt index d77e3ba0..cbeed230 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/user/web/UserDTO.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserCreateDTO.kt @@ -1,4 +1,4 @@ -package com.sangdol.roomescape.user.web +package com.sangdol.roomescape.user.dto import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus @@ -27,23 +27,7 @@ data class UserCreateRequest( val regionCode: String?, ) -fun UserCreateRequest.toEntity(id: Long, status: UserStatus) = UserEntity( - id = id, - name = this.name, - email = this.email, - password = this.password, - phone = this.phone, - regionCode = this.regionCode, - status = status -) - data class UserCreateResponse( val id: Long, val name: String ) - -data class UserContactResponse( - val id: Long, - val name: String, - val phone: String -) diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserFindDTO.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserFindDTO.kt new file mode 100644 index 00000000..27550966 --- /dev/null +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserFindDTO.kt @@ -0,0 +1,8 @@ +package com.sangdol.roomescape.user.dto + +data class UserContactResponse( + val id: Long, + val name: String, + val phone: String +) + diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/business/dto/UserLoginDTO.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserLoginDTO.kt similarity index 65% rename from service/src/main/kotlin/com/sangdol/roomescape/user/business/dto/UserLoginDTO.kt rename to service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserLoginDTO.kt index deb3dc6e..241616ef 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/user/business/dto/UserLoginDTO.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserLoginDTO.kt @@ -1,8 +1,7 @@ -package com.sangdol.roomescape.user.business.dto +package com.sangdol.roomescape.user.dto import com.sangdol.roomescape.auth.web.LoginCredentials import com.sangdol.roomescape.auth.web.LoginSuccessResponse -import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity data class UserLoginCredentials( override val id: Long, @@ -15,13 +14,7 @@ data class UserLoginCredentials( ) } -fun UserEntity.toCredentials() = UserLoginCredentials( - id = this.id, - password = this.password, - name = this.name, -) - data class UserLoginSuccessResponse( override val accessToken: String, override val name: String, -) : LoginSuccessResponse() \ No newline at end of file +) : LoginSuccessResponse() diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/mapper/UserMappingExtensions.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/mapper/UserMappingExtensions.kt new file mode 100644 index 00000000..5a43d7cd --- /dev/null +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/mapper/UserMappingExtensions.kt @@ -0,0 +1,22 @@ +package com.sangdol.roomescape.user.mapper + +import com.sangdol.roomescape.user.dto.UserCreateRequest +import com.sangdol.roomescape.user.dto.UserLoginCredentials +import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity +import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus + +fun UserCreateRequest.toEntity(id: Long, status: UserStatus) = UserEntity( + id = id, + name = this.name, + email = this.email, + password = this.password, + phone = this.phone, + regionCode = this.regionCode, + status = status +) + +fun UserEntity.toCredentials() = UserLoginCredentials( + id = this.id, + password = this.password, + name = this.name, +) \ No newline at end of file diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/web/UserController.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/web/UserController.kt index 097830ee..ecbaa665 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/user/web/UserController.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/web/UserController.kt @@ -5,6 +5,9 @@ import com.sangdol.roomescape.auth.web.support.User import com.sangdol.roomescape.common.types.CurrentUserContext import com.sangdol.roomescape.user.business.UserService import com.sangdol.roomescape.user.docs.UserAPI +import com.sangdol.roomescape.user.dto.UserContactResponse +import com.sangdol.roomescape.user.dto.UserCreateRequest +import com.sangdol.roomescape.user.dto.UserCreateResponse import jakarta.validation.Valid import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.* diff --git a/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt b/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt index 6ba28855..e4b1f55c 100644 --- a/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt +++ b/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt @@ -19,7 +19,7 @@ import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeEntity import com.sangdol.roomescape.user.business.SIGNUP import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus -import com.sangdol.roomescape.user.web.UserContactResponse +import com.sangdol.roomescape.user.dto.UserContactResponse import io.kotest.core.test.TestCaseOrder import jakarta.persistence.EntityManager import kotlinx.coroutines.* diff --git a/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt b/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt index 750d94a3..2d0db551 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt @@ -22,8 +22,8 @@ import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeEntity import com.sangdol.roomescape.theme.web.ThemeCreateRequest import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus -import com.sangdol.roomescape.user.web.MIN_PASSWORD_LENGTH -import com.sangdol.roomescape.user.web.UserCreateRequest +import com.sangdol.roomescape.user.dto.MIN_PASSWORD_LENGTH +import com.sangdol.roomescape.user.dto.UserCreateRequest import java.time.LocalDate import java.time.LocalTime diff --git a/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt b/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt index 90f111c4..766f2c2d 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt @@ -9,7 +9,7 @@ import com.sangdol.roomescape.auth.web.PrincipalType import com.sangdol.roomescape.store.infrastructure.persistence.StoreRepository import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserRepository -import com.sangdol.roomescape.user.web.UserCreateRequest +import com.sangdol.roomescape.user.dto.UserCreateRequest import io.restassured.module.kotlin.extensions.Extract import io.restassured.module.kotlin.extensions.Given import io.restassured.module.kotlin.extensions.Then diff --git a/service/src/test/kotlin/com/sangdol/roomescape/user/UserApiTest.kt b/service/src/test/kotlin/com/sangdol/roomescape/user/UserApiTest.kt index 108152a6..5366c840 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/user/UserApiTest.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/user/UserApiTest.kt @@ -12,8 +12,8 @@ import com.sangdol.roomescape.supports.runTest import com.sangdol.roomescape.user.business.SIGNUP import com.sangdol.roomescape.user.exception.UserErrorCode import com.sangdol.roomescape.user.infrastructure.persistence.* -import com.sangdol.roomescape.user.web.MIN_PASSWORD_LENGTH -import com.sangdol.roomescape.user.web.UserCreateRequest +import com.sangdol.roomescape.user.dto.MIN_PASSWORD_LENGTH +import com.sangdol.roomescape.user.dto.UserCreateRequest import io.kotest.assertions.assertSoftly import io.kotest.matchers.shouldBe import io.mockk.every