Explorar el Código

Merge branch 'develop' into eskim

eskim hace 5 años
padre
commit
11439218d4

+ 1 - 1
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -103,7 +103,7 @@ public interface TsfDisplayDao {
 	 * @author bin2107
 	 * @date 2021. 3. 16
 	 */
-	Collection<MainLayout> getMainLayout(String cateNo);
+	Collection<MainLayout> getMainLayout(MainLayout mainLayout);
 
 	/**
 	 * 카테고리 4srch 조회

+ 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 계좌인증 처리
 	 *

+ 2 - 2
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -255,8 +255,8 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @date 2021. 3. 16
 	 */
-	public Collection<MainLayout> getMainLayout(String cateNo){
-		return displayDao.getMainLayout(cateNo);
+	public Collection<MainLayout> getMainLayout(MainLayout mainLayout){
+		return displayDao.getMainLayout(mainLayout);
 	}
 
 	/**

+ 39 - 1
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -66,7 +66,10 @@ public class TsfDisplayController extends TsfBaseController {
 		} else {
 			mainCateNo = "1700";
 		}
-		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mainCateNo);
+		MainLayout mallMainLayout = new MainLayout();
+		mallMainLayout.setCateNo(Integer.parseInt(mainCateNo));
+		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mallMainLayout);
+
 		Collection<MainLayout> mainLayoutList = new ArrayList<MainLayout>();
 		//mav.addObject("preview", paramMap.get("preview"));
 		//mav.addObject("viewDt", paramMap.get("viewDt"));
@@ -186,6 +189,41 @@ public class TsfDisplayController extends TsfBaseController {
 		// 브랜드그룹 정보
 		mav.addObject("brandGroupInfo", displayService.getGnbBrandGroup(Integer.parseInt(paramMap.get("brandGroupNo"))));
 
+		// 브랜드 레이아웃
+		MainLayout mainLayout = new MainLayout();
+		String mainCateNo = "";
+		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
+			mainCateNo = "1721";
+		} else {
+			mainCateNo = "1711";
+		}
+		mainLayout.setCateNo(Integer.parseInt(mainCateNo));
+		mainLayout.setBrandGroupNo(Integer.parseInt(paramMap.get("brandGroupNo")));
+		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mainLayout);
+		Collection<MainLayout> brandMainLayoutList = new ArrayList<MainLayout>();
+
+		for (MainLayout brandMain : mainLayoutCollection) {
+			String contentsLoc = brandMain.getContentsLoc();
+			Contents contents = new Contents();
+
+			contents.setContentsLoc(contentsLoc);
+			contents.setPreview(paramMap.get("preview"));
+			contents.setViewDt(paramMap.get("viewDt"));
+			contents.setCateNo(Integer.parseInt(mainCateNo));
+			contents.setBrandGroupNo((brandMain.getBrandGroupNo()).toString());
+
+			Cate4Srch cate4Srch = new Cate4Srch();
+			cate4Srch.setContentsLoc(contentsLoc);
+			cate4Srch = displayService.getCate4srch(cate4Srch);
+			brandMain.setCate4Srch(cate4Srch);
+
+			if ("C".equals(brandMain.getContentsYn())) {
+				brandMain.setContentsList(displayService.getContentsList(contents));
+			}
+			brandMainLayoutList.add(brandMain);
+		}
+		log.info("brandMainLayoutList::{}", brandMainLayoutList);
+		mav.addObject("brandMainLayoutList", brandMainLayoutList);
 		mav.setViewName(super.getDeviceViewName("display/BrandMainForm"));
 
 		return mav;

+ 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;
 	}

+ 2 - 0
src/main/java/com/style24/persistence/domain/Contents.java

@@ -60,6 +60,8 @@ public class Contents extends TscBaseDomain {
 	private int planBrandGroupNo;
 	private String planBrandGroupNm;
 
+	//private String contentsTitle;		// 메인 타이틀(md가 설정한)
+
 	private Collection<Cate1> cateList;	// 카테고리목록
 
 }

+ 1 - 0
src/main/java/com/style24/persistence/domain/MainLayout.java

@@ -17,6 +17,7 @@ public class MainLayout extends TscBaseDomain {
     private Integer contentsSq;
     private Integer cateNo;
     private String contentsLoc;
+    private Integer brandGroupNo;
     private String contentsYn;
     private int dispOrd;
     private int colCnt;

+ 10 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -87,7 +87,7 @@
 		    </otherwise>
 		</choose>
 		WHERE  GTAB_GB = #{gtabGb}
-		<if test='brandGroupNo != null and brandGroupNo == ""'>
+		<if test='brandGroupNo != null and brandGroupNo != ""'>
 		AND    BRAND_GROUP_NO = #{brandGroupNo}
 		</if>
 		AND    USE_YN = 'Y'
@@ -218,6 +218,9 @@
 		        <if test="cateNo != null and cateNo != ''">
 		        AND    A.CATE_NO = #{cateNo}
 		        </if>
+				<if test="brandGroupNo != null and brandGroupNo !=''">
+				AND    A.BRAND_GROUP_NO  = #{brandGroupNo}
+				</if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
 		        AND    IFNULL((SELECT DISP_EDDT
@@ -430,10 +433,11 @@
 	</select>
 
 	<!-- 메인 레이아웃 목록 -->
-	<select id="getMainLayout" parameterType="String" resultType="MainLayout">
+	<select id="getMainLayout" parameterType="MainLayout" resultType="MainLayout">
 		/* TsfDisplay.getMainLayout */
 		SELECT CATE_NO
 			 , CONTENTS_LOC
+		     , BRAND_GROUP_NO
 			 , DISP_ORD
 			 , CONTENTS_YN
 			 , CONTENTS_TITLE
@@ -441,7 +445,10 @@
 			 , COL_NO
 		FROM TB_MAIN_LAYOUT
 		WHERE CATE_NO = #{cateNo}
-		AND 	CONTENTS_LOC IN ('SMM001','SMM002','SMM005','SMM008')
+		<if test="brandGroupNo != null and brandGroupNo !=''">
+			AND    BRAND_GROUP_NO  = #{brandGroupNo}
+		</if>
+		AND 	CONTENTS_LOC IN ('SMM001','SMM002','SMM005','SMM008','SBM004','SBM005','SBM006')
 		ORDER BY DISP_ORD, COL_NO
 	</select>
 

+ 323 - 2
src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html

@@ -20,12 +20,333 @@
 
 <th:block layout:fragment="content">
 <div id="container" class="container brand_main">
-	<h1>브랜드 메인</h1>
+	<div class="wrap ">
+		<th:block th:if="${brandMainLayoutList}" th:each="brandMainLayoutData, mainStat : ${brandMainLayoutList}" th:with="contentsLoc=${#strings.replace(brandMainLayoutData.contentsLoc,'SBM','')},contentsTitle=${brandMainLayoutData.contentsTitle}">
+			<th:block th:if="${brandMainLayoutData.ContentsList != null and !brandMainLayoutData.ContentsList.empty}">
+				<th:block th:if="${contentsLoc=='004'}">
+					<!-- 1. 비주얼 슬라이드 -->
+					<div class="content wide main_visual brand_visual">
+						<div class="cont_head dpnone">
+							<p class="t_c">비주얼 슬라이드</p>
+						</div>
+						<div class="cont_body">
+							<div class="swiper-container post-visual">
+								<div class="swiper-wrapper">
+									<th:block th:each="ContentsData, ContentsStat : ${brandMainLayoutData.ContentsList}">
+										<div class="swiper-slide">
+											<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
+												<div class="txtWrap">
+													<dl class="w">
+														<dd th:text="${ContentsData.strTitle1}"></dd>
+														<dd class="txt_xs" th:text="${ContentsData.subText1}"></dd>
+													</dl>
+													<a th:href="${ContentsData.strVar1}"><button type="button" class="btn"><span>VIEW MORE</span></button></a>
+												</div>
+												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
+											</th:block>
+										</div>
+									</th:block>
+								</div>
+								<!-- If we need pagination -->
+								<div class="swiper-controls">
+									<div class="swiper-pagination"></div>
+									<div class="slide-curb">
+										<div class="slide-curb-play sbtn01_play">슬라이드 재생</div>
+										<div class="slide-curb-pause sbtn01_stop">슬라이드 정지</div>
+									</div>
+								</div>
+							</div>
+							<!-- If we need navigation buttons -->
+							<div class="swiper-button-prev sbtn01_lb"></div>
+							<div class="swiper-button-next sbtn01_rb"></div>
+						</div>
+					</div>
+				</th:block>
+
+				<th:block th:if="${contentsLoc=='005'}">
+					<!-- brand_info -->
+					<th:block th:each="ContentsData, ContentsStat : ${brandMainLayoutData.ContentsList}">
+						<div class="content brand_info">
+							<div class="cont_body clear">
+								<div class="brand_tit">
+									<p th:text="${contentsTitle}"></p>
+									<a th:href="${ContentsData.strVar1}">브랜드 사이트</a>
+								</div>
+								<div class="brand_desc">
+									<p class="cate" th:text="${ContentsData.strTitle1}"></p>
+									<p class="desc" th:text="${ContentsData.subText1}"></p>
+								</div>
+							</div>
+						</div>
+					</th:block>
+				</th:block>
+
+				<!-- 가로 긴 배너 슬라이드 -->
+				<!-- 브랜드 배너 -->
+				<th:block th:if="${contentsLoc=='006'}">
+					<div class="content wide main_1stage">
+						<div class="cont_head dpnone">
+							<p class="t_c">배너 슬라이드</p>
+						</div>
+						<div class="cont_body">
+							<div class="swiper-container post-bnnWide">
+								<div class="swiper-wrapper ">
+									<th:block th:each="ContentsData, ContentsStat : ${brandMainLayoutData.ContentsList}">
+										<div class="swiper-slide">
+											<a th:href="${ContentsData.strVar1}">
+												<div class="bnnbox" style="background:#e3e7ea;">
+													<div class="txtWrap">
+														<p th:text="${ContentsData.strTitle1}"></p>
+														<!--<p>아우터 + 이너 단독세일</p>-->
+														<button type="button" class="btn">VIEW MORE</button>
+													</div>
+													<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
+												</div>
+											</a>
+										</div>
+									</th:block>
+								</div>
+								<div class="swiper-button-prev "></div>
+								<div class="swiper-button-next "></div>
+							</div>
+						</div>
+					</div>
+				</th:block>
+
+			</th:block>
+		</th:block>
+	</div>
 </div>
 
 <script th:inline="javascript">
 /*<![CDATA[*/
-	
+var brandMainLayoutList = [[${brandMainLayoutList}]];
+console.log('brandMainLayoutList::'+brandMainLayoutList);
+
+$(document).ready( function() {
+
+	// 컨텐츠 호출
+	$("#br_header").load("br_head.html");
+	$("#footer").load("foot.html");
+
+	/* SLIDE - BRAND_VISUAL */
+	var br_post_slide = new Swiper('.brand_main .brand_visual .post-visual', {
+		loop: true,
+		spaceBetween: 60,
+		speed : 1000,
+		autoplay: {
+			delay: 3000,
+			disableOnInteraction: false,
+		},
+		navigation: {
+			nextEl: '.brand_main .brand_visual .swiper-button-next',
+			prevEl: '.brand_main .brand_visual .swiper-button-prev',
+		},
+		pagination: {
+			el: '.brand_main .brand_visual .swiper-pagination',
+			clickable: true,
+		},
+
+		on: {
+			slideChangeTransitionStart: function () {
+				//$('.brand_main .post-visual .swiper-slide-prev .txtWrap').hide();
+			},
+		},
+	});
+
+	//VISUAL SLIDE Control - PAUSE
+	$(document).on('click','.brand_main .brand_visual .slide-curb-pause',function(e){
+		br_post_slide.autoplay.stop();
+		$(this).hide();
+		$('.brand_main .brand_visual .slide-curb-play').show();
+	});
+
+	//VISUAL SLIDE Control - PLAY
+	$(document).on('click','.brand_main .brand_visual .slide-curb-play',function(e){
+		br_post_slide.autoplay.start();
+		$(this).hide();
+		$('.brand_main .brand_visual .slide-curb-pause').show();
+	});
+
+
+	/* SLIDE - NEW ITEMS */
+	var br_trendy_slide = new Swiper('.brand_main .new_item .swiper-container', {
+		watchSlidesProgress: true,
+		watchSlidesVisibility: true,
+		allowTouchMove: false,
+		speed : 1000,
+		autoplay: {
+			delay: 3000,
+			disableOnInteraction:false,
+		},
+		navigation: {
+			nextEl: '.new_item .swiper-button-next',
+			prevEl: '.new_item .swiper-button-prev',
+		},
+		pagination: {
+			el: '.new_item .swiper-pagination',
+			clickable: true,
+		},
+		slidesPerView: 'auto',
+		spaceBetween: 22,
+	});
+
+	br_trendy_slide.on('slideChange', function () {
+		var newitemIndex = br_trendy_slide.activeIndex;
+		var slideWidth = $(".new_item .swiper-slide-visible").eq(0).width() + 22;
+
+		$(".new_item .swiper-slide").removeClass('scaleBig');
+		$(".new_item .swiper-slide-visible").eq(0).addClass('scaleBig');
+		$(".new_item .swiper-slide-visible").eq(3).addClass('scaleBig');
+
+		$(".new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+	});
+
+	br_trendy_slide.on('reachEnd', function () {
+		var newitemIndex = br_trendy_slide.activeIndex + 1;
+		var slideWidth = $(".new_item .swiper-slide-visible").eq(0).width() + 22;
+
+		$(".new_item .swiper-slide").removeClass('scaleBig');
+		$(".new_item .swiper-slide-visible").eq(1).addClass('scaleBig');
+		$(".new_item .swiper-slide-visible").eq(4).addClass('scaleBig');
+
+		$(".new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+	});
+
+
+	/* SLIDE - WIDE BANNER */
+	var br_bn_slide = new Swiper ('.brand_main .main_1stage .post-bnnWide', {
+		loop: true,
+		slidesPerView: 1,
+		speed : 1500,
+		navigation: {
+			nextEl: '.main_1stage .swiper-button-next',
+			prevEl: '.main_1stage .swiper-button-prev',
+		},
+	});
+
+
+	/* SLIDE - BEST ITEMS */
+	var br_best_slide = new Swiper('.brand_main .best_item .swiper-container', {
+		navigation: {
+			nextEl: '.best_item .swiper-button-next',
+			prevEl: '.best_item .swiper-button-prev',
+		},
+		slidesPerView: 5,
+		spaceBetween: 22,
+		pagination: {
+			el: '.best_item .swiper-pagination',
+			clickable: true,
+		},
+	});
+
+
+	/* SLIDE - MD’S PICK */
+	var br_md_slide = new Swiper('.brand_main .md_item .swiper-container', {
+		navigation: {
+			nextEl: '.md_item .swiper-button-next',
+			prevEl: '.md_item .swiper-button-prev',
+		},
+		slidesPerView: 5,
+		spaceBetween: 22,
+		pagination: {
+			el: '.md_item .swiper-pagination',
+			clickable: true,
+		},
+	});
+
+
+	/* SLIDE - SPECIAL SHOP */
+	$('.brand_main .special_shop .spe_pr_list .spe_sl').hide();
+	$('.brand_main .special_shop .spe_pr_list .spe_sl').eq(0).show();
+
+	var br_special_left_slide = new Swiper('.brand_main .special_shop .spe_thumb .swiper-container', {
+		navigation: {
+			nextEl: '.brand_main .special_shop .swiper-button-next',
+			prevEl: '.brand_main .special_shop .swiper-button-prev',
+		},
+		on: {
+			slideChangeTransitionStart: function () {
+				$('.brand_main .spe_pr_list .spe_sl').hide();
+				$('.brand_main .spe_pr_list .spe_sl').eq(br_special_left_slide.activeIndex).show();
+			},
+		}
+	});
+
+	$(".brand_main .special_shop .spe_pr_list .spe_sl .swiper-container").each(function(index, element){
+		var $this = $(this);
+		$this.addClass('spe' + index);
+
+		var br_special_right_slide = new Swiper('.spe' + index, {
+			observer: true,
+			observeParents: true,
+			watchSlidesProgress: true,
+			watchSlidesVisibility: true,
+			slidesPerView: 'auto',
+			freeMode: true,
+			spaceBetween: 20,
+			scrollbar: {
+				el: $('.spe' + index).siblings('.swiper-scrollbar'),
+				hide: false,
+			},
+			watchOverflow: true,
+		});
+
+		br_special_right_slide.on('slideChange', function () {
+			$(".special_shop .spe_sl .spe" + index).find(".swiper-slide").removeClass('view');
+			$(".special_shop .spe_sl .spe" + index).find(".swiper-slide-visible").eq(0).addClass('view');
+			$(".special_shop .spe_sl .spe" + index).find(".swiper-slide-visible").eq(1).addClass('view');
+			$(".special_shop .spe_sl .spe" + index).find(".swiper-slide-visible").eq(2).addClass('view');
+		});
+
+	});
+
+	/* SLIDE - BRAND_LOOKBOOK */
+	var br_lookbook_slide = new Swiper('.brand_main .br_lookbook .swiper-container', {
+		loop: true,
+		slidesPerView: 'auto',
+		spaceBetween: 20,
+		speed : 800,
+		autoWidth: true,
+		autoHeight: true,
+		centeredSlides: true,
+		autoplay: false,
+		navigation: {
+			nextEl: '.brand_main .br_lookbook .swiper-button-next',
+			prevEl: '.brand_main .br_lookbook .swiper-button-prev',
+		},
+		pagination: {
+			el: '.brand_main .br_lookbook .swiper-pagination',
+			clickable: true,
+		},
+	});
+
+
+	// BRAND_LOOKBOOK > picker - 룩북_피커_상품정보 팝업
+	$(document).on('click','#btn_lookbook_picker01',function(e){
+		$("#brLookbookPopup").modal("show");
+		return false;
+	});
+
+
+	/* SLIDE - BRAND_TV */
+	var br_tv_slide = new Swiper ('.brand_main .main_tv .post-tv', {
+		loop: true,
+		slidesPerView: 'auto',
+		spaceBetween: 60,
+		centeredSlides: true,
+		autoplay: false,
+		navigation: {
+			nextEl: '.brand_main .main_tv .swiper-button-next',
+			prevEl: '.brand_main .main_tv .swiper-button-prev',
+		},
+		pagination: {
+			el: '.main_tv .swiper-pagination',
+			clickable: true,
+		},
+	});
+
+});
 /*]]>*/
 </script>
 

+ 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>
+
+