parent
4f0a882b9e
commit
c9e90974bd
|
@ -1,6 +1,5 @@
|
|||
package kr.co.vividnext.sodalive.admin.audition
|
||||
|
||||
import com.querydsl.core.group.GroupBy.list
|
||||
import com.querydsl.core.types.dsl.CaseBuilder
|
||||
import com.querydsl.core.types.dsl.DateTimePath
|
||||
import com.querydsl.core.types.dsl.Expressions
|
||||
|
@ -8,7 +7,6 @@ import com.querydsl.core.types.dsl.StringTemplate
|
|||
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.audition.Audition
|
||||
import kr.co.vividnext.sodalive.audition.QAudition.audition
|
||||
import kr.co.vividnext.sodalive.audition.QAuditionRole.auditionRole
|
||||
import org.springframework.beans.factory.annotation.Value
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
import org.springframework.stereotype.Repository
|
||||
|
@ -20,7 +18,7 @@ interface AdminAuditionRepository : JpaRepository<Audition, Long>, AdminAudition
|
|||
interface AdminAuditionQueryRepository {
|
||||
fun getAuditionList(offset: Long, limit: Long): List<GetAuditionListItem>
|
||||
fun getAuditionListCount(): Int
|
||||
fun getAuditionDetail(auditionId: Long): GetAuditionDetailResponse
|
||||
fun getAuditionDetail(auditionId: Long): GetAuditionDetailRawData
|
||||
}
|
||||
|
||||
class AdminAuditionQueryRepositoryImpl(
|
||||
|
@ -62,35 +60,19 @@ class AdminAuditionQueryRepositoryImpl(
|
|||
.size
|
||||
}
|
||||
|
||||
override fun getAuditionDetail(auditionId: Long): GetAuditionDetailResponse {
|
||||
override fun getAuditionDetail(auditionId: Long): GetAuditionDetailRawData {
|
||||
return queryFactory
|
||||
.select(
|
||||
QGetAuditionDetailResponse(
|
||||
QGetAuditionDetailRawData(
|
||||
audition.id,
|
||||
audition.title,
|
||||
audition.imagePath.prepend("/").prepend(coverImageHost),
|
||||
audition.information,
|
||||
audition.originalWorkUrl.coalesce(""),
|
||||
list(
|
||||
QGetAuditionDetailRole(
|
||||
auditionRole.id,
|
||||
auditionRole.name,
|
||||
auditionRole.imagePath.prepend("/").prepend(coverImageHost),
|
||||
auditionRole.status
|
||||
)
|
||||
)
|
||||
audition.originalWorkUrl.coalesce("")
|
||||
)
|
||||
)
|
||||
.from(audition)
|
||||
.leftJoin(auditionRole).on(auditionRole.audition.id.eq(audition.id))
|
||||
.where(audition.id.eq(auditionId))
|
||||
.groupBy(
|
||||
audition.id,
|
||||
audition.title,
|
||||
audition.imagePath,
|
||||
audition.information,
|
||||
audition.originalWorkUrl
|
||||
)
|
||||
.fetchFirst()
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package kr.co.vividnext.sodalive.admin.audition
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import kr.co.vividnext.sodalive.admin.audition.role.AdminAuditionRoleRepository
|
||||
import kr.co.vividnext.sodalive.audition.AuditionStatus
|
||||
import kr.co.vividnext.sodalive.aws.s3.S3Uploader
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
|
@ -19,6 +20,7 @@ class AdminAuditionService(
|
|||
private val s3Uploader: S3Uploader,
|
||||
private val objectMapper: ObjectMapper,
|
||||
private val repository: AdminAuditionRepository,
|
||||
private val roleRepository: AdminAuditionRoleRepository,
|
||||
|
||||
@Value("\${cloud.aws.s3.bucket}")
|
||||
private val bucket: String
|
||||
|
@ -101,6 +103,16 @@ class AdminAuditionService(
|
|||
}
|
||||
|
||||
fun getAuditionDetail(auditionId: Long): GetAuditionDetailResponse {
|
||||
return repository.getAuditionDetail(auditionId = auditionId)
|
||||
val auditionDetail = repository.getAuditionDetail(auditionId = auditionId)
|
||||
val roleList = roleRepository.getAuditionRoleListByAuditionId(auditionId = auditionId)
|
||||
|
||||
return GetAuditionDetailResponse(
|
||||
id = auditionDetail.id,
|
||||
title = auditionDetail.title,
|
||||
imageUrl = auditionDetail.imageUrl,
|
||||
information = auditionDetail.information,
|
||||
originalWorkUrl = auditionDetail.originalWorkUrl,
|
||||
roleList = roleList
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,16 +3,24 @@ package kr.co.vividnext.sodalive.admin.audition
|
|||
import com.querydsl.core.annotations.QueryProjection
|
||||
import kr.co.vividnext.sodalive.audition.AuditionStatus
|
||||
|
||||
data class GetAuditionDetailResponse @QueryProjection constructor(
|
||||
data class GetAuditionDetailRawData @QueryProjection constructor(
|
||||
val id: Long,
|
||||
val title: String,
|
||||
val imageUrl: String,
|
||||
val information: String,
|
||||
val originalWorkUrl: String
|
||||
)
|
||||
|
||||
data class GetAuditionDetailResponse(
|
||||
val id: Long,
|
||||
val title: String,
|
||||
val imageUrl: String,
|
||||
val information: String,
|
||||
val originalWorkUrl: String,
|
||||
val roleList: List<GetAuditionDetailRole> = emptyList()
|
||||
val roleList: List<GetAuditionRoleListData>
|
||||
)
|
||||
|
||||
data class GetAuditionDetailRole @QueryProjection constructor(
|
||||
data class GetAuditionRoleListData @QueryProjection constructor(
|
||||
val id: Long,
|
||||
val name: String,
|
||||
val imageUrl: String,
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
package kr.co.vividnext.sodalive.admin.audition.role
|
||||
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.admin.audition.GetAuditionRoleListData
|
||||
import kr.co.vividnext.sodalive.admin.audition.QGetAuditionRoleListData
|
||||
import kr.co.vividnext.sodalive.audition.AuditionRole
|
||||
import kr.co.vividnext.sodalive.audition.QAudition.audition
|
||||
import kr.co.vividnext.sodalive.audition.QAuditionApplicant.auditionApplicant
|
||||
import kr.co.vividnext.sodalive.audition.QAuditionRole.auditionRole
|
||||
import kr.co.vividnext.sodalive.audition.QAuditionVote.auditionVote
|
||||
|
@ -12,6 +15,7 @@ import org.springframework.data.jpa.repository.JpaRepository
|
|||
interface AdminAuditionRoleRepository : JpaRepository<AuditionRole, Long>, AdminAuditionRoleQueryRepository
|
||||
|
||||
interface AdminAuditionRoleQueryRepository {
|
||||
fun getAuditionRoleListByAuditionId(auditionId: Long): List<GetAuditionRoleListData>
|
||||
fun getAuditionRoleDetail(auditionRoleId: Long): GetAuditionRoleDetailResponse
|
||||
fun getAuditionApplicantList(auditionRoleId: Long, offset: Long, limit: Long): List<GetAuditionRoleApplicantItem>
|
||||
fun getAuditionApplicantTotalCount(auditionRoleId: Long): Int
|
||||
|
@ -23,6 +27,22 @@ class AdminAuditionRoleQueryRepositoryImpl(
|
|||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val cloudfrontHost: String
|
||||
) : AdminAuditionRoleQueryRepository {
|
||||
override fun getAuditionRoleListByAuditionId(auditionId: Long): List<GetAuditionRoleListData> {
|
||||
return queryFactory
|
||||
.select(
|
||||
QGetAuditionRoleListData(
|
||||
auditionRole.id,
|
||||
auditionRole.name,
|
||||
auditionRole.imagePath.prepend("/").prepend(cloudfrontHost),
|
||||
auditionRole.status
|
||||
)
|
||||
)
|
||||
.from(auditionRole)
|
||||
.innerJoin(auditionRole.audition, audition)
|
||||
.where(auditionRole.audition.id.eq(auditionId))
|
||||
.fetch()
|
||||
}
|
||||
|
||||
override fun getAuditionRoleDetail(auditionRoleId: Long): GetAuditionRoleDetailResponse {
|
||||
return queryFactory
|
||||
.select(
|
||||
|
|
Loading…
Reference in New Issue