Replies: 6 comments 2 replies
-
연동 방법 2번째 동의합니다! 전화번호 겹치는건 해결 방법을 생각해봐야겠네요. |
Beta Was this translation helpful? Give feedback.
-
확인했습니다. 저는 문제 없어보여요~! |
Beta Was this translation helpful? Give feedback.
-
깃짱 플로우 생각하느라 수고햇어요 짱짱 데이터연동 방법 저도 아까 들었을때 2번이 좋다고 생각했는데요..! 이게 temporary 랑 register 는 스키마가 달라서 기존 임시회원에는 oauthId 등의 column 이 없을거같은데 update 를 칠수가 있을까용?? |
Beta Was this translation helpful? Give feedback.
-
좋은 아이디어네요! 구현되는 날을 기다리고 있습니당🥹 |
Beta Was this translation helpful? Give feedback.
-
구구의 심리상담
깃짱, 제나, 레오의 결심
|
Beta Was this translation helpful? Give feedback.
-
저는 2번 방법이요. |
Beta Was this translation helpful? Give feedback.
-
(23.09.14 추가)
연동 성공하고, 내용 포스팅했습니다.
아래 링크 들어가서 보는게 더 읽기 편해요!
[우테코] 임시 회원 ↔ 가입회원 데이터 연동기(1): 6가지 시도와 실패한 이유(JPA 상속 관계 매핑의 한계)
[우테코] 임시 회원 ↔ 가입회원 데이터 연동기(2): 테이블 구조 대공사, 데이터 연동 API 구현!
현재 우리 서비스는 전화번호를 통한 간편한 적립을 우리 서비스의 핵심 가치로 생각하고 있다.
따라서 이전에 스탬프크러쉬 서비스에 가입한 적이 없던 고객도 전화번호만 눌러서 간편하게 적립을 할 수 있어야 하고, 이후에 직접 웹사이트로 들어와 서비스를 이용하려면 간편한 회원가입을 해야 한다.
이 때, 간편 회원가입을 하게 되면, 기존에 임시 회원(비회원)일 때 쌓아두었던 데이터를 모두 연동해야 한다.
우리 데이터베이스 구조는 위와 같다.
Diagram으로 나타내면 아래와 같다.
임시 회원 데이터 연동을 위해 정리한 플로우는 크게 아래와 같다.
전화번호로 고객 조회 API 호출
데이터 연동 API 호출
전화번호 저장 API 호출
결과적으로 3가지 API를 통해서 해당 작업을 할 수 있다.
이미 전화번호 저장 API는 만들어져 있으므로, 그대로 사용하도록 했다.
사실 이미 전화번호로 고객을 조회하는 API는 사장모드에서 사용하기 위해 만들어 놓았다.
하지만 이 API를 사용하지 않기로 결정한데는 2가지 이유가 있다.
그러면, 위 내용을 바탕으로 3가지 API를 아래와 같이 설계했다.
전화번호로 고객 조회 API
Request
Body
None
Response
Header
HTTP/1.1 200 OK
Body
{ "customers": [] }
데이터 연동 API
Request
Body
Response
Header
HTTP/1.1 200 OK
Body
None
전화번호 저장 API
그리고, 마지막으로 이전 스프린트에 만들었던 전화번호 저장 API다.
Request
Body
Response
Header
HTTP/1.1 200 OK
Body
None
데이터 연동의 구체적인 방법
우리 Customer 테이블은 상속 구조를 조인 전략으로 구현했지만, 아래 설명의 편의를 위해서는 하나의 테이블에 합친 단일 테이블 전략으로 설명하겠다.
레코드 주소는 DB 상에 보이지는 않지만, 설명의 편의를 위해 추가했다.
Customer Table
데이터 연동은 두 레코드를 하나의 레코드로 합치고, 기존에 임시 회원으로 활동하던 당시의 Coupon 등에 이미 2번 id가 등록되어 있다.
따라서 데이터를 연동하기 위해서는,
nickname
,dtype
,oauth_provider
,oauth_id
를 사용하도록 함.아래와 같은 방법을 생각해볼 수 있다.
phone_number
를 update한다.dtype
,nickname
,dtype
,oauth_provider
,oauth_id
를 update하고, 2004 레코드를 삭제한다.따라서 2번 방법을 사용해서 구현하는 것이 좋을 것 같다고 생각한다.
Beta Was this translation helpful? Give feedback.
All reactions