From bcbc5283cde8f59e21d09151fb6039fe2fdf2698 Mon Sep 17 00:00:00 2001 From: nohy6630 Date: Wed, 15 Jan 2025 22:19:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=9B=84=EC=9B=90=EA=B8=80=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20api=20=EC=9D=91=EB=8B=B5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../community/repository/article/ArticleRepository.kt | 2 +- .../domain/sponsor/dto/request/CreateSponsorRequest.kt | 10 +++++++--- .../domain/sponsor/dto/response/SponsorResponse.kt | 10 +++++++--- .../daepiro/domain/sponsor/service/SponsorService.kt | 9 +++++++-- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/com/numberone/daepiro/domain/community/repository/article/ArticleRepository.kt b/src/main/kotlin/com/numberone/daepiro/domain/community/repository/article/ArticleRepository.kt index 32b4511..a275c8a 100644 --- a/src/main/kotlin/com/numberone/daepiro/domain/community/repository/article/ArticleRepository.kt +++ b/src/main/kotlin/com/numberone/daepiro/domain/community/repository/article/ArticleRepository.kt @@ -14,7 +14,7 @@ interface ArticleRepository : JpaRepository, ArticleRepositoryCus @Query("SELECT a FROM Article a WHERE a.type = 'DISASTER' AND a.createdAt>:time") fun findDisasterSituation(@Param("time") time: LocalDateTime): List
- @Query("SELECT a FROM Article a WHERE a.type = 'SPONSOR' AND a.deadline > CURRENT_TIMESTAMP ORDER BY a.createdAt ASC") + @Query("SELECT a FROM Article a WHERE a.type = 'SPONSOR' AND ( a.deadline > CURRENT_TIMESTAMP OR a.deadline IS NULL ) ORDER BY a.createdAt ASC") fun findSponsorArticle(): List
} diff --git a/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/request/CreateSponsorRequest.kt b/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/request/CreateSponsorRequest.kt index 3a270cd..d7fbbed 100644 --- a/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/request/CreateSponsorRequest.kt +++ b/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/request/CreateSponsorRequest.kt @@ -1,6 +1,7 @@ package com.numberone.daepiro.domain.sponsor.dto.request import com.amazonaws.services.cloudformation.model.ChangeSetSummary +import com.numberone.daepiro.domain.disaster.entity.DisasterType import io.swagger.v3.oas.annotations.media.Schema import java.time.LocalDateTime @@ -29,12 +30,15 @@ data class CreateSponsorRequest( @Schema(description = "요약", example = "요약") val summary: String, - @Schema(description = "마감 기한", example = "2021-08-01T00:00:00") - val deadline: LocalDateTime, + @Schema(description = "마감 기한(null은 상시)", example = "2021-08-01T00:00:00") + val deadline: LocalDateTime?, @Schema(description = "현재 하트", example = "102311") val currentHeart: Int, @Schema(description = "목표 하트", example = "150000") - val targetHeart: Int + val targetHeart: Int, + + @Schema(description = "재난 종류", example = "지진") + val disasterType: String ) diff --git a/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/response/SponsorResponse.kt b/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/response/SponsorResponse.kt index a3c2303..7092673 100644 --- a/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/response/SponsorResponse.kt +++ b/src/main/kotlin/com/numberone/daepiro/domain/sponsor/dto/response/SponsorResponse.kt @@ -11,7 +11,7 @@ data class SponsorResponse( val id: Long, @Schema(description = "마감 기한", example = "2025-08-01T00:00:00") - val deadline: LocalDateTime, + val deadline: LocalDateTime?, @Schema(description = "후원사", example = "포항시") val sponsorName: String, @@ -42,6 +42,9 @@ data class SponsorResponse( @Schema(description = "본문 내용", example = "본문 내용") val body:String, + + @Schema(description = "재난 종류", example = "지진") + val disasterType: String ) { companion object { fun of( @@ -52,7 +55,7 @@ data class SponsorResponse( } return SponsorResponse( id = article.id!!, - deadline = article.deadline!!, + deadline = article.deadline, sponsorName = article.sponsorName!!, title = article.title, thumbnail = article.thumbnail!!, @@ -61,7 +64,8 @@ data class SponsorResponse( sponsorDescription = article.sponsorDescription!!, sponsorUrl = article.sponsorUrl!!, summary = article.summary!!, - body = article.body + body = article.body, + disasterType = article.disasterType!!.type.korean ) } } diff --git a/src/main/kotlin/com/numberone/daepiro/domain/sponsor/service/SponsorService.kt b/src/main/kotlin/com/numberone/daepiro/domain/sponsor/service/SponsorService.kt index f66109d..f11f5d9 100644 --- a/src/main/kotlin/com/numberone/daepiro/domain/sponsor/service/SponsorService.kt +++ b/src/main/kotlin/com/numberone/daepiro/domain/sponsor/service/SponsorService.kt @@ -4,6 +4,8 @@ import com.numberone.daepiro.domain.community.entity.Article import com.numberone.daepiro.domain.community.entity.ArticleCategory import com.numberone.daepiro.domain.community.entity.ArticleType import com.numberone.daepiro.domain.community.repository.article.ArticleRepository +import com.numberone.daepiro.domain.disaster.entity.DisasterType +import com.numberone.daepiro.domain.disaster.repository.DisasterTypeRepository import com.numberone.daepiro.domain.sponsor.dto.request.CheeringRequest import com.numberone.daepiro.domain.sponsor.dto.request.CreateSponsorRequest import com.numberone.daepiro.domain.sponsor.dto.request.SponsorRequest @@ -25,7 +27,8 @@ import org.springframework.transaction.annotation.Transactional class SponsorService( private val articleRepository: ArticleRepository, private val cheeringRepository: CheeringRepository, - private val userRepository: UserRepository + private val userRepository: UserRepository, + private val disasterTypeRepository: DisasterTypeRepository ) { fun getSponsors(): ApiResult> { val sponsors = articleRepository.findSponsorArticle() @@ -50,7 +53,9 @@ class SponsorService( summary = request.summary, deadline = request.deadline, currentHeart = request.currentHeart, - targetHeart = request.targetHeart + targetHeart = request.targetHeart, + disasterType = disasterTypeRepository.findByType(DisasterType.DisasterValue.kor2code(request.disasterType)) + ?: throw CustomException(CustomErrorContext.NOT_FOUND_DISASTER_TYPE) ) articleRepository.save(sponsorArticle) }