크리에이터 커뮤니티 조회

- 오디오 콘텐츠가 있는 포스트는 오디오 URL 추가
This commit is contained in:
Klaus 2024-08-05 17:57:12 +09:00
parent 429dc2b848
commit c2d7d12767
5 changed files with 42 additions and 0 deletions

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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