콘텐츠 메인 - 새로운 콘텐츠
- 본인인증을 했더라도 19금 콘텐츠 보기를 활성화 하지 않으면 19금 콘텐츠가 보이지 않도록 수정
This commit is contained in:
		| @@ -64,6 +64,7 @@ interface AudioContentQueryRepository { | |||||||
|         theme: String = "", |         theme: String = "", | ||||||
|         sortType: SortType = SortType.NEWEST, |         sortType: SortType = SortType.NEWEST, | ||||||
|         isAdult: Boolean = false, |         isAdult: Boolean = false, | ||||||
|  |         contentType: ContentType = ContentType.ALL, | ||||||
|         offset: Long = 0, |         offset: Long = 0, | ||||||
|         limit: Long = 20 |         limit: Long = 20 | ||||||
|     ): List<GetAudioContentMainItem> |     ): List<GetAudioContentMainItem> | ||||||
| @@ -340,6 +341,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) | |||||||
|         theme: String, |         theme: String, | ||||||
|         sortType: SortType, |         sortType: SortType, | ||||||
|         isAdult: Boolean, |         isAdult: Boolean, | ||||||
|  |         contentType: ContentType, | ||||||
|         offset: Long, |         offset: Long, | ||||||
|         limit: Long |         limit: Long | ||||||
|     ): List<GetAudioContentMainItem> { |     ): List<GetAudioContentMainItem> { | ||||||
| @@ -368,6 +370,12 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) | |||||||
|  |  | ||||||
|         if (!isAdult) { |         if (!isAdult) { | ||||||
|             where = where.and(audioContent.isAdult.isFalse) |             where = where.and(audioContent.isAdult.isFalse) | ||||||
|  |         } else { | ||||||
|  |             if (contentType != ContentType.ALL) { | ||||||
|  |                 where = where.and( | ||||||
|  |                     audioContent.member.auth.gender.eq(if (contentType == ContentType.MALE) 1 else 0) | ||||||
|  |                 ) | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (theme.isNotBlank()) { |         if (theme.isNotBlank()) { | ||||||
|   | |||||||
| @@ -63,12 +63,22 @@ class AudioContentMainController( | |||||||
|     @GetMapping("/new") |     @GetMapping("/new") | ||||||
|     fun getNewContentByTheme( |     fun getNewContentByTheme( | ||||||
|         @RequestParam("theme") theme: String, |         @RequestParam("theme") theme: String, | ||||||
|  |         @RequestParam("isAdultContentVisible", required = false) isAdultContentVisible: Boolean? = null, | ||||||
|  |         @RequestParam("contentType", required = false) contentType: ContentType? = null, | ||||||
|         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, |         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, | ||||||
|         pageable: Pageable |         pageable: Pageable | ||||||
|     ) = run { |     ) = run { | ||||||
|         if (member == null) throw SodaException("로그인 정보를 확인해주세요.") |         if (member == null) throw SodaException("로그인 정보를 확인해주세요.") | ||||||
|  |  | ||||||
|         ApiResponse.ok(service.getNewContentByTheme(theme, member, pageable)) |         ApiResponse.ok( | ||||||
|  |             service.getNewContentByTheme( | ||||||
|  |                 theme, | ||||||
|  |                 isAdultContentVisible = isAdultContentVisible ?: true, | ||||||
|  |                 contentType = contentType ?: ContentType.ALL, | ||||||
|  |                 member, | ||||||
|  |                 pageable | ||||||
|  |             ) | ||||||
|  |         ) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("/theme") |     @GetMapping("/theme") | ||||||
|   | |||||||
| @@ -31,18 +31,23 @@ class AudioContentMainService( | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional(readOnly = true) |     @Transactional(readOnly = true) | ||||||
|     fun getNewContentByTheme(theme: String, member: Member, pageable: Pageable): List<GetAudioContentMainItem> { |     fun getNewContentByTheme( | ||||||
|  |         theme: String, | ||||||
|  |         isAdultContentVisible: Boolean, | ||||||
|  |         contentType: ContentType, | ||||||
|  |         member: Member, | ||||||
|  |         pageable: Pageable | ||||||
|  |     ): List<GetAudioContentMainItem> { | ||||||
|         return repository.findByTheme( |         return repository.findByTheme( | ||||||
|             cloudfrontHost = imageHost, |             cloudfrontHost = imageHost, | ||||||
|             memberId = member.id!!, |             memberId = member.id!!, | ||||||
|             theme = theme, |             theme = theme, | ||||||
|             isAdult = member.auth != null, |             isAdult = member.auth != null && isAdultContentVisible, | ||||||
|  |             contentType = contentType, | ||||||
|             offset = pageable.offset, |             offset = pageable.offset, | ||||||
|             limit = pageable.pageSize.toLong() |             limit = pageable.pageSize.toLong() | ||||||
|         ) |         ) | ||||||
|             .asSequence() |  | ||||||
|             .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creatorId) } |             .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creatorId) } | ||||||
|             .toList() |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional(readOnly = true) |     @Transactional(readOnly = true) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user