feat: 포인트 지급 시 FCM data-only 푸시 메시지 전송 및 실패 시 재시도 처리
This commit is contained in:
@@ -65,7 +65,8 @@ class MemberController(
|
||||
|
||||
userActionService.recordAction(
|
||||
memberId = response.memberId,
|
||||
actionType = ActionType.SIGN_UP
|
||||
actionType = ActionType.SIGN_UP,
|
||||
pushToken = request.pushToken
|
||||
)
|
||||
|
||||
return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse)
|
||||
@@ -340,7 +341,7 @@ class MemberController(
|
||||
}
|
||||
|
||||
val token = authHeader.substring(7)
|
||||
val response = googleAuthService.authenticate(token, request.container, request.marketingPid)
|
||||
val response = googleAuthService.authenticate(token, request.container, request.marketingPid, request.pushToken)
|
||||
|
||||
if (!response.marketingPid.isNullOrBlank()) {
|
||||
trackingService.saveTrackingHistory(
|
||||
@@ -350,6 +351,12 @@ class MemberController(
|
||||
)
|
||||
}
|
||||
|
||||
userActionService.recordAction(
|
||||
memberId = response.memberId,
|
||||
actionType = ActionType.SIGN_UP,
|
||||
pushToken = request.pushToken
|
||||
)
|
||||
|
||||
return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse)
|
||||
}
|
||||
|
||||
@@ -363,7 +370,7 @@ class MemberController(
|
||||
}
|
||||
|
||||
val token = authHeader.substring(7)
|
||||
val response = kakaoAuthService.authenticate(token, request.container, request.marketingPid)
|
||||
val response = kakaoAuthService.authenticate(token, request.container, request.marketingPid, request.pushToken)
|
||||
|
||||
if (!response.marketingPid.isNullOrBlank()) {
|
||||
trackingService.saveTrackingHistory(
|
||||
@@ -373,6 +380,12 @@ class MemberController(
|
||||
)
|
||||
}
|
||||
|
||||
userActionService.recordAction(
|
||||
memberId = response.memberId,
|
||||
actionType = ActionType.SIGN_UP,
|
||||
pushToken = request.pushToken
|
||||
)
|
||||
|
||||
return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse)
|
||||
}
|
||||
}
|
||||
|
@@ -125,6 +125,7 @@ class MemberService(
|
||||
gender = Gender.NONE,
|
||||
container = request.container
|
||||
)
|
||||
member.pushToken = request.pushToken
|
||||
|
||||
if (!request.marketingPid.isNullOrBlank()) {
|
||||
member.activePid = request.marketingPid
|
||||
@@ -780,7 +781,12 @@ class MemberService(
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun findOrRegister(googleUserInfo: GoogleUserInfo, container: String, marketingPid: String?): Member {
|
||||
fun findOrRegister(
|
||||
googleUserInfo: GoogleUserInfo,
|
||||
container: String,
|
||||
marketingPid: String?,
|
||||
pushToken: String?
|
||||
): Member {
|
||||
val findMember = repository.findByGoogleId(googleUserInfo.sub)
|
||||
if (findMember != null) {
|
||||
if (findMember.isActive) {
|
||||
@@ -810,6 +816,7 @@ class MemberService(
|
||||
provider = MemberProvider.GOOGLE,
|
||||
container = container
|
||||
)
|
||||
member.pushToken = pushToken
|
||||
|
||||
if (!marketingPid.isNullOrBlank()) {
|
||||
member.activePid = marketingPid
|
||||
@@ -823,7 +830,12 @@ class MemberService(
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun findOrRegister(kakaoUserInfo: KakaoUserInfo, container: String, marketingPid: String?): Member {
|
||||
fun findOrRegister(
|
||||
kakaoUserInfo: KakaoUserInfo,
|
||||
container: String,
|
||||
marketingPid: String?,
|
||||
pushToken: String?
|
||||
): Member {
|
||||
val findMember = repository.findByKakaoId(kakaoUserInfo.id)
|
||||
if (findMember != null) {
|
||||
if (findMember.isActive) {
|
||||
@@ -853,6 +865,7 @@ class MemberService(
|
||||
provider = MemberProvider.KAKAO,
|
||||
container = container
|
||||
)
|
||||
member.pushToken = pushToken
|
||||
|
||||
if (!marketingPid.isNullOrBlank()) {
|
||||
member.activePid = marketingPid
|
||||
|
@@ -7,4 +7,8 @@ data class LoginRequest(
|
||||
val isCreator: Boolean = false
|
||||
)
|
||||
|
||||
data class SocialLoginRequest(val container: String, val marketingPid: String? = null)
|
||||
data class SocialLoginRequest(
|
||||
val container: String,
|
||||
val pushToken: String? = null,
|
||||
val marketingPid: String? = null
|
||||
)
|
||||
|
@@ -16,6 +16,7 @@ data class SignUpRequest(
|
||||
data class SignUpRequestV2(
|
||||
val email: String,
|
||||
val password: String,
|
||||
val pushToken: String? = null,
|
||||
val marketingPid: String? = null,
|
||||
val isAgreeTermsOfService: Boolean,
|
||||
val isAgreePrivacyPolicy: Boolean,
|
||||
|
@@ -19,10 +19,15 @@ class GoogleAuthService(
|
||||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val cloudFrontHost: String
|
||||
) {
|
||||
fun authenticate(idToken: String, container: String, marketingPid: String?): SocialLoginResponse {
|
||||
fun authenticate(
|
||||
idToken: String,
|
||||
container: String,
|
||||
marketingPid: String?,
|
||||
pushToken: String?
|
||||
): SocialLoginResponse {
|
||||
val googleUserInfo = googleService.getUserInfo(idToken)
|
||||
?: throw SodaException("구글 로그인을 하지 못했습니다. 다시 시도해 주세요")
|
||||
val member = memberService.findOrRegister(googleUserInfo, container, marketingPid)
|
||||
val member = memberService.findOrRegister(googleUserInfo, container, marketingPid, pushToken)
|
||||
val principal = MemberAdapter(member)
|
||||
val authToken = GoogleAuthenticationToken(idToken, principal.authorities)
|
||||
authToken.setPrincipal(principal)
|
||||
|
@@ -19,10 +19,15 @@ class KakaoAuthService(
|
||||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val cloudFrontHost: String
|
||||
) {
|
||||
fun authenticate(accessToken: String, container: String, marketingPid: String?): SocialLoginResponse {
|
||||
fun authenticate(
|
||||
accessToken: String,
|
||||
container: String,
|
||||
marketingPid: String?,
|
||||
pushToken: String?
|
||||
): SocialLoginResponse {
|
||||
val kakaoUserInfo = kakaoService.getUserInfo(accessToken)
|
||||
?: throw SodaException("카카오 로그인을 하지 못했습니다. 다시 시도해 주세요")
|
||||
val member = memberService.findOrRegister(kakaoUserInfo, container, marketingPid)
|
||||
val member = memberService.findOrRegister(kakaoUserInfo, container, marketingPid, pushToken)
|
||||
val principal = MemberAdapter(member)
|
||||
val authToken = KakaoAuthenticationToken(accessToken, principal.authorities)
|
||||
authToken.setPrincipal(principal)
|
||||
|
Reference in New Issue
Block a user