콘텐츠 랭킹 추가 #44
| @@ -148,4 +148,13 @@ class AudioContentController(private val service: AudioContentService) { | ||||
|  | ||||
|         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.PutAudioContentLikeRequest | ||||
| 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.OrderType | ||||
| 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.web.multipart.MultipartFile | ||||
| import java.text.SimpleDateFormat | ||||
| import java.time.DayOfWeek | ||||
| import java.time.LocalDateTime | ||||
| import java.time.ZoneId | ||||
| import java.time.format.DateTimeFormatter | ||||
| import java.time.temporal.TemporalAdjusters | ||||
| import java.util.Locale | ||||
|  | ||||
| @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 | ||||
|         ) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user