diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureController.kt index 22a3ed8..40f67ed 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureController.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.creator.admin.signature import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.live.signature.SignatureCanSortType import kr.co.vividnext.sodalive.member.Member import org.springframework.data.domain.Pageable import org.springframework.security.access.prepost.PreAuthorize @@ -21,11 +22,12 @@ class CreatorAdminSignatureController(private val service: CreatorAdminSignature @GetMapping fun getSignatureCanList( pageable: Pageable, + @RequestParam("sort-type", required = false) sortType: SignatureCanSortType = SignatureCanSortType.NEWEST, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? ) = run { if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - ApiResponse.ok(data = service.getSignatureList(pageable, memberId = member.id!!)) + ApiResponse.ok(data = service.getSignatureList(pageable, sortType, memberId = member.id!!)) } @PostMapping diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureRepository.kt index da27d01..9dd2c9e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureRepository.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.creator.admin.signature import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.live.signature.QSignatureCan.signatureCan import kr.co.vividnext.sodalive.live.signature.SignatureCan +import kr.co.vividnext.sodalive.live.signature.SignatureCanSortType import kr.co.vividnext.sodalive.member.QMember.member import org.springframework.data.jpa.repository.JpaRepository @@ -11,7 +12,13 @@ interface CreatorAdminSignatureRepository : JpaRepository, C interface CreatorAdminSignatureQueryRepository { fun getSignatureListTotalCount(memberId: Long): Int - fun getSignatureList(memberId: Long, imageHost: String, offset: Long, limit: Long): List + fun getSignatureList( + memberId: Long, + sortType: SignatureCanSortType, + imageHost: String, + offset: Long, + limit: Long + ): List fun findSignatureByIdOrNull(id: Long, memberId: Long): SignatureCan? } @@ -32,10 +39,25 @@ class CreatorAdminSignatureQueryRepositoryImpl( override fun getSignatureList( memberId: Long, + sortType: SignatureCanSortType, imageHost: String, offset: Long, limit: Long ): List { + val orderBy = when (sortType) { + SignatureCanSortType.CAN_HIGH -> { + signatureCan.can.desc() + } + + SignatureCanSortType.CAN_LOW -> { + signatureCan.can.asc() + } + + else -> { + signatureCan.id.desc() + } + } + return queryFactory.select( QGetSignatureListItem( signatureCan.id, @@ -54,7 +76,7 @@ class CreatorAdminSignatureQueryRepositoryImpl( ) .offset(offset) .limit(limit) - .orderBy(signatureCan.id.desc()) + .orderBy(orderBy) .fetch() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureService.kt index 71bf228..6aee5be 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/signature/CreatorAdminSignatureService.kt @@ -4,6 +4,7 @@ import com.amazonaws.services.s3.model.ObjectMetadata import kr.co.vividnext.sodalive.aws.s3.S3Uploader import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.live.signature.SignatureCan +import kr.co.vividnext.sodalive.live.signature.SignatureCanSortType import kr.co.vividnext.sodalive.member.MemberRepository import kr.co.vividnext.sodalive.utils.generateFileName import org.springframework.beans.factory.annotation.Value @@ -24,10 +25,15 @@ class CreatorAdminSignatureService( @Value("\${cloud.aws.cloud-front.host}") private val imageHost: String ) { - fun getSignatureList(pageable: Pageable, memberId: Long): GetSignatureListResponse { + fun getSignatureList( + pageable: Pageable, + sortType: SignatureCanSortType, + memberId: Long + ): GetSignatureListResponse { val totalCount = repository.getSignatureListTotalCount(memberId = memberId) val items = repository.getSignatureList( memberId = memberId, + sortType = sortType, imageHost = imageHost, offset = pageable.offset, limit = pageable.pageSize.toLong() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/signature/SignatureCanSortType.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/signature/SignatureCanSortType.kt new file mode 100644 index 0000000..93799e5 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/signature/SignatureCanSortType.kt @@ -0,0 +1,5 @@ +package kr.co.vividnext.sodalive.live.signature + +enum class SignatureCanSortType { + NEWEST, CAN_HIGH, CAN_LOW +}