이벤트

- 시작날짜, 종료날짜 추가
This commit is contained in:
Klaus 2024-10-30 23:19:13 +09:00
parent 7f1fadf068
commit b8299bc139
3 changed files with 49 additions and 7 deletions

View File

@ -1,6 +1,7 @@
package kr.co.vividnext.sodalive.event package kr.co.vividnext.sodalive.event
import kr.co.vividnext.sodalive.common.BaseEntity import kr.co.vividnext.sodalive.common.BaseEntity
import java.time.LocalDateTime
import javax.persistence.Column import javax.persistence.Column
import javax.persistence.Entity import javax.persistence.Entity
@ -20,6 +21,8 @@ data class Event(
var isAdult: Boolean? = null, var isAdult: Boolean? = null,
@Column(nullable = false) @Column(nullable = false)
var isPopup: Boolean = false, var isPopup: Boolean = false,
var startDate: LocalDateTime,
var endDate: LocalDateTime,
@Column(nullable = false) @Column(nullable = false)
var isActive: Boolean = true var isActive: Boolean = true
) : BaseEntity() ) : BaseEntity()

View File

@ -47,9 +47,11 @@ class EventController(private val service: EventService) {
@RequestParam(value = "link", required = false) link: String? = null, @RequestParam(value = "link", required = false) link: String? = null,
@RequestParam(value = "title", required = false) title: String? = null, @RequestParam(value = "title", required = false) title: String? = null,
@RequestParam(value = "isAdult", required = false) isAdult: Boolean? = null, @RequestParam(value = "isAdult", required = false) isAdult: Boolean? = null,
@RequestParam(value = "isPopup") isPopup: Boolean @RequestParam(value = "isPopup") isPopup: Boolean,
@RequestParam(value = "startDate") startDate: String,
@RequestParam(value = "endDate") endDate: String
) = ApiResponse.ok( ) = ApiResponse.ok(
service.save(thumbnail, detail, popup, link, title, isAdult, isPopup), service.save(thumbnail, detail, popup, link, title, isAdult, isPopup, startDate, endDate),
"등록되었습니다." "등록되었습니다."
) )
@ -63,9 +65,11 @@ class EventController(private val service: EventService) {
@RequestParam(value = "link", required = false) link: String? = null, @RequestParam(value = "link", required = false) link: String? = null,
@RequestParam(value = "title", required = false) title: String? = null, @RequestParam(value = "title", required = false) title: String? = null,
@RequestParam(value = "isAdult", required = false) isAdult: Boolean? = null, @RequestParam(value = "isAdult", required = false) isAdult: Boolean? = null,
@RequestParam(value = "isPopup", required = false) isPopup: Boolean? = null @RequestParam(value = "isPopup", required = false) isPopup: Boolean? = null,
@RequestParam(value = "startDate", required = false) startDate: String? = null,
@RequestParam(value = "endDate", required = false) endDate: String? = null
) = ApiResponse.ok( ) = ApiResponse.ok(
service.update(id, thumbnail, detail, popup, link, title, isAdult, isPopup), service.update(id, thumbnail, detail, popup, link, title, isAdult, isPopup, startDate, endDate),
"수정되었습니다." "수정되었습니다."
) )

View File

@ -9,6 +9,9 @@ import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional import org.springframework.transaction.annotation.Transactional
import org.springframework.web.multipart.MultipartFile import org.springframework.web.multipart.MultipartFile
import java.time.LocalDate
import java.time.ZoneId
import java.time.format.DateTimeFormatter
@Service @Service
class EventService( class EventService(
@ -73,10 +76,23 @@ class EventService(
link: String? = null, link: String? = null,
title: String? = null, title: String? = null,
isAdult: Boolean? = null, isAdult: Boolean? = null,
isPopup: Boolean isPopup: Boolean,
startDateString: String,
endDateString: String
): Long { ): Long {
if (detail == null && link.isNullOrBlank()) throw SodaException("상세이미지 혹은 링크를 등록하세요") if (detail == null && link.isNullOrBlank()) throw SodaException("상세이미지 혹은 링크를 등록하세요")
val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
val startDate = LocalDate.parse(startDateString, dateTimeFormatter).atTime(0, 0)
.atZone(ZoneId.of("Asia/Seoul"))
.withZoneSameInstant(ZoneId.of("UTC"))
.toLocalDateTime()
val endDate = LocalDate.parse(endDateString, dateTimeFormatter).atTime(23, 59, 59)
.atZone(ZoneId.of("Asia/Seoul"))
.withZoneSameInstant(ZoneId.of("UTC"))
.toLocalDateTime()
val event = repository.save( val event = repository.save(
Event( Event(
thumbnailImage = "", thumbnailImage = "",
@ -85,7 +101,9 @@ class EventService(
link = link, link = link,
title = title, title = title,
isAdult = isAdult, isAdult = isAdult,
isPopup = isPopup isPopup = isPopup,
startDate = startDate,
endDate = endDate
) )
) )
@ -142,7 +160,9 @@ class EventService(
link: String? = null, link: String? = null,
title: String? = null, title: String? = null,
isAdult: Boolean? = null, isAdult: Boolean? = null,
isPopup: Boolean? = null isPopup: Boolean? = null,
startDateString: String? = null,
endDateString: String? = null
) { ) {
if (id <= 0) throw SodaException("잘못된 요청입니다.") if (id <= 0) throw SodaException("잘못된 요청입니다.")
@ -197,6 +217,21 @@ class EventService(
if (isAdult != event.isAdult) { if (isAdult != event.isAdult) {
event.isAdult = isAdult event.isAdult = isAdult
} }
val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
if (startDateString != null) {
event.startDate = LocalDate.parse(startDateString, dateTimeFormatter).atTime(0, 0)
.atZone(ZoneId.of("Asia/Seoul"))
.withZoneSameInstant(ZoneId.of("UTC"))
.toLocalDateTime()
}
if (endDateString != null) {
event.endDate = LocalDate.parse(endDateString, dateTimeFormatter).atTime(23, 59, 59)
.atZone(ZoneId.of("Asia/Seoul"))
.withZoneSameInstant(ZoneId.of("UTC"))
.toLocalDateTime()
}
} }
@Transactional @Transactional