fix(live-room): 라이브 방 후원 랭킹 조회에 기간 설정을 반영한다
This commit is contained in:
24
docs/20260317_라이브방후원랭킹기간반영.md
Normal file
24
docs/20260317_라이브방후원랭킹기간반영.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# 라이브 방 후원 랭킹 기간 반영
|
||||
|
||||
- [x] `LiveRoomService.getRoomInfo`의 Top3 후원 랭킹 조회 로직 현황 확인
|
||||
- [x] `CreatorDonationRankingService.getMemberDonationRanking`의 기간 처리 패턴 확인 및 적용 방식 결정
|
||||
- [x] 크리에이터의 `DonationRankingPeriod` 선택값(`WEEKLY`/`CUMULATIVE`)을 반영해 Top3 `List<Long>` 조회 로직 수정
|
||||
- [x] 정적 진단 및 테스트/빌드 검증 수행
|
||||
- [x] 검증 결과 문서화
|
||||
|
||||
## 검증 기록
|
||||
|
||||
### 1차 구현
|
||||
- 무엇을: 초기 계획 수립
|
||||
- 왜: 작업 전 구현 범위와 검증 기준을 명확히 하기 위해
|
||||
- 어떻게: 계획 문서 생성 완료
|
||||
|
||||
### 2차 구현
|
||||
- 무엇을: 후원 랭킹 기간 처리 패턴 전수 탐색 및 `getRoomInfo` 구현 변경
|
||||
- 왜: 기존 누적 고정 조회를 크리에이터 선택 기간(`DonationRankingPeriod`) 기준 조회로 변경하기 위해
|
||||
- 어떻게: `grep`/`ast-grep`/백그라운드 `explore`/`librarian` 탐색 결과를 근거로 `LiveRoomService`에서 `CreatorDonationRankingService.getMemberDonationRanking(..., period = donationRankingPeriod)` 호출 후 `.map { it.userId }`로 `List<Long>` 유지
|
||||
|
||||
### 3차 검증
|
||||
- 무엇을: 코드 스타일/컴파일/테스트/빌드 검증
|
||||
- 왜: 변경이 기존 규칙과 빌드 체인에서 안전하게 동작하는지 확인하기 위해
|
||||
- 어떻게: `lsp_diagnostics`는 Kotlin LSP 미구성으로 수행 불가 확인, `./gradlew test && ./gradlew build` 1차 실행 시 import 정렬 실패(`ktlintMainSourceSetCheck`), import 순서 수정 후 동일 명령 재실행하여 `BUILD SUCCESSFUL` 확인
|
||||
@@ -18,6 +18,7 @@ import kr.co.vividnext.sodalive.can.use.UseCanCalculateRepository
|
||||
import kr.co.vividnext.sodalive.can.use.UseCanCalculateStatus
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.explorer.ExplorerQueryRepository
|
||||
import kr.co.vividnext.sodalive.explorer.profile.CreatorDonationRankingService
|
||||
import kr.co.vividnext.sodalive.extensions.convertLocalDateTime
|
||||
import kr.co.vividnext.sodalive.fcm.FcmDeepLinkValue
|
||||
import kr.co.vividnext.sodalive.fcm.FcmEvent
|
||||
@@ -54,6 +55,7 @@ import kr.co.vividnext.sodalive.live.room.visit.LiveRoomVisitService
|
||||
import kr.co.vividnext.sodalive.live.roulette.NewRouletteRepository
|
||||
import kr.co.vividnext.sodalive.live.signature.SignatureCanRepository
|
||||
import kr.co.vividnext.sodalive.live.tag.LiveTagRepository
|
||||
import kr.co.vividnext.sodalive.member.DonationRankingPeriod
|
||||
import kr.co.vividnext.sodalive.member.Gender
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||
@@ -95,6 +97,7 @@ class LiveRoomService(
|
||||
private val useCanCalculateRepository: UseCanCalculateRepository,
|
||||
private val reservationRepository: LiveReservationRepository,
|
||||
private val explorerQueryRepository: ExplorerQueryRepository,
|
||||
private val creatorDonationRankingService: CreatorDonationRankingService,
|
||||
private val roomVisitService: LiveRoomVisitService,
|
||||
private val canPaymentService: CanPaymentService,
|
||||
private val chargeRepository: ChargeRepository,
|
||||
@@ -988,11 +991,13 @@ class LiveRoomService(
|
||||
}
|
||||
|
||||
val donationRankingTop3UserIds = if (room.member!!.isVisibleDonationRank) {
|
||||
explorerQueryRepository
|
||||
val donationRankingPeriod = room.member!!.donationRankingPeriod ?: DonationRankingPeriod.CUMULATIVE
|
||||
creatorDonationRankingService
|
||||
.getMemberDonationRanking(
|
||||
room.member!!.id!!,
|
||||
3,
|
||||
withDonationCan = false
|
||||
creatorId = room.member!!.id!!,
|
||||
limit = 3,
|
||||
withDonationCan = false,
|
||||
period = donationRankingPeriod
|
||||
)
|
||||
.map { it.userId }
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user