콘텐츠 랭킹 데이터 전체보기 API 추가
This commit is contained in:
parent
333458a184
commit
9146e2e231
|
@ -148,4 +148,13 @@ class AudioContentController(private val service: AudioContentService) {
|
||||||
|
|
||||||
ApiResponse.ok(service.audioContentLike(request, member))
|
ApiResponse.ok(service.audioContentLike(request, member))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/ranking")
|
||||||
|
fun getAudioContentRanking(
|
||||||
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
|
ApiResponse.ok(service.getAudioContentRanking(member = member))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import kr.co.vividnext.sodalive.content.like.AudioContentLike
|
||||||
import kr.co.vividnext.sodalive.content.like.AudioContentLikeRepository
|
import kr.co.vividnext.sodalive.content.like.AudioContentLikeRepository
|
||||||
import kr.co.vividnext.sodalive.content.like.PutAudioContentLikeRequest
|
import kr.co.vividnext.sodalive.content.like.PutAudioContentLikeRequest
|
||||||
import kr.co.vividnext.sodalive.content.like.PutAudioContentLikeResponse
|
import kr.co.vividnext.sodalive.content.like.PutAudioContentLikeResponse
|
||||||
|
import kr.co.vividnext.sodalive.content.main.GetAudioContentRanking
|
||||||
import kr.co.vividnext.sodalive.content.order.OrderRepository
|
import kr.co.vividnext.sodalive.content.order.OrderRepository
|
||||||
import kr.co.vividnext.sodalive.content.order.OrderType
|
import kr.co.vividnext.sodalive.content.order.OrderType
|
||||||
import kr.co.vividnext.sodalive.content.theme.AudioContentThemeQueryRepository
|
import kr.co.vividnext.sodalive.content.theme.AudioContentThemeQueryRepository
|
||||||
|
@ -29,9 +30,11 @@ import org.springframework.stereotype.Service
|
||||||
import org.springframework.transaction.annotation.Transactional
|
import org.springframework.transaction.annotation.Transactional
|
||||||
import org.springframework.web.multipart.MultipartFile
|
import org.springframework.web.multipart.MultipartFile
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
|
import java.time.DayOfWeek
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.time.ZoneId
|
import java.time.ZoneId
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
import java.time.temporal.TemporalAdjusters
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@ -573,4 +576,34 @@ class AudioContentService(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getAudioContentRanking(member: Member): GetAudioContentRanking {
|
||||||
|
val currentDateTime = LocalDateTime.now()
|
||||||
|
val startDate = currentDateTime
|
||||||
|
.withHour(15)
|
||||||
|
.withMinute(0)
|
||||||
|
.withSecond(0)
|
||||||
|
.minusWeeks(1)
|
||||||
|
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
|
||||||
|
val endDate = startDate
|
||||||
|
.plusDays(7)
|
||||||
|
|
||||||
|
val startDateFormatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일")
|
||||||
|
val endDateFormatter = DateTimeFormatter.ofPattern("MM월 dd일")
|
||||||
|
|
||||||
|
val contentRankingItemList = repository
|
||||||
|
.getAudioContentRanking(
|
||||||
|
cloudfrontHost = coverImageHost,
|
||||||
|
startDate = startDate,
|
||||||
|
endDate = endDate,
|
||||||
|
isAdult = member.auth != null,
|
||||||
|
limit = 50
|
||||||
|
)
|
||||||
|
|
||||||
|
return GetAudioContentRanking(
|
||||||
|
startDate = startDate.format(startDateFormatter),
|
||||||
|
endDate = endDate.minusDays(1).format(endDateFormatter),
|
||||||
|
items = contentRankingItemList
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue