From 3c72ae048e6910b5e059c3b430e24f9b6da82df1 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 22 Nov 2023 01:11:15 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20=EB=B0=B0=EB=84=88=20=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?-=20=EB=B3=B8=EC=9D=B8=20=EC=9D=B8=EC=A6=9D=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=EC=97=90=20=EB=94=B0=EB=9D=BC=20=EB=85=B8=EC=B6=9C?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20isAdult?= =?UTF-8?q?=20=EC=BB=AC=EB=9F=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/event/EventController.kt | 19 +++++++++++--- .../sodalive/event/EventRepository.kt | 26 ++++++++++--------- .../vividnext/sodalive/event/EventService.kt | 15 +++++++---- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventController.kt index e102638..0509ab5 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventController.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.event import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.member.Member +import kr.co.vividnext.sodalive.member.MemberRole import org.springframework.security.access.prepost.PreAuthorize import org.springframework.security.core.annotation.AuthenticationPrincipal import org.springframework.web.bind.annotation.DeleteMapping @@ -20,7 +21,17 @@ class EventController(private val service: EventService) { @GetMapping fun getEventList( @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? - ) = ApiResponse.ok(service.getEventList(member?.auth != null)) + ) = run { + ApiResponse.ok( + service.getEventList( + if (member?.role == MemberRole.ADMIN) { + null + } else { + member?.auth != null + } + ) + ) + } @GetMapping("/popup") fun getEventPopup( @@ -35,9 +46,10 @@ class EventController(private val service: EventService) { @RequestParam(value = "popup", required = false) popup: MultipartFile? = null, @RequestParam(value = "link", required = false) link: String? = null, @RequestParam(value = "title", required = false) title: String? = null, + @RequestParam(value = "isAdult", required = false) isAdult: Boolean? = null, @RequestParam(value = "isPopup") isPopup: Boolean ) = ApiResponse.ok( - service.save(thumbnail, detail, popup, link, title, isPopup), + service.save(thumbnail, detail, popup, link, title, isAdult, isPopup), "등록되었습니다." ) @@ -50,9 +62,10 @@ class EventController(private val service: EventService) { @RequestParam(value = "popup", required = false) popup: MultipartFile? = null, @RequestParam(value = "link", required = false) link: String? = null, @RequestParam(value = "title", required = false) title: String? = null, + @RequestParam(value = "isAdult", required = false) isAdult: Boolean? = null, @RequestParam(value = "isPopup", required = false) isPopup: Boolean? = null ) = ApiResponse.ok( - service.update(id, thumbnail, detail, popup, link, title, isPopup), + service.update(id, thumbnail, detail, popup, link, title, isAdult, isPopup), "수정되었습니다." ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt index 8ae0ac5..a751ebe 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt @@ -9,25 +9,27 @@ import org.springframework.stereotype.Repository interface EventRepository : JpaRepository, EventQueryRepository interface EventQueryRepository { - fun getEventList(isAdult: Boolean): List + fun getEventList(isAdult: Boolean? = null): List fun getMainEventPopup(isAdult: Boolean): EventItem? } @Repository class EventQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : EventQueryRepository { - override fun getEventList(isAdult: Boolean): List { + override fun getEventList(isAdult: Boolean?): List { var where = event.isActive.isTrue - where = if (isAdult) { - where.and( - event.isAdult.isNull - .or(event.isAdult.isTrue) - ) - } else { - where.and( - event.isAdult.isNull - .or(event.isAdult.isFalse) - ) + if (isAdult != null) { + where = if (isAdult) { + where.and( + event.isAdult.isNull + .or(event.isAdult.isTrue) + ) + } else { + where.and( + event.isAdult.isNull + .or(event.isAdult.isFalse) + ) + } } return queryFactory diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt index 2d07121..56e0f43 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventService.kt @@ -20,7 +20,8 @@ class EventService( @Value("\${cloud.aws.cloud-front.host}") private val cloudFrontHost: String ) { - fun getEventList(isAdult: Boolean): GetEventResponse { + @Transactional(readOnly = true) + fun getEventList(isAdult: Boolean? = null): GetEventResponse { val eventList = repository.getEventList(isAdult) .asSequence() .map { @@ -43,6 +44,7 @@ class EventService( return GetEventResponse(0, eventList) } + @Transactional(readOnly = true) fun getEventPopup(isAdult: Boolean): EventItem? { val eventPopup = repository.getMainEventPopup(isAdult) @@ -70,6 +72,7 @@ class EventService( popup: MultipartFile? = null, link: String? = null, title: String? = null, + isAdult: Boolean? = null, isPopup: Boolean ): Long { if (detail == null && link.isNullOrBlank()) throw SodaException("상세이미지 혹은 링크를 등록하세요") @@ -81,6 +84,7 @@ class EventService( popupImage = null, link = link, title = title, + isAdult = isAdult, isPopup = isPopup ) ) @@ -137,14 +141,11 @@ class EventService( popup: MultipartFile? = null, link: String? = null, title: String? = null, + isAdult: Boolean? = null, isPopup: Boolean? = null ) { if (id <= 0) throw SodaException("잘못된 요청입니다.") - if (thumbnail == null && detail == null && link.isNullOrBlank() && title.isNullOrBlank()) { - throw SodaException("수정할 내용을 입력하세요.") - } - val event = repository.findByIdOrNull(id) ?: throw SodaException("잘못된 요청입니다.") @@ -192,6 +193,10 @@ class EventService( if (isPopup != null) { event.isPopup = isPopup } + + if (isAdult != event.isAdult) { + event.isAdult = isAdult + } } @Transactional -- 2.40.1