Skip to content

[2레벨 최종 미션] 띠용(주용은) 제출합니다.#75

Open
jye326 wants to merge 24 commits intowoowacourse:jye326from
jye326:main
Open

[2레벨 최종 미션] 띠용(주용은) 제출합니다.#75
jye326 wants to merge 24 commits intowoowacourse:jye326from
jye326:main

Conversation

@jye326
Copy link

@jye326 jye326 commented Jun 10, 2025

No description provided.

jye326 added 24 commits June 10, 2025 17:54
- `Member`, `Reservation` JPA 엔티티 클래스 추가
- `spring-boot-starter-data-jpa` 의존성 추가
- JWT 라이브러리 버전 업데이트 및 롬복 의존성 추가
- 회원 데이터를 처리하는 `MemberService` 클래스 추가
- 회원 정보를 데이터베이스에서 관리하기 위한 `MemberRepository` 인터페이스 추가
- 예약 데이터를 처리하는 `ReservationService` 클래스 추가
- 예약 정보를 데이터베이스에서 관리하기 위한 `ReservationRepository` 인터페이스 추가
- `ReservationService`에 대한 단위 테스트 추가
- `AuthenticationInterceptor` 클래스 추가로 인증 로직 구현
- `AuthRequired` 애노테이션 추가로 특정 메서드에 인증 요구 설정 가능
- `WebMvcConfig` 클래스 수정으로 인증 인터셉터 등록 및 인자 리졸버 추가
- `AuthorizationArgumentResolver` 클래스 추가로 권한 인자 처리 구현
- `JwtUtil` 인터페이스 및 `JJWTJwtUtil` 구현체 추가로 JWT 생성 및 검증 처리
- `AuthToken` 클래스 추가로 인증 토큰 관리
- `AuthenticationException`, `AuthorizationException` 예외 클래스 추가
- `AuthService` 클래스 추가로 사용자 인증 서비스 로직 구현
- `DummyDataInitializer` 클래스 추가로 로컬 환경에서 테스트를 위한 더미 데이터 초기화 로직 구현
  - 회원 및 예약 데이터 생성 및 저장 처리
- `application.properties`를 `application.yml`로 변경
  - 로컬 프로필 설정 추가
  - H2 콘솔 활성화 및 경로 설정
  - JWT 비밀키 및 만료 시간 설정 추가
- `ReservationControllerTest` 클래스 추가로 컨트롤러 테스트 케이스 작성
  - RestAssured를 활용한 API 테스트
  - `/reservations` 엔드포인트에 대한 테스트 케이스 구현
- `ReservationServiceTest` 클래스 내 테스트 메서드에 `@DisplayName` 추가
  - "전체 예약 조회 테스트 - Mocking"으로 명시적 설명 작성
- 테스트 관련 의존성 및 클래스 임포트 수정
- `ReservationController`에 `/reservations` POST 엔드포인트 추가로 예약 생성 지원
- `ReservationRequest` DTO 클래스 추가로 요청 데이터 구조화 및 전달
- `Reservation` 엔티티에 `create` 정적 팩토리 메서드 추가
- `ReservationService`에 `save(ReservationRequest)` 메서드 추가로 서비스 계층 처리 로직 구현
- `AuthorizationArgumentResolver` 및 `WebMvcConfig` 클래스에 롬복 어노테이션 적용 및 불필요한 코드 정리
- `AuthToken` 클래스에서 불필요한 `System.out.println` 제거
- `TossPaymentClientConfig` 클래스에서 Toss Payments API 호출을 위한 RestClient 및 설정 로직 추가
  - `TossPaymentClient` 빈 등록 및 secret key 설정
  - RestTemplate의 타임아웃 및 기본 URL 설정 적용
- `TossPaymentClient` 클래스에서 결제 승인 API 호출 로직 구현
  - 결제 승인 요청 데이터 처리 및 인증 헤더 생성
  - 오류 응답 처리 및 예외 변환 로직 추가
- 결제 관련 DTO 및 커스텀 예외 클래스 연계 처리
- `PaymentService` 클래스에 결제 승인 및 저장 로직 추가
  - `TossPaymentClient`로 결제 승인 API 호출 및 처리
  - 승인된 결제 정보를 `PaymentRepository`를 통해 데이터베이스에 저장
- `Payment` 엔티티 추가로 결제 데이터 관리
  - `create` 정적 팩토리 메서드로 `Reservation` 및 결제 데이터 연계 처리
- 결제 관련 DTO (`PaymentInfo`, `PaymentApproveResponseDto`) 추가
  - 데이터 전달 및 응답 구조화 구현
- `PaymentRepository` 인터페이스 추가로 결제 데이터 영속성 처리
- `PaymentApproveException` 커스텀 예외 클래스 추가
- `ReservationNotFoundException` 및 `PaymentApproveException`에 대한 글로벌 예외 처리 메서드 추가
  - 각각 BAD_REQUEST(400), PAYMENT_REQUIRED(402) 응답 상태 코드 설정
- `ReservationNotFoundException` 커스텀 예외 클래스 추가
  - 예약 정보를 찾을 수 없는 경우를 처리
- `ReservationController`에 예약 조회, 수정, 삭제 엔드포인트 추가
  - `GET /reservations/{id}`: 특정 예약 조회
  - `POST /reservations/{id}`: 예약 수정
  - `DELETE /reservations/{id}`: 예약 삭제
- `ReservationService` 및 연관 메소드 수정
  - 예약 수정 시 `memberId` 인자 추가
- `ReservationControllerTest`에 통합 테스트 케이스 추가
  - RestAssured 기반 API 테스트 작성
  - 각각의 조회, 수정, 삭제 관련 테스트 케이스 구현
- 불필요한 코드 정리 및 메서드명 구체화
- `ReservationService`에 결제 로직 및 예약 삭제 메서드 추가
  - `save` 메서드에서 `PaymentService`를 통한 결제 처리 로직 구현
  - `deleteReservation` 메서드로 예약 삭제 기능 추가
- `ReservationSpec` DTO 추가
  - 예약 엔티티와 연계한 데이터 구조화 및 변환 메서드 포함
- `ReservationNotFoundException` 예외 클래스 활용으로 예약 조회 예외 처리 개선
- 예약 수정 시 소유자인지 확인 로직 추가 (본인만 수정 가능)
- `ReservationRepository`에 `deleteReservationById` 메서드 추가 및 `findReservationById` 반환값을 Optional로 변경
- `ReservationRequest` 구조 변경: `ReservationSpec` 및 `PaymentInfo`로 리팩토링
- `Reservation` 엔티티의 정적 팩토리 메서드 구조 개선:
  - `ReservationSpec`을 사용하도록 `create` 메서드 수정
  - ID 포함 예약 생성 메서드 `createWithId` 추가
- `TossPaymentClientTest` 클래스 추가: 결제 승인 API에 대한 RestClient 테스트 작성
  - MockRestServiceServer를 활용하여 테스트 환경 구성
  - `approvePayment` 메서드 호출 및 성공 케이스 검증
- `ReservationServiceTest`에 결제 서비스 mock 객체 추가
  - `PaymentService` 의존성 추가로 테스트 케이스 확장 준비
- 테스트에서 사용되지 않는 `PaymentService` Mock 객체 삭제
- 코드 가독성을 위해 주석 제거 및 불필요한 주석 정리 (`application.yml`)
- 프로젝트 목적 및 주요 기능 설명 추가
- Entity 설계 구조 상세화: Member, Reservation, Payment
- API 목록 정의: 예약 조회, 삭제, 수정, 생성 등 API Endpoint 명시
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant