관리자

- 매체 파트너 코드(pid) 등록 API
This commit is contained in:
Klaus 2025-03-04 23:36:31 +09:00
parent be12148d04
commit d74f1ddb81
4 changed files with 63 additions and 2 deletions

View File

@ -0,0 +1,18 @@
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.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping("/admin/marketing/media-partner")
class AdminAdMediaPartnerController(private val service: AdminAdMediaPartnerService) {
@PostMapping
fun createMediaPartner(
@RequestBody request: CreateAdMediaPartnerRequest
) = ApiResponse.ok(service.createMediaPartner(request))
}

View File

@ -0,0 +1,12 @@
package kr.co.vividnext.sodalive.admin.marketing
import kr.co.vividnext.sodalive.marketing.AdMediaPartnerRepository
import org.springframework.stereotype.Service
@Service
class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepository) {
fun createMediaPartner(request: CreateAdMediaPartnerRequest) {
val mediaPartner = request.toEntity()
repository.save(mediaPartner)
}
}

View File

@ -0,0 +1,24 @@
package kr.co.vividnext.sodalive.admin.marketing
import kr.co.vividnext.sodalive.marketing.AdMediaPartner
import kr.co.vividnext.sodalive.marketing.AdMediaPartnerType
data class CreateAdMediaPartnerRequest(
val mediaGroup: String,
val pid: String,
val pidName: String,
val type: AdMediaPartnerType,
val utmSource: String,
val utmMedium: String
) {
fun toEntity(): AdMediaPartner {
return AdMediaPartner(
mediaGroup = mediaGroup,
pid = pid,
pidName = pidName,
type = type,
utmSource = utmSource,
utmMedium = utmMedium
)
}
}

View File

@ -2,11 +2,18 @@ package kr.co.vividnext.sodalive.marketing
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.marketing.QAdMediaPartner.adMediaPartner
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
interface AdMediaPartnerRepository : JpaRepository<AdMediaPartner, Long>, AdMediaPartnerQueryRepository
interface AdMediaPartnerQueryRepository {
fun findByPid(pid: String): AdMediaPartner?
}
@Repository
class AdMediaPartnerRepository(private val queryFactory: JPAQueryFactory) {
fun findByPid(pid: String): AdMediaPartner? {
class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : AdMediaPartnerQueryRepository {
override fun findByPid(pid: String): AdMediaPartner? {
return queryFactory
.selectFrom(adMediaPartner)
.where(adMediaPartner.pid.eq(pid), adMediaPartner.isActive.isTrue)