From 3ec16b50455ebf42caac126c5fcb7fadc670da7e Mon Sep 17 00:00:00 2001
From: Klaus <klaus@vividnext.co.kr>
Date: Thu, 26 Oct 2023 18:42:22 +0900
Subject: [PATCH] =?UTF-8?q?=ED=98=84=EC=9E=AC=20=EC=82=AC=EC=9A=A9?=
 =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20API=20=EC=A0=9C?=
 =?UTF-8?q?=EA=B1=B0,=20=EC=BA=90=EC=8B=9C=20=EC=A0=84=EB=9E=B5=20?=
 =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=9D=84=20=EC=9C=84=ED=95=B4=20@Cacheable?=
 =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../vividnext/sodalive/configs/RedisConfig.kt |  33 ----
 .../content/AudioContentRepository.kt         |  32 ----
 .../main/AudioContentMainController.kt        |  52 ------
 .../content/main/AudioContentMainService.kt   | 155 ------------------
 .../vividnext/sodalive/event/EventService.kt  |   5 -
 .../live/recommend/LiveRecommendRepository.kt |   5 -
 6 files changed, 282 deletions(-)

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 f309011..3fa5d11 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/configs/RedisConfig.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/configs/RedisConfig.kt
@@ -4,16 +4,10 @@ import org.springframework.beans.factory.annotation.Value
 import org.springframework.cache.annotation.EnableCaching
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
-import org.springframework.data.redis.cache.RedisCacheConfiguration
-import org.springframework.data.redis.cache.RedisCacheManager
 import org.springframework.data.redis.connection.RedisConnectionFactory
 import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
 import org.springframework.data.redis.core.RedisTemplate
 import org.springframework.data.redis.repository.configuration.EnableRedisRepositories
-import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
-import org.springframework.data.redis.serializer.RedisSerializationContext
-import org.springframework.data.redis.serializer.StringRedisSerializer
-import java.time.Duration
 
 @Configuration
 @EnableCaching
@@ -35,31 +29,4 @@ class RedisConfig(
         redisTemplate.setConnectionFactory(redisConnectionFactory())
         return redisTemplate
     }
-
-    @Bean
-    fun cacheManager(connectionFactory: RedisConnectionFactory): RedisCacheManager {
-        val defaultConfig = RedisCacheConfiguration.defaultCacheConfig()
-            .entryTtl(Duration.ofHours(1)) // Default TTL
-            .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer()))
-            .serializeValuesWith(
-                RedisSerializationContext.SerializationPair.fromSerializer(
-                    GenericJackson2JsonRedisSerializer()
-                )
-            )
-
-        val weekLivedCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
-            .entryTtl(Duration.ofDays(3))
-            .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(StringRedisSerializer()))
-            .serializeValuesWith(
-                RedisSerializationContext.SerializationPair.fromSerializer(
-                    GenericJackson2JsonRedisSerializer()
-                )
-            )
-
-        return RedisCacheManager.RedisCacheManagerBuilder
-            .fromConnectionFactory(connectionFactory)
-            .cacheDefaults(defaultConfig)
-            .withCacheConfiguration("weekLivedCache", weekLivedCacheConfig)
-            .build()
-    }
 }
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt
index 0c195ea..e7bfebe 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt
@@ -17,7 +17,6 @@ import kr.co.vividnext.sodalive.content.order.QOrder.order
 import kr.co.vividnext.sodalive.content.theme.QAudioContentTheme.audioContentTheme
 import kr.co.vividnext.sodalive.event.QEvent.event
 import kr.co.vividnext.sodalive.member.QMember.member
-import org.springframework.cache.annotation.Cacheable
 import org.springframework.data.jpa.repository.JpaRepository
 import org.springframework.stereotype.Repository
 import java.time.LocalDateTime
@@ -77,9 +76,6 @@ interface AudioContentQueryRepository {
 
     fun getAudioContentMainBannerList(isAdult: Boolean): List<AudioContentBanner>
     fun getAudioContentCurations(isAdult: Boolean): List<AudioContentCuration>
-
-    fun getAudioContentCurationList(isAdult: Boolean, offset: Long = 0, limit: Long = 10): List<AudioContentCuration>
-
     fun findAudioContentByCurationId(
         curationId: Long,
         cloudfrontHost: String,
@@ -390,10 +386,6 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
             .fetch()
     }
 
-    @Cacheable(
-        value = ["getAudioContentCurations"],
-        cacheManager = "cacheManager"
-    )
     override fun getAudioContentCurations(isAdult: Boolean): List<AudioContentCuration> {
         var where = audioContentCuration.isActive.isTrue
 
@@ -408,26 +400,6 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
             .fetch()
     }
 
-    override fun getAudioContentCurationList(
-        isAdult: Boolean,
-        offset: Long,
-        limit: Long
-    ): List<AudioContentCuration> {
-        var where = audioContentCuration.isActive.isTrue
-
-        if (!isAdult) {
-            where = where.and(audioContentCuration.isAdult.isFalse)
-        }
-
-        return queryFactory
-            .selectFrom(audioContentCuration)
-            .where(where)
-            .orderBy(audioContentCuration.orders.asc())
-            .offset(offset)
-            .limit(limit)
-            .fetch()
-    }
-
     override fun findAudioContentByCurationId(
         curationId: Long,
         cloudfrontHost: String,
@@ -465,10 +437,6 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
             .fetch()
     }
 
-    @Cacheable(
-        value = ["weekLivedCache"],
-        cacheManager = "cacheManager"
-    )
     override fun getAudioContentRanking(
         cloudfrontHost: String,
         isAdult: Boolean,
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt
index df51a73..41cee69 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt
@@ -23,33 +23,6 @@ class AudioContentMainController(private val service: AudioContentMainService) {
         ApiResponse.ok(service.getMain(member = member))
     }
 
-    @GetMapping("/new-content-upload-creator")
-    fun getNewContentUploadCreatorList(
-        @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
-    ) = run {
-        if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
-
-        ApiResponse.ok(service.getNewContentUploadCreatorList(member = member))
-    }
-
-    @GetMapping("/banner-list")
-    fun getAudioContentMainBannerList(
-        @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
-    ) = run {
-        if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
-
-        ApiResponse.ok(service.getAudioContentMainBannerList(member = member))
-    }
-
-    @GetMapping("/order-list")
-    fun getAudioContentMainOrderList(
-        @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
-    ) = run {
-        if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
-
-        ApiResponse.ok(service.getAudioContentMainOrderList(member = member))
-    }
-
     @GetMapping("/new")
     fun getNewContentByTheme(
         @RequestParam("theme") theme: String,
@@ -80,29 +53,4 @@ class AudioContentMainController(private val service: AudioContentMainService) {
 
         ApiResponse.ok(service.getNewContentFor2WeeksByTheme(theme, member, pageable))
     }
-
-    @GetMapping("/curation-list")
-    fun getAudioContentMainCurationList(
-        @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
-        pageable: Pageable
-    ) = run {
-        if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
-
-        ApiResponse.ok(
-            service.getAudioContentMainCurationList(
-                member,
-                offset = pageable.offset,
-                limit = pageable.pageSize.toLong()
-            )
-        )
-    }
-
-    @GetMapping("/content-ranking")
-    fun getAudioContentMainContentRanking(
-        @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
-    ) = run {
-        if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
-
-        ApiResponse.ok(service.getAudioContentMainContentRanking(member))
-    }
 }
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt
index 159b661..5b6b050 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt
@@ -10,7 +10,6 @@ import kr.co.vividnext.sodalive.event.EventItem
 import kr.co.vividnext.sodalive.member.Member
 import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
 import org.springframework.beans.factory.annotation.Value
-import org.springframework.cache.annotation.Cacheable
 import org.springframework.data.domain.Pageable
 import org.springframework.stereotype.Service
 import java.time.DayOfWeek
@@ -169,87 +168,6 @@ class AudioContentMainService(
         )
     }
 
-    @Cacheable(
-        value = ["getNewContentUploadCreatorList"],
-        cacheManager = "cacheManager"
-    )
-    fun getNewContentUploadCreatorList(member: Member): List<GetNewContentUploadCreator> {
-        val isAdult = member.auth != null
-
-        // 2주일 이내에 콘텐츠를 올린 크리에이터 20명 조회
-        return repository.getNewContentUploadCreatorList(
-            cloudfrontHost = imageHost,
-            isAdult = isAdult
-        )
-            .asSequence()
-            .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creatorId) }
-            .toList()
-    }
-
-    @Cacheable(
-        value = ["getAudioContentMainBannerList"],
-        cacheManager = "cacheManager"
-    )
-    fun getAudioContentMainBannerList(member: Member): List<GetAudioContentBannerResponse> {
-        val isAdult = member.auth != null
-
-        return repository
-            .getAudioContentMainBannerList(isAdult = isAdult)
-            .asSequence()
-            .filter {
-                if (it.type == AudioContentBannerType.CREATOR && it.creator != null) {
-                    !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creator!!.id!!)
-                } else {
-                    true
-                }
-            }
-            .map {
-                GetAudioContentBannerResponse(
-                    type = it.type,
-                    thumbnailImageUrl = "$imageHost/${it.thumbnailImage}",
-                    eventItem = if (it.type == AudioContentBannerType.EVENT && it.event != null) {
-                        EventItem(
-                            id = it.event!!.id!!,
-                            thumbnailImageUrl = if (!it.event!!.thumbnailImage.startsWith("https://")) {
-                                "$imageHost/${it.event!!.thumbnailImage}"
-                            } else {
-                                it.event!!.thumbnailImage
-                            },
-                            detailImageUrl = if (
-                                it.event!!.detailImage != null &&
-                                !it.event!!.detailImage!!.startsWith("https://")
-                            ) {
-                                "$imageHost/${it.event!!.detailImage}"
-                            } else {
-                                it.event!!.detailImage
-                            },
-                            popupImageUrl = null,
-                            link = it.event!!.link,
-                            title = it.event!!.title,
-                            isPopup = false
-                        )
-                    } else {
-                        null
-                    },
-                    creatorId = if (it.type == AudioContentBannerType.CREATOR && it.creator != null) {
-                        it.creator!!.id
-                    } else {
-                        null
-                    },
-                    link = it.link
-                )
-            }
-            .toList()
-    }
-
-    fun getAudioContentMainOrderList(member: Member): List<GetAudioContentMainItem> {
-        return orderService
-            .getAudioContentMainOrderList(
-                member = member,
-                limit = 20
-            )
-    }
-
     fun getThemeList(member: Member): List<String> {
         return audioContentThemeRepository.getActiveThemeOfContent(isAdult = member.auth != null)
     }
@@ -279,77 +197,4 @@ class AudioContentMainService(
 
         return GetNewContentAllResponse(totalCount, items)
     }
-
-    @Cacheable(
-        value = ["getAudioContentMainCurationList"],
-        cacheManager = "cacheManager"
-    )
-    fun getAudioContentMainCurationList(
-        member: Member,
-        offset: Long,
-        limit: Long
-    ): List<GetAudioContentCurationResponse> {
-        val isAdult = member.auth != null
-
-        return repository
-            .getAudioContentCurationList(
-                isAdult = isAdult,
-                offset = offset,
-                limit = limit
-            )
-            .asSequence()
-            .map {
-                GetAudioContentCurationResponse(
-                    curationId = it.id!!,
-                    title = it.title,
-                    description = it.description,
-                    contents = repository.findAudioContentByCurationId(
-                        curationId = it.id!!,
-                        cloudfrontHost = imageHost,
-                        isAdult = isAdult
-                    )
-                        .asSequence()
-                        .filter { content ->
-                            !blockMemberRepository.isBlocked(
-                                blockedMemberId = member.id!!,
-                                memberId = content.creatorId
-                            )
-                        }
-                        .toList()
-                )
-            }
-            .filter { it.contents.isNotEmpty() }
-            .toList()
-    }
-
-    fun getAudioContentMainContentRanking(member: Member): GetAudioContentRanking {
-        val isAdult = member.auth != null
-
-        val currentDateTime = LocalDateTime.now()
-        val startDate = currentDateTime
-            .minusWeeks(1)
-            .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
-            .withHour(15)
-            .withMinute(0)
-            .withSecond(0)
-        val endDate = startDate
-            .plusDays(7)
-
-        val startDateFormatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일")
-        val endDateFormatter = DateTimeFormatter.ofPattern("MM월 dd일")
-
-        val contentRankingItemList = repository
-            .getAudioContentRanking(
-                cloudfrontHost = imageHost,
-                startDate = startDate.minusDays(1),
-                endDate = endDate.minusDays(1),
-                isAdult = isAdult
-            )
-
-        return GetAudioContentRanking(
-            startDate = startDate.format(startDateFormatter),
-            endDate = endDate.minusDays(1).format(endDateFormatter),
-            contentRankingItemList
-        )
-    }
 }
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt
index 2237d7b..e6ddd74 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt
@@ -5,7 +5,6 @@ import kr.co.vividnext.sodalive.aws.s3.S3Uploader
 import kr.co.vividnext.sodalive.common.SodaException
 import kr.co.vividnext.sodalive.utils.generateFileName
 import org.springframework.beans.factory.annotation.Value
-import org.springframework.cache.annotation.Cacheable
 import org.springframework.data.repository.findByIdOrNull
 import org.springframework.stereotype.Service
 import org.springframework.transaction.annotation.Transactional
@@ -21,10 +20,6 @@ class EventService(
     @Value("\${cloud.aws.cloud-front.host}")
     private val cloudFrontHost: String
 ) {
-    @Cacheable(
-        value = ["getEventList"],
-        cacheManager = "cacheManager"
-    )
     fun getEventList(): GetEventResponse {
         val eventList = repository.getEventList()
             .asSequence()
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt
index b65eecb..e6ece32 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt
@@ -9,7 +9,6 @@ import kr.co.vividnext.sodalive.member.MemberRole
 import kr.co.vividnext.sodalive.member.QMember.member
 import kr.co.vividnext.sodalive.member.following.QCreatorFollowing.creatorFollowing
 import org.springframework.beans.factory.annotation.Value
-import org.springframework.cache.annotation.Cacheable
 import org.springframework.stereotype.Repository
 import java.time.LocalDateTime
 
@@ -20,10 +19,6 @@ class LiveRecommendRepository(
     @Value("\${cloud.aws.cloud-front.host}")
     private val cloudFrontHost: String
 ) {
-    @Cacheable(
-        value = ["getRecommendLive"],
-        cacheManager = "cacheManager"
-    )
     fun getRecommendLive(
         memberId: Long,
         isBlocked: (Long) -> Boolean,