diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt index d6aa125..499da25 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt @@ -71,8 +71,8 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { .and(order.createdAt.goe(startDate)) .and(order.createdAt.loe(endDate)) ) - .groupBy(audioContent.id, order.type, order.createdAt, order.can) - .orderBy(member.id.desc(), orderFormattedDate.desc()) + .groupBy(audioContent.id, order.type, orderFormattedDate, order.can) + .orderBy(member.id.desc(), orderFormattedDate.desc(), audioContent.id.asc()) .fetch() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt index fdaa535..6fd3d8c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt @@ -2,7 +2,9 @@ package kr.co.vividnext.sodalive.admin.calculate import kr.co.vividnext.sodalive.can.use.CanUsage import kr.co.vividnext.sodalive.content.order.OrderType +import org.springframework.cache.annotation.Cacheable import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional import java.time.LocalDate import java.time.ZoneId import java.time.format.DateTimeFormatter @@ -72,6 +74,11 @@ class AdminCalculateService(private val repository: AdminCalculateQueryRepositor .toList() } + @Transactional(readOnly = true) + @Cacheable( + cacheNames = ["cache_ttl_3_hours"], + key = "'calculateContent:' + " + "#startDateStr + ':' + #endDateStr" + ) fun getCalculateContentList(startDateStr: String, endDateStr: String): List { val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") val startDate = LocalDate.parse(startDateStr, dateTimeFormatter).atTime(0, 0, 0) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/configs/RedisConfig.kt b/src/main/kotlin/kr/co/vividnext/sodalive/configs/RedisConfig.kt index ef18036..5b0ec53 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/configs/RedisConfig.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/configs/RedisConfig.kt @@ -64,6 +64,14 @@ class RedisConfig( GenericJackson2JsonRedisSerializer() ) ) + cacheConfigMap["cache_ttl_3_hours"] = RedisCacheConfiguration.defaultCacheConfig() + .entryTtl(Duration.ofHours(3)) + .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer())) + .serializeValuesWith( + RedisSerializationContext.SerializationPair.fromSerializer( + GenericJackson2JsonRedisSerializer() + ) + ) return RedisCacheManager.builder(redisConnectionFactory) .cacheDefaults(defaultCacheConfig)