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 {