Просмотр исходного кода

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.front.git into develop

eskim 5 лет назад
Родитель
Сommit
3680cd7acc

+ 7 - 3
src/main/java/com/style24/front/biz/thirdparty/Yes24Login.java

@@ -52,7 +52,8 @@ public class Yes24Login {
 
 	private String id;
 	private String type;
-	private String requestUrl;
+	private String webRequestUrl;
+	private String mobRequestUrl;
 	private String callBackUrl;
 	private String userInfoUrl;
 	private String linkUrl;
@@ -62,7 +63,8 @@ public class Yes24Login {
 	public void init() {
 		id = env.getProperty("yes24.id");
 		type = env.getProperty("yes24.type");
-		requestUrl = env.getProperty("yes24.login.requestUrl");
+		webRequestUrl = env.getProperty("yes24.login.web.requestUrl");
+		mobRequestUrl = env.getProperty("yes24.login.mob.requestUrl");
 		callBackUrl = env.getProperty("yes24.login.callbackUrl");
 		userInfoUrl = env.getProperty("yes24.userInfoUrl");
 		linkUrl = env.getProperty("yes24.linkUrl");
@@ -71,7 +73,8 @@ public class Yes24Login {
 		log.debug("\n\n---- YES24 initialization started ----");
 		log.debug("id: [{}]", id);
 		log.debug("type: [{}]", type);
-		log.debug("requestUrl: [{}]", requestUrl);
+		log.debug("webRequestUrl: [{}]", webRequestUrl);
+		log.debug("mobRequestUrl: [{}]", mobRequestUrl);
 		log.debug("callBackUrl: [{}]", callBackUrl);
 		log.debug("userInfoUrl: [{}]", userInfoUrl);
 		log.debug("linkUrl: [{}]", linkUrl);
@@ -88,6 +91,7 @@ public class Yes24Login {
 	 */
 	public String getAuthorizeUrl(String state) {
 		String idGb = TsfSession.getFrontGb().equals("P") ? "PID" : "MID";
+		String requestUrl = TsfSession.getFrontGb().equals("P") ? webRequestUrl : mobRequestUrl;
 		StringBuilder apiUrlBuilder = new StringBuilder();
 		String redirectUri = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
 		apiUrlBuilder.append(requestUrl)

+ 3 - 2
src/main/java/com/style24/front/biz/web/TsfCustomerController.java

@@ -817,12 +817,13 @@ public class TsfCustomerController extends TsfBaseController {
 	 * @since 2021. 03. 25
 	 */
 	@PostMapping("/consent/useinfo/form")
-	public ModelAndView cnstentUseInfoForm(@RequestBody Customer customer) {
+	public ModelAndView cnstentUseInfoForm(Customer customer) {
 		ModelAndView mav = new ModelAndView();
 
 		mav.addObject("custNm", customer.getCustNm());
 
-		mav.setViewName(super.getDeviceViewName("customer/ConsentUseInfoForm"));
+//		mav.setViewName(super.getDeviceViewName("customer/ConsentUseInfoForm"));
+		mav.setViewName("web/customer/ConsentUseInfoFormWeb");
 
 		return mav;
 	}

+ 5 - 3
src/main/java/com/style24/front/biz/web/TsfIndexController.java

@@ -16,6 +16,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
@@ -351,12 +352,13 @@ public class TsfIndexController extends TsfBaseController {
 	 * @author jsshin
 	 * @since 2021. 02. 23
 	 */
-	@RequestMapping("/signin/yes24LoginCallback")
-	public ModelAndView yes24LoginCallback(@RequestParam("ipin") String ipin, HttpSession session) {
+	@RequestMapping( "/signin/yes24LoginCallback")
+	public ModelAndView yes24LoginCallback(@RequestParam(value = "ipin", required = false) String ipin, @RequestParam(value = "ipn", required = false) String ipn, HttpSession session) {
 		ModelAndView mav = new ModelAndView();
 		boolean isSnsLoing = false;
 		GagaMap userInfo = new GagaMap();
-
+		log.info("ipn {}", ipn);
+		log.info("ipin {}", ipin);
 		if (StringUtils.isNotBlank(ipin)) {
 			userInfo = yes24Login.getUserInfo(ipin);
 			userInfo.setString("snsType", TscConstants.SnsType.YES24.value());

+ 3 - 1
src/main/resources/config/application.yml

@@ -102,7 +102,9 @@ kakao:
 yes24 :
     id : 101582
     type : ISTYLE
-    login.requestUrl: https://www.yes24.com/Templates/FTLoginPartner.aspx
+    login :
+           web.requestUrl : https://www.yes24.com/Templates/FTLoginPartner.aspx
+           mob.requestUrl : https://m.yes24.com/Momo/Templates/FTLogin.aspx
     login.callbackUrl: /signin/yes24LoginCallback
     userInfoUrl : https://wsyes24.yes24.com/Yes_Mem.asmx/Yes_Mem_Search_By_CI
     linkUrl : https://wsyes24.yes24.com/Yes_Mem.asmx/Yes_Partner_Insert

+ 439 - 0
src/main/webapp/WEB-INF/views/mob/customer/JoinFormMob.html

@@ -0,0 +1,439 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/LoginLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : JoinTypeFormMob.html
+ * @desc    : 회원정보 입력 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.16   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<style>
+	.show{display:block}
+	.hide{display:none}
+</style>
+<main class="container mb">
+	<!-- ★ 컨텐츠 시작 -->
+	<section class="content mb_join_2">
+		<div class="inner">
+			<div class="close">
+				<a href="javascript:void(0)" class="btn_close" onclick="cfnGoToPage(_PAGE_MAIN);"><span></span><span></span></a>
+			</div>
+		</div>
+		<div class="inner">
+			<h2 class="title">회원정보 입력</h2>
+		</div>
+		<div class="inner">
+
+			   <form class="form_wrap form_full" role="form">
+					<div class="form_head">
+						<h2 class="title sr-only">회원정보 입력</h2>
+					</div>
+					<!-- 아이디 사용가능시 -->
+					<div class="form_field">
+						<label class="input_label sr-only">아이디</label>
+						<div class="input_wrap form_full">
+							<input type="text" id="custId" name="custId" placeholder="아이디" class="form_control" required="required" data-valid-type="alphaNumeric" data-valid-name="아이디" minlength="4" maxlength="12"/>
+							<span class="usable" style="display:block;"></span>
+						</div>
+						<div id="dupCustIdDiv" class="help_block hide">
+							<p class="t_err">이미 가입된 아이디입니다.다른 아이디를 입력하여 주세요.</p>
+						</div>
+					</div>
+					<!-- //아이디 사용가능시 -->
+					<!-- 오류시 부모 div에서 제어 -->
+					<div class="form_field">
+						<label class="input_label sr-only">비밀번호</label>
+						<div class="input_wrap form_full">
+							<input type="password" id="passwd" name="passwd" placeholder="비밀번호 (8~20자 영문, 숫자, 특수문자 중 2가지 이상 조합)" class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="비밀번호"/><!-- 잘못기입된 경우 class "err" 추가 -->
+							<!-- case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+							<div class="help_block">
+								<!-- 사용불가 비밀번호일경우 -->
+								<p class="mt10">
+									<span id="firstFailed" class="c_gray">
+										<i class="ico ico_check gray mr5"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br>
+									</span>
+									<span id="secondFailed" class="c_gray">
+										<i class="ico ico_check gray mr5"></i>4개이상 연속되거나 동일한 문자/숫자 제외<br>
+									</span>
+									<span id="thirdFailed" class="c_gray">
+										<i class="ico ico_check gray mr5"></i>아이디 제외
+									</span>
+								</p>
+								<!-- //사용불가 비밀번호일경우 -->
+								<!-- 사용가능한 비밀번호일경우 -->
+								<p id="avlPwd" class="mt10 hide">
+									<span class="c_black2">
+										<i class="ico ico_check black mr5"></i>사용 가능한 비밀번호입니다
+									</span>
+								</p>
+								<!-- //사용가능한 비밀번호일경우 -->
+							</div>
+							<!-- //case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+						</div>
+					</div>
+					<!-- //오류시 부모 div에서 제어 -->
+					<div class="form_field">
+						<label class="input_label sr-only">비밀번호 확인</label>
+						<div class="input_wrap form_full">
+							<input type="password" id="confirmPassword" name="confirmPassword" placeholder="비밀번호 확인" class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="비밀번호"/><!-- 잘못기입된 경우 class "err" 추가 -->
+							<!-- case (비밀번호확인 틀렸을경우,비밀번호 일치할경우) -->
+							<div class="help_block">
+								<!-- 비밀번호확인 틀렸을경우 -->
+								<p id="misPwd" class="t_err hide">
+									비밀번호가 일치하지 않습니다.
+								</p>
+								<!-- //비밀번호확인 틀렸을경우 -->
+								<!-- 비밀번호 일치할경우 -->
+								<p id="avlConPwd"  class="mt10 hide">
+									<span class="c_black2">
+										<i class="ico ico_check black mr5"></i>비밀번호가 일치합니다.
+									</span>
+								</p>
+								<!-- //비밀번호 일치할경우 -->
+							</div>
+							<!-- //case (비밀번호확인 틀렸을경우,비밀번호 일치할경우) -->
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">이메일</label>
+						<div class="input_wrap form_full">
+							<input type="text" id="email" name="email" placeholder="이메일" class="form_control" required="required" data-valid-name="이메일" maxlength="30"/><!-- 잘못기입된 경우 class "err" 추가 -->
+							<!-- case (이메일 형식이 바르지않을경우,이미 가입되어있는 이메일인경우) -->
+							<div class="help_block">
+								<!-- 이메일 형식이 바르지않을경우 -->
+								<p id="failEmail" class="t_err hide">
+									이메일 형식이 올바르지 않습니다.
+								</p>
+								<!-- //이메일 형식이 바르지않을경우 -->
+								<!-- 이미 가입되어있는 이메일인경우 -->
+								<p id="dupEmail" class="t_err hide">
+									이미 가입된 이메일 주소입니다. 다른 이메일 주소를 입력하여 주세요.
+								</p>
+								<div id="dupEmailDiv" class="mt20 hide">
+									<button type="button" class="btn btn_default btn_sm mini" onclick="cfnGoToPage(_PAGE_LOGIN);">
+										<span>로그인</span>
+									</button>
+									<button type="button" class="btn btn_default btn_sm mini" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
+										<span>아이디 찾기</span>
+									</button>
+								</div>
+								<!-- //이미 가입되어있는 이메일인경우 -->
+							</div>
+							<!-- //case (이메일 형식이 바르지않을경우,이미 가입되어있는 이메일인경우) -->
+						</div>
+					</div>
+					<!-- 210415_수정 : 휴대폰 인증 수정 -->
+					<div class="form_field">
+						<label class="input_label sr-only">휴대폰번호</label>
+						<!-- 휴대폰 인증 입력 전 -->
+						<div class="input_wrap form_full">
+							<input type="text" id="cellPhnno" name="cellPhnno" placeholder="휴대폰 인증 해주세요." class="form_control" minlength="10" maxlength="11" required="required" data-valid-type="numeric" data-valid-name="휴대폰" readonly="readonly"/>
+							<button type="button" id="btnCellPhoneCertify" class="btn btn_dark btn_hp_certi">
+								<span>본인인증</span>
+							</button>
+						</div>
+						<!-- //휴대폰 인증 입력 전 -->
+
+						<!-- case (휴대폰번호 형식이 맞지 않을경우,이미 가입되어있는 핸드폰번호일경우) -->
+						<div class="help_block">
+							<p id="failPhnno" class="t_err hide">휴대폰번호를 형식에 맞게 정확히 입력해주세요</p>
+							<p id="dupPhnno" class="t_err hide">I***D로 가입된 핸드폰 번호 입니다.</p>
+							<div id="dupPhnnoDiv" class="mt20 hide">
+								<button type="button" class="btn btn_default btn_sm mini" onclick="cfnGoToPage(_PAGE_LOGIN);">
+									<span>로그인</span>
+								</button>
+								<button type="button" class="btn btn_default btn_sm mini" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
+									<span>아이디 찾기</span>
+								</button>
+							</div>
+						</div>
+					</div>
+					<div class="btn_group_flex">
+						<div>
+							<button type="button" id="btnJoin" class="btn btn_primary btn_block" disabled="disabled">
+								<span>동의하고 가입하기</span>
+							</button>
+						</div>
+					</div>
+					<!-- //210415_수정 : 버튼 형식 변경. -->
+					<div class="desc_wrap t_c mt20">
+						<p>
+							본인은&nbsp;만 14세 이상이며&nbsp;<a href="javascript:void(0)" onclick="cfnUseTermsLayer();">STYLE24이용약관<i class="ico ico_blank ml5"></i></a>,<br>
+							<a href="javascript:void(0)" onclick="cfnPrivacyPolicyLayer();">개인정보 수집 및 이용<i class="ico ico_blank ml5"></i></a>,
+							<a href="javascript:void(0)" onclick="cfnPrivacyTrustLayer();">개인정보 취급 위탁<i class="ico ico_blank ml5"></i></a><br>
+							내용을 확인 하였으며,동의합니다.
+						</p>
+					</div>
+				</form>
+		</div>
+
+	</section>
+	<!-- ★ 컨텐츠 종료 -->
+</main>
+
+<script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+let custIdCheck = false;
+	let passwdCheck = false;
+	let emailCheck = false;
+	let authCheck = false;
+
+	// 아이디 확인
+	$('#custId').on('blur', function () {
+		let custId = $(this).val();
+		if(!gagajf.isNull(custId)) {
+			if (custId.length > 3) {
+				let custInfo = {};
+				custInfo.custId = custId;
+				let jsonData = JSON.stringify(custInfo);
+				gagajf.ajaxJsonSubmit('/customer/join/id/check', jsonData, fnIdConfirmCallBack);
+			}
+		}
+	});
+
+	// 아이디 결과
+	var fnIdConfirmCallBack = function (result) {
+		const $dupCustIdDiv = $('#dupCustIdDiv');
+		const $custId = $('#custId');
+		const $usable = $('span > .usable');
+
+		if (result.isFind) { // 중복된 아이디가 존재
+			$custId.addClass('err');
+			$custId.removeClass('usable');
+			$dupCustIdDiv.show();
+			$usable.hide();
+			custIdCheck = false;
+		} else {
+			$custId.removeClass('err');
+			$custId.addClass('usable');
+			$dupCustIdDiv.hide();
+			$usable.show();
+			custIdCheck = true;
+		}
+		fnPossibleJoin();
+	};
+
+	// 비밀번호 입력
+	$('#joinForm input[name=passwd]').on('focusout keyup keydown', function () {
+		fnCheckPassword();
+	});
+
+	// 비밀번호 확인 입력
+	$('#joinForm 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 = $('#joinForm input[name=custId]').val();
+		let password = $('#joinForm input[name=passwd]').val();
+		let confirmPassword = $('#joinForm 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 (!gagajf.isNull(custId)) {
+			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');
+		let password = $('#joinForm input[name=passwd]').val();
+		let confirmPassword = $('#joinForm input[name=confirmPassword]').val();
+		let sameConfirmPwd = fnValidationPwdSameConfirmPwd(password, confirmPassword);
+
+		if (sameConfirmPwd) {
+			$avlConPwd.show();
+			$misPwd.hide()
+			passwdCheck = true;
+		} else {
+			$misPwd.show();
+			$avlConPwd.hide();
+			passwdCheck = false;
+		}
+		fnPossibleJoin();
+
+	};
+
+	//	이메일 확인
+	$('#email').on('blur', function () {
+		const $failEmail = $('#failEmail');
+		let email = $(this).val();
+		let validation;
+
+		if(!gagajf.isNull(email)) {
+			if (!fnCheckValidationEmail(email)) {
+				$failEmail.show();
+				emailCheck = false;
+				validation = false;
+			} else {
+				validation = true;
+				$failEmail.hide();
+			}
+			if (validation) {
+				let custInfo = {};
+				custInfo.email = email;
+				let jsonData = JSON.stringify(custInfo);
+				gagajf.ajaxJsonSubmit('/customer/email/check', jsonData, fnEmailConfirmCallBack);
+			}
+		}
+	});
+
+	// 이메일 확인 결과
+	var fnEmailConfirmCallBack = function (result) {
+		const $dupEmail = $('#dupEmail');
+		const $dupEmailDiv = $('#dupEmailDiv');
+		if (result.isFind) { // 중복된 아이디가 존재
+			$dupEmail.show();
+			$dupEmailDiv.show();
+			emailCheck = false;
+		} else {
+			$dupEmail.hide();
+			$dupEmailDiv.hide();
+			emailCheck = true;
+		}
+		fnPossibleJoin();
+	};
+
+	//휴대폰 인증
+	$('#btnCellPhoneCertify').on('click', function () {
+		cfnOpenCellphoneCertify();
+	});
+
+	// 나이스 본인인증 후 콜백
+	var fnNiceCallBack = function(encData) {
+		if (!gagajf.isNull(encData)) {
+			let custInfo = {};
+			custInfo.encData = encData;
+			let jsonData = JSON.stringify(custInfo);
+			gagajf.ajaxJsonSubmit('/customer/authentication/check', jsonData, fnInfoConfirmCallBack);
+		}
+	};
+
+	// 본인인증 후 결과
+	var fnInfoConfirmCallBack = function (result) {
+		const $cellPhnno = $('#cellPhnno');
+		const $dupPhnno = $('#dupPhnno');
+		const $dupPhnnoDiv = $('#dupPhnnoDiv');
+		const $btnCellPhoneCertify = $('#btnCellPhoneCertify');
+		$cellPhnno.val(result.cellPhnno);
+
+		if (result.isFind) { // 가입된 고객 정보가 있으면
+			let msg = '';
+			if (result.custStat === 'G104_30') {
+				msg = "탈퇴한 회원입니다. 탈퇴 후 60일 동안 재가입이 불가능합니다.";
+			} else {
+				msg = result.maskingCustId+"로 가입된 이력이 있습니다.";
+			}
+			$dupPhnno.html(msg);
+			$dupPhnno.show();
+			$dupPhnnoDiv.show();
+			authCheck = false;
+		} else {
+			$dupPhnno.hide();
+			$dupPhnnoDiv.hide();
+			authCheck = true;
+		}
+		$btnCellPhoneCertify.find('span').text('인증완료');
+		$btnCellPhoneCertify.attr('disabled', true);
+		fnPossibleJoin();
+	};
+
+	// 저장
+	$('#btnJoin').on('click', function () {
+		mcxDialog.confirm("회원가입을 하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				$('#btnJoin').attr('disabled', true);
+				let jsonData = JSON.stringify($('#joinForm').serializeObject());
+				gagajf.ajaxJsonSubmit('/customer/join/save', jsonData, fnJoinSaveCallback);
+			}
+		});
+	});
+
+	var fnJoinSaveCallback = function (result) {
+		cfnGoToPage(_PAGE_CUSTOMER_JOIN_COMPLETE);
+	};
+
+
+	// 가입 가능한지 확인
+	var fnPossibleJoin = function () {
+		const $btnJoin = $('#btnJoin');
+		if (custIdCheck && passwdCheck && emailCheck && authCheck ) {
+			$btnJoin.attr('disabled', false);
+		} else {
+			$btnJoin.attr('disabled', true);
+		}
+	};
+	/*]]>*/
+</script>
+</th:block>
+</body>
+</html>

+ 45 - 46
src/main/webapp/WEB-INF/views/mob/customer/JoinTypeFormMob.html

@@ -19,55 +19,54 @@
 
 <body>
 <th:block layout:fragment="content">
-	<main class="container mb">
-		<!-- ★ 컨텐츠 시작 -->
-		<section class="content mb_join_1">
-			<div class="inner">
-				<div class="close">
-					<a href="javascript:void(0);" class="btn_close" onclick="cfnGoToPage(_PAGE_MAIN);"><span></span><span></span></a>
-				</div>
-			</div>
-			<div class="inner">
-				<h2 class="title">회원가입</h2>
+<main class="container mb">
+	<!-- ★ 컨텐츠 시작 -->
+	<section class="content mb_join_1">
+		<div class="inner">
+			<div class="close">
+				<a href="javascript:void(0);" class="btn_close" onclick="cfnGoToPage(_PAGE_MAIN);"><span></span><span></span></a>
 			</div>
-			<div class="inner">
-					<form class="form_wrap form_full" role="form">
-						<div class="form_head">
-							<h3 class="title sr-only">본인인증</h3>
-						</div>
-						<div class="form_sign_up">
-							<p class="c_primary t_c">STYLE24 회원으로 가입</p>
-							<p class="t_c mt10">신규 가입 시 할인 쿠폰 등<br> 다양한 혜택을 받으실 수 있습니다.</p>
-						</div>
-					   <div class="ui_row mt20">
-						   <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">회원가입</button>
-					   </div>
-					</form>
-					<div class="t_c sns_wrap">
-						<h3 class="sr-only">간편로그인</h3>
-						<ul class="login_utill">
-							<li class="lu_kakao">
-								<a href="javascript:void(0);" onclick="cfnLoginKakao();">
-									<div class="ico"></div>카카오로<br>시작하기
-								</a>
-							</li>
-							<li class="lu_naver">
-								<a href="javascript:void(0);" onclick="cfnLoginNaver();">
-									<div class="ico"></div>네이버로<br>시작하기
-								</a>
-							</li>
-							<li class="lu_yes24">
-								<a href="javascript:void(0);" onclick="cfnLoginYes24();">
-									<div class="ico"></div>YES24로<br>시작하기
-								</a>
-							</li>
-						</ul>
+		</div>
+		<div class="inner">
+			<h2 class="title">회원가입</h2>
+		</div>
+		<div class="inner">
+				<form class="form_wrap form_full" role="form">
+					<div class="form_head">
+						<h3 class="title sr-only">본인인증</h3>
 					</div>
-			</div>
-
-		</section>
-		<!-- ★ 컨텐츠 종료 -->
+					<div class="form_sign_up">
+						<p class="c_primary t_c">STYLE24 회원으로 가입</p>
+						<p class="t_c mt10">신규 가입 시 할인 쿠폰 등<br> 다양한 혜택을 받으실 수 있습니다.</p>
+					</div>
+				   <div class="ui_row mt20">
+					   <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">회원가입</button>
+				   </div>
+				</form>
+				<div class="t_c sns_wrap">
+					<h3 class="sr-only">간편로그인</h3>
+					<ul class="login_utill">
+						<li class="lu_kakao">
+							<a href="javascript:void(0);" onclick="cfnLoginKakao();">
+								<div class="ico"></div>카카오로<br>시작하기
+							</a>
+						</li>
+						<li class="lu_naver">
+							<a href="javascript:void(0);" onclick="cfnLoginNaver();">
+								<div class="ico"></div>네이버로<br>시작하기
+							</a>
+						</li>
+						<li class="lu_yes24">
+							<a href="javascript:void(0);" onclick="cfnLoginYes24();">
+								<div class="ico"></div>YES24로<br>시작하기
+							</a>
+						</li>
+					</ul>
+				</div>
+		</div>
 
+	</section>
+	<!-- ★ 컨텐츠 종료 -->
 </main>
 
 <script th:inline="javascript">

+ 15 - 1
src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html

@@ -140,7 +140,7 @@
                                 </button>
                             </div>
                             <div class="ui_col_6">
-                                <button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
+                                <button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">
                                     <span>다시 찾기</span>
                                 </button>
                             </div>
@@ -242,6 +242,20 @@
         }
     };
 
+
+	// 찾기실패
+	var fnGetDisplayFail = function (authMethod) {
+		$('.form_head').hide();
+		$('.registration_nav').hide();
+		if (authMethod === 'custInfo') {
+			$('#failCustId').show();
+		}
+		if (authMethod === 'mobile' || authMethod === 'ipin') {
+			$('#failAuthentication').show();
+		}
+
+	};
+
     // 나이스 본인인증 후 콜백
     var fnNiceCallBack = function(encData, authMethod) {
         if (!gagajf.isNull(encData)) {

+ 1 - 0
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html

@@ -270,6 +270,7 @@ var fnInfoConfirmCallBack = function(result) {
 	mcxDialog.alert(result.msg);
 	appendHtml();
 	$("#td_"+date).attr("class","complete");
+	$('.day').html('<span>' + (custAttendList.length +1) + '</span>일');
 	
 };
 

+ 1 - 1
src/main/webapp/WEB-INF/views/web/customer/ConsentUseInfoFormWeb.html

@@ -26,7 +26,7 @@
 					<p>계정 연동 시, STYLE24 휴면계정은 휴면해제 후 이용 가능합니다.</p>
 					<div class="info_txt">
 						<ul>
-							<li>“<span class="mb_name">회원명</span>” 님의 <em>CI, 이름, 성별, 생년월일, 핸드폰번호, 이메일 정보</em>를 로그인 연동을 위해 아이스타일24에 제공합니다.</li>
+							<li>“<span class="mb_name" th:text="${custNm}">회원명</span>” 님의 <em>CI, 이름, 성별, 생년월일, 핸드폰번호, 이메일 정보</em>를 로그인 연동을 위해 아이스타일24에 제공합니다.</li>
 							<li>정보제공 동의 시 YES24 계정으로 로그인 가능하며, 간편하게 회원가입이 가능합니다.</li>
 						</ul>
 					</div>

+ 22 - 3
src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html

@@ -37,10 +37,13 @@
 											<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
 												<div class="txtWrap">
 													<dl class="w">
-														<dd th:text="${ContentsData.strTitle1}"></dd>
+														<dd class="bMainTitle">
+															<input type="hidden" name="mainTitle" th:value="${ContentsData.strTitle1}"/>
+														</dd>
 														<dd class="txt_xs" th:text="${ContentsData.subText1}"></dd>
 													</dl>
-													<button type="button" class="btn" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);"><span>VIEW MORE</span></button>
+													<button type="button" th:if="${ContentsData.contentsType=='SELF'}" class="btn" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);"><span>VIEW MORE</span></button>
+													<button type="button" th:unless="${ContentsData.contentsType=='SELF'}" class="btn" th:onclick="window.open(_frontUrl+[[${ContentsData.strVar1}]], '_blank','width=1180,height=800,toolbars=no,scrollbars=no'); return false;"><span>VIEW MORE</span></button>
 												</div>
 												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
 											</th:block>
@@ -70,7 +73,8 @@
 							<div class="cont_body clear">
 								<div class="brand_tit">
 									<p th:text="${contentsTitle}"></p>
-									<a th:href="${ContentsData.strVar1}">브랜드 사이트</a>
+									<a th:if="${ContentsData.contentsType=='SELF'}" th:href="${ContentsData.strVar1}" target="_self">브랜드 사이트</a>
+									<a th:unless="${ContentsData.contentsType=='SELF'}" th:href="${ContentsData.strVar1}" target="_blank">브랜드 사이트</a>
 								</div>
 								<div class="brand_desc">
 									<p class="cate" th:text="${ContentsData.strTitle1}"></p>
@@ -697,6 +701,21 @@ $(document).ready( function() {
 		},
 	});
 
+	// 브랜드메인 배너 <br> 처리
+	$('.bMainTitle').each(function (){
+		let tag = '';
+		var brText = $(this).find("input[name=mainTitle]").val();
+
+		if(brText.indexOf('<br>') > -1){
+			var reText = brText.split("<br>");
+			tag += reText[0];
+			tag += '<br>';
+			tag += reText[1];
+		}else{
+			tag += brText;
+		}
+		$(this).append(tag);
+	});
 });
 /*]]>*/
 </script>

+ 60 - 30
src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html

@@ -36,28 +36,29 @@
 							<span th:text="${planInfo.dispStdt}"></span> ~ <span th:text="${planInfo.dispEddt}"></span>
 						</div>
 						<div class="shareSet">
-								<button class="btn_share" data-name="openShare">공유하기</button>
-								<div class="shareWrap">
-									<div id="layerShare" class="setShare open">
-										<span>
-											<button type="button" class="kk"
-												th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainImg}');|">
-												<span>카카오톡</span>
-											</button>
-											<button type="button" class="fb"
-												th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
-												<span>페이스북</span>
-											</button>
-											<button type="button" class="tw"
-												th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm+ '#style24몰'}', '', '');|">
-												<span>트위터</span>
-											</button>
-											<button type="button" class="url btn_copy">
-												<span>URL</span>
-											</button>
-										</span>
-									</div>
+							<button class="btn_share" data-name="openShare">공유하기</button>
+							<div class="shareWrap">
+								<div id="layerShare" class="setShare open">
+									<span>
+										<button type="button" class="kk"
+											th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainImg}');|">
+											<span>카카오톡</span>
+										</button>
+										<button type="button" class="fb"
+											th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
+											<span>페이스북</span>
+										</button>
+										<button type="button" class="tw"
+											th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm+ '#style24몰'}', '', '');|">
+											<span>트위터</span>
+										</button>
+										<button type="button" class="url btn_copy">
+											<span>URL</span>
+										</button>
+									</span>
 								</div>
+							</div>
+					   </div>
 					</div>
 				</div>
 				<div class="cont_body">
@@ -66,7 +67,7 @@
 						<div class="event_calander">
 							<div class="check_title">
 								<p>출석할수록 늘어나는 혜택!</p>
-								<div class="title"><strong></strong> 출석체크</div>
+								<div class="title" id="title"><strong></strong> 출석체크</div>
 							</div>
 							<div class="check_info">
 								<span class="today">오늘</span>
@@ -76,7 +77,7 @@
 								<div class="my_attend_day">
 									<p>나의 출석 일수는?</p>
 									<span class="day">
-										<span></span>일
+										<span id="day"></span>일
 									</span>
 								</div>
 								<div class="tbl">
@@ -135,12 +136,40 @@
 						</div>
                         <div class="event_benefit">
                             <p class="title">출석 일수에 따라 달라지는 혜택</p>
-                            <div class="benefit_con">
-                                <img src="/images/pc/benefit_txt.jpg" alt="출석 일수에 따라 달라지는 혜택">
-                            </div>
-                        </div>                        
-					</div>                   
+							<div class="benefit_con">
+							<ul>
+								 <th:block th:each="a, benefitStat : ${benefitList}">
+								<li th:if="${a.benefitGb == 'P'}">
+									<div class="benfit_point">
+										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span>
+									</div>
+								</li>
+								<li th:if="${a.benefitGb == 'C'}">
+									<div class="benfit_coupon">
+										<th:block th:if="${a.dcWay == '%'}">
+										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span><strong> 할인 쿠폰</strong>
+										</th:block>
+										<th:block th:if="${a.dcWay == '원'}">
+										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.dcVal}"></em>원</span><strong> 할인 쿠폰</strong>
+										</th:block>
+									</div>
+								</li>
+								<li th:if="${a.benefitGb == 'A'}">
+									<div class="benfit_coupon">
+									<th:block th:if="${a.dcWay == '%'}">
+										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span> <strong>할인 쿠폰</strong>
+									</th:block>
+									<th:block th:if="${a.dcWay == '원'}">
+										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>원</span> <strong>할인 쿠폰</strong>
+									</th:block>
+									</div>
+								</li>
+								</th:block>
+							</ul>
+						</div>
+                        </div>                                     
                     <!-- //프로모션 출석체크-->
+                 	</div>
 				</div>
 			</div>
 			<div class="content dp_announce">
@@ -195,7 +224,7 @@
                 </div>
             </div>
             <!-- //다른 기획전,이벤트 보기 -->
-		</div>
+
 	</div>
 </div>
 <script th:inline="javascript">
@@ -312,6 +341,7 @@ var fnInfoConfirmCallBack = function(result) {
 	mcxDialog.alert(result.msg);
 	appendHtml();
 	$("#td_"+date).attr("class","complete");
+	$('.day').html('<span>' + (custAttendList.length +1) + '</span>일');
 	
 };
 
@@ -337,7 +367,7 @@ $(document).ready(function() {
 	
 	
 	
-	$(".title").html("<strong>"+month+"월</strong> 출석체크");
+	$("#title").html("<strong>"+month+"월</strong> 출석체크");
 	
 	//공유 버튼 토글 
 	$("button[data-name=openShare]").on("click", function(){

+ 1 - 1
src/main/webapp/ux/mo/css/common_m.css

@@ -1997,7 +1997,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .app-only .guidance:after{content: '';position: absolute;top: 0;bottom: 15px;left: 10px;width: 100%;height: 100%;z-index: -1;}
 .app-only .guidance{
     box-shadow: 0 0px 30px rgb(0 0 0 / 20%), 0 0px 30px rgb(0 0 0 / 20%);
-	/* 마스크 미사용 
+	/* 마스크 미사용
 	mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
     -webkit-mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
 	mask-size: 100% 0%, 2vh 2vh, calc(100% - 1.9vh) 100%, 100% calc(100% - 1.9vh);

+ 1 - 1
src/main/webapp/ux/pc/css/common.css

@@ -687,7 +687,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .fold_head .fold_tit {position:relative; padding-left:30px;}
 .fold_head .fold_tit span {display: block; position: relative; width: 100%; height: auto; font-size:20px; font-weight:300; color: #222; line-height: 1.2; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; text-align: justify; letter-spacing:-0.025em;}
 .fold_head .fold_state {width:170px; box-sizing: border-box; text-align: center; font-weight: 300; color:#888; line-height:1;}
-.fold_head .fold_state .important {display:inline-block; position:relative; padding:2px 10px; background-color: #fd4802; color:#fff; font-size:14px; font-weight:300; padding:4px 10px 2px;}
+.fold_head .fold_state .important {display:inline-block; position:relative; background-color: #fd4802; color:#fff; font-size:11px; font-weight:300;font-family: 'dotum'; width: 55px; height: 22px;}
 .fold_head .fold_state.fix {color:#222;}
 .fold_head .fold_state.done {color:#222}
 .fold_head .fold_state.doing {color:#888}

+ 42 - 19
src/main/webapp/ux/pc/css/layout.css

@@ -85,12 +85,12 @@ ul.maintabs li:focus > a::before,
 ul.maintabs li:hover > a::after, 
 ul.maintabs li:focus > a::after {display:block;}
 ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%; top:0px; width:100%; border-left:1px solid #ddd; min-height:320px;}
-.more_category {float:left; position:relative; margin-left:20px}
+.more_category {float:left; position:relative; margin-left:15px}
 .more_category a.btn_more_cate {position:relative; display:inline-block; padding-right:16px; color:#888; font-size:16px; font-weight:300; z-index:8;}
 .more_category a.btn_more_cate:after {display:block; position:absolute; top:2px; right:0; width:6px; height:6px; border:2px solid #888; border-width:2px 2px 0 0; transform:rotate(135deg); -webkit-transform:rotate(135deg); content:''}
 .more_category.on a.btn_more_cate:after {top:5px; transform:rotate(-45deg); -webkit-transform:rotate(-45deg); content:''}
 .more_category .cate_list {display:none; position:absolute; left:-30px; top:-22px; background:#222; min-width:180px; padding:60px 25px 25px; box-sizing:initial; border:1px solid #aaa; z-index:2;}
-.more_category .cate_list ul li {margin-top:14px}
+.more_category .cate_list ul li {margin-top:14px; display: none;}
 .more_category .cate_list ul li:first-child {margin-top:0}
 .more_category .cate_list ul li a {display:block; padding:5px; color:#fff; font-size:19px;}
 .more_category .cate_list ul li a:hover {color:#fd4801; text-decoration:underline;}
@@ -249,11 +249,11 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 /* footer */
 #footer {position:relative;}
-.common_footer {position:relative; width:100%; min-width:1380px; box-sizing:border-box; padding:60px 70px; background-color:#f1f1f1;}
+.common_footer {position:relative; width:100%; min-width:1380px; box-sizing:border-box; padding:60px 70px 50px; background-color:#f1f1f1;}
 .common_footer > div {padding-right:170px; box-sizing:border-box;} 
 .common_footer .service_support {position: relative;margin: 0 auto; border-top: 0 none !important; zoom: 1;}
 .common_footer .service_support h2 {margin:0;}
-.common_footer .service_support .support_txt {display:block; padding-top:40px;}
+.common_footer .service_support .support_txt {display:block; padding-top:35px;}
 .common_footer .service_support .support_txt::after {content:''; clear:both; display:block;}
 .common_footer .service_support .support_txt li {float:left; position:relative; margin-left:20px; padding-left:20px; font-size:16px; font-weight:300; line-height:1;}
 .common_footer .service_support .support_txt li a span em {line-height: 10px;}
@@ -285,13 +285,13 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .common_footer .service_support .connect .isms_box {padding:12px 0; color:#666; font-size:12px; font-weight: 200; line-height:16px; border-top:1px solid #ddd; border-bottom:1px solid #ddd;}
 .common_footer .service_support .connect .isms_box p {padding:5px 0 5px 60px; background:no-repeat url('/images/pc/ico_ft_isms.png') 5px 3px;}
 .common_footer .corporation_info {position:relative; min-height:30px; color:#888; font-size:14px; line-height:26px; letter-spacing:-0.5px;}
-.common_footer .corporation_info .ft_cpinfo {margin-top:35px;}
+.common_footer .corporation_info .ft_cpinfo {margin-top:27px;}
 .common_footer .corporation_info .ft_cpinfo dl {}
 .common_footer .corporation_info .ft_cpinfo dl dt {font-weight:500;}
 .common_footer .corporation_info .ft_cpinfo dl dd {font-weight:200;}
 .common_footer .corporation_info .ft_cpinfo dl dd span {margin-right:10px;}
 .common_footer .corporation_info .ft_cpinfo dl .clickable {padding-bottom:2px; border-bottom:1px solid #888; color:#888; font-size:12px;}
-.common_footer .copyright {min-height:30px; margin-top:45px; color:#888; font-weight: 200;font-size:14px; line-height:1.5; letter-spacing:-0.5px; }
+.common_footer .copyright {min-height:25px; margin-top:28px; color:#888; font-weight: 200;font-size:14px; line-height:1.5; letter-spacing:-0.5px; }
 
 .common_footer .cmfooter_corp_wrap {min-height:30px; font-size:14px; line-height:26px; letter-spacing:-0.5px; color:#888;}
 .common_footer .cmfooter_corp_wrap .cmfooter_corp_in {position: relative;margin: 0 auto;zoom: 1;}
@@ -369,16 +369,16 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 #quick_menu .shopingbag .itemsGrp .item_prod:first-child {padding-top: 0;}
 #quick_menu .shopingbag .itemsGrp .item_prod:last-child {border-bottom: 0;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemBadge, #quick_menu .shopingbag .itemsGrp .item_prod .itemcolorchip {display: none;}
-#quick_menu .shopingbag .itemsGrp .item_prod .item_state {display: table; padding-left: 150px; padding-right: 0; padding-bottom: 0; width: 100%; min-height:210px;}
+#quick_menu .shopingbag .itemsGrp .item_prod .item_state {display: table; padding-left: 150px; padding-right: 0; padding-bottom: 0; width: 100%; min-height:180px;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemLink {display: table-cell; position: static; vertical-align: middle;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemLike {z-index: 99;}
-#quick_menu .shopingbag .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 120px; padding-top: 70%;}
+#quick_menu .shopingbag .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 120px; padding-top: 180px;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemPic .shape {z-index: 89;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemPic::after {background: #f5f5f5; opacity:1; z-index: 87;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemPic .pd_img {z-index: 88;}
 #quick_menu .shopingbag .itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 20px; color:#fff; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 1; text-align: center;}
-#quick_menu .shopingbag .itemsGrp .item_prod .itemBrand {margin:0px 0 15px; font-size: 14px; line-height:14px; font-weight: 300;}
-#quick_menu .shopingbag .itemsGrp .item_prod .itemComment {}
+#quick_menu .shopingbag .itemsGrp .item_prod .itemBrand {margin:0px 0 15px; font-size: 12px; line-height:14px; font-weight: 300;}
+#quick_menu .shopingbag .itemsGrp .item_prod .itemComment {font-size: 12px;margin-left: 0;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemName {margin:0px 0 13px; font-size: 14px; font-weight: 300; line-height: 1.5; max-height:44px; overflow:hidden;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemSize {font-size: 12px; margin-bottom: 20px; color: #888;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemPrice {font-size: 16px; line-height: 1; font-weight: 500; margin:0 0 10px}
@@ -417,7 +417,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 #quick_menu .wishlist .hover_con .cart_btn {position: absolute; top: 50%; left: 50%; transform:translate(-50%, -50%);}
 #quick_menu .wishlist .item_prod:hover .hover_con {display: block;}
 #quick_menu .wishlist .itemsGrp .item_prod .cart_btn {width: 91px; border:1px solid #ddd; font-size: 13px; padding: 6px 0;}
-#quick_menu .wishlist .itemsGrp .item_prod .cart_btn.on {background: #222; color: #fff; border:1px solid #222;}
+#quick_menu .wishlist .itemsGrp .item_prod .cart_btn.on {background: #fff; color: #222; border:1px solid #fff;}
+#quick_menu .wishlist .itemsGrp .item_prod .cart_btn:hover.on {background: #222; color: #fff; border:1px solid #222;}
 
 /* 퀵메뉴_나의 쿠폰_발급 가능 쿠폰 */
 #quick_menu .coupon .quick_body {overflow:hidden;}
@@ -1173,6 +1174,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .goods_info .order_desc .button_box p {margin-top:10px;}
 .goods_info .order_desc .button_box p:first-child {margin-top:0}
 .goods_info .order_desc .button_box .btn {display:block; width:100%; height:42px; padding:14px; font-size:14px;}
+.goods_info .order_desc .button_box .btn:hover,
+.goods_info .order_desc .button_box .btn:focus,
+.goods_info .order_desc .button_box .btn:active{color: #333333;background-color: #ffffff;border-color: #dddddd;}
 .goods_info .order_desc .button_box .btn span {line-height:1}
 .goods_info .order_desc .button_box .util {margin-top:12px}
 .goods_info .order_desc .button_box .util span {position:relative; display:inline-block; margin-left:24px;}
@@ -1526,7 +1530,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.faq .quick_list ul li {width: 19.99%; height: 49.9%; text-align: center; border-left: 1px solid #ddd; border-bottom: 1px solid #ddd;}
 	.faq .quick_list ul li:nth-child(1),.faq .quick_list ul li:nth-child(6) {border-left:none;}
 	.faq .quick_list ul li:nth-child(6),.faq .quick_list ul li:nth-child(7),.faq .quick_list ul li:nth-child(8),.faq .quick_list ul li:nth-child(9),.faq .quick_list ul li:nth-child(10) {border-bottom: none;}
-	.faq .quick_list ul li a {display: flex; display: -ms-flexbox; justify-content: center; width:100%; height: 100%; line-height:26px; font-size:16px; font-weight: 200; align-items: center; color:#222; letter-spacing:-0.025em;}
+	.faq .quick_list ul li a {display: flex; display: -ms-flexbox; justify-content: center; width:100%; height: 100%; line-height:26px; font-size:16px; font-weight: 200; align-items: center; color:#222; letter-spacing:-0.025em;padding: 0 25px;}
 	.faq .search_wrap {margin-bottom:60px;}
 	.faq .search_wrap .faq_search {height:190px; background:#f5f5f5; padding:50px; box-sizing:border-box; text-align:center;}
 	.faq .search_wrap .faq_search .search_box {display:inline-block; position:relative; width:600px; padding-right:50px; border-bottom:2px solid #222; box-sizing: border-box; text-align:left;}
@@ -1539,7 +1543,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.faq .fold_nav ul li {margin:12px 12px 0 0;}
 	.faq .fold_nav ul li a {display:inline-block;padding:15px 22px 13px;border: 1px solid #ddd;font-size: 16px;font-weight: 300;line-height: 1; letter-spacing:-0.025em;}
 	.faq .fold_nav ul li a.on {position: relative; background: #222; color:#fff; border: 1px solid #222;}
-	.faq .fold_nav ul li a.on::after {content:''; position: absolute; width:0; height: 0; bottom:-1px; right:-1px; border-bottom: 9px solid #fff; border-left: 9px solid transparent;}
+	.faq .fold_nav ul li a.on::after {content:''; position: absolute; width:0; height: 0; bottom:-1px; right:-1px; border-bottom: 13px solid #fff; border-left: 13px solid transparent;}
 	.faq .foldGroup {margin-top:50px}
 	.faq .foldGroup .fold_head .fold_tit {max-width: 820px;}
 	.faq .foldGroup .fold_answer .answer_head {margin-bottom:10px}
@@ -1601,7 +1605,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.notice .foldGroup .critical .fold_head,
 	.notice .foldGroup .critical .fold_detail, 
 	.notice .foldGroup .critical .fold_answer {background:#fff6f2;}
-	.notice .foldGroup .critical .fold_category {font-weight:500;}
+	.notice .foldGroup .critical .fold_tit span {font-weight:500;}
+	.notice .foldGroup .critical .fold_category {font-weight:100;}
 	.notice .foldGroup .fold_head .fold_tit span {width:700px; font-weight:300}
 	.notice .fold_cont > div:first-of-type {padding-top:35px; border-top:1px solid #ddd}
 	.notice .sec_body.nodata {border-top: 1px solid #222;}
@@ -1669,7 +1674,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp .dp_submain .swiper-controls {margin-top:60px}
 
 	/* dp_new_item 신상품 슬라이드 */
-	.dp .new_item {}
+	.dp .new_item {margin-top: 120px;}	
 	.dp .new_item .cont_body {padding-left:70px; padding-right:70px;}
 	.dp .new_item .item_prod {width:100%;}
 	.dp .new_item .item_state {padding:0;}
@@ -1808,7 +1813,18 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.stamp_event .event_benefit {margin-top:80px;}
 	.stamp_event .event_benefit .title {color:#222; font-size:30px; font-weight:500; text-align:center;}
 	.stamp_event .event_benefit .benefit_con {margin-top:40px; text-align:center;}
-
+	.stamp_event .event_benefit .benefit_con ul{display: flex;margin: -6px auto;width: 1200px;background: #f5f5f5;}
+	.stamp_event .event_benefit .benefit_con li{width: 24%;height: 125px;margin:40px 0;position:relative;}
+	.stamp_event .event_benefit .benefit_con li::after{content: ''; display: inline-block;width: 1px;height: 100%;padding: 0;margin: 0;background: #e4e4e4;position: absolute;right: 0;top: 0;}
+	.stamp_event .event_benefit .benefit_con li:last-child::after{content: ''; display: inline-block; width:0;}
+	.stamp_event .event_benefit .benefit_con li:first-child{width: 28%;padding-left: 45px;}
+	.stamp_event .event_benefit .benefit_con li:last-child{width: 28%;padding-right: 70px;}
+	.stamp_event .event_benefit .benefit_con li:last-child div{ padding-top: 88px;}
+	.stamp_event .event_benefit .benefit_con li div{height: 124px;padding-top: 95px;font-size: 18px;font-weight: 400;line-height: 1.4;letter-spacing: -.025em;}
+	.stamp_event .event_benefit .benefit_con li div .c_primary{font-weight: 700;}
+	.stamp_event .event_benefit .benefit_con li .benfit_point {background: url(/images/mo/ico_bg_point.png) no-repeat center 0px;background-size: 70px;}
+	.stamp_event .event_benefit .benefit_con li .benfit_coupon {background: url(/images/mo/ico_bg_check.png) no-repeat center 0px;background-size: 70px;}
+	
 	/* dp_기획전상세 : 할인쿠폰 */	
 	.dp .dp_coupon {padding-top:60px; padding-bottom:60px; overflow:hidden;}
 	.dp_coupon .coupon_list {max-width:1200px; margin:auto;}
@@ -2580,13 +2596,15 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 	.pd_detail .area_pic .thumb_nav_wrap {position:absolute; left:auto; top:0; width:50px; z-index:2;}
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav {position:relative; padding:30px 0;}
+	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .thumb {border: 0;}
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .thumb.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(0,0,0,0.3) url('/images/pc/ico_play.png') no-repeat 50% 50%; z-index:2;}
-	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container {max-height:500px;}
-	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide {width:50px; height:75px !important; box-sizing:border-box; background:#f5f5f5;}
+	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container {max-height:505px;}
+	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide {width:50px; height:75px !important; box-sizing:border-box; background:#f5f5f5; padding-top: 2px;}
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide.on {}
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide img,
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide video {width:100%; box-sizing:border-box;}
-	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide.on a {display:block; border:1px solid #fd4802;}
+	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide.on a{display:block;position: relative;}
+	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-container .swiper-slide.on a span::before {content: ''; display:inline-block; border:1px solid #fd4802;position: absolute;top: 0px;left: 0;z-index: 5;width: 48px;height: 73px;}
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-button-prev,
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-button-next {left:50%; right:auto; width:14px; height:14px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; background:none;}
 	.pd_detail .area_pic .thumb_nav_wrap .thumbnav .swiper-button-prev {top:4px; bottom:auto; transform:translateX(-50%) rotate(-45deg); -webkit-transform:translateX(-50%) rotate(-45deg);}
@@ -3367,6 +3385,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.full_pop.pd_itemthumb_pop .full_pop_container .scaleview {position:relative; display:block; text-align:center; margin-top:40px; z-index:1;}
 	.full_pop.pd_itemthumb_pop .full_pop_container .scaleview:first-child {margin-top:0}
 	.full_pop.pd_itemthumb_pop .full_pop_container .scaleview img {max-width:100%; cursor:url('/images/pc/cursor_zoomout.png') 0 0, zoom-out;}
+	.full_pop.pd_itemthumb_pop .full_pop_container .scaleview .video_controls ,
+	.full_pop.pd_itemthumb_pop .full_pop_container .scaleview video {display:none;}
 	
 	/* pd_pop > 개별상품상세 설명 페이지 */
 	.pd_pop.full_pop.pd_descrp_pop {height:100%; padding:0; margin:0; /*background:none;*/ overflow:hidden;}
@@ -3970,6 +3990,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.my .myReviewWrite .input_txt_review .input_wrap textarea {width:100%; padding:20px; color:#222; font-size:14px;}
 	.my .myReviewWrite .input_my_physical .form_control {min-width:220px; padding-right:50px;}
 	.my .myReviewWrite .input_my_physical .unit {position:absolute; right:10px; top:50%; transform:translateY(-50%); color:#222; font-size:14px; font-weight:200;}
+	.my .myReviewWrite .fileAdd,
+	.my .myReviewWrite .pics{width:86px; height:86px;}
+	.my .myReviewWrite .pics .picsThumbs{max-height: 84px; max-width: 84px;}
 
 	/* my_myAddressList : 배송지 관리 */
 	.my .myAddressList {}