크리에이터 커뮤니티 조회
- 오디오 콘텐츠가 있는 포스트는 오디오 URL 추가
This commit is contained in:
		| @@ -28,6 +28,7 @@ data class CreatorCommunity( | ||||
|  | ||||
|     fun toCommunityPostListResponse( | ||||
|         imageHost: String, | ||||
|         audioUrl: String?, | ||||
|         content: String, | ||||
|         date: String, | ||||
|         isLike: Boolean, | ||||
| @@ -46,6 +47,7 @@ data class CreatorCommunity( | ||||
|             } else { | ||||
|                 null | ||||
|             }, | ||||
|             audioUrl = audioUrl, | ||||
|             content = content, | ||||
|             price = price, | ||||
|             date = date, | ||||
|   | ||||
| @@ -64,6 +64,7 @@ class CreatorCommunityQueryRepositoryImpl(private val queryFactory: JPAQueryFact | ||||
|                     creatorCommunity.member.nickname, | ||||
|                     creatorCommunity.member.profileImage.coalesce("profile/default_profile.png"), | ||||
|                     creatorCommunity.imagePath, | ||||
|                     creatorCommunity.audioPath, | ||||
|                     creatorCommunity.content, | ||||
|                     creatorCommunity.createdAt, | ||||
|                     creatorCommunity.isCommentAvailable, | ||||
| @@ -149,6 +150,7 @@ class CreatorCommunityQueryRepositoryImpl(private val queryFactory: JPAQueryFact | ||||
|                     creatorCommunity.member.nickname, | ||||
|                     creatorCommunity.member.profileImage.coalesce("profile/default_profile.png"), | ||||
|                     creatorCommunity.imagePath, | ||||
|                     creatorCommunity.audioPath, | ||||
|                     creatorCommunity.content, | ||||
|                     creatorCommunity.createdAt, | ||||
|                     creatorCommunity.isCommentAvailable, | ||||
| @@ -179,6 +181,7 @@ class CreatorCommunityQueryRepositoryImpl(private val queryFactory: JPAQueryFact | ||||
|                     creatorCommunity.member.nickname, | ||||
|                     creatorCommunity.member.profileImage.coalesce("profile/default_profile.png"), | ||||
|                     creatorCommunity.imagePath, | ||||
|                     creatorCommunity.audioPath, | ||||
|                     creatorCommunity.content, | ||||
|                     creatorCommunity.createdAt, | ||||
|                     creatorCommunity.isCommentAvailable, | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.explorer.profile.creatorCommunity | ||||
|  | ||||
| import com.amazonaws.services.s3.model.ObjectMetadata | ||||
| import com.fasterxml.jackson.databind.ObjectMapper | ||||
| import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront | ||||
| import kr.co.vividnext.sodalive.aws.s3.S3Uploader | ||||
| import kr.co.vividnext.sodalive.can.payment.CanPaymentService | ||||
| import kr.co.vividnext.sodalive.can.use.CanUsage | ||||
| @@ -41,6 +42,7 @@ class CreatorCommunityService( | ||||
|  | ||||
|     private val s3Uploader: S3Uploader, | ||||
|     private val objectMapper: ObjectMapper, | ||||
|     private val audioContentCloudFront: AudioContentCloudFront, | ||||
|     private val applicationEventPublisher: ApplicationEventPublisher, | ||||
|  | ||||
|     @Value("\${cloud.aws.s3.bucket}") | ||||
| @@ -212,8 +214,18 @@ class CreatorCommunityService( | ||||
|  | ||||
|                 val existOrdered = useCanRepository.isExistOrdered(postId = it.id, memberId = memberId) | ||||
|  | ||||
|                 val audioUrl = if ((it.price <= 0 || existOrdered) && it.audioPath != null) { | ||||
|                     audioContentCloudFront.generateSignedURL( | ||||
|                         resourcePath = it.audioPath, | ||||
|                         expirationTime = 1000 * 60 * 30 | ||||
|                     ) | ||||
|                 } else { | ||||
|                     null | ||||
|                 } | ||||
|  | ||||
|                 it.toCommunityPostListResponse( | ||||
|                     imageHost = imageHost, | ||||
|                     audioUrl = audioUrl, | ||||
|                     date = getTimeAgoString(it.date), | ||||
|                     isLike = isLike, | ||||
|                     memberId = memberId, | ||||
| @@ -268,8 +280,18 @@ class CreatorCommunityService( | ||||
|  | ||||
|         val existOrdered = useCanRepository.isExistOrdered(postId = post.id, memberId = memberId) | ||||
|  | ||||
|         val audioUrl = if ((post.price <= 0 || existOrdered) && post.audioPath != null) { | ||||
|             audioContentCloudFront.generateSignedURL( | ||||
|                 resourcePath = post.audioPath, | ||||
|                 expirationTime = 1000 * 60 * 30 | ||||
|             ) | ||||
|         } else { | ||||
|             null | ||||
|         } | ||||
|  | ||||
|         return post.toCommunityPostListResponse( | ||||
|             imageHost = imageHost, | ||||
|             audioUrl = audioUrl, | ||||
|             date = getTimeAgoString(post.date), | ||||
|             isLike = isLike, | ||||
|             memberId = memberId, | ||||
| @@ -440,6 +462,7 @@ class CreatorCommunityService( | ||||
|  | ||||
|                 it.toCommunityPostListResponse( | ||||
|                     imageHost = imageHost, | ||||
|                     audioUrl = null, | ||||
|                     date = getTimeAgoString(it.date), | ||||
|                     isLike = isLike, | ||||
|                     memberId = memberId, | ||||
| @@ -506,8 +529,18 @@ class CreatorCommunityService( | ||||
|             null | ||||
|         } | ||||
|  | ||||
|         val audioUrl = if (post.audioPath != null) { | ||||
|             audioContentCloudFront.generateSignedURL( | ||||
|                 resourcePath = post.audioPath!!, | ||||
|                 expirationTime = 1000 * 60 * 30 | ||||
|             ) | ||||
|         } else { | ||||
|             null | ||||
|         } | ||||
|  | ||||
|         return post.toCommunityPostListResponse( | ||||
|             imageHost = imageHost, | ||||
|             audioUrl = audioUrl, | ||||
|             content = post.content, | ||||
|             date = getTimeAgoString(post.createdAt!!), | ||||
|             isLike = isLike, | ||||
|   | ||||
| @@ -9,6 +9,7 @@ data class GetCommunityPostListResponse @QueryProjection constructor( | ||||
|     val creatorNickname: String, | ||||
|     val creatorProfileUrl: String, | ||||
|     val imageUrl: String?, | ||||
|     val audioUrl: String?, | ||||
|     val content: String, | ||||
|     val price: Int, | ||||
|     val date: String, | ||||
|   | ||||
| @@ -10,6 +10,7 @@ data class SelectCommunityPostResponse @QueryProjection constructor( | ||||
|     val creatorNickname: String, | ||||
|     val creatorProfileUrl: String, | ||||
|     val imagePath: String?, | ||||
|     val audioPath: String?, | ||||
|     val content: String, | ||||
|     val date: LocalDateTime, | ||||
|     val isCommentAvailable: Boolean, | ||||
| @@ -17,6 +18,7 @@ data class SelectCommunityPostResponse @QueryProjection constructor( | ||||
| ) { | ||||
|     fun toCommunityPostListResponse( | ||||
|         imageHost: String, | ||||
|         audioUrl: String?, | ||||
|         date: String, | ||||
|         isLike: Boolean, | ||||
|         memberId: Long, | ||||
| @@ -35,6 +37,7 @@ data class SelectCommunityPostResponse @QueryProjection constructor( | ||||
|             } else { | ||||
|                 null | ||||
|             }, | ||||
|             audioUrl = audioUrl, | ||||
|             content = if (price > 0 && memberId != creatorId) { | ||||
|                 if (existOrdered) { | ||||
|                     content | ||||
|   | ||||
		Reference in New Issue
	
	Block a user