parent
3b008155e1
commit
2a9eaead83
|
@ -3,9 +3,11 @@ package kr.co.vividnext.sodalive.creator.admin.content.series
|
|||
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.lang.Nullable
|
||||
import org.springframework.security.access.prepost.PreAuthorize
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.PostMapping
|
||||
import org.springframework.web.bind.annotation.PutMapping
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
|
@ -40,4 +42,20 @@ class CreatorAdminContentSeriesController(private val service: CreatorAdminConte
|
|||
|
||||
ApiResponse.ok(service.modifySeries(image, requestString, member), "시리즈가 수정되었습니다.")
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
fun getSeriesList(
|
||||
pageable: Pageable,
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||
) = run {
|
||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||
|
||||
ApiResponse.ok(
|
||||
service.getSeriesList(
|
||||
offset = pageable.offset,
|
||||
limit = pageable.pageSize.toLong(),
|
||||
creatorId = member.id!!
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,13 @@ interface CreatorAdminContentSeriesRepository : JpaRepository<Series, Long>, Cre
|
|||
|
||||
interface CreatorAdminContentSeriesQueryRepository {
|
||||
fun findByIdAndCreatorId(id: Long, creatorId: Long): Series?
|
||||
fun getSeriesCount(creatorId: Long): Int
|
||||
fun getSeriesList(
|
||||
offset: Long,
|
||||
limit: Long,
|
||||
creatorId: Long,
|
||||
imageHost: String
|
||||
): List<GetCreatorAdminContentSeriesListItem>
|
||||
}
|
||||
|
||||
class CreatorAdminContentSeriesQueryRepositoryImpl(
|
||||
|
@ -22,4 +29,41 @@ class CreatorAdminContentSeriesQueryRepositoryImpl(
|
|||
)
|
||||
.fetchFirst()
|
||||
}
|
||||
|
||||
override fun getSeriesCount(creatorId: Long): Int {
|
||||
return queryFactory
|
||||
.select(series.id)
|
||||
.from(series)
|
||||
.where(
|
||||
series.member.id.eq(creatorId)
|
||||
.and(series.isActive.isTrue)
|
||||
)
|
||||
.fetch()
|
||||
.size
|
||||
}
|
||||
|
||||
override fun getSeriesList(
|
||||
offset: Long,
|
||||
limit: Long,
|
||||
creatorId: Long,
|
||||
imageHost: String
|
||||
): List<GetCreatorAdminContentSeriesListItem> {
|
||||
return queryFactory
|
||||
.select(
|
||||
QGetCreatorAdminContentSeriesListItem(
|
||||
series.id,
|
||||
series.title,
|
||||
series.coverImage.prepend("/").prepend(imageHost)
|
||||
)
|
||||
)
|
||||
.from(series)
|
||||
.where(
|
||||
series.member.id.eq(creatorId)
|
||||
.and(series.isActive.isTrue)
|
||||
)
|
||||
.orderBy(series.id.desc())
|
||||
.offset(offset)
|
||||
.limit(limit)
|
||||
.fetch()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,10 @@ class CreatorAdminContentSeriesService(
|
|||
private val objectMapper: ObjectMapper,
|
||||
|
||||
@Value("\${cloud.aws.s3.bucket}")
|
||||
private val coverImageBucket: String
|
||||
private val coverImageBucket: String,
|
||||
|
||||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val coverImageHost: String
|
||||
) {
|
||||
@Transactional
|
||||
fun createSeries(coverImage: MultipartFile?, requestString: String, member: Member) {
|
||||
|
@ -156,4 +159,16 @@ class CreatorAdminContentSeriesService(
|
|||
series.studio = request.studio
|
||||
}
|
||||
}
|
||||
|
||||
fun getSeriesList(offset: Long, limit: Long, creatorId: Long): GetCreatorAdminContentSeriesListResponse {
|
||||
val totalCount = repository.getSeriesCount(creatorId = creatorId)
|
||||
val seriesList = repository.getSeriesList(
|
||||
offset = offset,
|
||||
limit = limit,
|
||||
creatorId = creatorId,
|
||||
imageHost = coverImageHost
|
||||
)
|
||||
|
||||
return GetCreatorAdminContentSeriesListResponse(totalCount, seriesList)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package kr.co.vividnext.sodalive.creator.admin.content.series
|
||||
|
||||
import com.querydsl.core.annotations.QueryProjection
|
||||
|
||||
data class GetCreatorAdminContentSeriesListResponse(
|
||||
val totalCount: Int,
|
||||
val items: List<GetCreatorAdminContentSeriesListItem>
|
||||
)
|
||||
|
||||
data class GetCreatorAdminContentSeriesListItem @QueryProjection constructor(
|
||||
val seriesId: Long,
|
||||
val title: String,
|
||||
val coverImageUrl: String
|
||||
)
|
Loading…
Reference in New Issue