Files
sodalive-backend-spring-boot/docs/20260316_라이브환불기능추가.md

4.0 KiB

20260316_라이브환불기능추가

구현 항목

  • GetCalculateLiveQueryDataroomId 필드 추가 및 toGetCalculateLiveResponse 수정 (email 제거 예정)
  • GetCalculateLiveResponseroomId 필드 추가 (email 제거 예정)
  • 환불 요청 시 roomId, canUsageStr 필수 조건 확인 로직 추가
  • LiveRoomService 내 환불 처리 로직 구현 (1차 수정: cancelLive와 동일하게 예약자 대상)
  • 환불 요청 API 엔드포인트 구현 (또는 수정)
  • GetCalculateLiveQueryDataGetCalculateLiveResponse에서 email 필드 제거
  • AdminCalculateQueryRepositoryCreatorAdminCalculateQueryRepository에서 email 조회 제거
  • 환불 대상을 '예약자'가 아닌 '해당 라이브 및 사용 조건에 맞는 모든 미환불 UseCan'으로 변경
  • LiveRoomServicerefundLiveByAdmin 로직을 AdminCalculateService로 이동 및 수정
  • 이미 환불 처리된 건은 환불하지 않도록 재검증
  • 사용 전/후/환불 후 캔 수 일치 여부 검증 테스트 추가
  • 테스트 코드에 DisplayName을 사용하여 한글 설명 추가
  • 환불 실패 케이스에 대한 테스트 추가

검증 결과

1차 구현

  • 무엇을: 라이브 환불 기능 추가
  • 왜: 관리자 정산 페이지 등에서 라이브별 환불 처리를 지원하기 위함
  • 어떻게:
    • GetCalculateLiveQueryData, GetCalculateLiveResponse 수정 확인
    • 환불 요청 API 호출 및 LiveRoomService.refundLiveByAdmin 로직 실행 여부 확인
    • 테스트 코드(AdminCalculateServiceTest) 작성 및 실행 결과 확인 (성공)

2차 수정 (잘못된 처리 반영)

  • 무엇을: 라이브 환불 로직 수정 및 필드 정리
  • 왜: 환불은 예약자 기준이 아니며, 관리자 기능이므로 관리자 서비스에서 처리해야 함. 또한 개인정보 보호 등을 위해 불필요한 email 필드 제거.
  • 어떻게:
    • GetCalculateLiveQueryData, GetCalculateLiveResponse에서 email 제거 확인
    • '모든 미환불 UseCan' 대상 환불 로직 검증 (테스트 코드 수정 및 실행)
    • LiveRoomService에서 해당 로직 제거 및 AdminCalculateService에서 직접 처리 확인

3차 수정 (캔 수 검증 테스트 추가)

  • 무엇을: 환불 시 사용자의 캔 수 변화 검증 테스트 추가
  • 왜: 환불 후 사용자의 캔 수가 사용 전과 동일한지 확인하여 정합성을 보장하기 위함
  • 어떻게:
    • AdminCalculateServiceTestshouldMaintainCanBalanceAfterRefund 테스트 추가
    • 사용 전, 사용 후(시뮬레이션), 환불 후 캔 수를 비교하여 사용 전과 환불 후가 동일함을 검증
    • ./gradlew test 실행 결과 성공 확인

4차 수정 (테스트 코드 가독성 개선)

  • 무엇을: 테스트 코드에 @DisplayName을 사용하여 한글 설명 추가
  • 왜: 테스트의 의도를 보다 명확하게 전달하기 위함
  • 어떻게:
    • AdminCalculateServiceTest.kt의 모든 테스트 메서드에 @DisplayName 적용
    • ./gradlew test 실행 시 한글 설명이 정상적으로 출력됨을 확인

5차 수정 (환불 실패 케이스 테스트 추가)

  • 무엇을: 환불이 실패하는 예외 상황에 대한 테스트 케이스 추가
  • 왜: 환불 요청 중 발생 가능한 예외 상황(잘못된 방 ID, 잘못된 구분 값, 파라미터 누락 등)을 사전에 검증하기 위함
  • 어떻게:
    • AdminCalculateServiceTest.kt에 3개의 실패 테스트 추가
      • shouldFailWhenRoomNotFound: 존재하지 않는 방 ID 요청 시 live.room.not_found 예외 검증
      • shouldFailWhenInvalidCanUsage: 지원하지 않는 사용 구분 문자열 요청 시 예외 검증
      • shouldFailWhenRequiredParameterMissing: 필수 파라미터 누락 시 common.error.invalid_request 예외 검증
    • ./gradlew test 실행 결과 5개의 테스트 모두 성공 확인