From 170cf9f2178369fe590577bdbfbd2effebc843da Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 14 Oct 2024 02:02:55 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20-=20=EC=B6=94=EC=B2=9C=EC=8B=9C=EB=A6=AC=EC=A6=88?= =?UTF-8?q?=20-=20=EB=B9=84=EC=84=B1=EC=9D=B8=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=EB=A7=8C=20=EB=B3=B4=EA=B8=B0=EB=A5=BC=20=ED=96=88?= =?UTF-8?q?=EC=9D=84=20=EB=95=8C=20=EC=A1=B0=ED=9A=8C=EA=B0=80=20=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=B2=84=EA=B7=B8=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 --- .../sodalive/content/series/ContentSeriesRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt index 7512aac..10b8f25 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt @@ -116,7 +116,7 @@ class ContentSeriesQueryRepositoryImpl( var where = series.isActive.isTrue if (!isAuth) { - where = where.and(audioContent.isAdult.isFalse) + where = where.and(series.isAdult.isFalse) } else { if (contentType != ContentType.ALL) { where = where.and( -- 2.40.1 From cda42c26e8c33aea5e4e9668a9dbe8fb7349de64 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 14 Oct 2024 02:13:55 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=ED=81=90=EB=A0=88=EC=9D=B4=EC=85=98=20?= =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20-=20=EB=82=A8=EC=84=B1=ED=96=A5?= =?UTF-8?q?=EC=9D=B4=EB=A9=B4=20=EC=97=AC=EC=84=B1=20=ED=81=AC=EB=A6=AC?= =?UTF-8?q?=EC=97=90=EC=9D=B4=ED=84=B0,=20=EC=97=AC=EC=84=B1=ED=96=A5?= =?UTF-8?q?=EC=9D=B4=EB=A9=B4=20=EB=82=A8=EC=84=B1=20=ED=81=AC=EB=A6=AC?= =?UTF-8?q?=EC=97=90=EC=9D=B4=ED=84=B0=20=EC=9E=91=ED=92=88=EC=9D=B4=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EB=90=98=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 --- .../curation/AudioContentCurationController.kt | 14 +++++++++++++- .../AudioContentCurationQueryRepository.kt | 16 +++++++++++++++- .../main/curation/AudioContentCurationService.kt | 14 ++++++++++---- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationController.kt index db94fb6..0202536 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationController.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.content.main.curation import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.content.ContentType import kr.co.vividnext.sodalive.content.SortType import kr.co.vividnext.sodalive.member.Member import org.springframework.data.domain.Pageable @@ -18,12 +19,23 @@ class AudioContentCurationController(private val service: AudioContentCurationSe @GetMapping("/{id}") fun getCurationContent( @PathVariable id: Long, + @RequestParam("isAdultContentVisible", required = false) isAdultContentVisible: Boolean? = null, + @RequestParam("contentType", required = false) contentType: ContentType? = null, @RequestParam("sort-type", required = false) sortType: SortType? = SortType.NEWEST, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, pageable: Pageable ) = run { if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - ApiResponse.ok(service.getCurationContent(id, sortType ?: SortType.NEWEST, member, pageable)) + ApiResponse.ok( + service.getCurationContent( + curationId = id, + isAdultContentVisible = isAdultContentVisible ?: true, + contentType = contentType ?: ContentType.ALL, + sortType = sortType ?: SortType.NEWEST, + member = member, + pageable = pageable + ) + ) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt index 91994c6..916d860 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.content.main.curation import com.querydsl.jpa.impl.JPAQueryFactory +import kr.co.vividnext.sodalive.content.ContentType import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.SortType import kr.co.vividnext.sodalive.content.main.GetAudioContentMainItem @@ -11,12 +12,18 @@ import org.springframework.stereotype.Repository @Repository class AudioContentCurationQueryRepository(private val queryFactory: JPAQueryFactory) { - fun findTotalCountByCurationId(curationId: Long, isAdult: Boolean = false): Int { + fun findTotalCountByCurationId(curationId: Long, isAdult: Boolean, contentType: ContentType): Int { var where = audioContent.isActive.isTrue .and(audioContent.curation.id.eq(curationId)) if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) + } else { + if (contentType != ContentType.ALL) { + where = where.and( + audioContent.member.auth.gender.eq(if (contentType == ContentType.MALE) 0 else 1) + ) + } } return queryFactory @@ -31,6 +38,7 @@ class AudioContentCurationQueryRepository(private val queryFactory: JPAQueryFact curationId: Long, cloudfrontHost: String, isAdult: Boolean = false, + contentType: ContentType, sortType: SortType = SortType.NEWEST, offset: Long = 0, limit: Long = 10 @@ -49,6 +57,12 @@ class AudioContentCurationQueryRepository(private val queryFactory: JPAQueryFact if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) + } else { + if (contentType != ContentType.ALL) { + where = where.and( + audioContent.member.auth.gender.eq(if (contentType == ContentType.MALE) 0 else 1) + ) + } } return queryFactory diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt index a561df3..13f22fe 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt @@ -1,5 +1,6 @@ package kr.co.vividnext.sodalive.content.main.curation +import kr.co.vividnext.sodalive.content.ContentType import kr.co.vividnext.sodalive.content.SortType import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.block.BlockMemberRepository @@ -17,23 +18,28 @@ class AudioContentCurationService( ) { fun getCurationContent( curationId: Long, + isAdultContentVisible: Boolean, + contentType: ContentType, sortType: SortType, member: Member, pageable: Pageable ): GetCurationContentResponse { - val totalCount = repository.findTotalCountByCurationId(curationId, member.auth != null) + val totalCount = repository.findTotalCountByCurationId( + curationId = curationId, + isAdult = member.auth != null && isAdultContentVisible, + contentType = contentType + ) val audioContentList = repository.findByCurationId( curationId = curationId, cloudfrontHost = cloudFrontHost, - isAdult = member.auth != null, + isAdult = member.auth != null && isAdultContentVisible, + contentType = contentType, sortType = sortType, offset = pageable.offset, limit = pageable.pageSize.toLong() ) - .asSequence() .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creatorId) } - .toList() return GetCurationContentResponse( totalCount = totalCount, -- 2.40.1