> For the complete documentation index, see [llms.txt](https://tech.x2bee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tech.x2bee.com/api-guide/store-front/member/undefined-3.md).

# 회원탈퇴

가입한 고객이 X2BEE 쇼핑몰에서 탈퇴하기 위한 프로세스를 제공합니다. 이를 통해 고객은 개인정보 변경 페이지에 진입하여 탈퇴 요청을 진행하며, 진행 중인 주문, 클레임, 1:1 문의 건이 없을 시에 탈퇴가 완료됩니다.

***

## 주요 기능

* **탈퇴 가능여부 체크**
  * 현재 진행 중인 주문, 클레임, 1:1 문의 건이 있는지 확인하여 탈퇴 가능 여부를 체크합니다.
* **탈퇴 사유 선택**
  * 회원은 탈퇴 사유를 선택하여 탈퇴를 요청합니다.
* **탈퇴 처리**
  * 탈퇴 가능한 경우, 회원을 탈퇴 처리하고 개인정보를 마스킹 처리합니다.
  * 회원의 주문내역, 클레임내역, 1:1 문의, 상품 문의에 존재하는 회원 개인정보도 마스킹 처리됩니다.
* **이벤트 데이터베이스 처리**
  * 탈퇴 처리 후, 이벤트 데이터베이스에 회원 정보 삭제 처리를 요청합니다.

## 프로세스 정의

<figure><img src="/files/Fcx9FXoRmJHofFTS0DnF" alt=""><figcaption></figcaption></figure>

{% stepper %}
{% step %}

### 탈퇴 가능여부 조회

회원은 개인정보 수정 페이지를 통해 탈퇴 페이지에 접근할 수 있습니다. 탈퇴 처리 진행 전 탈퇴 가능여부를 체크합니다.

탈퇴가능여부 체크 항목:

* 진행 중인 주문 건이 존재하는지
* 진행 중인 반품/교환 건이 존재하는지
* 진행 중인 1:1 상담 건이 존재하는지
* 잔여 마일리지가 존재하는지

탈퇴 가능여부 조건을 충족하지 못하면 탈퇴 처리가 불가능합니다.
{% endstep %}

{% step %}

### 탈퇴 사유 선택

탈퇴 시 탈퇴 사유를 선택합니다. 탈퇴 사유는 다음 3가지 항목으로 분류됩니다.

* 개인정보 관련
* 사이트 이용관련
* 서비스 이용관련

탈퇴 사유를 1개라도 입력하지 않으면 탈퇴 처리가 불가능합니다.
{% endstep %}

{% step %}

### 탈퇴 처리

탈퇴 처리 시 앞서 체크한 탈퇴 가능여부를 다시 확인합니다.

처리 내용:

* 회원 정보 데이터베이스의 개인정보(신상 정보, 배송지 정보, 환불 계좌 정보)를 마스킹 처리합니다.
* 상품 API, 주문 API를 통해 상품문의 내역, 주문/클레임 내역, 1:1 문의 내역의 회원 개인정보를 마스킹 처리합니다.
* 이벤트 DB의 회원 정보를 삭제 요청합니다.
* 탈퇴 처리가 완료된 후 탈퇴 처리 완료를 알리는 알림톡과 메일을 발송합니다.
  {% endstep %}

{% step %}

### 토큰 삭제

탈퇴 처리가 완료된 후에는 기존 로그인 된 토큰을 삭제합니다.
{% endstep %}
{% endstepper %}

## API 기능 목록

<table><thead><tr><th width="94.555419921875">API</th><th width="393.3333740234375">설명</th><th width="98">Server</th><th width="89.111083984375">메소드</th><th>비고</th></tr></thead><tbody><tr><td>회원탈퇴 가능여부</td><td><p>로그인 한 회원에 대해 탈퇴가 가능한 상태인지 체크합니다.</p><ul><li>주문/배송 클레임 건수 조회: /api/order/v1/member/getOrdClaimCnt</li><li>진행중인 상담 건수 조회: /api/order/v1/customerservice/getNotCompletedInquiryCount</li></ul></td><td>Member</td><td>POST</td><td><a href="http://api.x2bee.com/content?msa=member&#x26;depth=%ED%9A%8C%EC%9B%90%ED%83%88%ED%87%B4&#x26;path=chkWithdrawalMember">🔗API 확인하기></a></td></tr><tr><td>회원탈퇴</td><td><p>회원이 탈퇴 요청 시 탈퇴 처리 기능을 제공합니다.</p><ul><li>상품Q&#x26;A 분리보관 처리: /api/goods/v1/qnaWithdraw/updateStopQna</li><li>이벤트 회원 분리보관 복원: /api/event/v1/common/doSeparate</li><li>탈퇴/휴면 회원 개인정보 이관 및 마스킹 처리: /api/order/v1/customerservice/withdrawalAndDormantMember</li><li>탈퇴 처리: /api/order/v1/member/withdrawalMemberOrderInfo</li></ul></td><td>Member</td><td>POST</td><td><a href="http://api.x2bee.com/content?msa=member&#x26;depth=%ED%9A%8C%EC%9B%90%ED%83%88%ED%87%B4&#x26;path=withdrawal">🔗API 확인하기></a></td></tr></tbody></table>

## 용어 정의

<table><thead><tr><th width="91.22216796875">명칭</th><th width="450.2222900390625">설명</th><th>비고</th></tr></thead><tbody><tr><td>분리보관</td><td>개인정보 보호법상 원칙적으로 삭제를 해야 하나 다른 <br>법률상의 규정에 따라 불가피하게 보관하는 경우</td><td>9/15 휴면회원 분리보관 법이 폐기된 상태임</td></tr></tbody></table>

## 기타 참고사항

* 회원 데이터베이스의 회원 개인정보를 마스킹 한 후 분리보관 데이터베이스(별개의 데이터베이스)에 탈퇴한 회원의 개인정보를 보관합니다.

  * 탈퇴한 회원은 일정 기간동안 재가입을 할 수 없도록 되어있기 때문에 분리보관 데이터베이스에 보관 (CI 값으로 확인)
  * ST009(회원 탈퇴 후 재가입 제한 일수) 코드 10번의 코드명으로 기간을 체크한 후, 회원 가입 시 고객의 CI가 분리보관 데이터베이스의 탈퇴 정보 테이블 내 존재하는 지 체크

* 탈퇴 처리 진행 중 실패할 시 회원 데이터베이스의 정보와 분리보관 데이터베이스의 정보가 전체 롤백 되어야 하기 때문에 트랜잭션 설정이 다르게 되어있습니다.
  * @Transactional(value = "chainedTransactionManager", rollbackFor = {Exception.class})
  * chainedTransactionManager : 분리보관 RW DB, order RW DB 함께 롤백

* 회원 데이터베이스 마스킹 처리 중 실패 시 전체 데이터를 롤백하지만 타 모듈(주문/상품/이벤트) 마스킹 처리 API 호출 중 에러 발생 시 롤백하지 않고 재처리할 수 있도록 재처리 관련 테이블에 데이터를 insert 합니다.

* 재처리 배치로 탈퇴 처리 시 실패한 타 모듈 API를 재실행해 타 모듈 데이터의 개인정보를 마스킹 처리합니다.

* 회원 데이터베이스 마스킹 항목:
  * 회원 기본정보 (회원명, 비밀번호, 전화번호, 휴대폰번호, 주소)
  * 회원 상세정보 (CI)
  * 회원 배송지정보 (수신자명, 주소 및 상세주소, 우편번호, 전화번호, 휴대폰번호, 배송메세지정보, 공동현관정보, 이메일주소)
  * 회원 환불계좌정보 (은행코드, 환불계좌번호, 예금주명)
