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