From 5db181aa743caf3a24a0bed00f944c35e5c412ca Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 4 Mar 2025 23:53:22 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20=EB=A7=A4?= =?UTF-8?q?=EC=B2=B4=20=ED=8C=8C=ED=8A=B8=EB=84=88=20=EC=BD=94=EB=93=9C(pi?= =?UTF-8?q?d)=20=EC=88=98=EC=A0=95=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminAdMediaPartnerController.kt | 6 +++ .../marketing/AdminAdMediaPartnerService.kt | 38 +++++++++++++++++++ .../marketing/UpdateAdMediaPartnerRequest.kt | 14 +++++++ .../sodalive/marketing/AdMediaPartner.kt | 14 +++---- 4 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/UpdateAdMediaPartnerRequest.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerController.kt index a33509b..64a7454 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerController.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.admin.marketing import kr.co.vividnext.sodalive.common.ApiResponse import org.springframework.security.access.prepost.PreAuthorize import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -15,4 +16,9 @@ class AdminAdMediaPartnerController(private val service: AdminAdMediaPartnerServ fun createMediaPartner( @RequestBody request: CreateAdMediaPartnerRequest ) = ApiResponse.ok(service.createMediaPartner(request)) + + @PutMapping + fun updateMediaPartner( + @RequestBody request: UpdateAdMediaPartnerRequest + ) = ApiResponse.ok(service.updateMediaPartner(request)) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt index a910963..eb6f5fc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt @@ -1,12 +1,50 @@ package kr.co.vividnext.sodalive.admin.marketing +import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.marketing.AdMediaPartnerRepository +import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional @Service class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepository) { + @Transactional fun createMediaPartner(request: CreateAdMediaPartnerRequest) { val mediaPartner = request.toEntity() repository.save(mediaPartner) } + + @Transactional + fun updateMediaPartner(request: UpdateAdMediaPartnerRequest) { + val entity = repository.findByIdOrNull(request.id) + ?: throw SodaException("잘못된 접근입니다") + + if (request.mediaGroup != null) { + entity.mediaGroup = request.mediaGroup + } + + if (request.pid != null) { + entity.pid = request.pid + } + + if (request.pidName != null) { + entity.pidName = request.pidName + } + + if (request.type != null) { + entity.type = request.type + } + + if (request.utmSource != null) { + entity.utmSource = request.utmSource + } + + if (request.utmMedium != null) { + entity.utmMedium = request.utmMedium + } + + if (request.isActive != null) { + entity.isActive = request.isActive + } + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/UpdateAdMediaPartnerRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/UpdateAdMediaPartnerRequest.kt new file mode 100644 index 0000000..2bff5d7 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/UpdateAdMediaPartnerRequest.kt @@ -0,0 +1,14 @@ +package kr.co.vividnext.sodalive.admin.marketing + +import kr.co.vividnext.sodalive.marketing.AdMediaPartnerType + +data class UpdateAdMediaPartnerRequest( + val id: Long, + val mediaGroup: String?, + val pid: String?, + val pidName: String?, + val type: AdMediaPartnerType?, + val utmSource: String?, + val utmMedium: String?, + val isActive: Boolean? +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartner.kt b/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartner.kt index 6b37c53..9dc5c6a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartner.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartner.kt @@ -7,14 +7,14 @@ import javax.persistence.Enumerated @Entity data class AdMediaPartner( - val mediaGroup: String, - val pid: String, - val pidName: String, + var mediaGroup: String, + var pid: String, + var pidName: String, @Enumerated(value = EnumType.STRING) - val type: AdMediaPartnerType, - val utmSource: String, - val utmMedium: String, - val isActive: Boolean = true + var type: AdMediaPartnerType, + var utmSource: String, + var utmMedium: String, + var isActive: Boolean = true ) : BaseEntity() enum class AdMediaPartnerType {