chore: payment 패키지 구조 변경

This commit is contained in:
이상진 2025-07-15 16:51:16 +09:00
parent 19da58c1f3
commit 62d3f859ac
26 changed files with 80 additions and 77 deletions

View File

@ -1,4 +1,4 @@
package roomescape.payment.service; package roomescape.payment.business;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.util.Optional; import java.util.Optional;
@ -9,14 +9,14 @@ import org.springframework.transaction.annotation.Transactional;
import roomescape.common.exception.ErrorType; import roomescape.common.exception.ErrorType;
import roomescape.common.exception.RoomescapeException; import roomescape.common.exception.RoomescapeException;
import roomescape.payment.domain.CanceledPayment; import roomescape.payment.infrastructure.persistence.CanceledPayment;
import roomescape.payment.domain.Payment; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository;
import roomescape.payment.domain.repository.CanceledPaymentRepository; import roomescape.payment.infrastructure.persistence.Payment;
import roomescape.payment.domain.repository.PaymentRepository; import roomescape.payment.infrastructure.persistence.PaymentRepository;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.response.PaymentCancelResponse; import roomescape.payment.web.dto.response.PaymentCancelResponse;
import roomescape.payment.dto.response.PaymentResponse; import roomescape.payment.web.dto.response.PaymentResponse;
import roomescape.payment.dto.response.ReservationPaymentResponse; import roomescape.payment.web.dto.response.ReservationPaymentResponse;
import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.Reservation;
@Service @Service

View File

@ -1,4 +1,4 @@
package roomescape.payment; package roomescape.payment.infrastructure.client;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.Duration; import java.time.Duration;
@ -12,8 +12,6 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient;
import roomescape.payment.client.PaymentProperties;
@Configuration @Configuration
@EnableConfigurationProperties(PaymentProperties.class) @EnableConfigurationProperties(PaymentProperties.class)
public class PaymentConfig { public class PaymentConfig {

View File

@ -1,4 +1,4 @@
package roomescape.payment.client; package roomescape.payment.infrastructure.client;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@ -1,4 +1,4 @@
package roomescape.payment.client; package roomescape.payment.infrastructure.client;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -16,11 +16,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import roomescape.common.exception.ErrorType; import roomescape.common.exception.ErrorType;
import roomescape.common.exception.RoomescapeException; import roomescape.common.exception.RoomescapeException;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.request.PaymentRequest; import roomescape.payment.web.dto.request.PaymentRequest;
import roomescape.payment.dto.response.PaymentCancelResponse; import roomescape.payment.web.dto.response.PaymentCancelResponse;
import roomescape.payment.dto.response.PaymentResponse; import roomescape.payment.web.dto.response.PaymentResponse;
import roomescape.payment.dto.response.TossPaymentErrorResponse; import roomescape.payment.web.dto.response.TossPaymentErrorResponse;
@Component @Component
public class TossPaymentClient { public class TossPaymentClient {

View File

@ -1,4 +1,4 @@
package roomescape.payment.domain; package roomescape.payment.infrastructure.persistence;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;

View File

@ -1,11 +1,9 @@
package roomescape.payment.domain.repository; package roomescape.payment.infrastructure.persistence;
import java.util.Optional; import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import roomescape.payment.domain.CanceledPayment;
public interface CanceledPaymentRepository extends JpaRepository<CanceledPayment, Long> { public interface CanceledPaymentRepository extends JpaRepository<CanceledPayment, Long> {
Optional<CanceledPayment> findByPaymentKey(String paymentKey); Optional<CanceledPayment> findByPaymentKey(String paymentKey);

View File

@ -1,4 +1,4 @@
package roomescape.payment.domain; package roomescape.payment.infrastructure.persistence;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;

View File

@ -1,11 +1,9 @@
package roomescape.payment.domain.repository; package roomescape.payment.infrastructure.persistence;
import java.util.Optional; import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import roomescape.payment.domain.Payment;
public interface PaymentRepository extends JpaRepository<Payment, Long> { public interface PaymentRepository extends JpaRepository<Payment, Long> {
Optional<Payment> findByReservationId(Long reservationId); Optional<Payment> findByReservationId(Long reservationId);

View File

@ -1,4 +1,4 @@
package roomescape.payment.dto.request; package roomescape.payment.web.dto.request;
public record PaymentCancelRequest(String paymentKey, Long amount, String cancelReason) { public record PaymentCancelRequest(String paymentKey, Long amount, String cancelReason) {
} }

View File

@ -1,4 +1,4 @@
package roomescape.payment.dto.request; package roomescape.payment.web.dto.request;
public record PaymentRequest(String paymentKey, String orderId, Long amount, String paymentType) { public record PaymentRequest(String paymentKey, String orderId, Long amount, String paymentType) {
} }

View File

@ -1,9 +1,11 @@
package roomescape.payment.dto.response; package roomescape.payment.web.dto.response;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import roomescape.payment.web.support.PaymentCancelResponseDeserializer;
@JsonDeserialize(using = PaymentCancelResponseDeserializer.class) @JsonDeserialize(using = PaymentCancelResponseDeserializer.class)
public record PaymentCancelResponse( public record PaymentCancelResponse(
String cancelStatus, String cancelStatus,

View File

@ -1,4 +1,4 @@
package roomescape.payment.dto.response; package roomescape.payment.web.dto.response;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;

View File

@ -1,8 +1,8 @@
package roomescape.payment.dto.response; package roomescape.payment.web.dto.response;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import roomescape.payment.domain.Payment; import roomescape.payment.infrastructure.persistence.Payment;
import roomescape.reservation.dto.response.ReservationResponse; import roomescape.reservation.dto.response.ReservationResponse;
public record ReservationPaymentResponse(Long id, String orderId, String paymentKey, Long totalAmount, public record ReservationPaymentResponse(Long id, String orderId, String paymentKey, Long totalAmount,

View File

@ -1,4 +1,4 @@
package roomescape.payment.dto.response; package roomescape.payment.web.dto.response;
public record TossPaymentErrorResponse(String code, String message) { public record TossPaymentErrorResponse(String code, String message) {
} }

View File

@ -1,4 +1,4 @@
package roomescape.payment.dto.response; package roomescape.payment.web.support;
import java.io.IOException; import java.io.IOException;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
@ -9,6 +9,8 @@ import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import roomescape.payment.web.dto.response.PaymentCancelResponse;
public class PaymentCancelResponseDeserializer extends StdDeserializer<PaymentCancelResponse> { public class PaymentCancelResponseDeserializer extends StdDeserializer<PaymentCancelResponse> {
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern( private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(

View File

@ -30,11 +30,11 @@ import roomescape.auth.web.support.MemberId;
import roomescape.common.dto.response.RoomescapeApiResponse; import roomescape.common.dto.response.RoomescapeApiResponse;
import roomescape.common.dto.response.RoomescapeErrorResponse; import roomescape.common.dto.response.RoomescapeErrorResponse;
import roomescape.common.exception.RoomescapeException; import roomescape.common.exception.RoomescapeException;
import roomescape.payment.client.TossPaymentClient; import roomescape.payment.infrastructure.client.TossPaymentClient;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.request.PaymentRequest; import roomescape.payment.web.dto.request.PaymentRequest;
import roomescape.payment.dto.response.PaymentCancelResponse; import roomescape.payment.web.dto.response.PaymentCancelResponse;
import roomescape.payment.dto.response.PaymentResponse; import roomescape.payment.web.dto.response.PaymentResponse;
import roomescape.reservation.dto.request.AdminReservationRequest; import roomescape.reservation.dto.request.AdminReservationRequest;
import roomescape.reservation.dto.request.ReservationRequest; import roomescape.reservation.dto.request.ReservationRequest;
import roomescape.reservation.dto.request.WaitingRequest; import roomescape.reservation.dto.request.WaitingRequest;

View File

@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import roomescape.payment.dto.request.PaymentRequest; import roomescape.payment.web.dto.request.PaymentRequest;
@Schema(name = "회원의 예약 저장 요청", description = "회원의 예약 요청시 사용됩니다.") @Schema(name = "회원의 예약 저장 요청", description = "회원의 예약 요청시 사용됩니다.")
public record ReservationRequest( public record ReservationRequest(

View File

@ -5,11 +5,11 @@ import java.time.OffsetDateTime;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.business.PaymentService;
import roomescape.payment.dto.response.PaymentCancelResponse; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.response.PaymentResponse; import roomescape.payment.web.dto.response.PaymentCancelResponse;
import roomescape.payment.dto.response.ReservationPaymentResponse; import roomescape.payment.web.dto.response.PaymentResponse;
import roomescape.payment.service.PaymentService; import roomescape.payment.web.dto.response.ReservationPaymentResponse;
import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.Reservation;
import roomescape.reservation.dto.request.ReservationRequest; import roomescape.reservation.dto.request.ReservationRequest;
import roomescape.reservation.dto.response.ReservationResponse; import roomescape.reservation.dto.response.ReservationResponse;

View File

@ -1,4 +1,4 @@
package roomescape.payment.service; package roomescape.payment.business;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
@ -13,19 +13,19 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.Sql.ExecutionPhase; import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
import roomescape.common.exception.RoomescapeException;
import roomescape.member.infrastructure.persistence.Member; import roomescape.member.infrastructure.persistence.Member;
import roomescape.member.infrastructure.persistence.MemberRepository; import roomescape.member.infrastructure.persistence.MemberRepository;
import roomescape.member.infrastructure.persistence.Role; import roomescape.member.infrastructure.persistence.Role;
import roomescape.payment.domain.repository.CanceledPaymentRepository; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.response.PaymentResponse; import roomescape.payment.web.dto.response.PaymentResponse;
import roomescape.payment.dto.response.ReservationPaymentResponse; import roomescape.payment.web.dto.response.ReservationPaymentResponse;
import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.Reservation;
import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationStatus;
import roomescape.reservation.domain.ReservationTime; import roomescape.reservation.domain.ReservationTime;
import roomescape.reservation.domain.repository.ReservationRepository; import roomescape.reservation.domain.repository.ReservationRepository;
import roomescape.reservation.domain.repository.ReservationTimeRepository; import roomescape.reservation.domain.repository.ReservationTimeRepository;
import roomescape.common.exception.RoomescapeException;
import roomescape.theme.domain.Theme; import roomescape.theme.domain.Theme;
import roomescape.theme.domain.repository.ThemeRepository; import roomescape.theme.domain.repository.ThemeRepository;

View File

@ -1,7 +1,7 @@
package roomescape.payment.client; package roomescape.payment.infrastructure.client;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.request.PaymentRequest; import roomescape.payment.web.dto.request.PaymentRequest;
public class SampleTossPaymentConst { public class SampleTossPaymentConst {

View File

@ -1,6 +1,8 @@
package roomescape.payment.client; package roomescape.payment.infrastructure.client;
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.*;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
import static org.springframework.test.web.client.match.MockRestRequestMatchers.*; import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
import static org.springframework.test.web.client.response.MockRestResponseCreators.*; import static org.springframework.test.web.client.response.MockRestResponseCreators.*;
@ -14,12 +16,12 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.test.web.client.MockRestServiceServer;
import roomescape.payment.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.request.PaymentRequest;
import roomescape.payment.dto.response.PaymentCancelResponse;
import roomescape.payment.dto.response.PaymentResponse;
import roomescape.common.exception.ErrorType; import roomescape.common.exception.ErrorType;
import roomescape.common.exception.RoomescapeException; import roomescape.common.exception.RoomescapeException;
import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.web.dto.request.PaymentRequest;
import roomescape.payment.web.dto.response.PaymentCancelResponse;
import roomescape.payment.web.dto.response.PaymentResponse;
@RestClientTest(TossPaymentClient.class) @RestClientTest(TossPaymentClient.class)
class TossPaymentClientTest { class TossPaymentClientTest {

View File

@ -1,4 +1,4 @@
package roomescape.payment.domain; package roomescape.payment.infrastructure.persistence;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;

View File

@ -1,4 +1,4 @@
package roomescape.payment.domain; package roomescape.payment.infrastructure.persistence;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
@ -13,12 +13,12 @@ import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.NullAndEmptySource; import org.junit.jupiter.params.provider.NullAndEmptySource;
import org.junit.jupiter.params.provider.NullSource; import org.junit.jupiter.params.provider.NullSource;
import roomescape.common.exception.RoomescapeException;
import roomescape.member.infrastructure.persistence.Member; import roomescape.member.infrastructure.persistence.Member;
import roomescape.member.infrastructure.persistence.Role; import roomescape.member.infrastructure.persistence.Role;
import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.Reservation;
import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationStatus;
import roomescape.reservation.domain.ReservationTime; import roomescape.reservation.domain.ReservationTime;
import roomescape.common.exception.RoomescapeException;
import roomescape.theme.domain.Theme; import roomescape.theme.domain.Theme;
class PaymentTest { class PaymentTest {

View File

@ -1,4 +1,4 @@
package roomescape.payment.dto.response; package roomescape.payment.web.support;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
@ -9,6 +9,8 @@ import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.module.SimpleModule;
import roomescape.payment.web.dto.response.PaymentCancelResponse;
class PaymentCancelResponseDeserializerTest { class PaymentCancelResponseDeserializerTest {
private ObjectMapper objectMapper; private ObjectMapper objectMapper;

View File

@ -2,6 +2,7 @@ package roomescape.reservation.controller;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
@ -35,15 +36,15 @@ import io.restassured.http.Header;
import roomescape.member.infrastructure.persistence.Member; import roomescape.member.infrastructure.persistence.Member;
import roomescape.member.infrastructure.persistence.MemberRepository; import roomescape.member.infrastructure.persistence.MemberRepository;
import roomescape.member.infrastructure.persistence.Role; import roomescape.member.infrastructure.persistence.Role;
import roomescape.payment.client.TossPaymentClient; import roomescape.payment.infrastructure.client.TossPaymentClient;
import roomescape.payment.domain.CanceledPayment; import roomescape.payment.infrastructure.persistence.CanceledPayment;
import roomescape.payment.domain.Payment; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository;
import roomescape.payment.domain.repository.CanceledPaymentRepository; import roomescape.payment.infrastructure.persistence.Payment;
import roomescape.payment.domain.repository.PaymentRepository; import roomescape.payment.infrastructure.persistence.PaymentRepository;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.request.PaymentRequest; import roomescape.payment.web.dto.request.PaymentRequest;
import roomescape.payment.dto.response.PaymentCancelResponse; import roomescape.payment.web.dto.response.PaymentCancelResponse;
import roomescape.payment.dto.response.PaymentResponse; import roomescape.payment.web.dto.response.PaymentResponse;
import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.Reservation;
import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationStatus;
import roomescape.reservation.domain.ReservationTime; import roomescape.reservation.domain.ReservationTime;

View File

@ -16,10 +16,10 @@ import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
import roomescape.member.infrastructure.persistence.Member; import roomescape.member.infrastructure.persistence.Member;
import roomescape.member.infrastructure.persistence.MemberRepository; import roomescape.member.infrastructure.persistence.MemberRepository;
import roomescape.member.infrastructure.persistence.Role; import roomescape.member.infrastructure.persistence.Role;
import roomescape.payment.domain.repository.CanceledPaymentRepository; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository;
import roomescape.payment.domain.repository.PaymentRepository; import roomescape.payment.infrastructure.persistence.PaymentRepository;
import roomescape.payment.dto.request.PaymentCancelRequest; import roomescape.payment.web.dto.request.PaymentCancelRequest;
import roomescape.payment.dto.response.PaymentResponse; import roomescape.payment.web.dto.response.PaymentResponse;
import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.Reservation;
import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationStatus;
import roomescape.reservation.domain.ReservationTime; import roomescape.reservation.domain.ReservationTime;