Browse Source

탈퇴 기능 추가

jsshin 5 years ago
parent
commit
4931061a86

+ 0 - 10
src/main/java/com/style24/front/biz/dao/TsfOrderDao.java

@@ -26,16 +26,6 @@ public interface TsfOrderDao {
 	 */
 	Collection<Order> getOrderListForMypage(Order order);
 
-	/**
-	 * 주문 상태 별 수량 조회
-	 *
-	 * @param Order
-	 * @return Order
-	 * @author card007
-	 * @since 2021. 02. 08
-	 */
-	Order getOrderStatCount(Order order);
-
 	/**
 	 * 마이페이지 주문목록 페이징 처리 주문번호 수 조회
 	 *

+ 20 - 0
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -875,6 +875,25 @@ public class TsfCustomerService {
 		return resultCnt > 0;
 	}
 
+	/**
+	 * 회원탈퇴 처리
+	 * @param  customer - 고객번호
+	 * @return GagaMap - 결과
+	 * @author jsshin
+	 * @since 2021. 03. 24
+	 */
+	public GagaMap saveCustomerSecede(Customer customer) {
+		GagaMap result = new GagaMap();
+		// 1.비밀번호 일치한지 체크
+		boolean isMatch = customerPasswordConfirm(customer);
+		if (!isMatch) {
+			result.setBoolean("isSuccess", false);
+			result.setString("resultType", "PWD_MISMATCH");
+			return result;
+		}
+		return coreCustomerService.saveCustomerSecede(customer);
+	}
+
 
 
 	/**
@@ -1012,4 +1031,5 @@ public class TsfCustomerService {
 	}
 
 
+
 }

+ 0 - 9
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -328,15 +328,6 @@ public class TsfOrderService {
 		return orderDao.updatePaymentForOrderFinished(param);
 	}
 
-	/**
-	 * 주문 상태 별 수량 조회
-	 *
-	 * @param Order
-	 * @return Order
-	 * @author card007
-	 * @since 2021. 02. 08
-	 */
-	public Order getOrderStatCount(Order order) { return orderDao.getOrderStatCount(order); }
 
 	/**
 	 * 마이페이지 주문목록 페이징 처리 주문번호 수 조회

+ 46 - 4
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -152,7 +152,7 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("rmGfcdAmt", coreOrderService.getGiftcardInfo(order));
 
 		// 주문 상태 별 수량 조회
-		mav.addObject("orderCount", orderService.getOrderStatCount(order));
+		mav.addObject("orderCount", coreOrderService.getOrderStatCount(order));
 
 		// 주문상세상태코드 설정
 		mav.addObject("ordDtlStatList", rendererService.getCommonCodeList("G013", "Y", new String[] {"G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
@@ -448,7 +448,7 @@ public class TsfMypageController extends TsfBaseController {
 		GagaMap result = new GagaMap();
 
 		// 쿠폰정보 조회
-		result.set("orderCount", orderService.getOrderStatCount(order));
+		result.set("orderCount", coreOrderService.getOrderStatCount(order));
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 
@@ -973,7 +973,7 @@ public class TsfMypageController extends TsfBaseController {
 	}
 
 	/**
-	 * 마이페이지 - 회원탈퇴
+	 * 마이페이지 - 회원탈퇴 화면
 	 *
 	 * @return ModelAndView
 	 * @author jsshin
@@ -990,7 +990,7 @@ public class TsfMypageController extends TsfBaseController {
 		point.setCustNo(TsfSession.getInfo().getCustNo());
 
 		// 주문 상태 별 수량 조회
-		mav.addObject("orderStatInfo", orderService.getOrderStatCount(order));
+		mav.addObject("orderStatInfo", coreOrderService.getOrderStatCount(order));
 
 		// 포인트정보
 		mav.addObject("pointInfo", pointService.getCustomerPoint(point));
@@ -1003,9 +1003,51 @@ public class TsfMypageController extends TsfBaseController {
 
 		mav.addObject("custId", TsfSession.getInfo().getCustId());
 
+		mav.addObject("custNm", TsfSession.getInfo().getCustNm());
+
 		mav.setViewName(super.getDeviceViewName("/mypage/MypageCustSecedeForm"));
 
 		return mav;
 	}
+
+	@PostMapping("/customer/secede/save")
+	@ResponseBody
+	public GagaMap saveCustomerSecede(@RequestBody Customer customer) {
+		Integer custNo = TsfSession.getInfo().getCustNo();
+		customer.setCustNo(custNo);
+		customer.setRegNo(custNo);
+		customer.setUpdNo(custNo);
+		customer.setSiteCd(TscConstants.Site.STYLE24.value());
+		GagaMap result = customerService.saveCustomerSecede(customer);
+		boolean isSuccess = result.getBoolean("isSuccess");
+		if (isSuccess) {
+			try {
+				// TODO:회원탈퇴 메일 발송 2020-03-24
+			} catch (Exception e) {
+
+			}
+			TsfSession.invalidate(TsfSession.getHttpServletRequest());
+		}
+		return result;
+	}
+
+	/**
+	 * 마이페이지 - 회원탈퇴
+	 *
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2021. 03. 16
+	 */
+	@GetMapping("/customer/secede/complete/form")
+	public ModelAndView getCustomerSecedeCompleteForm() {
+		ModelAndView mav = new ModelAndView();
+
+
+
+		mav.setViewName(super.getDeviceViewName("/mypage/MypageCustSecedeForm"));
+
+		return mav;
+	}
+
 	/*신주승 끝*/
 }

+ 0 - 60
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -125,66 +125,6 @@
 				, OD.DELV_FEE_CD
 	</select>
 
-	<!-- 마이페이지 주문 상태 별 수량 조회 -->
-	<select id="getOrderStatCount" parameterType="Order" resultType="Order">
-		/* TsfOrder.getOrderStatCount */
-		SELECT SUM(Z.ORDER_RECEIPT)                          AS ORDER_RECEIPT_COUNT
-		     , SUM(Z.DEPOSIT_WAITING)                        AS DEPOSIT_WAITING_COUNT
-		     , SUM(Z.WAITING_ADD_PAYMENT)                    AS WAITING_ADD_PAYMENT_COUNT
-		     , SUM(Z.PAYMENT_COMPLETE)                       AS PAYMENT_COMPLETE_COUNT
-		     , SUM(Z.GOODS_PREPARE)                          AS GOODS_PREPARE_COUNT
-		     , SUM(Z.SHIP_PREPARE)                           AS SHIP_PREPARE_COUNT
-		     , SUM(Z.SHIPPING)                               AS SHIPPING_COUNT
-		     , SUM(Z.SHIP_COMPLETE)                          AS SHIP_COMPLETE_COUNT
-		     , SUM(Z.CANCEL_COUNT)                           AS CANCEL_COUNT
-		     , SUM(Z.EXCHANGE_COUNT + Z.EXCHANGE_WAIT_COUNT) AS EXCHANGE_COUNT
-		     , SUM(Z.RETURN_COUNT)                           AS RETURN_COUNT
-		FROM (
-		      SELECT IFNULL(CASE OD.ORD_DTL_STAT WHEN 'G013_00' THEN 1
-		                    END, 0) AS ORDER_RECEIPT
-		           , IFNULL(CASE OD.ORD_DTL_STAT WHEN 'G013_10' THEN 1
-		                      END, 0) AS DEPOSIT_WAITING
-		           , IFNULL(CASE OD.ORD_DTL_STAT WHEN 'G013_11' THEN 1
-		                      END, 0) AS WAITING_ADD_PAYMENT
-		           , IFNULL(CASE OD.ORD_DTL_STAT WHEN 'G013_20' THEN 1
-		                      END, 0) AS PAYMENT_COMPLETE
-		           , IFNULL(CASE OD.ORD_DTL_STAT WHEN 'G013_30' THEN 1
-		                    END, 0) AS GOODS_PREPARE
-		           , IFNULL(CASE OD.ORD_DTL_STAT WHEN 'G013_40' THEN 1
-		                    END, 0) AS SHIP_PREPARE
-		           , IFNULL(CASE OD.ORD_DTL_STAT WHEN 'G013_50' THEN 1
-		                    END, 0) AS SHIPPING
-		           , IFNULL(CASE WHEN OD.ORD_DTL_STAT = 'G013_60'
-		                    AND O.ORD_DT >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 WEEK, '%Y-%m-%d') THEN 1
-		                    END, 0) AS SHIP_COMPLETE
-		           , IFNULL(CASE OCD.CHG_STAT WHEN 'G685_20' THEN 1
-		                    END, 0) AS CANCEL_COUNT
-		           , IFNULL(CASE OCD.CHG_STAT WHEN 'G685_30' THEN 1
-		                    END, 0) AS EXCHANGE_COUNT
-		           , IFNULL(CASE OCD.CHG_STAT WHEN 'G685_33' THEN 1
-		                    END, 0) AS EXCHANGE_WAIT_COUNT
-		           , IFNULL(CASE OCD.CHG_STAT WHEN 'G685_40' THEN 1
-		                    END, 0) AS RETURN_COUNT
-		      FROM TB_ORDER O
-		      INNER JOIN TB_ORDER_DETAIL OD
-		      ON O.ORD_NO = OD.ORD_NO
-		      LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL OCD
-		      ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
-		      <where>
-		          <choose>
-		              <when test='custNo != null and custNo != ""'>
-		      AND O.CUST_NO  = #{custNo}
-		              </when>
-		              <otherwise>
-		      AND O.ORD_NO = #{ordNo}
-		      AND O.ORD_NM = #{orderNm}
-		              </otherwise>
-		          </choose>
-		      </where>
-		      AND O.DISP_YN = 'Y'
-		) AS Z
-	</select>
-
 	<!-- 마이페이지 주문목록 페이징 처리 주문번호 수 조회 -->
 	<select id="getPagingOrdNoListCount" parameterType="Order" resultType="int">
 		/* TsfOrder.getPagingOrdNoList */

+ 6 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCustConfirmFormWeb.html

@@ -23,7 +23,12 @@
 		<div class="cont_body">
 			<!-- CONT-BODY -->
 			<div class="lnb">
-				<!-- 마이페이지 lnb 영역 -->
+				<div class="lnb_tit">
+					<h2>마이페이지</h2>
+				</div>
+				<div class="lnb_list">
+					<ul id="mypageLnbList"></ul>
+				</div>
 			</div>
 			<div class="cont">
 				<div class="sec_head">

+ 7 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageCustModifyFormWeb.html

@@ -23,7 +23,12 @@
 		<div class="cont_body">
 			<!-- CONT-BODY -->
 			<div class="lnb">
-				<!-- 마이페이지 lnb 영역 -->
+				<div class="lnb_tit">
+					<h2>마이페이지</h2>
+				</div>
+				<div class="lnb_list">
+					<ul id="mypageLnbList"></ul>
+				</div>
 			</div>
 			<div class="cont">
 				<div class="sec_head">
@@ -495,7 +500,7 @@
 		fnSetMypageLnbList(10);
 
 		// 마이페이지 location 설정
-		fnSetMypageCustLocation('내정보 관리','_PAGE_MYPAGE_CUSTOMER','회원정보 수정');
+		fnSetMypageLocation('내정보 관리','_PAGE_MYPAGE_CUSTOMER','회원정보 수정');
 
 		// 회원(고객) 조회
 		fnGetCustInfo();

+ 161 - 30
src/main/webapp/WEB-INF/views/web/mypage/MypageCustSecedeFormWeb.html

@@ -24,13 +24,27 @@
 		<div class="cont_body">
 			<!-- CONT-BODY -->
 			<div class="lnb">
-				<!-- 마이페이지 lnb 영역 -->
+				<div class="lnb_tit">
+					<h2>마이페이지</h2>
+				</div>
+				<div class="lnb_list">
+					<ul id="mypageLnbList"></ul>
+				</div>
 			</div>
 			<div class="cont">
 				<div class="sec_head">
 					<h3 class="subH1">회원탈퇴</h3>
 				</div>
 				<div class="sec_body">
+					<div id="leaveIncomplete" class="highlight_area hide">
+						<div class="mb_leave_incomplete">
+							<p class="txt_primary">고객님께서는 진행중인 주문/취소/반품/교환건이 <span>1</span>건 이상 확인되어 탈퇴요청이 불가능 합니다.</p>
+							<p class="txt_sub">진행중인 건이 종료된 후 다시 시도해 주세요.</p>
+						</div>
+						<div id="leaveComplete" class="mb_leave_complete hide">
+							<span th:text="${custNm}"></span> 고객님의 STYLE24 회원탈퇴가 정상적으로 처리되었습니다.
+						</div>
+					</div>
 					<div class="tbl type5">
 						<table>
 							<colgroup>
@@ -59,18 +73,18 @@
 								</td>
 								<td>
 									<span class="hold_point">
-										<em id="pntAmt" th:text="|${#numbers.formatDecimal(pointInfo.rmPntAmt, 0, 'COMMA', 0, 'POINT')}'P'|">0P</em>&nbsp;/&nbsp;
-										<em id="expAmt" th:text="|${#numbers.formatDecimal(pointInfo.expectedPntAmt, 0, 'COMMA', 0, 'POINT')}'P'|">0P</em>
+										<em id="pntAmt" th:text="|${#numbers.formatDecimal(pointInfo.rmPntAmt, 0, 'COMMA', 0, 'POINT')}P|">0P</em>&nbsp;/&nbsp;
+										<em id="expAmt" th:text="|${#numbers.formatDecimal(pointInfo.expectedPntAmt, 0, 'COMMA', 0, 'POINT')}P|">0P</em>
 									</span>
 								</td>
 								<td>
 									<span class="hold_voucher">
-										<em id="giftAmt" th:text="|${#numbers.formatDecimal(rmGfcdAmt, 0, 'COMMA', 0, 'POINT')}''|">0원</em>
+										<em id="giftAmt" th:text="|${#numbers.formatDecimal(rmGfcdAmt, 0, 'COMMA', 0, 'POINT')}원|">0원</em>
 									</span>
 								</td>
 								<td>
 									<span class="hold_coupon">
-										<em id="cpnCnt" th:text="|${#numbers.formatDecimal(couponCnt, 0, 'COMMA', 0, 'POINT')}''|">0장</em>
+										<em id="cpnCnt" th:text="|${#numbers.formatDecimal(couponCnt, 0, 'COMMA', 0, 'POINT')}장|">0장</em>
 									</span>
 								</td>
 							</tr>
@@ -80,7 +94,7 @@
 					<h4 class="subH3">
 						보안을 위해 회원님의 아이디 및 비밀번호를 다시 확인합니다.
 					</h4>
-					<form class="form_wrap">
+					<form id="secedeCustForm" class="form_wrap">
 						<div class="tbl type1">
 							<table>
 								<colgroup>
@@ -113,31 +127,35 @@
 								</tr>
 							</table>
 						</div>
-					</form>
-					<div class="com_info_txt">
-						<p class="tit">회원 탈퇴 안내</p>
-						<ul>
-							<li>탈퇴시 소유하고 있는 포인트, 쿠폰등은 모두 소멸 됩니다.</li>
-							<li>거래정보가 있는 경우, 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 계약 또는 청약철회에 관한 기록, 대금결제 및 재화 등의 공급에 관한 기록은 5년동안 보존됩니다.</li>
-							<li>보유하셨던 상품권 금액은 탈퇴와 함께 삭제되며 환불되지 않습니다.</li>
-							<li>회원 탈퇴 후 STYLE24에 입력하신 상품문의 및 후기,댓글은 삭제되지 않으며,회원정보 삭제로 인해 작성자 본인을 확인 할 수 없어<br>편집 및 삭제처리가 원천적으로 불가능 합니다. 상품문의 및 후기, 댓글 삭제를 원하시는 경우에는 먼저 해당 게시물을 삭제하신 후 탈퇴를 신청하시기 바랍니다.</li>
-							<li>진행중인 주문/취소/반품/교환건이 있을 경우에는 탈퇴가 되지 않습니다.</li>
-						</ul>
-						<div class="check_box">
-							<div class="form_field">
-								<div>
-									<input type="checkbox" name="pushset" id="checkSecede" value="">
-										<label for="checkSecede"><span>상기 STYLE24 회원탈퇴 시 처리사항 안내를 확인하였음에 동의합니다.</span>
-									</label>
+						<div class="com_info_txt">
+							<p class="tit">회원 탈퇴 안내</p>
+							<ul>
+								<li>탈퇴시 소유하고 있는 포인트, 쿠폰등은 모두 소멸 됩니다.</li>
+								<li>거래정보가 있는 경우, 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 계약 또는 청약철회에 관한 기록, 대금결제 및 재화 등의 공급에 관한 기록은 5년동안 보존됩니다.</li>
+								<li>보유하셨던 상품권 금액은 탈퇴와 함께 삭제되며 환불되지 않습니다.</li>
+								<li>회원 탈퇴 후 STYLE24에 입력하신 상품문의 및 후기,댓글은 삭제되지 않으며,회원정보 삭제로 인해 작성자 본인을 확인 할 수 없어<br>편집 및 삭제처리가 원천적으로 불가능 합니다. 상품문의 및 후기, 댓글 삭제를 원하시는 경우에는 먼저 해당 게시물을 삭제하신 후 탈퇴를 신청하시기 바랍니다.</li>
+								<li>진행중인 주문/취소/반품/교환건이 있을 경우에는 탈퇴가 되지 않습니다.</li>
+							</ul>
+							<div class="check_box">
+								<div class="form_field">
+									<div>
+										<input type="checkbox" id="checkSecede" name="checkSecede" value="Y"/>
+										<label for="checkSecede">
+											<span>상기 STYLE24 회원탈퇴 시 처리사항 안내를 확인하였음에 동의합니다.</span>
+										</label>
+									</div>
 								</div>
 							</div>
 						</div>
-					</div>
+					</form>
 				</div>
 				<div class="btn_footer_area">
-					<button type="button" id="btnConfirm" class="btn btn_dark btn_md">
+					<button type="button" id="btnSaveSecede" class="btn btn_dark btn_md hide">
 						<span>회원탈퇴</span>
 					</button>
+					<button type="button" id="btnConfirm" class="btn btn_dark btn_md hide" onclick="cfnGoToPage(_PAGE_MAIN);">
+						<span>확인</span>
+					</button>
 				</div>
 			</div>
 		</div>
@@ -146,22 +164,135 @@
 	/*<![CDATA[*/
 	const orderStatInfo = [[${orderStatInfo}]];
 
-	$(document).ready( function() {
-		fnOrderStatInit();
-	});
+
 
 	var fnOrderStatInit = function () {
+		let $leaveIncomplete = $('#leaveIncomplete');
+		let $btnSaveSecede = $('#btnSaveSecede');
+		let $btnConfirm = $('#btnConfirm');
+
+		let isPossible = true;
+
 		// 진행중인 주문건
-		let orderTotal = orderStatInfo.depositWaitingCount + orderStatInfo.waitingAddPayment
-			+ orderStatInfo.paymentComplete + orderStatInfo.goodsPrepare + orderStatInfo.shipPrepare;
+		let orderTotal = orderStatInfo.depositWaitingCount + orderStatInfo.waitingAddPaymentCount
+			+ orderStatInfo.paymentCompleteCount + orderStatInfo.goodsPrepareCount + orderStatInfo.shipPrepareCount + orderStatInfo.shippingCount
+		;
 		$('#ordCnt').text(orderTotal.addComma());
+		// 진행중인 취소건
 		$('#cnclCnt').text(orderStatInfo.cancelCount.addComma());
+		// 진행중인 반품건
 		$('#rtnCnt').text(orderStatInfo.returnCount.addComma());
+		// 진행중인 교환건
 		$('#exCnt').text(orderStatInfo.exchangeCount.addComma());
-		// 진행중인 취소건
 
+		if (orderTotal > 0) {
+			isPossible = false
+		}
+
+		if (orderStatInfo.cancelCount > 0) {
+			isPossible = false
+		}
+
+		if (orderStatInfo.returnCount > 0) {
+			isPossible = false
+		}
+
+		if (orderStatInfo.exchangeCount > 0) {
+			isPossible = false
+		}
+
+		if (isPossible) {
+			$btnConfirm.hide();
+			$leaveIncomplete.hide();
+			$btnSaveSecede.show();
+		} else {
+			$btnSaveSecede.hide();
+			$leaveIncomplete.show();
+			$btnConfirm.show();
+		}
+
+	}
+
+	$('#btnSaveSecede').on('click', function () {
+		let secedeCustInfo = $('#secedeCustForm').serializeObject();
+
+		if (gagajf.isNull(secedeCustInfo.passwd)) {
+			mcxDialog.alertC('비밀번호를 입력해주세요.',{
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#secedeCustForm input[name=passwd]').focus();
+				}
+			});
+			return;
+		}
+
+		if (gagajf.isNull(secedeCustInfo.checkSecede)) {
+			mcxDialog.alertC('회원탈퇴 처리사항 안내에 동의해주세요.',{
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+				}
+			});
+			return;
+		}
+		let params = {};
+		params.passwd = secedeCustInfo.passwd;
+		let jsonData = JSON.stringify(params);
+		gagajf.ajaxJsonSubmit('/mypage/customer/secede/save', jsonData, fnSaveSecedeCallback)
+	});
+
+	var fnSaveSecedeCallback = function (result) {
+		let $leaveComplete = $('#leaveComplete');
+		let $leaveIncomplete = $('#leaveIncomplete');
+		let $btnSaveSecede = $('#btnSaveSecede');
+		let $btnConfirm = $('#btnConfirm');
+
+		if (result.isSuccess) {
+			$leaveIncomplete.hide();
+			$btnSaveSecede.hide();
+			$leaveComplete.show();
+			$btnConfirm.show();
+		} else {
+			if (result.resultType === 'PWD_MISMATCH') {
+				mcxDialog.alertC('비밀번호를 다시 입력해주세요.',{
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#secedeCustForm input[name=passwd]').focus();
+					}
+				});
+				return;
+			}
+
+			if (result.resultType === 'ALREADY_SECEDE') {
+				mcxDialog.alertC('이미탈퇴 처리된 회원 입니다.',{
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						cfnGoToPage(_PAGE_MAIN);
+					}
+				});
+				return;
+			}
+
+			if (result.resultType === 'PROGRESS_ORDER') {
+				mcxDialog.alertC('진행중인 주문/취소/반품/교환건이 있습니다.',{
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+					}
+				});
+				return;
+			}
+		}
 	}
 
+	$(document).ready( function() {
+		fnOrderStatInit();
+
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(11);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('내정보 관리','_PAGE_MYPAGE_CUSTOMER','회원정보 수정');
+
+	});
 	/*]]>*/
 </script>
 </th:block>

+ 2 - 0
src/main/webapp/ux/style24_link.js

@@ -22,6 +22,8 @@ const _PAGE_CUSTOMER_PWD_CHANGE_FIND = _frontUrl + "/customer/password/change/fo
 const _PAGE_CUSTOMER_PWD_CHANGE_TEMP = _frontUrl + "/customer/password/change/form?pageGb=temp";	// 고객 > 임시비밀번호 로그인 > 비밀번호 변경 화면
 const _PAGE_CUSTOMER_DORMANT = _frontUrl + "/customer/dormant/certify/form";						// 고객 > 휴면회원
 const _PAGE_CUSTOMER_DORMANT_COMPLETE = _frontUrl + "/customer/dormant/certify/complete/form";		// 고객 > 휴면회원 > 완료페이지
+const _PAGE_CUSTOMER_SECEDE = _frontUrl + "/customer/secede/form";									// 고객 > 회원탈퇴
+const _PAGE_CUSTOMER_SECEDE_COMPLETE = _frontUrl + "/customer/secede/complete/form";				// 고객 > 회원탈퇴 > 완료페이지
 const _PAGE_CUSTOMER_CERTIFICATION = _frontUrl + "/customer/certification/form"						// 고객 > 본인인증화면
 const _PAGE_USE_TERMS = _frontUrl + "/customer/use/terms/form";										// Footer > 이용약관
 const _PAGE_PRIVACY_POLICY = _frontUrl + "/customer/privacy/policy/form";							// Footer > 개인정보취급방침