탐색에 있는 크리에이터 랭킹과 동일한 별도의 API 생성

This commit is contained in:
Klaus 2025-01-05 15:35:26 +09:00
parent 824cd2f3ea
commit c4d9d503ac
2 changed files with 37 additions and 0 deletions

View File

@ -21,6 +21,15 @@ import org.springframework.web.bind.annotation.RestController
@RestController @RestController
@RequestMapping("/explorer") @RequestMapping("/explorer")
class ExplorerController(private val service: ExplorerService) { class ExplorerController(private val service: ExplorerService) {
@GetMapping("/creator-rank")
fun getCreatorRank(
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
) = run {
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
ApiResponse.ok(service.getCreatorRank(memberId = member.id!!))
}
@GetMapping @GetMapping
fun getExplorer( fun getExplorer(
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?

View File

@ -47,6 +47,34 @@ class ExplorerService(
@Value("\${cloud.aws.cloud-front.host}") @Value("\${cloud.aws.cloud-front.host}")
private val cloudFrontHost: String private val cloudFrontHost: String
) { ) {
fun getCreatorRank(memberId: Long): GetExplorerSectionResponse {
val creatorRankings = queryRepository
.getCreatorRankings()
.filter { !memberService.isBlocked(blockedMemberId = memberId, memberId = it.id!!) }
.map { it.toExplorerSectionCreator(cloudFrontHost) }
val currentDateTime = LocalDateTime.now()
val lastMonday = currentDateTime
.minusWeeks(1)
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
val lastSunday = lastMonday
.plusDays(6)
val startDateFormatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일")
val endDateFormatter = DateTimeFormatter.ofPattern("MM월 dd일")
val formattedLastMonday = lastMonday.format(startDateFormatter)
val formattedLastSunday = lastSunday.format(endDateFormatter)
return GetExplorerSectionResponse(
title = "인기 크리에이터",
coloredTitle = "인기",
color = "FF5C49",
desc = "$formattedLastMonday ~ $formattedLastSunday",
creators = creatorRankings
)
}
fun getExplorer(member: Member, growthRankingCreatorsLimit: Long = 20): GetExplorerResponse { fun getExplorer(member: Member, growthRankingCreatorsLimit: Long = 20): GetExplorerResponse {
val sections = mutableListOf<GetExplorerSectionResponse>() val sections = mutableListOf<GetExplorerSectionResponse>()