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.can.use.UseCanCalculateStatus
|
||||||
import kr.co.vividnext.sodalive.common.SodaException
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
import kr.co.vividnext.sodalive.explorer.ExplorerQueryRepository
|
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.extensions.convertLocalDateTime
|
||||||
import kr.co.vividnext.sodalive.fcm.FcmDeepLinkValue
|
import kr.co.vividnext.sodalive.fcm.FcmDeepLinkValue
|
||||||
import kr.co.vividnext.sodalive.fcm.FcmEvent
|
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.roulette.NewRouletteRepository
|
||||||
import kr.co.vividnext.sodalive.live.signature.SignatureCanRepository
|
import kr.co.vividnext.sodalive.live.signature.SignatureCanRepository
|
||||||
import kr.co.vividnext.sodalive.live.tag.LiveTagRepository
|
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.Gender
|
||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
import kr.co.vividnext.sodalive.member.MemberRepository
|
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||||
@@ -95,6 +97,7 @@ class LiveRoomService(
|
|||||||
private val useCanCalculateRepository: UseCanCalculateRepository,
|
private val useCanCalculateRepository: UseCanCalculateRepository,
|
||||||
private val reservationRepository: LiveReservationRepository,
|
private val reservationRepository: LiveReservationRepository,
|
||||||
private val explorerQueryRepository: ExplorerQueryRepository,
|
private val explorerQueryRepository: ExplorerQueryRepository,
|
||||||
|
private val creatorDonationRankingService: CreatorDonationRankingService,
|
||||||
private val roomVisitService: LiveRoomVisitService,
|
private val roomVisitService: LiveRoomVisitService,
|
||||||
private val canPaymentService: CanPaymentService,
|
private val canPaymentService: CanPaymentService,
|
||||||
private val chargeRepository: ChargeRepository,
|
private val chargeRepository: ChargeRepository,
|
||||||
@@ -988,11 +991,13 @@ class LiveRoomService(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val donationRankingTop3UserIds = if (room.member!!.isVisibleDonationRank) {
|
val donationRankingTop3UserIds = if (room.member!!.isVisibleDonationRank) {
|
||||||
explorerQueryRepository
|
val donationRankingPeriod = room.member!!.donationRankingPeriod ?: DonationRankingPeriod.CUMULATIVE
|
||||||
|
creatorDonationRankingService
|
||||||
.getMemberDonationRanking(
|
.getMemberDonationRanking(
|
||||||
room.member!!.id!!,
|
creatorId = room.member!!.id!!,
|
||||||
3,
|
limit = 3,
|
||||||
withDonationCan = false
|
withDonationCan = false,
|
||||||
|
period = donationRankingPeriod
|
||||||
)
|
)
|
||||||
.map { it.userId }
|
.map { it.userId }
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user