| @@ -56,7 +56,7 @@ class AdminContentCurationController(private val service: AdminContentCurationSe | ||||
|         @RequestBody request: AddItemToCurationRequest | ||||
|     ) = ApiResponse.ok(service.addItemToCuration(request), "큐레이션 아이템을 등록했습니다.") | ||||
|  | ||||
|     @PostMapping("/remove/item") | ||||
|     @PutMapping("/remove/item") | ||||
|     fun removeItemInCuration( | ||||
|         @RequestBody request: RemoveItemInCurationRequest | ||||
|     ) = ApiResponse.ok(service.removeItemInCuration(request), "큐레이션 아이템을 제거했습니다.") | ||||
|   | ||||
| @@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem | ||||
| import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration | ||||
| import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem | ||||
| import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series | ||||
| import org.springframework.beans.factory.annotation.Value | ||||
| import org.springframework.data.jpa.repository.JpaRepository | ||||
|  | ||||
| interface AdminContentCurationItemRepository : | ||||
| @@ -15,10 +16,16 @@ interface AdminContentCurationItemRepository : | ||||
| interface AdminContentCurationItemQueryRepository { | ||||
|     fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? | ||||
|     fun findByCurationIdAndContentId(curationId: Long, contentId: Long?): AudioContentCurationItem? | ||||
|     fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? | ||||
|     fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse> | ||||
|     fun getAudioContentCurationSeriesItemList(curationId: Long): List<GetCurationItemResponse> | ||||
| } | ||||
|  | ||||
| class AdminContentCurationItemQueryRepositoryImpl( | ||||
|     val queryFactory: JPAQueryFactory | ||||
|     val queryFactory: JPAQueryFactory, | ||||
|  | ||||
|     @Value("\${cloud.aws.cloud-front.host}") | ||||
|     private val imageHost: String | ||||
| ) : AdminContentCurationItemQueryRepository { | ||||
|     override fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? { | ||||
|         return queryFactory | ||||
| @@ -43,4 +50,55 @@ class AdminContentCurationItemQueryRepositoryImpl( | ||||
|             ) | ||||
|             .fetchFirst() | ||||
|     } | ||||
|  | ||||
|     override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? { | ||||
|         return queryFactory.selectFrom(audioContentCurationItem) | ||||
|             .innerJoin(audioContentCurationItem.curation, audioContentCuration) | ||||
|             .where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId)) | ||||
|             .fetchFirst() | ||||
|     } | ||||
|  | ||||
|     override fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse> { | ||||
|         return queryFactory | ||||
|             .select( | ||||
|                 QGetCurationItemResponse( | ||||
|                     audioContentCurationItem.id, | ||||
|                     audioContent.title, | ||||
|                     audioContent.detail, | ||||
|                     audioContent.coverImage.prepend("/").prepend(imageHost), | ||||
|                     audioContent.member.nickname.coalesce(""), | ||||
|                     audioContent.isAdult | ||||
|                 ) | ||||
|             ) | ||||
|             .from(audioContentCurationItem) | ||||
|             .innerJoin(audioContentCurationItem.curation, audioContentCuration) | ||||
|             .innerJoin(audioContentCurationItem.content, audioContent) | ||||
|             .where( | ||||
|                 audioContentCuration.id.eq(curationId), | ||||
|                 audioContentCurationItem.isActive.isTrue | ||||
|             ) | ||||
|             .fetch() | ||||
|     } | ||||
|  | ||||
|     override fun getAudioContentCurationSeriesItemList(curationId: Long): List<GetCurationItemResponse> { | ||||
|         return queryFactory | ||||
|             .select( | ||||
|                 QGetCurationItemResponse( | ||||
|                     audioContentCurationItem.id, | ||||
|                     series.title, | ||||
|                     series.introduction, | ||||
|                     series.coverImage.prepend("/").prepend(imageHost), | ||||
|                     series.member.nickname.coalesce(""), | ||||
|                     series.isAdult | ||||
|                 ) | ||||
|             ) | ||||
|             .from(audioContentCurationItem) | ||||
|             .innerJoin(audioContentCurationItem.curation, audioContentCuration) | ||||
|             .innerJoin(audioContentCurationItem.series, series) | ||||
|             .where( | ||||
|                 audioContentCuration.id.eq(curationId), | ||||
|                 audioContentCurationItem.isActive.isTrue | ||||
|             ) | ||||
|             .fetch() | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.admin.content.curation | ||||
| import com.querydsl.jpa.impl.JPAQueryFactory | ||||
| import kr.co.vividnext.sodalive.content.QAudioContent.audioContent | ||||
| import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration | ||||
| import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem | ||||
| import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration | ||||
| import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem | ||||
| import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab | ||||
| @@ -20,8 +19,6 @@ interface AdminContentCurationRepository : | ||||
| interface AdminContentCurationQueryRepository { | ||||
|     fun getAudioContentCurationList(tabId: Long): List<GetAdminContentCurationResponse> | ||||
|     fun findByIdAndActive(id: Long): AudioContentCuration? | ||||
|     fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? | ||||
|     fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse> | ||||
|     fun searchCurationContentItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse> | ||||
|     fun searchCurationSeriesItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse> | ||||
| } | ||||
| @@ -65,36 +62,6 @@ class AdminContentCurationQueryRepositoryImpl( | ||||
|             .fetchFirst() | ||||
|     } | ||||
|  | ||||
|     override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? { | ||||
|         return queryFactory.selectFrom(audioContentCurationItem) | ||||
|             .innerJoin(audioContentCurationItem.curation, audioContentCuration) | ||||
|             .where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId)) | ||||
|             .fetchFirst() | ||||
|     } | ||||
|  | ||||
|     override fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse> { | ||||
|         return queryFactory | ||||
|             .select( | ||||
|                 QGetCurationItemResponse( | ||||
|                     audioContentCurationItem.id, | ||||
|                     audioContent.title.coalesce(series.title), | ||||
|                     audioContent.detail.coalesce(series.introduction), | ||||
|                     audioContent.coverImage.coalesce(series.coverImage).prepend("/").prepend(imageHost), | ||||
|                     audioContent.member.nickname.coalesce(series.member.nickname).coalesce(""), | ||||
|                     audioContent.isAdult.coalesce(series.isAdult) | ||||
|                 ) | ||||
|             ) | ||||
|             .from(audioContentCurationItem) | ||||
|             .innerJoin(audioContentCurationItem.curation, audioContentCuration) | ||||
|             .leftJoin(audioContentCurationItem.series, series) | ||||
|             .leftJoin(audioContentCurationItem.content, audioContent) | ||||
|             .where( | ||||
|                 audioContentCuration.id.eq(curationId), | ||||
|                 audioContentCurationItem.isActive.isTrue | ||||
|             ) | ||||
|             .fetch() | ||||
|     } | ||||
|  | ||||
|     override fun searchCurationContentItem( | ||||
|         curationId: Long, | ||||
|         searchWord: String | ||||
|   | ||||
| @@ -84,7 +84,14 @@ class AdminContentCurationService( | ||||
|     } | ||||
|  | ||||
|     fun getCurationItem(curationId: Long): List<GetCurationItemResponse> { | ||||
|         return repository.getAudioContentCurationItemList(curationId) | ||||
|         val curation = repository.findByIdOrNull(curationId) | ||||
|             ?: throw SodaException("잘못된 요청입니다.") | ||||
|  | ||||
|         return if (curation.isSeries) { | ||||
|             contentCurationItemRepository.getAudioContentCurationSeriesItemList(curationId) | ||||
|         } else { | ||||
|             contentCurationItemRepository.getAudioContentCurationItemList(curationId) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun searchCurationContentItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse> { | ||||
| @@ -136,7 +143,7 @@ class AdminContentCurationService( | ||||
|  | ||||
|     @Transactional | ||||
|     fun removeItemInCuration(request: RemoveItemInCurationRequest) { | ||||
|         val audioContentCurationItem = repository.findByCurationIdAndItemId( | ||||
|         val audioContentCurationItem = contentCurationItemRepository.findByCurationIdAndItemId( | ||||
|             curationId = request.curationId, | ||||
|             itemId = request.itemId | ||||
|         ) | ||||
|   | ||||
| @@ -15,10 +15,10 @@ class MemberNotificationService(private val repository: MemberNotificationReposi | ||||
|         var notification = repository.getMemberNotification(memberId = member.id!!) | ||||
|         if (notification == null) { | ||||
|             notification = MemberNotification( | ||||
|                 uploadContent = uploadContent, | ||||
|                 live = live, | ||||
|                 message = message, | ||||
|                 audition = audition | ||||
|                 uploadContent = uploadContent ?: false, | ||||
|                 live = live ?: false, | ||||
|                 message = message ?: false, | ||||
|                 audition = audition ?: false | ||||
|             ) | ||||
|             notification.member = member | ||||
|             repository.save(notification) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user