diff --git a/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UpdateProfileImageServiceImpl.kt b/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UpdateProfileImageServiceImpl.kt index b5b262b5..e4474a45 100644 --- a/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UpdateProfileImageServiceImpl.kt +++ b/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UpdateProfileImageServiceImpl.kt @@ -1,7 +1,7 @@ package com.dotori.v2.domain.member.service.impl import com.dotori.v2.domain.member.domain.entity.Member -import com.dotori.v2.domain.member.service.ProfileImageService +import com.dotori.v2.global.util.ProfileImageService import com.dotori.v2.domain.member.service.UpdateProfileImageService import com.dotori.v2.global.util.UserUtil import org.springframework.stereotype.Service diff --git a/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UploadProfileImageServiceImpl.kt b/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UploadProfileImageServiceImpl.kt index 23e57aa5..e9b248d8 100644 --- a/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UploadProfileImageServiceImpl.kt +++ b/src/main/kotlin/com/dotori/v2/domain/member/service/impl/UploadProfileImageServiceImpl.kt @@ -1,7 +1,7 @@ package com.dotori.v2.domain.member.service.impl import com.dotori.v2.domain.member.domain.entity.Member -import com.dotori.v2.domain.member.service.ProfileImageService +import com.dotori.v2.global.util.ProfileImageService import com.dotori.v2.domain.member.service.UploadProfileImageService import com.dotori.v2.global.util.UserUtil import org.springframework.stereotype.Service diff --git a/src/main/kotlin/com/dotori/v2/domain/music/domain/repository/MusicRepository.kt b/src/main/kotlin/com/dotori/v2/domain/music/domain/repository/MusicRepository.kt index 083cc70e..c6d25593 100644 --- a/src/main/kotlin/com/dotori/v2/domain/music/domain/repository/MusicRepository.kt +++ b/src/main/kotlin/com/dotori/v2/domain/music/domain/repository/MusicRepository.kt @@ -1,15 +1,12 @@ package com.dotori.v2.domain.music.domain.repository -import com.dotori.v2.domain.member.domain.entity.Member -import com.dotori.v2.domain.member.enums.MusicStatus import com.dotori.v2.domain.music.domain.entity.Music -import javax.persistence.LockModeType import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.data.jpa.repository.Lock import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.query.Param import java.time.LocalDate +import java.time.LocalDateTime interface MusicRepository : JpaRepository { @Modifying @@ -19,4 +16,6 @@ interface MusicRepository : JpaRepository { @Query(value = "select * from music where created_date like :date%", nativeQuery = true) fun findAllByCreatedDate(@Param("date") date: LocalDate): List + fun deleteAllByCreatedDateBefore(date: LocalDateTime) + } \ No newline at end of file diff --git a/src/main/kotlin/com/dotori/v2/domain/music/schedule/MusicSchedule.kt b/src/main/kotlin/com/dotori/v2/domain/music/schedule/MusicSchedule.kt index f2c0b441..424b1f01 100644 --- a/src/main/kotlin/com/dotori/v2/domain/music/schedule/MusicSchedule.kt +++ b/src/main/kotlin/com/dotori/v2/domain/music/schedule/MusicSchedule.kt @@ -8,22 +8,28 @@ import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Component import org.springframework.transaction.annotation.Transactional import java.time.LocalDate +import java.time.LocalDateTime +import java.time.temporal.ChronoUnit @Component @Transactional class MusicSchedule( private val musicRepository: MusicRepository, - private val redisTemplate: RedisTemplate + private val redisCacheService: RedisCacheService ) { private val log = LoggerFactory.getLogger(this.javaClass.simpleName) @Scheduled(cron = "0 0 0 ? * MON-FRI") fun weekdayMusicStatusReset() { musicRepository.updateMusicStatusMemberByMember() - val keys = redisTemplate.keys("musicList:*") - if(keys.isNotEmpty()) { - redisTemplate.delete(keys) - } - log.info("Student Music Status Updated At {}", LocalDate.now()) } + + @Scheduled(cron = "0 0 0 1 *") + fun initMusic() { + val localDateTime = LocalDateTime.now().minus(2,ChronoUnit.MONTHS) + musicRepository.deleteAllByCreatedDateBefore(localDateTime) + redisCacheService.initCache("musicList:*") + log.info("delete music data schedule") + } + } \ No newline at end of file diff --git a/src/main/kotlin/com/dotori/v2/global/config/redis/service/RedisCacheService.kt b/src/main/kotlin/com/dotori/v2/global/config/redis/service/RedisCacheService.kt index c04bcfd0..b11a8cc9 100644 --- a/src/main/kotlin/com/dotori/v2/global/config/redis/service/RedisCacheService.kt +++ b/src/main/kotlin/com/dotori/v2/global/config/redis/service/RedisCacheService.kt @@ -4,6 +4,7 @@ import com.dotori.v2.domain.member.enums.SelfStudyStatus import com.dotori.v2.domain.student.presentation.data.res.FindAllStudentResDto import org.springframework.data.redis.core.RedisTemplate import org.springframework.stereotype.Service +import java.time.LocalDate @Service class RedisCacheService( @@ -26,6 +27,13 @@ class RedisCacheService( updateMemberCache(memberId) { it.copy(selfStudyStatus = selfStudyStatus) } } + fun initCache(pattern: String) { + val keys = redisTemplate.keys(pattern) + if(keys.isNotEmpty()) { + redisTemplate.delete(pattern) + } + } + private fun updateMemberCache(memberId: Long,update: (FindAllStudentResDto) -> FindAllStudentResDto) { val cacheKey = "memberList" val cachedData = getFromCache(cacheKey) as? List diff --git a/src/main/kotlin/com/dotori/v2/domain/member/service/ProfileImageService.kt b/src/main/kotlin/com/dotori/v2/global/util/ProfileImageService.kt similarity index 96% rename from src/main/kotlin/com/dotori/v2/domain/member/service/ProfileImageService.kt rename to src/main/kotlin/com/dotori/v2/global/util/ProfileImageService.kt index 8dcd0036..b990f136 100644 --- a/src/main/kotlin/com/dotori/v2/domain/member/service/ProfileImageService.kt +++ b/src/main/kotlin/com/dotori/v2/global/util/ProfileImageService.kt @@ -1,4 +1,4 @@ -package com.dotori.v2.domain.member.service +package com.dotori.v2.global.util import com.dotori.v2.domain.member.domain.entity.Member import com.dotori.v2.domain.member.exception.NotAcceptImgExtensionException