From 4923a04c9d04c34a0de14b31cdf68ef9181d9b2f Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 8 Jan 2024 20:26:30 +0900 Subject: [PATCH 01/18] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EA=B5=AC?= =?UTF-8?q?=EB=A7=A4=20=EB=B3=B4=EA=B4=80=ED=95=A8=20-=20isActive=EA=B0=80?= =?UTF-8?q?=20true=EC=9D=B8=20=EC=BD=98=ED=85=90=EC=B8=A0=EB=A7=8C=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8F=84=EB=A1=9D=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 --- .../kr/co/vividnext/sodalive/content/order/OrderRepository.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderRepository.kt index db52c6f..feb941d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderRepository.kt @@ -161,6 +161,7 @@ class OrderQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Orde .from(order) .where( order.member.id.eq(memberId) + .and(order.isActive.isTrue) .and( order.type.eq(OrderType.KEEP) .or( @@ -199,6 +200,7 @@ class OrderQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Orde .innerJoin(audioContent.member, member) .where( order.member.id.eq(memberId) + .and(order.isActive.isTrue) .and( order.type.eq(OrderType.KEEP) .or( From 26d9b6cf35b1985b94badde560f08ada190d32bd Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 8 Jan 2024 22:53:42 +0900 Subject: [PATCH 02/18] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20-=20=EC=98=88=EC=95=BD=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=EB=A5=BC=20=EC=9C=84=ED=95=B4=20=EA=B3=B5?= =?UTF-8?q?=EA=B0=9C=EB=82=A0=EC=A7=9C=EB=A5=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/content/AudioContent.kt | 2 + .../sodalive/content/AudioContentService.kt | 53 ++++++++++++------- .../content/CreateAudioContentRequest.kt | 2 + 3 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt index a1f5c15..44acb16 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt @@ -5,6 +5,7 @@ import kr.co.vividnext.sodalive.content.hashtag.AudioContentHashTag import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration import kr.co.vividnext.sodalive.content.theme.AudioContentTheme import kr.co.vividnext.sodalive.member.Member +import java.time.LocalDateTime import javax.persistence.CascadeType import javax.persistence.Column import javax.persistence.Entity @@ -32,6 +33,7 @@ data class AudioContent( @Column(columnDefinition = "TEXT", nullable = false) var detail: String, val price: Int = 0, + var releaseDate: LocalDateTime? = null, @Enumerated(value = EnumType.STRING) val type: AudioContentType = AudioContentType.INDIVIDUAL, val isGeneratePreview: Boolean = true, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index b0f3079..da54c5e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -18,6 +18,7 @@ import kr.co.vividnext.sodalive.content.order.OrderRepository import kr.co.vividnext.sodalive.content.order.OrderType import kr.co.vividnext.sodalive.content.theme.AudioContentThemeQueryRepository import kr.co.vividnext.sodalive.explorer.ExplorerQueryRepository +import kr.co.vividnext.sodalive.extensions.convertLocalDateTime import kr.co.vividnext.sodalive.fcm.FcmEvent import kr.co.vividnext.sodalive.fcm.FcmEventType import kr.co.vividnext.sodalive.member.Member @@ -143,6 +144,15 @@ class AudioContentService( // 미리듣기 시간 체크 validatePreviewTime(request.previewStartTime, request.previewEndTime) + val releaseDate = if (request.releaseDate != null) { + request.releaseDate.convertLocalDateTime("yyyy-MM-dd HH:mm") + .atZone(ZoneId.of(request.timezone)) + .withZoneSameInstant(ZoneId.of("UTC")) + .toLocalDateTime() + } else { + null + } + // contentFile 체크 if (contentFile == null && request.type == AudioContentType.INDIVIDUAL) { throw SodaException("콘텐츠를 선택해 주세요.") @@ -168,6 +178,7 @@ class AudioContentService( } else { 0 }, + releaseDate = releaseDate, isAdult = request.isAdult, isGeneratePreview = if (request.type == AudioContentType.INDIVIDUAL) { request.isGeneratePreview @@ -346,29 +357,31 @@ class AudioContentService( ) ) - applicationEventPublisher.publishEvent( - FcmEvent( - type = FcmEventType.UPLOAD_CONTENT, - title = audioContent.member!!.nickname, - message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}", - isAuth = audioContent.isAdult, - contentId = contentId, - creatorId = audioContent.member!!.id, - container = "ios" + if (audioContent.releaseDate == null) { + applicationEventPublisher.publishEvent( + FcmEvent( + type = FcmEventType.UPLOAD_CONTENT, + title = audioContent.member!!.nickname, + message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}", + isAuth = audioContent.isAdult, + contentId = contentId, + creatorId = audioContent.member!!.id, + container = "ios" + ) ) - ) - applicationEventPublisher.publishEvent( - FcmEvent( - type = FcmEventType.UPLOAD_CONTENT, - title = audioContent.member!!.nickname, - message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}", - isAuth = audioContent.isAdult, - contentId = contentId, - creatorId = audioContent.member!!.id, - container = "aos" + applicationEventPublisher.publishEvent( + FcmEvent( + type = FcmEventType.UPLOAD_CONTENT, + title = audioContent.member!!.nickname, + message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}", + isAuth = audioContent.isAdult, + contentId = contentId, + creatorId = audioContent.member!!.id, + container = "aos" + ) ) - ) + } } fun getDetail(id: Long, member: Member, timezone: String): GetAudioContentDetailResponse { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt index 619b27f..e2acdc6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt @@ -5,6 +5,8 @@ data class CreateAudioContentRequest( val detail: String, val tags: String, val price: Int, + val timezone: String, + val releaseDate: String? = null, val themeId: Long = 0, val isAdult: Boolean = false, val isGeneratePreview: Boolean = true, From 9192209ca75b8adbe15bff7dec0163313baa17b7 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 9 Jan 2024 13:44:41 +0900 Subject: [PATCH 03/18] =?UTF-8?q?=EB=B3=B8=EC=9D=B8=EC=9D=B8=EC=A6=9D=20-?= =?UTF-8?q?=20=EB=B3=B8=EC=9D=B8=EC=9D=B8=EC=A6=9D=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/co/vividnext/sodalive/member/auth/AuthService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/auth/AuthService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/auth/AuthService.kt index 3acdf58..9d24456 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/auth/AuthService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/auth/AuthService.kt @@ -97,7 +97,7 @@ class AuthService( repository.save(auth) } else { - throw SodaException("19세 미만 인증 오류") + throw SodaException("2005년 1월 1일 이전 출생자만 본인인증이 가능합니다.") } } } From 06d670df5011e92d17972e13296b4668d5a78169 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 9 Jan 2024 22:50:44 +0900 Subject: [PATCH 04/18] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20-=20?= =?UTF-8?q?=EC=98=A4=ED=94=88=EC=98=88=EC=A0=95=EC=9D=B8=20=EC=9E=91?= =?UTF-8?q?=ED=92=88=EC=9D=80=20=EC=83=88=EB=A1=9C=EC=9A=B4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=EC=97=90=EC=84=9C=20=EB=B3=B4=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?-=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=83=81=EC=84=B8=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=97=90=20=EC=98=A4=ED=94=88=20=EB=82=A0?= =?UTF-8?q?=EC=A7=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/AudioContentRepository.kt | 23 ++++++++- .../sodalive/content/AudioContentService.kt | 49 ++++++++++++++----- .../content/GetAudioContentDetailResponse.kt | 1 + .../content/main/AudioContentMainService.kt | 5 +- 4 files changed, 62 insertions(+), 16 deletions(-) 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 f609302..033205b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -56,6 +56,7 @@ interface AudioContentQueryRepository { fun findByTheme( cloudfrontHost: String, + memberId: Long, theme: String = "", isAdult: Boolean = false, offset: Long = 0, @@ -64,13 +65,14 @@ interface AudioContentQueryRepository { fun findByThemeFor2Weeks( cloudfrontHost: String, + memberId: Long, theme: String = "", isAdult: Boolean = false, offset: Long = 0, limit: Long = 20 ): List - fun totalCountNewContentFor2Weeks(theme: String, isAdult: Boolean): Int + fun totalCountNewContentFor2Weeks(theme: String, memberId: Long, isAdult: Boolean): Int fun getNewContentUploadCreatorList( cloudfrontHost: String, @@ -242,12 +244,18 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) override fun findByTheme( cloudfrontHost: String, + memberId: Long, theme: String, isAdult: Boolean, offset: Long, limit: Long ): List { var where = audioContent.isActive.isTrue + .and( + audioContent.releaseDate.isNull + .or(audioContent.releaseDate.loe(LocalDateTime.now())) + .or(audioContent.member.id.eq(memberId)) + ) if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) @@ -278,9 +286,14 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) .fetch() } - override fun totalCountNewContentFor2Weeks(theme: String, isAdult: Boolean): Int { + override fun totalCountNewContentFor2Weeks(theme: String, memberId: Long, isAdult: Boolean): Int { var where = audioContent.isActive.isTrue .and(audioContent.createdAt.goe(LocalDateTime.now().minusWeeks(2))) + .and( + audioContent.releaseDate.isNull + .or(audioContent.releaseDate.loe(LocalDateTime.now())) + .or(audioContent.member.id.eq(memberId)) + ) if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) @@ -302,6 +315,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) override fun findByThemeFor2Weeks( cloudfrontHost: String, + memberId: Long, theme: String, isAdult: Boolean, offset: Long, @@ -309,6 +323,11 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) ): List { var where = audioContent.isActive.isTrue .and(audioContent.createdAt.goe(LocalDateTime.now().minusWeeks(2))) + .and( + audioContent.releaseDate.isNull + .or(audioContent.releaseDate.loe(LocalDateTime.now())) + .or(audioContent.member.id.eq(memberId)) + ) if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index da54c5e..e3044c0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -438,19 +438,41 @@ class AudioContentService( 0 } - val audioContentUrl = audioContentCloudFront.generateSignedURL( - resourcePath = if ( - isExistsAudioContent || - isExistsBundleAudioContent || - audioContent.member!!.id!! == member.id!! || - audioContent.price <= 0 - ) { - audioContent.content!! - } else { - audioContent.content!!.replace("output/", "preview/") - }, - expirationTime = 1000 * 60 * 60 * (audioContent.duration!!.split(":")[0].toLong() + 2) - ) + val releaseDate = if ( + audioContent.releaseDate != null && + audioContent.releaseDate!! < LocalDateTime.now() && + creatorId != member.id!! + ) { + audioContent.releaseDate!! + .atZone(ZoneId.of("UTC")) + .withZoneSameInstant(ZoneId.of("Asia/Seoul")) + .toLocalDateTime() + .format(DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 오픈")) + } else { + null + } + + val audioContentUrl = if ( + audioContent.releaseDate != null && + audioContent.releaseDate!! < LocalDateTime.now() && + creatorId != member.id!! + ) { + audioContentCloudFront.generateSignedURL( + resourcePath = if ( + isExistsAudioContent || + isExistsBundleAudioContent || + audioContent.member!!.id!! == member.id!! || + audioContent.price <= 0 + ) { + audioContent.content!! + } else { + audioContent.content!!.replace("output/", "preview/") + }, + expirationTime = 1000 * 60 * 60 * (audioContent.duration!!.split(":")[0].toLong() + 2) + ) + } else { + "" + } val tag = audioContent.audioContentHashTags .map { it.hashTag!!.tag } @@ -496,6 +518,7 @@ class AudioContentService( tag = tag, price = audioContent.price, duration = audioContent.duration ?: "", + releaseDate = releaseDate, isAdult = audioContent.isAdult, isMosaic = audioContent.isAdult && member.auth == null, isOnlyRental = audioContent.isOnlyRental, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt index 8d0c468..c91248f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt @@ -14,6 +14,7 @@ data class GetAudioContentDetailResponse( val tag: String, val price: Int, val duration: String, + val releaseDate: String?, val isAdult: Boolean, val isMosaic: Boolean, val isOnlyRental: Boolean, 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 96d4b75..8f282f0 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 @@ -33,6 +33,7 @@ class AudioContentMainService( fun getNewContentByTheme(theme: String, member: Member, pageable: Pageable): List { return repository.findByTheme( cloudfrontHost = imageHost, + memberId = member.id!!, theme = theme, isAdult = member.auth != null, offset = pageable.offset, @@ -45,9 +46,11 @@ class AudioContentMainService( @Transactional(readOnly = true) fun getNewContentFor2WeeksByTheme(theme: String, member: Member, pageable: Pageable): GetNewContentAllResponse { - val totalCount = repository.totalCountNewContentFor2Weeks(theme, isAdult = member.auth != null) + val totalCount = + repository.totalCountNewContentFor2Weeks(theme, memberId = member.id!!, isAdult = member.auth != null) val items = repository.findByThemeFor2Weeks( cloudfrontHost = imageHost, + memberId = member.id!!, theme = theme, isAdult = member.auth != null, offset = pageable.offset, From 5e093a5555102867088a8cb9198229f1463217f0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 9 Jan 2024 23:02:41 +0900 Subject: [PATCH 05/18] =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20API=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/AudioContentMainController.kt | 13 +-- .../main/AudioContentMainManageService.kt | 94 ------------------- 2 files changed, 1 insertion(+), 106 deletions(-) delete mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainManageService.kt 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 4a6ea13..058ccf3 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 @@ -15,19 +15,8 @@ import org.springframework.web.bind.annotation.RestController @RequestMapping("/audio-content/main") class AudioContentMainController( private val service: AudioContentMainService, - private val orderService: OrderService, - private val manageService: AudioContentMainManageService + private val orderService: OrderService ) { - - @GetMapping - fun getMain( - @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? - ) = run { - if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - - ApiResponse.ok(manageService.getMain(member)) - } - @GetMapping("/new-content-upload-creator") fun newContentUploadCreatorList( @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainManageService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainManageService.kt deleted file mode 100644 index 4ec97e1..0000000 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainManageService.kt +++ /dev/null @@ -1,94 +0,0 @@ -package kr.co.vividnext.sodalive.content.main - -import kr.co.vividnext.sodalive.content.AudioContentRepository -import kr.co.vividnext.sodalive.content.AudioContentService -import kr.co.vividnext.sodalive.content.order.OrderService -import kr.co.vividnext.sodalive.content.theme.AudioContentThemeQueryRepository -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.stereotype.Service -import org.springframework.transaction.annotation.Transactional -import java.time.DayOfWeek -import java.time.LocalDateTime -import java.time.temporal.TemporalAdjusters - -@Service -class AudioContentMainManageService( - private val service: AudioContentMainService, - private val orderService: OrderService, - private val audioContentService: AudioContentService, - - private val repository: AudioContentRepository, - private val blockMemberRepository: BlockMemberRepository, - private val audioContentThemeRepository: AudioContentThemeQueryRepository, - - @Value("\${cloud.aws.cloud-front.host}") - private val imageHost: String -) { - @Transactional(readOnly = true) - fun getMain(member: Member): GetAudioContentMainResponse { - val memberId = member.id!! - val isAdult = member.auth != null - - val newContentUploadCreatorList = service.getNewContentUploadCreatorList( - memberId = memberId, - isAdult = isAdult - ) - - val bannerList = service.getAudioContentMainBannerList(memberId = memberId, isAdult = isAdult) - - val orderList = orderService.getAudioContentMainOrderList( - memberId = memberId, - limit = 20 - ) - - // 콘텐츠 테마 - val themeList = audioContentThemeRepository.getActiveThemeOfContent(isAdult = isAdult) - - // 새 콘텐츠 20개 - 시간 내림차순 정렬 - val newContentList = repository.findByTheme( - cloudfrontHost = imageHost, - isAdult = isAdult - ) - .asSequence() - .filter { - !blockMemberRepository.isBlocked( - blockedMemberId = memberId, - memberId = it.creatorId - ) - } - .toList() - - val curationList = service.getAudioContentCurationList(memberId = memberId, isAdult = isAdult) - - 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 contentRankingSortTypeList = audioContentService.getContentRankingSortTypeList() - val contentRanking = audioContentService.getAudioContentRanking( - isAdult = isAdult, - startDate = startDate, - endDate = endDate, - offset = 0, - limit = 12 - ) - - return GetAudioContentMainResponse( - newContentUploadCreatorList = newContentUploadCreatorList, - bannerList = bannerList, - orderList = orderList, - themeList = themeList, - newContentList = newContentList, - curationList = curationList, - contentRankingSortTypeList = contentRankingSortTypeList, - contentRanking = contentRanking - ) - } -} From 40f4a12f9bdae1f4fd8edb3f18ee26e5cbe0263a Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 9 Jan 2024 23:09:56 +0900 Subject: [PATCH 06/18] =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=ED=95=A8=EC=88=98=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/main/AudioContentMainService.kt | 25 ------------------- 1 file changed, 25 deletions(-) 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 8f282f0..1df8343 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 @@ -122,31 +122,6 @@ class AudioContentMainService( } .toList() - @Transactional(readOnly = true) - @Cacheable(cacheNames = ["default"], key = "'contentCurationList:' + #memberId + ':' + #isAdult") - fun getAudioContentCurationList(memberId: Long, isAdult: Boolean) = - repository.getAudioContentCurations(isAdult = isAdult) - .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 = memberId, memberId = content.creatorId) - } - .toList() - ) - } - .filter { it.contents.isNotEmpty() } - .toList() - @Transactional(readOnly = true) @Cacheable( cacheNames = ["default"], From 41be05093dfe5c95e0e4a5b09e6a479ca90a929c Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 9 Jan 2024 23:24:21 +0900 Subject: [PATCH 07/18] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20-=20=EC=BD=98=ED=85=90=EC=B8=A0=20URL,=20=EC=98=A4?= =?UTF-8?q?=ED=94=88=EC=98=88=EC=A0=95=20=EB=82=A0=EC=A7=9C=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=A1=B0=EA=B1=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/content/AudioContentService.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index e3044c0..e4eced7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -440,7 +440,7 @@ class AudioContentService( val releaseDate = if ( audioContent.releaseDate != null && - audioContent.releaseDate!! < LocalDateTime.now() && + audioContent.releaseDate!! >= LocalDateTime.now() && creatorId != member.id!! ) { audioContent.releaseDate!! @@ -453,9 +453,9 @@ class AudioContentService( } val audioContentUrl = if ( - audioContent.releaseDate != null && - audioContent.releaseDate!! < LocalDateTime.now() && - creatorId != member.id!! + audioContent.releaseDate == null || + audioContent.releaseDate!! <= LocalDateTime.now() || + creatorId == member.id!! ) { audioContentCloudFront.generateSignedURL( resourcePath = if ( From 76ade3daa11b46af0ec1e262177596b8bef4f761 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 9 Jan 2024 23:59:05 +0900 Subject: [PATCH 08/18] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20-=20=EC=98=A4=ED=94=88=20=EB=82=A0=EC=A7=9C=20Forma?= =?UTF-8?q?t=20:=20"yyyy=EB=85=84=20MM=EC=9B=94=20dd=EC=9D=BC=20HH?= =?UTF-8?q?=EC=8B=9C=20mm=EB=B6=84=20=EC=98=A4=ED=94=88=EC=98=88=EC=A0=95"?= =?UTF-8?q?=20=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/content/AudioContentService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index e4eced7..4d975e7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -447,7 +447,7 @@ class AudioContentService( .atZone(ZoneId.of("UTC")) .withZoneSameInstant(ZoneId.of("Asia/Seoul")) .toLocalDateTime() - .format(DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 오픈")) + .format(DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 오픈예정")) } else { null } From ca2cc7a6b6b82cfb38786f8ffaa64df95f560583 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 10 Jan 2024 01:27:40 +0900 Subject: [PATCH 09/18] =?UTF-8?q?=EC=98=A4=EB=94=94=EC=98=A4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20-=20?= =?UTF-8?q?=EC=98=A4=ED=94=88=20=EC=98=88=EC=A0=95=20=ED=94=8C=EB=9E=98?= =?UTF-8?q?=EA=B7=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/content/AudioContentService.kt | 3 ++- .../vividnext/sodalive/content/GetAudioContentListResponse.kt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index 4d975e7..dc80529 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -582,7 +582,8 @@ class AudioContentService( duration = it.duration, likeCount = likeCount, commentCount = commentCount, - isAdult = it.isAdult + isAdult = it.isAdult, + isScheduledToOpen = it.releaseDate != null && it.releaseDate!! > LocalDateTime.now() ) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt index bfef003..2986176 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt @@ -14,5 +14,6 @@ data class GetAudioContentListItem( val duration: String?, val likeCount: Int, val commentCount: Int, - val isAdult: Boolean + val isAdult: Boolean, + val isScheduledToOpen: Boolean ) From e007a95982c0a1269b1c009fa804e3500c963876 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 10 Jan 2024 21:45:44 +0900 Subject: [PATCH 10/18] =?UTF-8?q?=EC=98=A4=EB=94=94=EC=98=A4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EC=98=88=EC=95=BD=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20-=20=EC=98=88=EC=95=BD=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=ED=95=9C=20=EC=BD=98=ED=85=90=EC=B8=A0=20release?= =?UTF-8?q?=EC=99=80=20=ED=91=B8=EC=8B=9C=EB=B0=9C=EC=86=A1=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/AudioContentController.kt | 17 ++++++++- .../content/AudioContentRepository.kt | 14 ++++++++ .../sodalive/content/AudioContentService.kt | 35 ++++++++++++++++++- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt index 537f560..02e1e2d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt @@ -25,7 +25,10 @@ import java.time.temporal.TemporalAdjusters @RestController @RequestMapping("/audio-content") -class AudioContentController(private val service: AudioContentService) { +class AudioContentController( + private val service: AudioContentService, + private val repository: AudioContentRepository +) { @PostMapping @PreAuthorize("hasRole('CREATOR')") fun createAudioContent( @@ -190,4 +193,16 @@ class AudioContentController(private val service: AudioContentService) { ) ) } + + @PostMapping("/release") + @PreAuthorize("hasRole('BOT')") + fun releaseContent() = run { + val contentIdList = repository.getNotReleaseContentId() + + contentIdList.forEach { + service.releaseContent(it) + } + + ApiResponse.ok(null) + } } 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 033205b..34923ec 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -98,6 +98,8 @@ interface AudioContentQueryRepository { ): List fun getAudioContentCurationList(isAdult: Boolean, offset: Long, limit: Long): List + + fun getNotReleaseContentId(): List } @Repository @@ -581,4 +583,16 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) .orderBy(audioContentCuration.orders.asc()) .fetch() } + + override fun getNotReleaseContentId(): List { + val where = audioContent.isActive.isFalse + .and(audioContent.releaseDate.isNotNull) + .and(audioContent.releaseDate.loe(LocalDateTime.now())) + + return queryFactory + .select(audioContent.id) + .from(audioContent) + .where(where) + .fetch() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index dc80529..d94a4d9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -342,7 +342,6 @@ class AudioContentService( val audioContent = repository.findByIdOrNull(contentId) ?: throw SodaException("잘못된 요청입니다.") - audioContent.isActive = true audioContent.content = content audioContent.duration = duration @@ -358,6 +357,8 @@ class AudioContentService( ) if (audioContent.releaseDate == null) { + audioContent.isActive = true + applicationEventPublisher.publishEvent( FcmEvent( type = FcmEventType.UPLOAD_CONTENT, @@ -384,6 +385,38 @@ class AudioContentService( } } + @Transactional + fun releaseContent(contentId: Long) { + val audioContent = repository.findByIdOrNull(contentId) + ?: throw SodaException("잘못된 요청입니다.") + + audioContent.isActive = true + + applicationEventPublisher.publishEvent( + FcmEvent( + type = FcmEventType.UPLOAD_CONTENT, + title = audioContent.member!!.nickname, + message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}", + isAuth = audioContent.isAdult, + contentId = contentId, + creatorId = audioContent.member!!.id, + container = "ios" + ) + ) + + applicationEventPublisher.publishEvent( + FcmEvent( + type = FcmEventType.UPLOAD_CONTENT, + title = audioContent.member!!.nickname, + message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}", + isAuth = audioContent.isAdult, + contentId = contentId, + creatorId = audioContent.member!!.id, + container = "aos" + ) + ) + } + fun getDetail(id: Long, member: Member, timezone: String): GetAudioContentDetailResponse { // 묶음 콘텐츠 조회 val bundleAudioContentList = repository.findBundleByContentId(contentId = id) From 319893d60f6c462b738a498249bdcbfecf86fc03 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 10 Jan 2024 22:32:28 +0900 Subject: [PATCH 11/18] =?UTF-8?q?=EC=98=A4=EB=94=94=EC=98=A4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20-=20?= =?UTF-8?q?=EC=98=A4=ED=94=88=EC=98=88=EC=A0=95=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=EA=B0=80=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=EC=97=90=20?= =?UTF-8?q?=EB=B3=B4=EC=9D=B4=EB=8F=84=EB=A1=9D=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/content/AudioContentRepository.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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 34923ec..f466859 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -150,8 +150,11 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) SortType.PRICE_LOW -> audioContent.price.asc() } - var where = audioContent.isActive.isTrue - .and(audioContent.member.id.eq(creatorId)) + var where = audioContent.member.id.eq(creatorId) + .and( + audioContent.isActive.isTrue + .or(audioContent.releaseDate.isNotNull) + ) if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) @@ -170,8 +173,11 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) creatorId: Long, isAdult: Boolean ): Int { - var where = audioContent.isActive.isTrue - .and(audioContent.member.id.eq(creatorId)) + var where = audioContent.member.id.eq(creatorId) + .and( + audioContent.isActive.isTrue + .or(audioContent.releaseDate.isNotNull) + ) if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) From 1a02f2383e5be52428bb5d6692a2ae8f2007dfa3 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 10 Jan 2024 22:33:33 +0900 Subject: [PATCH 12/18] =?UTF-8?q?=EC=98=A4=EB=94=94=EC=98=A4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EC=82=AD=EC=A0=9C=20-=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EC=82=AD=EC=A0=9C=EC=8B=9C=20=EC=98=A4?= =?UTF-8?q?=ED=94=88=20=EC=98=88=EC=A0=95=20=EB=82=A0=EC=A7=9C=20null=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/content/AudioContentService.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index d94a4d9..55e16b4 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -126,6 +126,7 @@ class AudioContentService( ?: throw SodaException("잘못된 콘텐츠 입니다.\n다시 시도해 주세요.") audioContent.isActive = false + audioContent.releaseDate = null } @Transactional From c479e5ad8180fad09d62ecffdc00e9ce1b6adf0b Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 10 Jan 2024 23:09:14 +0900 Subject: [PATCH 13/18] =?UTF-8?q?=EC=98=A4=EB=94=94=EC=98=A4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EC=83=81=EC=84=B8=20-=20isActive=EA=B0=80?= =?UTF-8?q?=20false=EC=9D=B4=EB=8D=94=EB=9D=BC=EB=8F=84=20releaseDate?= =?UTF-8?q?=EA=B0=80=20null=EC=9D=B4=20=EC=95=84=EB=8B=88=EB=A9=B4=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC=20=EB=B6=88=EB=9F=AC?= =?UTF-8?q?=EC=98=A4=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/content/AudioContentService.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index 55e16b4..d0f9469 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -448,7 +448,12 @@ class AudioContentService( contentId = audioContent.id!! ) - if (!isExistsAudioContent && !isExistsBundleAudioContent && !audioContent.isActive) { + if ( + !isExistsAudioContent && + !isExistsBundleAudioContent && + !audioContent.isActive && + audioContent.releaseDate == null + ) { throw SodaException("잘못된 콘텐츠 입니다.\n다시 시도해 주세요.") } From f89a61e23e8173bbc2ed49e745345002c5297e31 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 10 Jan 2024 23:40:17 +0900 Subject: [PATCH 14/18] =?UTF-8?q?=EC=98=88=EC=95=BD=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EB=90=9C=20=EC=98=A4=EB=94=94=EC=98=A4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EB=A6=B4=EB=A6=AC=EC=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/content/AudioContentController.kt | 5 +++-- .../co/vividnext/sodalive/content/AudioContentRepository.kt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt index 02e1e2d..9f844fb 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt @@ -199,8 +199,9 @@ class AudioContentController( fun releaseContent() = run { val contentIdList = repository.getNotReleaseContentId() - contentIdList.forEach { - service.releaseContent(it) + for (contentId in contentIdList) { + println(contentId) + service.releaseContent(contentId) } ApiResponse.ok(null) 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 f466859..85ff312 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -593,7 +593,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) override fun getNotReleaseContentId(): List { val where = audioContent.isActive.isFalse .and(audioContent.releaseDate.isNotNull) - .and(audioContent.releaseDate.loe(LocalDateTime.now())) + .and(audioContent.releaseDate.goe(LocalDateTime.now())) return queryFactory .select(audioContent.id) From 0dd1a706fdd390c64111a83e570015722c7e899e Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 10 Jan 2024 23:52:57 +0900 Subject: [PATCH 15/18] =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20pr?= =?UTF-8?q?int=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/content/AudioContentController.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt index 9f844fb..ab678be 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt @@ -200,7 +200,6 @@ class AudioContentController( val contentIdList = repository.getNotReleaseContentId() for (contentId in contentIdList) { - println(contentId) service.releaseContent(contentId) } From 8a866df5a335c14d1d87aae4715c968cc3982f6e Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 11 Jan 2024 00:04:58 +0900 Subject: [PATCH 16/18] =?UTF-8?q?=EC=98=88=EC=95=BD=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EB=90=9C=20=EC=98=A4=EB=94=94=EC=98=A4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EB=A6=B4=EB=A6=AC=EC=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/content/AudioContentRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 85ff312..f466859 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -593,7 +593,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) override fun getNotReleaseContentId(): List { val where = audioContent.isActive.isFalse .and(audioContent.releaseDate.isNotNull) - .and(audioContent.releaseDate.goe(LocalDateTime.now())) + .and(audioContent.releaseDate.loe(LocalDateTime.now())) return queryFactory .select(audioContent.id) From 765aec36204ff75a0a73f7e51092e52f148ec552 Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 11 Jan 2024 00:24:41 +0900 Subject: [PATCH 17/18] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20-=20=EC=BD=98=ED=85=90=EC=B8=A0=EB=A5=BC=20?= =?UTF-8?q?=EC=98=AC=EB=A6=B0=20=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EB=8F=84=20=EC=98=A4=ED=94=88=EC=98=88=EC=A0=95=20?= =?UTF-8?q?=EB=82=A0=EC=A7=9C=EB=A5=BC=20=EC=88=98=EC=8B=A0=20=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/content/AudioContentService.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index d0f9469..90b0b54 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -479,8 +479,7 @@ class AudioContentService( val releaseDate = if ( audioContent.releaseDate != null && - audioContent.releaseDate!! >= LocalDateTime.now() && - creatorId != member.id!! + audioContent.releaseDate!! >= LocalDateTime.now() ) { audioContent.releaseDate!! .atZone(ZoneId.of("UTC")) From 2d015d0a3329bbe399045b8f026b4166e23b59dd Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 11 Jan 2024 01:40:35 +0900 Subject: [PATCH 18/18] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20-=20=EC=BD=98=ED=85=90=EC=B8=A0=20?= =?UTF-8?q?=EB=85=B8=EC=B6=9C=20=EC=A1=B0=EA=B1=B4=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?(=20isActive=EA=B0=80=20true=EC=9D=B4=EA=B1=B0=EB=82=98=20relea?= =?UTF-8?q?seDate=EC=99=80=20duration=EC=9D=B4=20null=20=EC=9D=B4=20?= =?UTF-8?q?=EC=95=84=EB=8B=8C=20=EA=B2=BD=EC=9A=B0=20=EB=85=B8=EC=B6=9C=20?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/content/AudioContentRepository.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 f466859..15a1427 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -153,7 +153,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) var where = audioContent.member.id.eq(creatorId) .and( audioContent.isActive.isTrue - .or(audioContent.releaseDate.isNotNull) + .or(audioContent.releaseDate.isNotNull.and(audioContent.duration.isNotNull)) ) if (!isAdult) { @@ -176,7 +176,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) var where = audioContent.member.id.eq(creatorId) .and( audioContent.isActive.isTrue - .or(audioContent.releaseDate.isNotNull) + .or(audioContent.releaseDate.isNotNull.and(audioContent.duration.isNotNull)) ) if (!isAdult) {