From 46da1728061d697c2302483eab7f77e5bf086a72 Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 30 May 2024 13:08:18 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=8B=9C?= =?UTF-8?q?=EA=B7=B8=EB=8B=88=EC=B2=98=20=EC=BA=94=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20-=20=EC=A0=95=EB=A0=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../signature/AdminSignatureCanController.kt | 6 +++- .../signature/AdminSignatureCanRepository.kt | 31 +++++++++++++++++-- .../signature/AdminSignatureCanService.kt | 7 ++++- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanController.kt index 158bf61..435d417 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanController.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.admin.live.signature import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.live.signature.SignatureCanSortType import org.springframework.data.domain.Pageable import org.springframework.security.access.prepost.PreAuthorize import org.springframework.web.bind.annotation.GetMapping @@ -17,7 +18,10 @@ import org.springframework.web.multipart.MultipartFile @RequestMapping("/admin/live/signature-can") class AdminSignatureCanController(private val service: AdminSignatureCanService) { @GetMapping - fun getSignatureCanList(pageable: Pageable) = ApiResponse.ok(data = service.getSignatureCanList(pageable)) + fun getSignatureCanList( + pageable: Pageable, + @RequestParam("sort-type", required = false) sortType: SignatureCanSortType? + ) = ApiResponse.ok(data = service.getSignatureCanList(pageable, sortType ?: SignatureCanSortType.NEWEST)) @PostMapping fun createSignatureCan( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanRepository.kt index cea1b35..2b085c4 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanRepository.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.admin.live.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,12 @@ interface AdminSignatureCanRepository : JpaRepository, Admin interface AdminSignatureCanQueryRepository { fun getSignatureCanListTotalCount(): Int - fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List + fun getSignatureCanList( + sortType: SignatureCanSortType, + imageHost: String, + offset: Long, + limit: Long + ): List } class AdminSignatureCanQueryRepositoryImpl( @@ -25,7 +31,26 @@ class AdminSignatureCanQueryRepositoryImpl( .size } - override fun getSignatureCanList(imageHost: String, offset: Long, limit: Long): List { + override fun getSignatureCanList( + 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( QGetSignatureCanListItem( signatureCan.id, @@ -41,7 +66,7 @@ class AdminSignatureCanQueryRepositoryImpl( .where(signatureCan.isActive.isTrue) .offset(offset) .limit(limit) - .orderBy(signatureCan.id.desc()) + .orderBy(member.id.desc(), orderBy) .fetch() } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanService.kt index e2e4d69..ae5f301 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/live/signature/AdminSignatureCanService.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 @@ -25,9 +26,13 @@ class AdminSignatureCanService( @Value("\${cloud.aws.cloud-front.host}") private val imageHost: String ) { - fun getSignatureCanList(pageable: Pageable): GetSignatureCanListResponse { + fun getSignatureCanList( + pageable: Pageable, + sortType: SignatureCanSortType + ): GetSignatureCanListResponse { val totalCount = repository.getSignatureCanListTotalCount() val items = repository.getSignatureCanList( + sortType = sortType, imageHost = imageHost, offset = pageable.offset, limit = pageable.pageSize.toLong()