diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MarketingInfoUpdateRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MarketingInfoUpdateRequest.kt new file mode 100644 index 0000000..6ba3dd8 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MarketingInfoUpdateRequest.kt @@ -0,0 +1,6 @@ +package kr.co.vividnext.sodalive.member + +data class MarketingInfoUpdateRequest( + val adid: String, + val pid: String +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt index 3d8378a..54f1f8b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt @@ -128,6 +128,22 @@ class MemberController( ) } + @PutMapping("/marketing-info/update") + fun updateMarketingInfo( + @RequestBody request: MarketingInfoUpdateRequest, + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok( + service.updateMarketingInfo( + memberId = member.id!!, + adid = request.adid, + pid = request.pid + ) + ) + } + @PutMapping("/adid/update") fun updateAdid( @RequestBody request: AdidUpdateRequest, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt index 8a1392f..511121e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -646,4 +646,19 @@ class MemberService( private fun getOrCreateLock(memberId: Long): ReentrantReadWriteLock { return tokenLocks.computeIfAbsent(memberId) { ReentrantReadWriteLock() } } + + @Transactional + fun updateMarketingInfo(memberId: Long, adid: String, pid: String) { + val member = repository.findByIdOrNull(id = memberId) + ?: throw SodaException("로그인 정보를 확인해주세요.") + + if (adid != member.adid) { + member.adid = adid + } + + if (pid != member.activePid) { + member.activePid = pid + member.partnerExpirationDateTime = LocalDateTime.now().plusYears(1) + } + } }