Merge pull request '메인 시리즈 탭 - 완결 시리즈' (#268) from test into main

Reviewed-on: #268
This commit is contained in:
klaus 2025-02-21 19:27:33 +00:00
commit f0b412828a
2 changed files with 35 additions and 14 deletions

View File

@ -39,15 +39,15 @@ class AudioContentMainTabSeriesController(private val service: AudioContentMainT
) )
} }
@GetMapping("/completed-monthly-rank") @GetMapping("/completed-rank")
fun getRankMonthlyCompletedSeriesList( fun getRank10DaysCompletedSeriesList(
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
pageable: Pageable pageable: Pageable
) = run { ) = run {
if (member == null) throw SodaException("로그인 정보를 확인해주세요.") if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
ApiResponse.ok( ApiResponse.ok(
service.getRankMonthlyCompletedSeriesList( service.getRank10DaysCompletedSeriesList(
memberId = member.id!!, memberId = member.id!!,
isAdult = member.auth != null, isAdult = member.auth != null,
offset = pageable.offset, offset = pageable.offset,

View File

@ -10,7 +10,9 @@ import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.rank.RankingService import kr.co.vividnext.sodalive.rank.RankingService
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.time.DayOfWeek import java.time.DayOfWeek
import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.YearMonth
import java.time.temporal.TemporalAdjusters import java.time.temporal.TemporalAdjusters
@Service @Service
@ -168,20 +170,13 @@ class AudioContentMainTabSeriesService(
return GetSeriesListResponse(totalCount, items) return GetSeriesListResponse(totalCount, items)
} }
fun getRankMonthlyCompletedSeriesList( fun getRank10DaysCompletedSeriesList(
memberId: Long, memberId: Long,
isAdult: Boolean, isAdult: Boolean,
offset: Long, offset: Long,
limit: Long limit: Long
): GetSeriesListResponse { ): GetSeriesListResponse {
val monthlyRankingStartDate = LocalDateTime.now() val (startDate, endDate) = calculateStartAndEndDate()
.withDayOfMonth(1)
.withHour(15)
.withMinute(0)
.withSecond(0)
.minusDays(1)
val monthlyRankingEndDate = monthlyRankingStartDate
.plusMonths(1)
val totalCount = rankingService.getCompleteSeriesRankingTotalCount( val totalCount = rankingService.getCompleteSeriesRankingTotalCount(
memberId = memberId, memberId = memberId,
@ -191,8 +186,8 @@ class AudioContentMainTabSeriesService(
val items = rankingService.getCompleteSeriesRanking( val items = rankingService.getCompleteSeriesRanking(
memberId = memberId, memberId = memberId,
isAdult = isAdult, isAdult = isAdult,
startDate = monthlyRankingStartDate, startDate = startDate,
endDate = monthlyRankingEndDate, endDate = endDate,
offset = offset, offset = offset,
limit = limit limit = limit
) )
@ -218,4 +213,30 @@ class AudioContentMainTabSeriesService(
isAdult = isAdult isAdult = isAdult
) )
} }
private fun calculateStartAndEndDate(today: LocalDate = LocalDate.now()): Pair<LocalDateTime, LocalDateTime> {
val yearMonth = YearMonth.from(today)
val lastDayOfMonth = yearMonth.lengthOfMonth()
return when (today.dayOfMonth) {
in 11..20 -> Pair(
today.withDayOfMonth(1).minusDays(1).atTime(15, 0),
today.withDayOfMonth(10).atTime(15, 0)
)
in 21..lastDayOfMonth -> Pair(
today.withDayOfMonth(10).atTime(15, 0),
today.withDayOfMonth(20).atTime(15, 0)
)
else -> {
val previousMonth = yearMonth.minusMonths(1)
val lastDayOfPreviousMonth = previousMonth.lengthOfMonth()
Pair(
LocalDate.of(previousMonth.year, previousMonth.month, 20).atTime(15, 0),
LocalDate.of(previousMonth.year, previousMonth.month, lastDayOfPreviousMonth).atTime(15, 0)
)
}
}
}
} }