diff --git a/src/main/kotlin/roomescape/common/entity/BaseEntity.kt b/src/main/kotlin/roomescape/common/entity/BaseEntity.kt index ae6d1516..3c821aa3 100644 --- a/src/main/kotlin/roomescape/common/entity/BaseEntity.kt +++ b/src/main/kotlin/roomescape/common/entity/BaseEntity.kt @@ -42,7 +42,7 @@ abstract class PersistableBaseEntity( @Transient private var isNewEntity: Boolean = true -): Persistable { +) : Persistable { @PostLoad @PostPersist fun markNotNew() { diff --git a/src/main/kotlin/roomescape/common/entity/BaseEntityV2.kt b/src/main/kotlin/roomescape/common/entity/BaseEntityV2.kt index fe07538e..021f4730 100644 --- a/src/main/kotlin/roomescape/common/entity/BaseEntityV2.kt +++ b/src/main/kotlin/roomescape/common/entity/BaseEntityV2.kt @@ -18,22 +18,18 @@ abstract class AuditingBaseEntity( @Column(updatable = false) @CreatedDate lateinit var createdAt: LocalDateTime - protected set @Column(updatable = false) @CreatedBy var createdBy: Long = 0L - protected set @Column @LastModifiedDate lateinit var updatedAt: LocalDateTime - protected set @Column @LastModifiedBy var updatedBy: Long = 0L - protected set } @MappedSuperclass diff --git a/src/main/kotlin/roomescape/common/log/ControllerLoggingAspect.kt b/src/main/kotlin/roomescape/common/log/ControllerLoggingAspect.kt index 6f31ac55..a56c19de 100644 --- a/src/main/kotlin/roomescape/common/log/ControllerLoggingAspect.kt +++ b/src/main/kotlin/roomescape/common/log/ControllerLoggingAspect.kt @@ -57,7 +57,7 @@ class ControllerLoggingAspect( ) if (log.isDebugEnabled()) { - convertResponseMessageRequest = convertResponseMessageRequest.copy( + convertResponseMessageRequest = convertResponseMessageRequest.copy( body = responseEntity.body ) } diff --git a/src/main/kotlin/roomescape/member/infrastructure/persistence/MemberEntity.kt b/src/main/kotlin/roomescape/member/infrastructure/persistence/MemberEntity.kt index 7ea5665d..2b287722 100644 --- a/src/main/kotlin/roomescape/member/infrastructure/persistence/MemberEntity.kt +++ b/src/main/kotlin/roomescape/member/infrastructure/persistence/MemberEntity.kt @@ -22,7 +22,7 @@ class MemberEntity( @Column(name = "role", nullable = false, length = 20) @Enumerated(value = EnumType.STRING) var role: Role -): BaseEntity() { +) : BaseEntity() { override fun getId(): Long? = _id fun isAdmin(): Boolean = role == Role.ADMIN diff --git a/src/main/kotlin/roomescape/payment/business/PaymentService.kt b/src/main/kotlin/roomescape/payment/business/PaymentService.kt index 32f43b64..8885dc18 100644 --- a/src/main/kotlin/roomescape/payment/business/PaymentService.kt +++ b/src/main/kotlin/roomescape/payment/business/PaymentService.kt @@ -10,19 +10,8 @@ import roomescape.payment.exception.PaymentException import roomescape.payment.infrastructure.client.PaymentClientCancelResponse import roomescape.payment.infrastructure.client.PaymentClientConfirmResponse import roomescape.payment.infrastructure.client.TosspayClient -import roomescape.payment.infrastructure.persistence.CanceledPaymentEntity -import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository -import roomescape.payment.infrastructure.persistence.PaymentDetailEntity -import roomescape.payment.infrastructure.persistence.PaymentDetailRepository -import roomescape.payment.infrastructure.persistence.PaymentEntity -import roomescape.payment.infrastructure.persistence.PaymentRepository -import roomescape.payment.web.PaymentCancelRequest -import roomescape.payment.web.PaymentConfirmRequest -import roomescape.payment.web.PaymentCreateResponse -import roomescape.payment.web.PaymentRetrieveResponse -import roomescape.payment.web.toCancelDetailResponse -import roomescape.payment.web.toPaymentDetailResponse -import roomescape.payment.web.toRetrieveResponse +import roomescape.payment.infrastructure.persistence.* +import roomescape.payment.web.* private val log: KLogger = KotlinLogging.logger {} diff --git a/src/main/kotlin/roomescape/payment/business/PaymentWriter.kt b/src/main/kotlin/roomescape/payment/business/PaymentWriter.kt index 4f20085a..52f9de11 100644 --- a/src/main/kotlin/roomescape/payment/business/PaymentWriter.kt +++ b/src/main/kotlin/roomescape/payment/business/PaymentWriter.kt @@ -10,12 +10,7 @@ import roomescape.payment.exception.PaymentException import roomescape.payment.infrastructure.client.* import roomescape.payment.infrastructure.common.PaymentMethod import roomescape.payment.infrastructure.common.PaymentType -import roomescape.payment.infrastructure.persistence.CanceledPaymentEntity -import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository -import roomescape.payment.infrastructure.persistence.PaymentDetailEntity -import roomescape.payment.infrastructure.persistence.PaymentDetailRepository -import roomescape.payment.infrastructure.persistence.PaymentEntity -import roomescape.payment.infrastructure.persistence.PaymentRepository +import roomescape.payment.infrastructure.persistence.* import java.time.LocalDateTime private val log: KLogger = KotlinLogging.logger {} diff --git a/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt b/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt index dc1a3c89..c8ea2652 100644 --- a/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt +++ b/src/main/kotlin/roomescape/payment/infrastructure/client/TosspayClient.kt @@ -61,7 +61,7 @@ private class ConfirmClient( private val errorHandler: TosspayErrorHandler = TosspayErrorHandler(objectMapper) - fun request(paymentKey: String, orderId: String, amount: Int): PaymentClientConfirmResponse { + fun request(paymentKey: String, orderId: String, amount: Int): PaymentClientConfirmResponse { val response = client.post() .uri(CONFIRM_URI) .contentType(MediaType.APPLICATION_JSON) diff --git a/src/main/kotlin/roomescape/payment/infrastructure/common/PaymentTypes.kt b/src/main/kotlin/roomescape/payment/infrastructure/common/PaymentTypes.kt index c2c5bf79..6ecabb80 100644 --- a/src/main/kotlin/roomescape/payment/infrastructure/common/PaymentTypes.kt +++ b/src/main/kotlin/roomescape/payment/infrastructure/common/PaymentTypes.kt @@ -23,9 +23,9 @@ enum class PaymentType( @JsonCreator(mode = JsonCreator.Mode.DELEGATING) fun get(name: String): PaymentType { return CACHE[name.uppercase()] ?: run { - log.warn { "[PaymentTypes.PaymentType] 결제 타입 조회 실패: type=$name" } - throw PaymentException(PaymentErrorCode.TYPE_NOT_FOUND) - } + log.warn { "[PaymentTypes.PaymentType] 결제 타입 조회 실패: type=$name" } + throw PaymentException(PaymentErrorCode.TYPE_NOT_FOUND) + } } } } @@ -163,9 +163,9 @@ enum class BankCode( val parsedCode = if (code.length == 2) "0$code" else code return CACHE[parsedCode] ?: run { - log.error { "[PaymentCode.BankCode] 은행 코드 조회 실패: code=$code" } - throw PaymentException(PaymentErrorCode.ORGANIZATION_CODE_NOT_FOUND) - } + log.error { "[PaymentCode.BankCode] 은행 코드 조회 실패: code=$code" } + throw PaymentException(PaymentErrorCode.ORGANIZATION_CODE_NOT_FOUND) + } } } } @@ -207,9 +207,9 @@ enum class CardIssuerCode( @JsonCreator(mode = JsonCreator.Mode.DELEGATING) fun get(code: String): CardIssuerCode { return CACHE[code] ?: run { - log.error { "[PaymentCode.CardIssuerCode] 카드사 코드 조회 실패: code=$code" } - throw PaymentException(PaymentErrorCode.ORGANIZATION_CODE_NOT_FOUND) - } + log.error { "[PaymentCode.CardIssuerCode] 카드사 코드 조회 실패: code=$code" } + throw PaymentException(PaymentErrorCode.ORGANIZATION_CODE_NOT_FOUND) + } } } } diff --git a/src/main/kotlin/roomescape/payment/infrastructure/persistence/PaymentDetailRepository.kt b/src/main/kotlin/roomescape/payment/infrastructure/persistence/PaymentDetailRepository.kt index a851c4ed..0efd93ae 100644 --- a/src/main/kotlin/roomescape/payment/infrastructure/persistence/PaymentDetailRepository.kt +++ b/src/main/kotlin/roomescape/payment/infrastructure/persistence/PaymentDetailRepository.kt @@ -2,6 +2,6 @@ package roomescape.payment.infrastructure.persistence import org.springframework.data.jpa.repository.JpaRepository -interface PaymentDetailRepository: JpaRepository { - fun findByPaymentId(paymentId: Long) : PaymentDetailEntity? +interface PaymentDetailRepository : JpaRepository { + fun findByPaymentId(paymentId: Long): PaymentDetailEntity? } diff --git a/src/main/kotlin/roomescape/payment/web/PaymentDTO.kt b/src/main/kotlin/roomescape/payment/web/PaymentDTO.kt index 07bb6e4f..4f6089c6 100644 --- a/src/main/kotlin/roomescape/payment/web/PaymentDTO.kt +++ b/src/main/kotlin/roomescape/payment/web/PaymentDTO.kt @@ -5,9 +5,7 @@ import roomescape.payment.exception.PaymentException import roomescape.payment.infrastructure.common.PaymentStatus import roomescape.payment.infrastructure.common.PaymentType import roomescape.payment.infrastructure.persistence.* -import roomescape.payment.web.PaymentDetailResponse.BankTransferDetailResponse -import roomescape.payment.web.PaymentDetailResponse.CardDetailResponse -import roomescape.payment.web.PaymentDetailResponse.EasyPayPrepaidDetailResponse +import roomescape.payment.web.PaymentDetailResponse.* import java.time.LocalDateTime import java.time.OffsetDateTime diff --git a/src/main/kotlin/roomescape/reservation/docs/ReservationAPI.kt b/src/main/kotlin/roomescape/reservation/docs/ReservationAPI.kt index cce392f3..dd3e6612 100644 --- a/src/main/kotlin/roomescape/reservation/docs/ReservationAPI.kt +++ b/src/main/kotlin/roomescape/reservation/docs/ReservationAPI.kt @@ -11,11 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody import roomescape.auth.web.support.LoginRequired import roomescape.auth.web.support.MemberId import roomescape.common.dto.response.CommonApiResponse -import roomescape.reservation.web.PendingReservationCreateRequest -import roomescape.reservation.web.PendingReservationCreateResponse -import roomescape.reservation.web.ReservationCancelRequest -import roomescape.reservation.web.ReservationDetailRetrieveResponse -import roomescape.reservation.web.ReservationSummaryRetrieveListResponse +import roomescape.reservation.web.* interface ReservationAPI { @@ -56,5 +52,4 @@ interface ReservationAPI { fun findDetailById( @PathVariable("id") id: Long ): ResponseEntity> - -} \ No newline at end of file +} diff --git a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationEntity.kt b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationEntity.kt index e8fc940e..7d8f7d0b 100644 --- a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationEntity.kt +++ b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationEntity.kt @@ -20,7 +20,7 @@ class CanceledReservationEntity( @Enumerated(value = EnumType.STRING) val status: CanceledReservationStatus, -): BaseEntityV2(id) + ) : BaseEntityV2(id) enum class CanceledReservationStatus { PROCESSING, FAILED, COMPLETED diff --git a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationRepository.kt b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationRepository.kt index 5b6ce866..5508bc11 100644 --- a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationRepository.kt +++ b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/CanceledReservationRepository.kt @@ -2,4 +2,4 @@ package roomescape.reservation.infrastructure.persistence import org.springframework.data.jpa.repository.JpaRepository -interface CanceledReservationRepository: JpaRepository \ No newline at end of file +interface CanceledReservationRepository : JpaRepository \ No newline at end of file diff --git a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt index 78ed6a95..48e68558 100644 --- a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt +++ b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt @@ -20,8 +20,7 @@ class ReservationEntity( @Enumerated(value = EnumType.STRING) var status: ReservationStatus, - - ) : AuditingBaseEntity(id) { +) : AuditingBaseEntity(id) { fun confirm() { this.status = ReservationStatus.CONFIRMED } diff --git a/src/main/kotlin/roomescape/schedule/business/ScheduleValidator.kt b/src/main/kotlin/roomescape/schedule/business/ScheduleValidator.kt index 34c427ad..4baf7790 100644 --- a/src/main/kotlin/roomescape/schedule/business/ScheduleValidator.kt +++ b/src/main/kotlin/roomescape/schedule/business/ScheduleValidator.kt @@ -23,7 +23,7 @@ class ScheduleValidator( fun validateCanDelete(schedule: ScheduleEntity) { val status: ScheduleStatus = schedule.status - if (status !in listOf(ScheduleStatus.AVAILABLE,ScheduleStatus.BLOCKED)) { + if (status !in listOf(ScheduleStatus.AVAILABLE, ScheduleStatus.BLOCKED)) { log.info { "[ScheduleValidator.validateCanDelete] 삭제 실패: id=${schedule.id} / status=${status}" } throw ScheduleException(ScheduleErrorCode.SCHEDULE_IN_USE) } diff --git a/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleEntity.kt b/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleEntity.kt index 60cd394f..e0198b84 100644 --- a/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleEntity.kt +++ b/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleEntity.kt @@ -1,10 +1,6 @@ package roomescape.schedule.infrastructure.persistence -import jakarta.persistence.Entity -import jakarta.persistence.EnumType -import jakarta.persistence.Enumerated -import jakarta.persistence.Table -import jakarta.persistence.UniqueConstraint +import jakarta.persistence.* import roomescape.common.entity.AuditingBaseEntity import java.time.LocalDate import java.time.LocalTime diff --git a/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt b/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt index 40879db1..98c3d960 100644 --- a/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt +++ b/src/main/kotlin/roomescape/schedule/infrastructure/persistence/ScheduleRepository.kt @@ -13,10 +13,12 @@ interface ScheduleRepository : JpaRepository { fun existsByDateAndThemeIdAndTime(date: LocalDate, themeId: Long, time: LocalTime): Boolean - @Query(""" + @Query( + """ SELECT DISTINCT s.themeId FROM ScheduleEntity s WHERE s.date = :date - """) + """ + ) fun findAllUniqueThemeIdByDate(date: LocalDate): List } diff --git a/src/main/kotlin/roomescape/theme/docs/ThemeApi.kt b/src/main/kotlin/roomescape/theme/docs/ThemeApi.kt index b3eaf563..284d7684 100644 --- a/src/main/kotlin/roomescape/theme/docs/ThemeApi.kt +++ b/src/main/kotlin/roomescape/theme/docs/ThemeApi.kt @@ -11,13 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody import roomescape.auth.web.support.Admin import roomescape.auth.web.support.LoginRequired import roomescape.common.dto.response.CommonApiResponse -import roomescape.theme.web.AdminThemeDetailRetrieveResponse -import roomescape.theme.web.AdminThemeSummaryRetrieveListResponse -import roomescape.theme.web.ThemeCreateRequest -import roomescape.theme.web.ThemeCreateResponseV2 -import roomescape.theme.web.ThemeListRetrieveRequest -import roomescape.theme.web.ThemeUpdateRequest -import roomescape.theme.web.ThemeSummaryListResponse +import roomescape.theme.web.* @Tag(name = "5. 관리자 테마 API", description = "관리자 페이지에서 테마를 조회 / 추가 / 삭제할 때 사용합니다.") interface ThemeAPIV2 { diff --git a/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeEntity.kt b/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeEntity.kt index efd0bd7f..df67be94 100644 --- a/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeEntity.kt +++ b/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeEntity.kt @@ -1,10 +1,6 @@ package roomescape.theme.infrastructure.persistence -import jakarta.persistence.Column -import jakarta.persistence.Entity -import jakarta.persistence.EnumType -import jakarta.persistence.Enumerated -import jakarta.persistence.Table +import jakarta.persistence.* import roomescape.common.entity.AuditingBaseEntity @Entity diff --git a/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeRepository.kt b/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeRepository.kt index e173196b..1773826b 100644 --- a/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeRepository.kt +++ b/src/main/kotlin/roomescape/theme/infrastructure/persistence/ThemeRepository.kt @@ -3,7 +3,7 @@ package roomescape.theme.infrastructure.persistence import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query -interface ThemeRepository: JpaRepository { +interface ThemeRepository : JpaRepository { @Query("SELECT t FROM ThemeEntity t WHERE t.isOpen = true") fun findOpenedThemes(): List diff --git a/src/test/kotlin/roomescape/common/config/JacksonConfigTest.kt b/src/test/kotlin/roomescape/common/config/JacksonConfigTest.kt index 1f6e5305..c4129dc2 100644 --- a/src/test/kotlin/roomescape/common/config/JacksonConfigTest.kt +++ b/src/test/kotlin/roomescape/common/config/JacksonConfigTest.kt @@ -6,11 +6,7 @@ import io.kotest.assertions.throwables.shouldThrow import io.kotest.core.spec.style.FunSpec import io.kotest.matchers.shouldBe import io.kotest.matchers.string.shouldContain -import java.time.LocalDate -import java.time.LocalDateTime -import java.time.LocalTime -import java.time.OffsetDateTime -import java.time.ZoneOffset +import java.time.* class JacksonConfigTest( private val objectMapper: ObjectMapper = JacksonConfig().objectMapper() diff --git a/src/test/kotlin/roomescape/common/log/ApiLogMessageConverterTest.kt b/src/test/kotlin/roomescape/common/log/ApiLogMessageConverterTest.kt index eb12d955..451c1598 100644 --- a/src/test/kotlin/roomescape/common/log/ApiLogMessageConverterTest.kt +++ b/src/test/kotlin/roomescape/common/log/ApiLogMessageConverterTest.kt @@ -1,7 +1,6 @@ package roomescape.common.log import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import io.kotest.core.spec.style.FunSpec import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe import io.mockk.every @@ -45,7 +44,11 @@ class ApiLogMessageConverterTest : StringSpec({ val requestURI = "/test/sangdol".also { every { request.requestURI } returns it } converter.convertToControllerInvokedMessage(request, controllerPayload) shouldBe """ - {"type":"CONTROLLER_INVOKED","method":"$method","uri":"$requestURI","member_id":1,"controller_method":"${controllerPayload.get("controller_method")}","request_body":{"key1":"value1"}} + {"type":"CONTROLLER_INVOKED","method":"$method","uri":"$requestURI","member_id":1,"controller_method":"${ + controllerPayload.get( + "controller_method" + ) + }","request_body":{"key1":"value1"}} """.trimIndent() } diff --git a/src/test/kotlin/roomescape/payment/TosspayClientTest.kt b/src/test/kotlin/roomescape/payment/TosspayClientTest.kt index 88f7ad66..d511e0b5 100644 --- a/src/test/kotlin/roomescape/payment/TosspayClientTest.kt +++ b/src/test/kotlin/roomescape/payment/TosspayClientTest.kt @@ -119,7 +119,7 @@ class TosspayClientTest( assertSoftly(cancelResponse) { this.status shouldBe PaymentStatus.CANCELED - with (this.cancels) { + with(this.cancels) { this.cancelAmount shouldBe SampleTosspayConstant.AMOUNT this.cancelReason shouldBe SampleTosspayConstant.CANCEL_REASON } @@ -135,7 +135,6 @@ class TosspayClientTest( .createResponse(it) } - val exception = shouldThrow { client.cancel( SampleTosspayConstant.PAYMENT_KEY, diff --git a/src/test/kotlin/roomescape/util/KotestConfig.kt b/src/test/kotlin/roomescape/util/KotestConfig.kt index 39abd06d..6833fe8e 100644 --- a/src/test/kotlin/roomescape/util/KotestConfig.kt +++ b/src/test/kotlin/roomescape/util/KotestConfig.kt @@ -26,7 +26,7 @@ object KotestConfig : AbstractProjectConfig() { @Import(TestConfig::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -abstract class FunSpecSpringbootTest: FunSpec({ +abstract class FunSpecSpringbootTest : FunSpec({ extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST)) }) { @Autowired