Quellcode durchsuchen

1.SNS 간편가입시 비밀번호 최초 등록 2.회원탈퇴 마무리

jsshin vor 5 Jahren
Ursprung
Commit
2d96c4b13b

+ 1 - 8
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -884,18 +884,11 @@ public class TsfCustomerService {
 	 */
 	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);
 	}
 
 
-
 	/**
 	 * KCP 계좌인증 처리
 	 *

+ 57 - 24
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -839,8 +839,19 @@ public class TsfMypageController extends TsfBaseController {
 	@GetMapping("/customer/confirm/form")
 	public ModelAndView getCustomerConfirmForm() {
 		ModelAndView mav = new ModelAndView();
-		mav.addObject("custId", TsfSession.getInfo().getCustId());
-		mav.setViewName(super.getDeviceViewName("mypage/MypageCustConfirmForm"));
+		Customer customer = customerService.getCustomerFindByCustNo(TsfSession.getInfo().getCustNo());
+
+		mav.addObject("custId", customer.getCustId());
+
+		mav.addObject("snsType", customer.getSnsType());
+
+		// 1.간편가입인데 처음 마이페지로 진입 했을떄
+		if (StringUtils.isNotBlank(customer.getSnsType()) && StringUtils.isBlank(customer.getPasswd())) {
+			mav.setViewName(super.getDeviceViewName("mypage/MypageCustSnsJoinInitPwdForm"));
+		} else {
+			mav.setViewName(super.getDeviceViewName("mypage/MypageCustConfirmForm"));
+		}
+
 		return mav;
 	}
 
@@ -888,7 +899,6 @@ public class TsfMypageController extends TsfBaseController {
 		}
 
 		mav.addObject("bankList", rendererService.getCommonCodeList("G940", "Y"));
-//		mav.addObject("genderGbList", rendererService.getCommonCodeList("G007", "Y"));
 
 		mav.setViewName(super.getDeviceViewName("/mypage/MypageCustModifyForm"));
 		return mav;
@@ -1003,24 +1013,59 @@ public class TsfMypageController extends TsfBaseController {
 		// 쿠폰정보 조회
 		mav.addObject("couponCnt", coreOrderService.getCouponInfo(order));
 
-		mav.addObject("custId", TsfSession.getInfo().getCustId());
+		Customer customer = customerService.getCustomerFindByCustNo(TsfSession.getInfo().getCustNo());
 
-		mav.addObject("custNm", TsfSession.getInfo().getCustNm());
+		mav.addObject("snsType", customer.getSnsType());
+
+		mav.addObject("custId", customer.getCustId());
+
+		mav.addObject("custNm", customer.getCustNm());
 
 		mav.setViewName(super.getDeviceViewName("/mypage/MypageCustSecedeForm"));
 
 		return mav;
 	}
 
-	@PostMapping("/customer/secede/save")
-	@ResponseBody
-	public GagaMap saveCustomerSecede(@RequestBody Customer customer) {
+	/**
+	 * 마이페이지 - 회원탈퇴
+	 *
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2021. 03. 16
+	 */
+	@PostMapping("/customer/secede/complete/form")
+	public ModelAndView getCustomerSecedeCompleteForm() {
+		ModelAndView mav = new ModelAndView();
 		Integer custNo = TsfSession.getInfo().getCustNo();
+
+		Order order = new Order();
+		order.setCustNo(custNo);
+
+		Point point = new Point();
+		point.setCustNo(custNo);
+
+		// 주문 상태 별 수량 조회
+		mav.addObject("orderStatInfo", coreOrderService.getOrderStatCount(order));
+
+		// 포인트정보
+		mav.addObject("pointInfo", pointService.getCustomerPoint(point));
+
+		// 상품권 정보 조회
+		mav.addObject("rmGfcdAmt", coreOrderService.getGiftcardInfo(order));
+
+		// 쿠폰정보 조회
+		mav.addObject("couponCnt", coreOrderService.getCouponInfo(order));
+
+		mav.addObject("custNm", TsfSession.getInfo().getCustNm());
+
+		Customer customer = new Customer();
 		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 {
@@ -1029,24 +1074,12 @@ public class TsfMypageController extends TsfBaseController {
 
 			}
 			TsfSession.invalidate(TsfSession.getHttpServletRequest());
+		} else {
+			mav.setViewName("redirect:/mypage/customer/secede/form");
+			return mav;
 		}
-		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"));
+		mav.setViewName(super.getDeviceViewName("/mypage/MypageCustSecedeCompleteForm"));
 
 		return mav;
 	}

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

@@ -44,7 +44,7 @@
 									<col width="*">
 								</colgroup>
 								<tbody>
-									<tr>
+									<tr th:if="${snsType ==''}">
 										<th>아이디</th>
 										<td>
 											<div class="form_field">
@@ -54,6 +54,24 @@
 											</div>
 										</td>
 									</tr>
+									<tr th:unless="${snsType ==''}">
+										<th>아이디</th>
+										<td>
+											<div class="form_field">
+												<div class="input_wrap">
+													<th:block th:if="${snsType == 'NV'}">
+														<span>네이버 간편가입회원</span>
+													</th:block>
+													<th:block th:if="${snsType == 'KK'}">
+														<span>카카오 간편가입회원</span>
+													</th:block>
+													<th:block th:if="${snsType == 'YS'}">
+														<span>YES24 간편가입회원</span>
+													</th:block>
+												</div>
+											</div>
+										</td>
+									</tr>
 									<tr>
 										<th>비밀번호</th>
 										<td>

+ 11 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCustModifyFormWeb.html

@@ -252,7 +252,17 @@
 		orgCustInfo = custInfo; // 원본 데이터저장 수정시 비교 작업
 		$('#custModiFyForm td[name=custNm]').text(custInfo.custNm);
 		$('#custModiFyForm td[name=birthYmd]').text(custInfo.birthYmd);
-		$('#custModiFyForm input[name=custId]').val(custInfo.custId);
+		let custId = custInfo.custId;
+		if (custInfo.snsType === 'NV') {
+			custId = '네이버 간편가입회원'
+		}
+		if (custInfo.snsType === 'KK') {
+			custId = '카카오 간편가입회원'
+		}
+		if (custInfo.snsType === 'YS') {
+			custId = 'YES24 간편가입회원'
+		}
+		$('#custModiFyForm input[name=custId]').val(custId);
 		$('#custModiFyForm input[name=email]').val(custInfo.email);
 		$('#custModiFyForm input[name=cellPhnno]').val(custInfo.cellPhnno);
 		$('#custModiFyForm input[name=accountNm]').val(custInfo.custNm);

+ 147 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCustSecedeCompleteFormWeb.html

@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org"
+	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	  layout:decorator="web/common/layout/MypageLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : MypageCustSecedeCompleteFormWeb.html
+ * @desc    : 마이페이지 > 회원탈퇴 완료 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.24   jsshin      최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<!--  container -->
+<th:block layout:fragment="content">
+	<div class="content myMbLeave"> <!-- 페이지특정 클래스 = myMbLeave -->
+		<div class="cont_body">
+			<!-- CONT-BODY -->
+			<div class="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 class="mb_leave_complete">
+							<span th:text="${custNm}"></span> 고객님의 STYLE24 회원탈퇴가 정상적으로 처리되었습니다.
+						</div>
+					<div class="tbl type5">
+						<table>
+							<colgroup>
+								<col width="25%">
+								<col width="25%">
+								<col width="25%">
+								<col width="25%">
+							</colgroup>
+							<thead>
+							<tr>
+								<th scope="col">진행중(주문/취소/반품/교환)</th>
+								<th scope="col">포인트(보유/적립예정)</th>
+								<th scope="col">상품권 잔여금액</th>
+								<th scope="col">쿠폰</th>
+							</tr>
+							</thead>
+							<tbody>
+							<tr>
+								<td>
+									<span class="hold_order">
+										<em id="ordCnt">0</em>&nbsp;/&nbsp;
+										<em id="cnclCnt">0</em>&nbsp;/&nbsp;
+										<em id="rtnCnt">0</em>&nbsp;/&nbsp;
+										<em id="exCnt">0</em>
+									</span>
+								</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>
+									</span>
+								</td>
+								<td>
+									<span class="hold_voucher">
+										<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>
+									</span>
+								</td>
+							</tr>
+							</tbody>
+						</table>
+					</div>
+					<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>
+				</div>
+				<div class="btn_footer_area">
+					<button type="button" id="btnConfirm" class="btn btn_dark btn_md hide" onclick="cfnGoToPage(_PAGE_MAIN);">
+						<span>확인</span>
+					</button>
+				</div>
+			</div>
+		</div>
+	</div>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	const orderStatInfo = [[${orderStatInfo}]];
+
+	var fnOrderStatInit = function () {
+
+		// 진행중인 주문건
+		let orderTotal = orderStatInfo.depositWaitingCount + orderStatInfo.waitingAddPaymentCount
+			+ orderStatInfo.paymentCompleteCount + orderStatInfo.goodsPrepareCount
+			+ orderStatInfo.shipPrepareCount + orderStatInfo.shippingCount;
+		let total = orderTotal + orderStatInfo.cancelCount + orderStatInfo.returnCount + orderStatInfo.exchangeCount;
+
+		$('#ordCnt').text(orderTotal.addComma());
+		// 진행중인 취소건
+		$('#cnclCnt').text(orderStatInfo.cancelCount.addComma());
+		// 진행중인 반품건
+		$('#rtnCnt').text(orderStatInfo.returnCount.addComma());
+		// 진행중인 교환건
+		$('#exCnt').text(orderStatInfo.exchangeCount.addComma());
+		// 토탈 건수
+		$('#totalCnt').text(total);
+
+	}
+
+	$(document).ready( function() {
+		fnOrderStatInit();
+
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(11);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('회원탈퇴');
+
+	});
+	/*]]>*/
+</script>
+</th:block>
+</body>
+</html>
+
+

+ 40 - 53
src/main/webapp/WEB-INF/views/web/mypage/MypageCustSecedeFormWeb.html

@@ -38,12 +38,9 @@
 				<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_primary">고객님께서는 진행중인 주문/취소/반품/교환건이 <span id="totalCnt"></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>
@@ -94,7 +91,7 @@
 					<h4 class="subH3">
 						보안을 위해 회원님의 아이디 및 비밀번호를 다시 확인합니다.
 					</h4>
-					<form id="secedeCustForm" class="form_wrap">
+					<form id="secedeCustForm" class="form_wrap" action="/mypage/customer/secede/complete/form" method="post">
 						<div class="tbl type1">
 							<table>
 								<colgroup>
@@ -102,13 +99,11 @@
 									<col width="*">
 								</colgroup>
 								<tr>
-									<th>
-										아이디
-									</th>
+									<th>아이디</th>
 									<td>
 										<div class="form_field">
 											<div class="input_wrap">
-												<input type="text" id="custId" name="custId" class="form_control" th:value="${custId}" placeholder="" readonly="readonly"/>
+												<input type="text" id="custId" name="custId" class="form_control" readonly="readonly"/>
 											</div>
 										</div>
 									</td>
@@ -163,7 +158,8 @@
 <script th:inline="javascript">
 	/*<![CDATA[*/
 	const orderStatInfo = [[${orderStatInfo}]];
-
+	const snsType = [[${snsType}]];
+	const custId = [[${custId}]];
 
 
 	var fnOrderStatInit = function () {
@@ -175,8 +171,10 @@
 
 		// 진행중인 주문건
 		let orderTotal = orderStatInfo.depositWaitingCount + orderStatInfo.waitingAddPaymentCount
-			+ orderStatInfo.paymentCompleteCount + orderStatInfo.goodsPrepareCount + orderStatInfo.shipPrepareCount + orderStatInfo.shippingCount
-		;
+			+ orderStatInfo.paymentCompleteCount + orderStatInfo.goodsPrepareCount
+			+ orderStatInfo.shipPrepareCount + orderStatInfo.shippingCount;
+		let total = orderTotal + orderStatInfo.cancelCount + orderStatInfo.returnCount + orderStatInfo.exchangeCount;
+
 		$('#ordCnt').text(orderTotal.addComma());
 		// 진행중인 취소건
 		$('#cnclCnt').text(orderStatInfo.cancelCount.addComma());
@@ -184,6 +182,20 @@
 		$('#rtnCnt').text(orderStatInfo.returnCount.addComma());
 		// 진행중인 교환건
 		$('#exCnt').text(orderStatInfo.exchangeCount.addComma());
+		// 토탈 건수
+		$('#totalCnt').text(total);
+
+		let custIdText = custId;
+		if (snsType === 'NV') {
+			custIdText = '네이버 간편가입회원'
+		}
+		if (snsType === 'KK') {
+			custIdText = '카카오 간편가입회원'
+		}
+		if (snsType === 'YS') {
+			custIdText = 'YES24 간편가입회원'
+		}
+		$('#secedeCustForm input[name=custId]').val(custIdText);
 
 		if (orderTotal > 0) {
 			isPossible = false
@@ -211,6 +223,8 @@
 			$btnConfirm.show();
 		}
 
+
+
 	}
 
 	$('#btnSaveSecede').on('click', function () {
@@ -237,52 +251,25 @@
 		let params = {};
 		params.passwd = secedeCustInfo.passwd;
 		let jsonData = JSON.stringify(params);
-		gagajf.ajaxJsonSubmit('/mypage/customer/secede/save', jsonData, fnSaveSecedeCallback)
+		gagajf.ajaxJsonSubmit('/mypage/customer/password/confirm', jsonData, fnConfirmPassword)
 	});
 
-	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();
+	var fnConfirmPassword = function (result) {
+		if (result.isMatch) {
+			$("#secedeCustForm").submit();
 		} 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;
-			}
+			mcxDialog.alertC('비밀번호를 다시 입력해주세요.',{
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#secedeCustForm input[name=passwd]').focus();
+				}
+			});
+			return;
 		}
 	}
 
+
+
 	$(document).ready( function() {
 		fnOrderStatInit();
 
@@ -290,7 +277,7 @@
 		fnSetMypageLnbList(11);
 
 		// 마이페이지 location 설정
-		fnSetMypageLocation('내정보 관리','_PAGE_MYPAGE_CUSTOMER','회원정보 수정');
+		fnSetMypageLocation('회원탈퇴');
 
 	});
 	/*]]>*/

+ 275 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCustSnsJoinInitPwdFormWeb.html

@@ -0,0 +1,275 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org"
+	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	  layout:decorator="web/common/layout/MypageLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : MypageCustSnsJoinInitPwdFormWeb.html
+ * @desc    : 마이페이지 > 내 정보 관리 비밀번호 최초설정 Page
+ *            소셜 간편가입을 하신 회원님은
+ *            최초 비밀번호 설정하는 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.15   jsshin      최초 작성
+ *******************************************************************************
+ -->
+
+<body>
+<th:block layout:fragment="content">
+	<div class="content myManage"> <!-- 페이지특정 클래스 = myManageEntry -->
+		<div class="cont_body">
+			<!-- CONT-BODY -->
+			<div class="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>
+					<p class="text">소셜 간편가입을 하신 회원님은 최초 비밀번호 설정하신 후 변경 가능합니다.</p>
+				</div>
+				<form id="resetPasswordForm" name="resetPasswordForm" class="form_wrap">
+					<input type="hidden" name="custId" th:value="${custId}"/>
+					<div class="sec_body">
+						<div class="modify_box">
+							<div class="tbl type1">
+								<table>
+									<colgroup>
+										<col width="210">
+										<col width="*">
+									</colgroup>
+									<tr>
+										<th>
+											비밀번호
+										</th>
+										<td>
+											<div class="form_field">
+												<div class="input_wrap">
+													<input type="password" id="passwd" name="passwd" class="form_control" placeholder="비밀번호를 입력해주세요." minlength="8" maxlength="20"/>
+												</div>
+											</div>
+											<!-- case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+											<div class="help_block">
+												<!-- 사용불가 비밀번호일경우 -->
+												<p>
+													<span id="firstFailed" class="c_gray">
+														<i class="ico ico_check gray"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br/>
+													</span>
+													<span id="secondFailed" class="c_gray">
+														<i class="ico ico_check gray"></i>4개이상 연속되거나 동일한 문자/숫자 제외<br/>
+													</span>
+													<span id="thirdFailed" class="c_gray">
+														<i class="ico ico_check gray"></i>아이디 제외
+													</span>
+												</p>
+												<!-- //사용불가 비밀번호일경우 -->
+												<!-- 사용가능한 비밀번호일경우 -->
+												<p id="avlPwd" class="hide">
+													<span class="c_black2">
+														<i class="ico ico_check black"></i>사용 가능한 비밀번호입니다
+													</span>
+												</p>
+												<!-- //사용가능한 비밀번호일경우 -->
+											</div>
+											<!-- //case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+										</td>
+									</tr>
+									<tr>
+										<th>
+											비밀번호 확인
+										</th>
+										<td>
+											<div class="form_field">
+												<div class="input_wrap">
+													<input type="password" id="confirmPassword" name="confirmPassword" class="form_control" placeholder="비밀번호를 동일하게 입력해주세요." minlength="8" maxlength="20" />
+												</div>
+											</div>
+											<div class="help_block">
+												<!-- 비밀번호확인 틀렸을경우 -->
+												<p d="misPwd" class="hide">
+													<span class="t_err">
+														새 비밀번호가 일치하지 않습니다.
+													</span>
+												</p>
+												<!-- //비밀번호확인 틀렸을경우 -->
+												<!-- 비밀번호 일치할경우 -->
+												<p id="avlConPwd" class="hide">
+													<span class="c_black2"><i class="ico ico_check black"></i>새 비밀번호가 일치합니다.</span>
+												</p>
+												<!-- //비밀번호 일치할경우 -->
+											</div>
+										</td>
+									</tr>
+								</table>
+							</div>
+						</div>
+					</div>
+					<div class="btn_footer_area">
+						<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE);"><span>취소</span></button>
+						<button type="button" id="btnSavePassword" class="btn btn_dark btn_md" disabled="disabled"><span>확인</span></button>
+					</div>
+				</form>
+			</div>
+		</div>
+	</div>
+<script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	// 비밀번호 입력
+	$('#resetPasswordForm input[name=passwd]').on('focusout keyup keydown', function () {
+		fnCheckPassword();
+	});
+
+	// 비밀번호 확인 입력
+	$('#resetPasswordForm input[name=confirmPassword]').on('focusout keyup keydown', function () {
+		fnCheckConfirmPassword();
+	});
+
+	// 비밀번호 확인
+	var fnCheckPassword = function () {
+		const $firstFailed = $('#firstFailed');
+		const $secondFailed = $('#secondFailed');
+		const $thirdFailed = $('#thirdFailed');
+		const $avlPwd = $('#avlPwd');
+		const red = 'c_red2';
+		const gray = 'c_gray';
+		let custId = $('#resetPasswordForm input[name=custId]').val();
+		let password = $('#resetPasswordForm input[name=passwd]').val();
+		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
+		let pwdCheck = true;
+
+		// 영문, 숫자, 특수문자 2종 이상 혼용 || 길이
+		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
+			pwdCheck = false;
+			$firstFailed.removeClass(gray);
+			$firstFailed.addClass(red);
+		} else {
+			$firstFailed.removeClass(red);
+			$firstFailed.addClass(gray);
+		}
+
+		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
+		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
+			pwdCheck = false;
+			$secondFailed.removeClass(gray);
+			$secondFailed.addClass(red);
+		} else {
+			$secondFailed.removeClass(red);
+			$secondFailed.addClass(gray);
+		}
+
+		// 아이디 포함
+		if (fnValidationPwdSameId(password, custId)) {
+			pwdCheck = false;
+			$thirdFailed.removeClass(gray);
+			$thirdFailed.addClass(red);
+		} else {
+			$thirdFailed.removeClass(red);
+			$thirdFailed.addClass(gray);
+		}
+
+		if (pwdCheck) {
+			$firstFailed.hide();
+			$secondFailed.hide();
+			$thirdFailed.hide();
+			$avlPwd.show();
+		} else {
+			$firstFailed.show();
+			$secondFailed.show();
+			$thirdFailed.show();
+			$avlPwd.hide();
+		}
+
+		if (!gagajf.isNull(confirmPassword)) {
+			fnCheckConfirmPassword();
+		}
+
+	};
+
+	// 비밀번호체크
+	var fnCheckConfirmPassword = function () {
+		const $misPwd = $('#misPwd');
+		const $avlConPwd = $('#avlConPwd');
+		const $btnSavePassword = $('#btnSavePassword');
+		let password = $('#resetPasswordForm input[name=passwd]').val();
+		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
+		if (!gagajf.isNull(password) && !gagajf.isNull(confirmPassword)) {
+			if (fnValidationPwdSameConfirmPwd(password, confirmPassword)) {
+				$avlConPwd.hide();
+				$misPwd.show();
+				$btnSavePassword.attr('disabled', true);
+			} else {
+				$misPwd.hide();
+				$avlConPwd.show();
+				$btnSavePassword.attr('disabled', false);
+			}
+		}
+
+
+	};
+
+	// 패스워드 저장
+	$('#btnSavePassword').on('click', function () {
+		let resetPasswordForm = $('#resetPasswordForm').serializeObject();
+
+		if (gagajf.isNull(resetPasswordForm.passwd)) {
+			mcxDialog.alert('신규 비밀번호를 입력하신 후 다시 시도해주세요.');
+			return;
+		}
+
+		if (gagajf.isNull(resetPasswordForm.confirmPassword)) {
+			mcxDialog.alert('비밀번호 확인을 입력하신 후 다시 시도해주세요.');
+			return;
+		}
+
+		if (resetPasswordForm.passwd != resetPasswordForm.confirmPassword) {
+			mcxDialog.alert('비밀번호가 일치하지 않습니다. 다시 확인해주세요.');
+			return;
+		}
+
+		fnCheckPassword();
+		fnCheckConfirmPassword();
+		let jsonData = JSON.stringify(resetPasswordForm);
+		gagajf.ajaxJsonSubmit('/customer/password/reset', jsonData, fnSavePasswordCallback);
+	});
+
+	var fnSavePasswordCallback = function (result) {
+		if (result.isSuccess) {
+			mcxDialog.alertC('비밀번호 변경이 완료 되었습니다.', {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_MYPAGE_CUSTOMER);
+				}
+			});
+		} else {
+			mcxDialog.alert('비밀번호 변경이 실패 되었습니다.')
+		}
+	};
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(10);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('내정보 관리');
+
+	});
+
+	/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>
+
+