diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanController.kt index 042eb29..0a79c94 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanController.kt @@ -1,8 +1,10 @@ package kr.co.vividnext.sodalive.admin.can +import kr.co.vividnext.sodalive.can.CanResponse import kr.co.vividnext.sodalive.common.ApiResponse import org.springframework.security.access.prepost.PreAuthorize import org.springframework.web.bind.annotation.DeleteMapping +import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody @@ -13,6 +15,11 @@ import org.springframework.web.bind.annotation.RestController @RequestMapping("/admin/can") @PreAuthorize("hasRole('ADMIN')") class AdminCanController(private val service: AdminCanService) { + @GetMapping + fun getCans(): ApiResponse> { + return ApiResponse.ok(service.getCans()) + } + @PostMapping fun insertCan(@RequestBody request: AdminCanRequest) = ApiResponse.ok(service.saveCan(request)) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanRepository.kt index e784d13..60f4e6b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanRepository.kt @@ -1,6 +1,37 @@ package kr.co.vividnext.sodalive.admin.can +import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.can.Can +import kr.co.vividnext.sodalive.can.CanResponse +import kr.co.vividnext.sodalive.can.CanStatus +import kr.co.vividnext.sodalive.can.QCan.can1 +import kr.co.vividnext.sodalive.can.QCanResponse import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository -interface AdminCanRepository : JpaRepository +interface AdminCanRepository : JpaRepository, AdminCanQueryRepository + +interface AdminCanQueryRepository { + fun findAllByStatus(status: CanStatus): List +} + +@Repository +class AdminCanQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AdminCanQueryRepository { + override fun findAllByStatus(status: CanStatus): List { + return queryFactory + .select( + QCanResponse( + can1.id, + can1.title, + can1.can, + can1.rewardCan, + can1.price, + can1.currency + ) + ) + .from(can1) + .where(can1.status.eq(status)) + .orderBy(can1.currency.asc(), can1.price.asc()) + .fetch() + } +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt index 786138b..612e414 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/can/AdminCanService.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.admin.can import kr.co.vividnext.sodalive.admin.member.AdminMemberRepository +import kr.co.vividnext.sodalive.can.CanResponse import kr.co.vividnext.sodalive.can.CanStatus import kr.co.vividnext.sodalive.can.charge.Charge import kr.co.vividnext.sodalive.can.charge.ChargeRepository @@ -20,6 +21,10 @@ class AdminCanService( private val chargeRepository: ChargeRepository, private val memberRepository: AdminMemberRepository ) { + fun getCans(): List { + return repository.findAllByStatus(status = CanStatus.SALE) + } + @Transactional fun saveCan(request: AdminCanRequest) { repository.save(request.toEntity())