diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/useraction/UserActionController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/useraction/UserActionController.kt new file mode 100644 index 0000000..91ae58c --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/useraction/UserActionController.kt @@ -0,0 +1,36 @@ +package kr.co.vividnext.sodalive.useraction + +import kr.co.vividnext.sodalive.common.ApiResponse +import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.member.Member +import kr.co.vividnext.sodalive.member.MemberService +import org.springframework.security.core.annotation.AuthenticationPrincipal +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 +@RequestMapping("/user-action") +class UserActionController( + private val service: UserActionService, + private val memberService: MemberService +) { + @PostMapping + fun recordAction( + @RequestBody request: UserActionRequest, + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("") + + val memberId = member.id!! + val pushTokenList = memberService.getPushTokenList(recipient = memberId) + service.recordAction( + memberId = memberId, + actionType = request.actionType, + pushTokenList = pushTokenList + ) + + ApiResponse.ok(Unit, "") + } +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/useraction/UserActionRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/useraction/UserActionRequest.kt new file mode 100644 index 0000000..4d92eb7 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/useraction/UserActionRequest.kt @@ -0,0 +1,3 @@ +package kr.co.vividnext.sodalive.useraction + +data class UserActionRequest(val actionType: ActionType)