From 73c9a90ae3be76ffc935b0df73fa6fdcc4ecee1d Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 12 May 2025 17:19:34 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=86=8C=EC=85=9C=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=EC=8B=9C=20=EC=9C=A0=EC=A0=80=20=ED=96=89=EB=8F=99?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20SIGN=5FUP=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EA=B8=B0=EB=A1=9D=20=EB=B2=84=EA=B7=B8=20-=20=EC=86=8C?= =?UTF-8?q?=EC=85=9C=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=8B=9C=20isNew=20?= =?UTF-8?q?=ED=94=8C=EB=9E=98=EA=B7=B8=EB=A5=BC=20=ED=86=B5=ED=95=B4=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85/=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=EC=9D=84=20=EA=B5=AC=EB=B6=84=ED=95=98=EC=97=AC=20SIG?= =?UTF-8?q?N=5FUP=20=EC=A4=91=EB=B3=B5=20=EA=B8=B0=EB=A1=9D=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/member/MemberController.kt | 24 +++++++++++-------- .../sodalive/member/MemberService.kt | 13 +++++----- .../member/social/MemberResolveResult.kt | 8 +++++++ .../member/social/SocialLoginResponse.kt | 3 ++- .../member/social/google/GoogleAuthService.kt | 6 +++-- .../member/social/kakao/KakaoAuthService.kt | 6 +++-- 6 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/member/social/MemberResolveResult.kt 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 0da7a69..1a1b2e4 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt @@ -351,11 +351,13 @@ class MemberController( ) } - userActionService.recordAction( - memberId = response.memberId, - actionType = ActionType.SIGN_UP, - pushToken = request.pushToken - ) + if (response.isNew) { + userActionService.recordAction( + memberId = response.memberId, + actionType = ActionType.SIGN_UP, + pushToken = request.pushToken + ) + } return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse) } @@ -380,11 +382,13 @@ class MemberController( ) } - userActionService.recordAction( - memberId = response.memberId, - actionType = ActionType.SIGN_UP, - pushToken = request.pushToken - ) + if (response.isNew) { + userActionService.recordAction( + memberId = response.memberId, + actionType = ActionType.SIGN_UP, + pushToken = request.pushToken + ) + } return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse) } 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 93464bd..49f3362 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -33,6 +33,7 @@ import kr.co.vividnext.sodalive.member.signUp.SignUpRequest import kr.co.vividnext.sodalive.member.signUp.SignUpRequestV2 import kr.co.vividnext.sodalive.member.signUp.SignUpResponse import kr.co.vividnext.sodalive.member.signUp.SignUpValidator +import kr.co.vividnext.sodalive.member.social.MemberResolveResult import kr.co.vividnext.sodalive.member.social.google.GoogleUserInfo import kr.co.vividnext.sodalive.member.social.kakao.KakaoUserInfo import kr.co.vividnext.sodalive.member.stipulation.Stipulation @@ -800,11 +801,11 @@ class MemberService( container: String, marketingPid: String?, pushToken: String? - ): Member { + ): MemberResolveResult { val findMember = repository.findByGoogleId(googleUserInfo.sub) if (findMember != null) { if (findMember.isActive) { - return findMember + return MemberResolveResult(member = findMember, isNew = false) } else { throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.") } @@ -847,7 +848,7 @@ class MemberService( ) } - return member + return MemberResolveResult(member = member, isNew = true) } @Transactional @@ -856,11 +857,11 @@ class MemberService( container: String, marketingPid: String?, pushToken: String? - ): Member { + ): MemberResolveResult { val findMember = repository.findByKakaoId(kakaoUserInfo.id) if (findMember != null) { if (findMember.isActive) { - return findMember + return MemberResolveResult(member = findMember, isNew = false) } else { throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.") } @@ -903,7 +904,7 @@ class MemberService( ) } - return member + return MemberResolveResult(member = member, isNew = true) } private fun checkEmail(email: String) { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/social/MemberResolveResult.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/MemberResolveResult.kt new file mode 100644 index 0000000..ac03b53 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/MemberResolveResult.kt @@ -0,0 +1,8 @@ +package kr.co.vividnext.sodalive.member.social + +import kr.co.vividnext.sodalive.member.Member + +data class MemberResolveResult( + val member: Member, + val isNew: Boolean +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/social/SocialLoginResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/SocialLoginResponse.kt index 624f83a..efecfe9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/social/SocialLoginResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/SocialLoginResponse.kt @@ -5,5 +5,6 @@ import kr.co.vividnext.sodalive.member.login.LoginResponse data class SocialLoginResponse( val memberId: Long, val marketingPid: String?, - val loginResponse: LoginResponse + val loginResponse: LoginResponse, + val isNew: Boolean ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/social/google/GoogleAuthService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/google/GoogleAuthService.kt index 0d39c74..46548bc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/social/google/GoogleAuthService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/google/GoogleAuthService.kt @@ -27,7 +27,8 @@ class GoogleAuthService( ): SocialLoginResponse { val googleUserInfo = googleService.getUserInfo(idToken) ?: throw SodaException("구글 로그인을 하지 못했습니다. 다시 시도해 주세요") - val member = memberService.findOrRegister(googleUserInfo, container, marketingPid, pushToken) + val memberResolveResult = memberService.findOrRegister(googleUserInfo, container, marketingPid, pushToken) + val member = memberResolveResult.member val principal = MemberAdapter(member) val authToken = GoogleAuthenticationToken(idToken, principal.authorities) authToken.setPrincipal(principal) @@ -53,7 +54,8 @@ class GoogleAuthService( return SocialLoginResponse( memberId = member.id!!, marketingPid = marketingPid, - loginResponse = loginResponse + loginResponse = loginResponse, + isNew = memberResolveResult.isNew ) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/social/kakao/KakaoAuthService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/kakao/KakaoAuthService.kt index 026aa79..f8e66ba 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/social/kakao/KakaoAuthService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/social/kakao/KakaoAuthService.kt @@ -27,7 +27,8 @@ class KakaoAuthService( ): SocialLoginResponse { val kakaoUserInfo = kakaoService.getUserInfo(accessToken) ?: throw SodaException("카카오 로그인을 하지 못했습니다. 다시 시도해 주세요") - val member = memberService.findOrRegister(kakaoUserInfo, container, marketingPid, pushToken) + val memberResolveResult = memberService.findOrRegister(kakaoUserInfo, container, marketingPid, pushToken) + val member = memberResolveResult.member val principal = MemberAdapter(member) val authToken = KakaoAuthenticationToken(accessToken, principal.authorities) authToken.setPrincipal(principal) @@ -53,7 +54,8 @@ class KakaoAuthService( return SocialLoginResponse( memberId = member.id!!, marketingPid = marketingPid, - loginResponse = loginResponse + loginResponse = loginResponse, + isNew = memberResolveResult.isNew ) } }