Skip to content

feat: 장바구니 선택 결제 및 주문 환불 API 개선 #282

Description

@jongjunn

📊 작업 우선순위

해당하는 우선순위에 체크해 주세요.

  • P0 : 서비스 핵심 동작
  • P1 : 운영 및 확장 기능
  • P2 : 부가적인 고도화 기능

♻️ 리팩토링 목적 및 대상

어떤 코드를 왜 개선하는지 설명해 주세요.

  • 연관 이슈 번호 : #

  • 연관 도메인 : Order

  • As-Is (변경 전) :

    • 장바구니 선택 결제를 지원하지 않아 장바구니 전체 또는 단건 결제만 가능
    • 주문 상세 조회 응답에 환불 완료 여부(refunded)가 없어 프론트에서 환불 상태를 정확히 구분하기 어려움
    • 환불 요청 시 사유를 전달할 수 있는 Request DTO가 존재하지 않음
  • To-Be (변경 후) :

    • courseIds Query Parameter를 통해 장바구니 선택 결제 지원
    • 주문 상세 응답에 refunded 필드를 추가하여 환불 완료 여부 제공
    • 환불 요청 DTO(RefundRequest)를 추가하여 환불 사유 전달 구조 마련

💻 상세 작업 내용

  • Model / Policy

  • UseCase / Command

    • CheckoutUseCase 시그니처 확장 (courseIds 지원)
  • Service

    • 선택 결제 로직 추가
    • 장바구니 검증 로직 추가
    • 주문 상세 조회 시 refunded 정보 반환
  • Port / Adapter

  • Repository

  • Controller

    • courseIds Query Parameter 추가
    • 환불 Request Body를 받을 수 있도록 구조 개선
  • response / request

    • RefundRequest DTO 추가
    • OrderDetailResponserefunded 필드 추가
    • OrderDetailResultrefunded 필드 추가

🚨 검증 및 사이드 이펙트 확인 (TestCode)

  • 기존 정상 동작 테스트 케이스 통과 확인
  • 예외(Exception) 처리 로직 유지 및 assertThrows 검증 통과 확인
  • (필요시) 변경된 구조에 맞춘 새로운 단위 테스트 작성

⚠️ 확인 사항

  • API 응답값(response DTO) 형태의 변경이 있나요? (Yes)
  • 만약 변경되었다면, 프론트엔드 개발자에게 공유되었나요? (Yes)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions