From 0b0be28e1af595c7a5d0eb936f3822aac3f33bb1 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 10 Nov 2023 21:39:40 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=A0=95?= =?UTF-8?q?=EC=82=B0=20-=20group=20by=20=EB=82=A0=EC=A7=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/calculate/AdminCalculateQueryRepository.kt | 4 ++-- .../sodalive/admin/calculate/AdminCalculateService.kt | 7 +++++++ .../kr/co/vividnext/sodalive/configs/RedisConfig.kt | 8 ++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) 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)