ソースを参照

Merge remote-tracking branch 'origin/develop' into xodud1202

xodud lee 4 年 前
コミット
912df4a433
51 ファイル変更956 行追加397 行削除
  1. 0 10
      src/main/java/com/style24/front/biz/dao/TsfCustomerDao.java
  2. 13 1
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  3. 9 0
      src/main/java/com/style24/front/biz/dao/TsfKollusDao.java
  4. 17 31
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  5. 14 0
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  6. 11 0
      src/main/java/com/style24/front/biz/service/TsfKollusService.java
  7. 2 2
      src/main/java/com/style24/front/biz/thirdparty/Yes24Login.java
  8. 1 0
      src/main/java/com/style24/front/biz/web/TsfCustomerController.java
  9. 10 1
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  10. 23 42
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  11. 16 0
      src/main/java/com/style24/front/biz/web/TsfKollusUploadController.java
  12. 2 1
      src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java
  13. 32 0
      src/main/java/com/style24/persistence/domain/GoodsContents.java
  14. 4 24
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  15. 7 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  16. 24 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  17. 13 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfKollus.xml
  18. 38 58
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  19. BIN
      src/main/webapp/WEB-INF/lib/Istyle-1.3.jar
  20. 64 0
      src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html
  21. 27 4
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  22. 21 4
      src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html
  23. 92 23
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  24. 41 11
      src/main/webapp/WEB-INF/views/mob/display/OutletMainFormMob.html
  25. 17 0
      src/main/webapp/WEB-INF/views/mob/display/SearchGoodsListFormMob.html
  26. 20 21
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  27. 22 22
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  28. 6 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html
  29. 9 15
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  30. 11 8
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html
  31. 1 3
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  32. 50 0
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  33. 28 6
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  34. 13 0
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  35. 139 14
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  36. 21 0
      src/main/webapp/WEB-INF/views/web/display/OutletMainFormWeb.html
  37. 17 0
      src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html
  38. 1 1
      src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html
  39. 25 23
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  40. 25 19
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  41. 3 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  42. 16 16
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  43. 5 8
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  44. 7 2
      src/main/webapp/biz/goods.js
  45. 15 4
      src/main/webapp/biz/search.js
  46. 3 3
      src/main/webapp/ux/mo/css/common_m.css
  47. 2 1
      src/main/webapp/ux/mo/css/layout_m.css
  48. 13 11
      src/main/webapp/ux/mo/css/style24_m.css
  49. 2 1
      src/main/webapp/ux/pc/css/common.css
  50. 2 2
      src/main/webapp/ux/pc/css/layout.css
  51. 2 2
      src/main/webapp/ux/pc/css/main.css

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

@@ -180,16 +180,6 @@ public interface TsfCustomerDao {
 	 */
 	CustGrade getCustGradeOrderInfo(CustGrade custGrade);
 
-	/**
-	 * 고객 생년월일 저장
-	 *
-	 * @param customer - 고객번호, 생년월일
-	 * @return int - 결과
-	 * @author jsshin
-	 * @since 2021. 05. 10
-	 */
-	int saveBatchBirth(Customer customer);
-
 	/**
 	 * SMS수신거부 처리
 	 * @param custNo - 고객번호

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

@@ -9,6 +9,7 @@ import com.style24.persistence.domain.Delivery;
 import com.style24.persistence.domain.Freegift;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsCompose;
+import com.style24.persistence.domain.GoodsContents;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
@@ -228,7 +229,18 @@ public interface TsfGoodsDao {
 	 * @date 2021. 3. 7
 	 */
 	Collection<Notice> getGoodsNoticeList(Goods goods);
-
+	
+	/**
+	 * 상세용 컨텐츠 목록
+	 *
+	 * @param goodsContents
+	 * @return
+	 * @author eskim
+	 * @date 2021. 07. 14
+	 */
+	Collection<GoodsContents> getGoodsContentsList(GoodsContents goodsContents);
+	
+	
 	/**
 	 * 상품  안전인증 정보
 	 *

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfKollusDao.java

@@ -43,5 +43,14 @@ public interface TsfKollusDao {
 	 * @since 2021. 4. 19
 	 */
 	void updateDisplayVideo(KollusResult result);
+	
+	/**
+	 * 카테노이드 Kollus 상품 상세 동영상 업로드 결과 처리
+	 * @param result - 업로드결과 정보
+	 * @author eskim
+	 * @since 2021. 7. 15
+	 */
+	void updateGoodsDescVideo(KollusResult result);
+
 
 }

+ 17 - 31
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -261,6 +261,7 @@ public class TsfCustomerService {
 	@Transactional("shopTxnManager")
 	public boolean saveJoinCustomer(Customer customer) {
 		boolean isJoin = true;
+		customer.initBirthMm();
 		customer.setHypenCellPhone();
 		customer.encryptData();
 		customer.setEncodedPasswd(passwordEncoder.encodeSha256(customer.getPasswd()));
@@ -270,7 +271,6 @@ public class TsfCustomerService {
 		customer.setCustGrade(TscConstants.CustGrade.WELCOME.value());
 		
 		int custCnt = customerDao.createCustomer(customer);
-		customerDao.saveBatchBirth(customer);
 
 		if (custCnt > 0) {
 			saveJoinPostProcessing(customer);
@@ -312,6 +312,7 @@ public class TsfCustomerService {
 	public boolean saveJoinCustomerSns(Customer customer) {
 		boolean isJoin = true;
 		String snsId = customer.getSnsType().equals(TscConstants.SnsType.YES24.value()) ? customer.getMemNo() : customer.getSnsId();
+		customer.initBirthMm();
 		customer.setEncodedPasswd(" ");
 		customer.setCustId(customer.getSnsType() + "_" + snsId);
 		customer.encryptData();
@@ -325,7 +326,6 @@ public class TsfCustomerService {
 
 		int custCnt = customerDao.createCustomer(customer);
 		customerDao.createCustomerSns(customer);
-		customerDao.saveBatchBirth(customer);
 
 		if (custCnt > 0) {
 			saveJoinPostProcessing(customer);
@@ -417,10 +417,14 @@ public class TsfCustomerService {
 			}
 
 			if (TscConstants.CustStat.ACTIVE.value().equals(custInfo.getCustStat())) {
+
 				custInfo.setSnsId(custSnsInfo.getSnsId());
 				custInfo.setSnsType(custSnsInfo.getSnsType());
 				customerDao.createCustomerSns(custInfo);
+
 				resultMap.setString("custStat", "SUCC_CUST");
+				resultMap.setString("snsId", custSnsInfo.getSnsId());
+				resultMap.setString("snsType", custSnsInfo.getSnsType());
 				return resultMap;
 			}
 
@@ -430,29 +434,24 @@ public class TsfCustomerService {
 				resultMap.setString("custStat", "EMPTY_PHONE_CUST");
 				return resultMap;
 			}
-
 			boolean isFindByPhone = getCustomerFindByCellPhnnoCount(custSnsInfo.getCellPhnno().replace("-", ""));
 			if (isFindByPhone) {
 				resultMap.setString("custStat", "DUP_PHONE_CUST"); // 휴대폰 중복
 				return resultMap;
 			}
-
 			boolean isFindByEmail = getCustomerFindByEmailCount(custSnsInfo.getEmail());
 			if (isFindByEmail) {
 				resultMap.setString("custStat", "DUP_EMAIL_CUST"); // 이메일 중복
 				return resultMap;
 			}
-
 			Customer customer = objectMapper.convertValue(custSnsInfo, Customer.class);
 			boolean isJoin = saveJoinCustomerSns(customer);
-
-			if (isJoin) {
-				resultMap.setString("custNo", String.valueOf(customer.getCustNo()));
-				resultMap.setString("custStat", "NEW_CUST");
-			} else {
+			if (!isJoin) {
 				resultMap.setString("custStat", "FAIL_CUST");
+				return resultMap;
 			}
-
+			resultMap.setString("custNo", String.valueOf(customer.getCustNo()));
+			resultMap.setString("custStat", "NEW_CUST");
 		}
 
 		return resultMap;
@@ -587,10 +586,7 @@ public class TsfCustomerService {
 		customer.setSiteCd(TscConstants.Site.STYLE24.value());
 		customer.setCustId(custId);
 		String maskingCustId = customerDao.getCustomerMaxCustId(customer);
-
-		maskingCustId = MaskingUtils.id(maskingCustId);
-
-		return maskingCustId;
+		return MaskingUtils.id(maskingCustId);
 	}
 
 	/**
@@ -606,10 +602,7 @@ public class TsfCustomerService {
 		customer.setEmail(email);
 		customer.encryptData();
 		String maskingCustId = customerDao.getCustomerMaxCustId(customer);
-
-		maskingCustId = MaskingUtils.id(maskingCustId);
-
-		return maskingCustId;
+		return MaskingUtils.id(maskingCustId);
 	}
 
 	/**
@@ -624,12 +617,8 @@ public class TsfCustomerService {
 		customer.setSiteCd(TscConstants.Site.STYLE24.value());
 		customer.setCellPhnno(cellPhnno);
 		customer.encryptData();
-
 		String maskingCustId = customerDao.getCustomerMaxCustId(customer);
-
-		maskingCustId = MaskingUtils.id(maskingCustId);
-
-		return maskingCustId;
+		return MaskingUtils.id(maskingCustId);
 	}
 
 	/**
@@ -644,12 +633,8 @@ public class TsfCustomerService {
 		customer.setSiteCd(TscConstants.Site.STYLE24.value());
 		customer.setCi(ci);
 		customer.encryptData();
-
 		String maskingCustId = customerDao.getCustomerMaxCustId(customer);
-
-		maskingCustId = MaskingUtils.id(maskingCustId);
-
-		return maskingCustId;
+		return MaskingUtils.id(maskingCustId);
 	}
 
 	/**
@@ -737,11 +722,13 @@ public class TsfCustomerService {
 	@Transactional("shopTxnManager")
 	public GagaMap saveCertification(Customer customer) {
 		GagaMap resultMap = new GagaMap();
+		customer.initBirthMm();
 		customer.setRegNo(customer.getCustNo());
 		customer.setUpdNo(customer.getCustNo());
 		customer.setHypenCellPhone();
 		customer.encryptData();
 		boolean isSuccess = false;
+
 		// CI 유효성 체크
 		Customer custInfo = getCustomerFindByCi(customer.getCi());
 		if (custInfo != null) {
@@ -754,7 +741,6 @@ public class TsfCustomerService {
 		coreCustomerService.createCustomerHistory(customer);
 		// 2.CI 업데이트
 		int resultCnt = customerDao.updateCustomerCi(customer);
-		customerDao.saveBatchBirth(customer);
 
 		if (resultCnt > 0) {
 			isSuccess = true;
@@ -826,6 +812,7 @@ public class TsfCustomerService {
 	@Transactional("shopTxnManager")
 	public GagaMap updateCustomerAuth(Customer customer) {
 		GagaMap result = new GagaMap();
+		customer.initBirthMm();
 		customer.setRegNo(customer.getCustNo());
 		customer.setUpdNo(customer.getCustNo());
 		customer.setHypenCellPhone();
@@ -835,7 +822,6 @@ public class TsfCustomerService {
 
 		// 2. 이름, 휴대전화 번호, 생년월일 저장
 		int updateCnt = customerDao.updateCustomerAuth(customer);
-		customerDao.saveBatchBirth(customer);
 
 		boolean isSuccess = updateCnt > 0; // 변경 성공시 true
 

+ 14 - 0
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -19,6 +19,7 @@ import com.style24.persistence.domain.Delivery;
 import com.style24.persistence.domain.Freegift;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsCompose;
+import com.style24.persistence.domain.GoodsContents;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
@@ -539,6 +540,19 @@ public class TsfGoodsService {
 	public Collection<Notice> getGoodsNoticeList(Goods goods) {
 		return goodsDao.getGoodsNoticeList(goods);
 	}
+	
+	/**
+	 * 상세용 컨텐츠 목록
+	 * @param goodsContents
+	 * @return
+	 * @author eskim
+	 * @since 2021. 07. 14
+	 */
+	public Collection<GoodsContents> getGoodsContentsList(GoodsContents goodsContents) {
+		return goodsDao.getGoodsContentsList(goodsContents);
+	}
+	
+	
 
 	/**
 	 * 상품  안전인증 정보

+ 11 - 0
src/main/java/com/style24/front/biz/service/TsfKollusService.java

@@ -56,4 +56,15 @@ public class TsfKollusService {
 		kollusDao.updateDisplayVideo(result);
 	}
 
+	/**
+	 * 카테노이드 Kollus 상품 상세 동영상 업로드 결과 처리
+	 * @param goods
+	 * @author eskim
+	 * @since 2021. 7. 15
+	 */
+	@Transactional("shopTxnManager")
+	public void updateGoodsDescVideoResult(KollusResult result) {
+		kollusDao.updateGoodsDescVideo(result);
+	}
+
 }

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

@@ -224,7 +224,7 @@ public class Yes24Login {
 	 */
 	public void saveLink(CustSnsInfo custSnsInfo) {
 		// 1. Ci 다시 암호화
-		String encryptCi = CryptoUtils.encryptAES(custSnsInfo.getCi());
+		String encryptCi = CryptoUtils.encryptYes24AES(custSnsInfo.getCi());
 		String joinGb = TsfSession.getFrontGb().equals("P") ? "P" : "M";
 
 		try {
@@ -266,7 +266,7 @@ public class Yes24Login {
 		String joinGb = TsfSession.getFrontGb().equals("P") ? "P" : "M";
 
 		// 1. Ci 다시 암호화
-		String encryptCi = CryptoUtils.encryptAES(custSnsInfo.getCi());
+		String encryptCi = CryptoUtils.encryptYes24AES(custSnsInfo.getCi());
 
 		try {
 			MultiValueMap<String, String> params = new LinkedMultiValueMap<>();

+ 1 - 0
src/main/java/com/style24/front/biz/web/TsfCustomerController.java

@@ -1023,6 +1023,7 @@ public class TsfCustomerController extends TsfBaseController {
 	public ModelAndView getPrivacyPolicyLayer(HttpServletRequest request) {
 		ModelAndView mav = new ModelAndView();
 		mav.addObject("clause", clauseService.getClause(TscConstants.Site.STYLE24.value(), "G057_11"));
+		mav.addObject("clauseList", clauseService.getClauseList(TscConstants.Site.STYLE24.value(), "G057_11"));
 		mav.addObject("mallGb", request.getParameter("mallGb"));
 		mav.setViewName(super.getDeviceViewName("customer/PrivacyPolicyLayerForm"));
 		return mav;

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

@@ -9,6 +9,7 @@ import java.util.HashMap;
 
 import javax.servlet.http.HttpServletResponse;
 
+import com.gagaframework.web.util.GagaStringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
@@ -272,7 +273,15 @@ public class TsfDisplayController extends TsfBaseController {
 	public Collection<Contents> getGnbTopBannerList(Contents contents, @RequestParam(value = "contentsLoc") String contentsLoc) {
 		contents.setContentsLoc(contentsLoc);
 		contents.setMaxRow(1);
-		return displayService.getContentsList(contents);
+		Collection<Contents> bannerList = displayService.getContentsList(contents);
+
+		for(Contents tempContents : bannerList){
+			tempContents.setHtml(GagaStringUtil.replace(GagaStringUtil.replace(tempContents.getHtml(), "&lt;", "<"), "&gt;", ">"));
+		}
+
+		log.info("getGnbTopBannerList>>>>{}",bannerList);
+
+		return bannerList;
 	}
 
 //	/**

+ 23 - 42
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -37,10 +37,10 @@ import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.CommonCode;
-import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.Counsel;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsContents;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsVideo;
 import com.style24.persistence.domain.Lookbook;
@@ -131,7 +131,6 @@ public class TsfGoodsController extends TsfBaseController {
 		if ("Y".equals(mobileYn)) {
 			paramsGoods.setFrontGb("M");
 		}
-
 		
 		if (StringUtils.isBlank(paramsGoods.getGoodsCd())) {
 //			if (StringUtils.isBlank(afLinkCd)) {
@@ -201,9 +200,8 @@ public class TsfGoodsController extends TsfBaseController {
 		goodsVideo.setGoodsCd(paramsGoods.getGoodsCd());
 		goodsVideo.setMaxRownum(1);
 		mav.addObject("goodsVideoList", goodsService.getVideoList(goodsVideo));
-		// 상품 공지
-		mav.addObject("goodsNoticeList", goodsService.getGoodsNoticeList(paramsGoods));
-
+		
+		
 		int goodsReviewCnt = 0;
 		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType())) {	// 딜상품
 
@@ -313,10 +311,6 @@ public class TsfGoodsController extends TsfBaseController {
 			//다다익선
 			paramsGoods.setMaxRownum(20);
 			mav.addObject("goodsList", goodsService.getTmtbGoodsList(paramsGoods));
-//			if (!"P".equals(goods.getFrontGb())) {
-//				paramsGoods.setMaxRownum(20);
-//				mav.addObject("goodsList", goodsService.getTmtbGoodsList(paramsGoods));
-//			}
 
 			// pc 추천 영역
 			if ("P".equals(paramsGoods.getFrontGb())) {
@@ -333,28 +327,20 @@ public class TsfGoodsController extends TsfBaseController {
 				mav.addObject("likeGoodsList", eigeneaiApi.getSameCategoryRelatedGoodsList(15,goods.getGoodsCd()));
 
 			}
-
-			// 상품 공통 베너
-			log.info("paramsGoods={}", paramsGoods);
-			Contents contents = new Contents();
-			contents.setContentsLoc("SPM001");
-			contents.setPreview(paramsGoods.getPreview());
-			contents.setViewDt(paramsGoods.getViewDt());
-			contents.setMaxRow(1);
-			contents.setCateNo(1714);
-			mav.addObject("goodsBannerList", displayService.getContentsList(contents));
+			
+			// 상품 공지
+			mav.addObject("goodsNoticeList", goodsService.getGoodsNoticeList(paramsGoods));
+			
+			GoodsContents goodsContents = new GoodsContents();
+			goodsContents.setGoodsCd(paramsGoods.getGoodsCd());
+			// 상세용 동영상
+			goodsContents.setGoodsContentsType("G086_1"); //동영상 -1건
+			mav.addObject("goodsDescVideoList", goodsService.getGoodsContentsList(goodsContents));
+			// 상세용 베너
+			goodsContents.setGoodsContentsType("G086_2"); //베너 -1건
+			mav.addObject("goodsDescBannerList", goodsService.getGoodsContentsList(goodsContents));
 		}
 
-		// 상품 문의건수
-//		Counsel counsel = new Counsel();
-//		counsel.setRelGoodsCd(goods.getGoodsCd());
-//		counsel.setSiteCd(TscConstants.Site.STYLE24.value());
-//		counsel.setGoodsType(goods.getGoodsType());	 // 딜상품(G056_D)일 경우 구성상품의 상품평수 
-//		int goodsQnaCnt = counselService.getGoodsQnaTotalCount(counsel);
-//		mav.addObject("goodsQnaCnt", goodsQnaCnt);
-
-//		// 상품포인트사용방법
-//		mav.addObject("goodsPointMothod", envsetService.getPointMothod(TscConstants.Site.STYLE24.value())); // A:정액, R:정율
 		// 상품평노출여부 
 		//mav.addObject("reviewDisplayYn", envsetService.getGoodsReviewDisplayYn(TscConstants.Site.STYLE24.value()));
 		mav.addObject("reviewDisplayYn", "Y");
@@ -1300,19 +1286,14 @@ public class TsfGoodsController extends TsfBaseController {
 		// 상품 안전인증 정보
 		mav.addObject("goodsSafeNo", goodsService.getGoodsSafeNo(goods));
 
-		// 상품 공통 베너
-		log.info("paramsGoods={}", paramsGoods);
-		Contents contents = new Contents();
-		contents.setContentsLoc("SPM001");
-		contents.setPreview(paramsGoods.getPreview());
-		contents.setViewDt(paramsGoods.getViewDt());
-		contents.setMaxRow(1);
-		if ("P".equals(paramsGoods.getFrontGb())) {
-			contents.setCateNo(1714);
-		} else {
-			contents.setCateNo(1724);
-		}
-		mav.addObject("goodsBannerList", displayService.getContentsList(contents));
+		GoodsContents goodsContents = new GoodsContents();
+		goodsContents.setGoodsCd(paramsGoods.getGoodsCd());
+		// 상세용 동영상
+		goodsContents.setGoodsContentsType("G086_1"); //동영상 -1건
+		mav.addObject("goodsDescVideoList", goodsService.getGoodsContentsList(goodsContents));
+		// 상세용 베너
+		goodsContents.setGoodsContentsType("G086_2"); //베너 -1건
+		mav.addObject("goodsDescBannerList", goodsService.getGoodsContentsList(goodsContents));
 
 		mav.addObject("params", paramsGoods);
 

+ 16 - 0
src/main/java/com/style24/front/biz/web/TsfKollusUploadController.java

@@ -79,4 +79,20 @@ public class TsfKollusUploadController extends TsfBaseController {
 		return super.ok();
 	}
 
+	/**
+	 * 상품 상세 동영상 업로드 결과
+	 * @author eskim
+	 * @since 2021. 7. 15
+	 */
+	@RequestMapping("/goods/desc/upload/result")
+	@ResponseBody
+	public GagaResponse updateGoodsDescVideoResult(KollusResult result) {
+		log.info("{}", result);
+
+		if (StringUtils.isNotBlank(result.getMedia_content_key()) && StringUtils.isNotBlank(result.getUpload_file_key())) {
+			kollusService.updateGoodsDescVideoResult(result);
+		}
+
+		return super.ok();
+	}
 }

+ 2 - 1
src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java

@@ -51,7 +51,8 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 		"/customer/dormant/certify/form",			// 휴면해제화면
 		"/customer/dormant/certify/complete/form",	// 휴면해제완료
 		"/customer/certification/form",				// 본인인증화면
-		"/customer/noncust/order/confirm/form"		// 비회원주문화면
+		"/customer/noncust/order/confirm/form",		// 비회원주문화면
+		"/customer/consent/useinfo/form"			// YES24동의화면
 	};
 
 	private static final int CHANG_PWD_CAMPAIGN_DAY = 90;	// 비밀번호 변경 캠페인일자

+ 32 - 0
src/main/java/com/style24/persistence/domain/GoodsContents.java

@@ -0,0 +1,32 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품상세노출컨텐츠 Domain
+ *
+ * @author eskim
+ * @since 2021. 07. 14
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsContents extends TscBaseDomain {
+
+	private Integer goodsContentsSq;	//상품상세노출컨텐츠일련번호
+	private String goodsContentsType; 	//상품상세노출컨텐츠유형(공통코드G086)
+	private String goodsContentsTitle; 	//상품상세노출컨텐츠제목
+	private String goodsContentsStdt; 	//상품상세노출컨텐츠시작일시
+	private String goodsContentsEddt; 	//상품상세노출컨텐츠종료일시
+	private String goodsContentsVideoGubun;	//상품상세노출컨텐츠유형-동영상구분(Y:유투브,M:MP4)
+	private String kmcKey; 	//동영상값(동영상구분이Y이면 유투브ID,M이면동영상Kollus의media_content_key)
+	private String kufKey; 	//동영상Kollus의upload_file_key
+	private String imgPath; //이미지경로
+	private String linkUrl; //링크URL1
+	private String linkTarget; //링크새창구분(S:본창,N:새창)
+	private String useYn;	// 사용여부
+	private String goodsCd;	//상품코드
+
+	
+}

+ 4 - 24
src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml

@@ -206,6 +206,7 @@
 		     , SECEDE_RSN
 		     , SECEDE_DTL_RSN
 		     , SECEDE_DT
+		     , BIRTH_MM
 		     , REG_NO
 		     , REG_DT
 		     , UPD_NO
@@ -264,6 +265,7 @@
 		     , #{secedeRsn}                        AS SECEDE_RSN
 		     , #{secedeDtlRsn}                     AS SECEDE_DTL_RSN
 		     , #{secedeDt}                         AS SECEDE_DT
+		     , #{encodedBirthMm}                   AS BIRTH_MM
 		     , 0                                   AS REG_NO
 		     , NOW()                               AS REG_DT
 		     , 0                                   AS UPD_NO
@@ -528,6 +530,7 @@
 		     , CELL_PHNNO = #{encodedCellPhnno}
 		     , SEX_GB = #{encodedSexGb}
 		     , BIRTH_YMD = #{encodedBirthYmd}
+		     , BIRTH_MM = #{encodedBirthMm}
 		     , AUTH_DT = NOW()
 		     , UPD_NO = #{updNo}
 		     , UPD_DT = NOW()
@@ -552,6 +555,7 @@
 		     , CELL_PHNNO = #{encodedCellPhnno}
 		     , SEX_GB = #{encodedSexGb}
 		     , BIRTH_YMD = #{encodedBirthYmd}
+		     , BIRTH_MM = #{encodedBirthMm}
 		     , UPD_DT = NOW()
 		     , UPD_NO = #{updNo}
 		WHERE  CUST_NO = #{custNo}
@@ -656,30 +660,6 @@
 		) A
 	</select>
 
-	<!--배치 생년월일 -->
-	<insert id="saveBatchBirth" parameterType="Customer">
-		/*TsfCustomer.saveBatchBirth*/
-		INSERT INTO TB_BATCH_BIRTH (
-		       CUST_NO
-		     , BIRTH_YMD
-		     , REG_DT
-		     , REG_NO
-		     , UPD_DT
-		     , UPD_NO
-		) VALUES (
-		       #{custNo}
-		     , #{birthYmd}
-		     , NOW()
-		     , #{custNo}
-		     , NOW()
-		     , #{custNo}
-		)
-		ON DUPLICATE KEY UPDATE
-		       BIRTH_YMD = #{birthYmd}
-		    ,  UPD_DT = NOW()
-		    ,  UPD_NO = #{updNo}
-	</insert>
-	
 	<!-- SMS수신거부 처리 -->
 	<update id="updateSmsReceptionRefuse" parameterType="Integer">
 		/* TsfCustomer.updateSmsReceptionRefuse */

+ 7 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -1312,6 +1312,8 @@
 		      , Z.SUB_TEXT1
 		      , Z.SUB_TEXT2
 		FROM    (
+		    SELECT *
+		    FROM   (
 		            SELECT  'ADMIN' AS BANNER_GB
 		                  , IMG_PATH1
 		                  , STR_VAR1
@@ -1333,6 +1335,11 @@
 		            AND     USE_YN = 'Y'
 		            AND    DISP_STDT <![CDATA[<=]]> NOW()
 		            AND    DISP_EDDT <![CDATA[>=]]> NOW()
+		            ORDER BY  DISP_ORD
+		        <if test="maxRow != null and maxRow != ''">
+		            LIMIT #{maxRow}
+		        </if>
+		    ) AS TC
 		            UNION ALL
 		            SELECT  'PLAN' AS BANNER_GB
 		                  , A.MAIN_PIMG AS IMG_PATH1

+ 24 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -3739,4 +3739,28 @@
 		ORDER  BY Z.RK
 	</select>
 	
+	<!-- 상세용 컨텐츠 목록  -->
+	<select id="getGoodsContentsList"  parameterType="GoodsContents" resultType="GoodsContents">
+		/* TsfGoods.getGoodsContentsList */
+		SELECT A.GOODS_CONTENTS_SQ
+		     , A.GOODS_CONTENTS_TYPE
+		     , A.GOODS_CONTENTS_TITLE
+		     , A.GOODS_CONTENTS_VIDEO_GUBUN
+		     , A.KMC_KEY
+		     , A.KUF_KEY
+		     , IMG_PATH
+		     , A.USE_YN
+		FROM   TB_GOODS_CONTENTS A
+		INNER JOIN TB_GOODS_CONTENTS_DATA B ON A.GOODS_CONTENTS_SQ = B.GOODS_CONTENTS_SQ
+		                             AND B.GOODS_CD = #{goodsCd}
+		WHERE  A.GOODS_CONTENTS_TYPE = #{goodsContentsType}
+		AND CURRENT_DATE() BETWEEN A.GOODS_CONTENTS_STDT AND A.GOODS_CONTENTS_EDDT
+		AND A.USE_YN  = 'Y'
+		<if test="goodsContentsType != null and goodsContentsType == 'G086_1'">
+		AND NULLIF(A.KMC_KEY,'') IS NOT NULL
+		</if>
+		ORDER  BY A.GOODS_CONTENTS_SQ DESC
+		LIMIT 1
+	</select>
+	
 </mapper>

+ 13 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfKollus.xml

@@ -44,4 +44,17 @@
 		AND    STR_VAR2 = #{upload_file_key}
 	</update>
 	
+	
+	<!-- 카테노이드 Kollus 상품 상세 동영상 업로드 결과 처리 -->
+	<update id="updateGoodsDescVideo" parameterType="KollusResult">
+		/* TsfKollus.updateGoodsDescVideo */
+		UPDATE TB_GOODS_CONTENTS
+		SET    KMC_KEY = #{media_content_key}
+		     , UPD_NO = 0
+		     , UPD_DT = NOW()
+		WHERE  KUF_KEY = #{upload_file_key}
+		AND    GOODS_CONTENTS_TYPE = 'G086_1'
+	</update>
+	
+	
 </mapper>

+ 38 - 58
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -1776,7 +1776,7 @@
 		        ,(CASE WHEN RNK.LIST_PRICE > 0 THEN 100 - ROUND((RNK.CURR_PRICE / RNK.LIST_PRICE) * 100 ,0) ELSE 0 END ) AS DC_RATE
 		      FROM
 		         (
-		          SELECT  ROW_NUMBER() OVER (PARTITION BY GOODS.BRAND_GROUP_NO ORDER BY GOODS.DISP_ORD DESC, GOODS.DIS) AS RNUM
+		          SELECT  ROW_NUMBER() OVER (PARTITION BY GOODS.BRAND_GROUP_NO ORDER BY GOODS.DIS DESC, GOODS.DISP_ORD DESC, GOODS.REG_DT DESC) AS RNUM
 		                 , GOODS.*
 		            FROM 
 		                (
@@ -1803,6 +1803,7 @@
 		                         , G.LIST_PRICE                                             /*정상가(최초판매가)*/
 		                         , G.CURR_PRICE                                             /*현재판매가*/
 		                         , 1 AS DIS
+								 , G.REG_DT
 		                        FROM   TB_SHOT_DELV_BRAND SDB
 		                                        INNER JOIN TB_SHOT_DELV_GOODS SDG
 		                               ON SDB.BRAND_GROUP_NO = SDG.BRAND_GROUP_NO
@@ -1844,6 +1845,7 @@
 		                            , G.LIST_PRICE                                             /*정상가(최초판매가)*/
 		                            , G.CURR_PRICE                                             /*현재판매가*/
 		                            , 2 AS DIS
+									, G.REG_DT
 		                        FROM   TB_SHOT_DELV_BRAND SDB
 		                                         INNER JOIN TB_BRAND_GROUP BG 
 		                               ON SDB.BRAND_GROUP_NO = BG.BRAND_GROUP_NO 
@@ -1867,58 +1869,9 @@
 		               )GOODS 
 		          WHERE CASE WHEN GOODS.GOODS_CD_CNT>1 THEN GOODS.DIS = 1 ELSE GOODS.DIS = 2 END  
 		        )RNK
-		   WHERE RNK.RNUM <![CDATA[<=]]> 100
+		   WHERE RNK.RNUM <![CDATA[<=]]> 30
 		)
-		, TAB_GOODS_IMG AS (
-		        /* 상품의 이미지 */
-		            SELECT BG.GOODS_CD
-		                 , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
-		            FROM   TAB_BRAND_GOODS BG
-		                 , TB_GOODS_IMG GI
-		            WHERE  BG.GOODS_CD = GI.GOODS_CD
-		            AND    BG.MAIN_COLOR_CD = GI.COLOR_CD
-		            AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
-		            GROUP  BY BG.GOODS_CD
-		)
-		, TAB_COLORCHIP AS (
-		            /* 상품 컬러칩 */
-		            SELECT BG.GOODS_CD
-		                 , GROUP_CONCAT(DISTINCT CONCAT(C.COLOR_CD,':',CC.CD_DESC) ORDER BY CC.DISP_ORD SEPARATOR ',') AS COLOR_CHIPS
-		            FROM   TAB_BRAND_GOODS BG
-		                 , TB_OPTION O
-		                 , TB_COLOR C
-		                 , TB_COMMON_CODE CC
-		            WHERE  BG.GOODS_CD = O.GOODS_CD
-		            AND    O.OPT_CD1 = C.COLOR_CD
-		            AND    C.COLOR_GRP_CD = CC.CD
-		            AND    O.DISP_YN = 'Y'
-		            AND    C.USE_YN = 'Y'
-		            AND    CC.USE_YN = 'Y'
-		            GROUP  BY BG.GOODS_CD
-		)
-		, TAB_GOODS_BENEFIT AS (
-		            /* 상품혜택 */
-		            SELECT GOODS_CD
-		                 , GROUP_CONCAT(CONCAT(BENEFIT_GB,':',BENEFIT_NM) ORDER BY NUMB SEPARATOR ',') AS ICON
-		            FROM   (
-		                    SELECT BG.GOODS_CD
-		                         , GB.BENEFIT_GB
-		                         , CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
-		                                WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
-		                                WHEN GB.BENEFIT_GB = '30' THEN '사은품'
-		                                WHEN GB.BENEFIT_GB = '40' THEN '신상'
-		                                ELSE '총알배송'
-		                           END                               AS BENEFIT_NM
-		                         , RANK() OVER(PARTITION BY BG.GOODS_CD
-		                                       ORDER BY GB.BENEFIT_GB
-		                                              , GB.GOODS_CD) AS NUMB
-		                    FROM   TAB_BRAND_GOODS BG
-		                         , TB_GOODS_BENEFIT GB
-		                    WHERE  BG.GOODS_CD = GB.GOODS_CD
-		                   ) Z
-		            GROUP  BY GOODS_CD
-		)
-		 SELECT 
+		 SELECT
 		        BG.RNUM
 		      , BG.BRAND_NM
 		      , BG.GOODS_CD
@@ -1929,9 +1882,39 @@
 		      , BG.MAIN_COLOR_CD
 		      , BG.LIST_PRICE
 		      , FN_GET_BENEFIT_PRICE( #{frontGb} /**P*/,BG.GOODS_CD,BG.CURR_PRICE,#{custGb})                              AS CURR_PRICE    /*현재판매가*/
-		      , GI.SYS_IMG_NM
-		      , C.COLOR_CHIPS                                                                                                      /*컬러칩*/
-		      , GB.ICON                                                                                                            /*혜택아이콘*/
+			, (SELECT MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)
+				FROM TB_GOODS_IMG GI
+				WHERE GI.GOODS_CD = BG.GOODS_CD AND GI.COLOR_CD = BG.MAIN_COLOR_CD AND (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
+			    ) AS SYS_IMG_NM
+			, ( SELECT GROUP_CONCAT(DISTINCT CONCAT(C.COLOR_CD,':',CC.CD_DESC) ORDER BY CC.DISP_ORD SEPARATOR ',')
+				FROM TB_OPTION O
+					, TB_COLOR C
+					, TB_COMMON_CODE CC
+				WHERE  BG.GOODS_CD = O.GOODS_CD
+					AND    O.OPT_CD1 = C.COLOR_CD
+					AND    C.COLOR_GRP_CD = CC.CD
+					AND    O.DISP_YN = 'Y'
+					AND    C.USE_YN = 'Y'
+					AND    CC.USE_YN = 'Y'
+				) AS COLOR_CHIPS
+			, (
+				SELECT GROUP_CONCAT(CONCAT(BENEFIT_GB,':',BENEFIT_NM) ORDER BY NUMB SEPARATOR ',')
+				FROM  (
+					SELECT BG.GOODS_CD
+						, GB.BENEFIT_GB
+						, CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
+						WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
+						WHEN GB.BENEFIT_GB = '30' THEN '사은품'
+						WHEN GB.BENEFIT_GB = '40' THEN '신상'
+						ELSE '총알배송'
+						END                               AS BENEFIT_NM
+						, RANK() OVER(PARTITION BY BG.GOODS_CD
+						ORDER BY GB.BENEFIT_GB
+						, GB.GOODS_CD) AS NUMB
+					FROM   TB_GOODS_BENEFIT GB
+					WHERE  BG.GOODS_CD = GB.GOODS_CD
+				) Z
+			) AS ICON                                                                                                           /*혜택아이콘*/
 		       <choose>
 		                 <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		             , IF(W.GOODS_CD IS NULL,'','likeit')                                                                AS LIKE_IT       /*위시리스트담긴상품*/
@@ -1941,9 +1924,6 @@
 		                 </otherwise>
 		      </choose>
 		FROM   TAB_BRAND_GOODS BG
-		LEFT OUTER JOIN TAB_GOODS_IMG GI ON BG.GOODS_CD = GI.GOODS_CD
-		LEFT OUTER JOIN TAB_COLORCHIP C ON BG.GOODS_CD = C.GOODS_CD
-		LEFT OUTER JOIN TAB_GOODS_BENEFIT GB ON BG.GOODS_CD = GB.GOODS_CD
 		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		LEFT OUTER JOIN TB_WISHLIST W ON BG.GOODS_CD = W.GOODS_CD
 		        AND W.CUST_NO = #{custNo}

BIN
src/main/webapp/WEB-INF/lib/Istyle-1.3.jar


+ 64 - 0
src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html

@@ -512,12 +512,22 @@
 	// 서브비주얼 슬라이드
 	var myArray = ["01", "02", "03"];
 	var submainVisualSwiper = new Swiper('.swiper-container.submain_visual', {
+		loop:true,
 		//210414_자동롤링 추가
 		speed: 1000,
 		autoplay : {
 			delay : 3000,   // 시간 설정
 			disableOnInteraction: false,
 		},
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		pagination: {
 			el: '.swiper-pagination',
 			type: 'fraction',
@@ -561,6 +571,15 @@
 	var newItemSwiper = new Swiper('.new_item .area_slider .swiper-container', {
 		slidesPerView: 1,
 		speed: 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		pagination: {
 			el: '.swiper-pagination',
 		},
@@ -571,6 +590,15 @@
 		slidesPerView: 2.22,
 		speed: 1000,
 		spaceBetween: 8,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 	});
 
 	// 엠디픽 슬라이드
@@ -578,6 +606,15 @@
 		slidesPerView: 2.22,
 		speed: 1000,
 		spaceBetween: 8,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 	});
 
 	// 스페셜샵 슬라이드
@@ -585,6 +622,15 @@
 		slidesPerView: 1,
 		speed: 1000,
 		spaceBetween: 10,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 	});
 
 	// 룩북 슬라이드
@@ -592,6 +638,15 @@
 		slidesPerView: 1,
 		spaceBetween: 0,
 		speed: 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		pagination: {
 			el: '.swiper-pagination',
 			type: 'fraction',
@@ -601,6 +656,15 @@
 	// 유튜브 슬라이드
 	var swiperYoutu = new Swiper('.swiper-container.br_youtube_slide', {
 		speed: 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		pagination: {
 			el: '.swiper-pagination',
 			clickable:true,

+ 27 - 4
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -379,9 +379,9 @@
 		<input type="hidden" name="cate3No" th:value="${cateInfo.cate3No}"/>
 		<input type="hidden" name="cate4No" th:value="${cateInfo.cate4No}"/>
 		<input type="hidden" name="sortingType" value="NEW"/>
-<!--		<input type="hidden" name="newGoods" th:value="${cateInfo.formalGb=='G009_20'?'':'40'}" />-->
+		<input type="hidden" name="newGoods" th:unless="${cateInfo.formalGb=='G009_20'}" th:value="${cateInfo.formalGb=='G009_20'?'':'40'}" />
 		<input type="hidden" name="keyword" value=""/>
-		<input type="hidden" name="benefitArr" th:unless="${cateInfo.formalGb=='G009_20'}" th:value="${cateInfo.formalGb=='G009_20'?'':'40:신상'}"/>
+<!--		<input type="hidden" name="benefitArr" th:unless="${cateInfo.formalGb=='G009_20'}" th:value="${cateInfo.formalGb=='G009_20'?'':'40:신상'}"/>-->
 	</form>
 
 
@@ -992,20 +992,25 @@
 			if(thisId == 'unisex'){
 				if(stat=='on'){
 					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+					$(obj).attr('checked', true);
 					tag += '<input type="hidden" name="unisex" value="G007_Z"/>\n';
 					$("#searchGoodsForm").append(tag);
 				}else{
 					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+					$(obj).attr('checked', false);
 					$("#searchGoodsForm input:hidden[name=unisex]").remove();
 				}
 			}else{
 				if(stat=='on'){
 					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
-					// tag += '<input type="hidden" name="newGoods" value="40"/>\n';
-					tag += '<input type="hidden" name="benefitArr" value="40:신상"/>\n';
+					$(obj).attr('checked', true);
+					tag += '<input type="hidden" name="newGoods" value="40"/>\n';
+					// tag += '<input type="hidden" name="benefitArr" value="40:신상"/>\n';
 					$("#searchGoodsForm").append(tag);
 				}else{
 					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+					$(obj).attr('checked', false);
+					$("#searchGoodsForm input:hidden[name=newGoods]").remove();
 					$("#searchGoodsForm input:hidden[name=benefitArr]").each(function(){
 						if($(this).val() == "40:신상"){
 							$(this).remove();
@@ -1013,6 +1018,7 @@
 					});
 				}
 			}
+			fnSetFilterHtml();
 			fnCategoryGoodsInfiniteScrollInit();
 			fnGoodsListSearch();
 		}
@@ -1046,6 +1052,8 @@
 			});
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
 				// if( history.scrollRestoration ) window.history.scrollRestoration = 'manual';
+				$("#searchGoodsForm input:hidden[name=unisex]").remove();
+				$("#searchGoodsForm input:hidden[name=newGoods]").remove();
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
 					historyData = JSON.parse(historyData);
@@ -1064,6 +1072,21 @@
 				if(typeof historyData.totalCount!='undefined' && historyData.totalCount!=''){
 					$("#totCntId").text(historyData.totalCount);
 				}
+				if(gagajf.isNull($("#searchGoodsForm").find("input[name=unisex]").val())){
+					$("#unisex").attr('onclick','fnFilterOption(this,\'on\');');
+					$("#unisex").attr('checked', false);
+				}else{
+					$("#unisex").attr('onclick','fnFilterOption(this,\'off\');');
+					$("#unisex").attr('checked', true);
+				}
+
+				if(gagajf.isNull($("#searchGoodsForm").find("input[name=newGoods]").val())){
+					$("#newGoods").attr('onclick','fnFilterOption(this,\'on\');');
+					$("#newGoods").attr('checked', false);
+				}else{
+					$("#newGoods").attr('onclick','fnFilterOption(this,\'off\');');
+					$("#newGoods").attr('checked', true);
+				}
 				/*if(filterPriceList.length > 0){
 					let min = 0;
 					let max = 0;

+ 21 - 4
src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html

@@ -147,22 +147,38 @@
 		$(document).ready(function () {
 			fnSetCategory1Depts();
 
+			//210624_ 추가 : 슬라이드 속성 추가.
 			var swiper = new Swiper('.submain_visual .swiper-container', {
 				observer: true,
 				observeParents: true,
+				loop:true,
+				speed:1000,
+				a11y: {
+					enabled: true,
+					notificationClass: 'swiper-notification',
+					prevSlideMessage: '이전 슬라이드',
+					nextSlideMessage: '다음 슬라이드',
+					firstSlideMessage: '첫번째 슬라이드 입니다',
+					lastSlideMessage: '마지막 슬라이드 입니다',
+					paginationBulletMessage: '슬라이드 {{index}}로 이동',
+				},
+				autoplay : {
+					delay : 3000,   // 시간 설정
+					disableOnInteraction: false,
+				},
 				pagination: {
 					el: '.submain_visual .swiper-pagination',
 					type: 'fraction',
 				},
 			});
+
+			//210624_ 추가 : max-height 값 변경.
 			var cate = this.querySelector('.cate_wrap');
 			var moreOn = cate.clientHeight;
-			console.log('★ clientHeight : ' + moreOn);
-
-			if (moreOn < 141) {
+			if (moreOn < 137) {
 				$('.sub_category .more_btn').css({"display": "none"});
 			}else{
-				$('.cate_wrap').css({"max-height": "13rem"});
+				$('.cate_wrap').css({"max-height": "14rem"});
 				$('.sub_category .more_btn').css({"display": "block"});
 			}
 
@@ -179,6 +195,7 @@
 			var dp_newitem_slide = new Swiper('.new_item .swiper-container', {
 				slidesPerView: 'auto',
 				spaceBetween: 8,
+				speed:1000,
 				centerMode: true,
 			});
 		});

+ 92 - 23
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -898,6 +898,15 @@
 				loop:false,
 				speed:1000,
 				// pagination: false,
+				a11y: {
+					enabled: true,
+					notificationClass: 'swiper-notification',
+					prevSlideMessage: '이전 슬라이드',
+					nextSlideMessage: '다음 슬라이드',
+					firstSlideMessage: '첫번째 슬라이드 입니다',
+					lastSlideMessage: '마지막 슬라이드 입니다',
+					paginationBulletMessage: '슬라이드 {{index}}로 이동',
+				},
 				pagination: {
 					el: '.swiper-pagination',
 					type: 'fraction',
@@ -923,6 +932,15 @@
 		// post-trendy
 		var post_trendy = new Swiper('.swiper-container.post-trendy', {
 			speed:1000,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			pagination: {
 				el: '.swiper-pagination',
 			},
@@ -950,6 +968,15 @@
 		var post_stylereport = new Swiper('.swiper-container.post-stylereport', {
 			slidesPerView: 1,
 			speed:1000,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			pagination: {
 				el: '.swiper-pagination',
 			},
@@ -1020,13 +1047,24 @@
 		//post-pick-post
 		var post_pick = new Swiper(".pick-cont .swiper-container", {
 			//slidesPerView: 1,
-			watchOverflow:true, //210520_ 추가 : 슬라이드 1개일 경우 롤링 제거.
+			loop:true,
+			// watchOverflow:true,
+			//210520_ 추가 : 슬라이드 1개일 경우 롤링 제거.
 			speed: 1000,
 			//210520_ 추가 : 자동재생 시간 추가.
 			autoplay: {
 				delay: 3000,
 				disableOnInteraction: false,
 			},
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			observer: true,
 			observeParents: true
 		});
@@ -1038,6 +1076,15 @@
 			spaceBetween: 10,
 			autoHeight: true,
 			loop:false,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 		});
 		$(".recomm-head li .btn").click(function(){
 			var recommActive = $(this).attr('data-tab');
@@ -1057,30 +1104,34 @@
 			autoplay: false,
 		});
 
+		//210705_수정 : 기획전 배너 2개이상 등록시 슬라이드 각각 실행.
 		// post-bnnWide
 		// 와이드배너 슬라이드 카운팅
-		var pickbnnWdCont = $('.post-bnnWide .swiper-slide');
-		var pickbnnWdLength = pickbnnWdCont.length;
-		if (pickbnnWdLength < 2) {
-			var post_bnnWide = new Swiper ('.swiper-container.post-bnnWide', {
-				loop: false,
-				autoplay: false,
-				pagination: false,
-			});
-		} else {
-			var post_bnnWide = new Swiper ('.swiper-container.post-bnnWide', {
-				loop: true,
-				slidesPerView: 1,
-				speed : 1000,
-				autoplay: {
-					delay: 3000,
-					disableOnInteraction: false,
-				},
-				pagination: {
-					el: '.swiper-pagination',
-				},
-			});
-		}
+		$(".main_1stage .post-bnnWide").each(function(index){
+			var pickbnnWdCont = $(this).find('.swiper-slide');
+			var pickbnnWdLength = pickbnnWdCont.length;
+			if (pickbnnWdLength < 2) {
+				var post_bnnWide = new Swiper ($(this), {
+					loop: false,
+					watchOverflow: true,
+					autoplay: false,
+					pagination: false,
+				});
+			} else {
+				var post_bnnWide = new Swiper ($(this), {
+					loop: true,
+					slidesPerView: 1,
+					speed : 1000,
+					autoplay: {
+						delay: 3000,
+						disableOnInteraction: false,
+					},
+					pagination: {
+						el: '.swiper-pagination',
+					},
+				});
+			}
+		});
 
 		// post-bnnEvent
 		// 이벤트배너 슬라이드 카운팅
@@ -1111,6 +1162,15 @@
 		// post_sug
 		var numCnt = 0;
 		var post_sug = new Swiper('.swiper-container.post-sug', {
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			pagination: {
 				el: '.swiper-pagination',
 			},
@@ -1220,6 +1280,15 @@
 			slidesPerView: 3,
 			spaceBetween: 10,
 			speed : 1000,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 		});
 
 		// post-tv

+ 41 - 11
src/main/webapp/WEB-INF/views/mob/display/OutletMainFormMob.html

@@ -154,22 +154,52 @@
 				}
 			});
 
-			var swiper = new Swiper('.outlets_visual .swiper-container', {
-				observer: true,
-				observeParents: true,
-				pagination: {
-					el: '.outlets_visual .swiper-pagination',
-					type: 'fraction',
-				},
-				autoplay : {
-					delay : 5000,   // 시간 설정
-				},
-			});
+			//210624_ 추가 : 슬라이드 속성 추가.
+			var outletCont = $('.outlets_visual .swiper-slide');
+			var outletLength = outletCont.length;
+			if (outletLength < 2) {
+				var swiper = new Swiper('.outlets_visual .swiper-container', {
+					observer: true,
+					observeParents: true,
+					loop:false,
+					speed:1000,
+					watchOverflow: true,
+					pagination: {
+						el: '.outlets_visual .swiper-pagination',
+						type: 'fraction',
+					},
+				});
+			}else{
+				var swiper = new Swiper('.outlets_visual .swiper-container', {
+					observer: true,
+					observeParents: true,
+					loop:true,
+					speed:1000,
+					pagination: {
+						el: '.outlets_visual .swiper-pagination',
+						type: 'fraction',
+					},
+					autoplay : {
+						delay : 3000,   // 시간 설정
+						disableOnInteraction: false,
+					},
+				});
+			}
 
 			var dp_mditem_slide = new Swiper('.md_item .swiper-container', {
 				slidesPerView: 2,
 				spaceBetween: 8,
+				speed:1000,
 				centerMode: true,
+				a11y: {
+					enabled: true,
+					notificationClass: 'swiper-notification',
+					prevSlideMessage: '이전 슬라이드',
+					nextSlideMessage: '다음 슬라이드',
+					firstSlideMessage: '첫번째 슬라이드 입니다',
+					lastSlideMessage: '마지막 슬라이드 입니다',
+					paginationBulletMessage: '슬라이드 {{index}}로 이동',
+				},
 			});
 		});
 

+ 17 - 0
src/main/webapp/WEB-INF/views/mob/display/SearchGoodsListFormMob.html

@@ -625,6 +625,8 @@
 			$(this).attr('checked', true);
 		});
 		if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
+			$("#searchGoodsForm input:hidden[name=unisex]").remove();
+			$("#searchGoodsForm input:hidden[name=newGoods]").remove();
 			var historyData = sessionStorage.getItem(document.location.href);
 			// console.log(historyData);
 			if(historyData!=null){
@@ -633,6 +635,21 @@
 			}else{
 				historyData = {};
 			}
+			if(gagajf.isNull($("#searchGoodsForm").find("input[name=unisex]").val())){
+				$("#unisex").attr('onclick','fnFilterOption(this,\'on\');');
+				$("#unisex").attr('checked', false);
+			}else{
+				$("#unisex").attr('onclick','fnFilterOption(this,\'off\');');
+				$("#unisex").attr('checked', true);
+			}
+
+			if(gagajf.isNull($("#searchGoodsForm").find("input[name=newGoods]").val())){
+				$("#newGoods").attr('onclick','fnFilterOption(this,\'on\');');
+				$("#newGoods").attr('checked', false);
+			}else{
+				$("#newGoods").attr('onclick','fnFilterOption(this,\'off\');');
+				$("#newGoods").attr('checked', true);
+			}
 			// if(typeof historyData.filterHtml!='undefined' && historyData.filterHtml!=''){
 			// 	//console.log('historyData.filterHtml>>>'+historyData.filterHtml);
 			// 	$("#searchGoodsForm").append(historyData.filterHtml);

+ 20 - 21
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html

@@ -40,36 +40,35 @@
 		<div class="mdhtml_box  bnnoti" th:if="${goodsNoticeList != null and !goodsNoticeList.empty}">
 			<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 		</div>
-		<!-- 공통상품베너 -->
-		<div class="mdhtml_box  bnnoti" th:if="${goodsBannerList != null and !goodsBannerList.empty}">
-			<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
-			<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
-				<div style="height:4rem"></div><!-- 여백용 html -->
-				<a th:href="${goodsBanner.strVar1}" target="_blank">
-				<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
-				</a>
-			</th:block>
-			<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
-				<div style="height:4rem"></div><!-- 여백용 html -->
-				<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
-			</th:block>
-			</th:block>
-		</div>	
-		<div class="mdhtml_box">
+		<!-- 상세 동영상 노출 -->
+		<div class="mdhtml_box" th:if="${goodsDescVideoList != null and !goodsDescVideoList.empty}">
 			<!-- 관리자 에디터입력 내용   공지 html -->
-			<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+			<th:block th:each="goodsVideo, status : ${goodsDescVideoList}">
 			<div class="movblock">
-				<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+				<th:block th:if="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
 				<div style="height:4rem"></div><!-- 여백용 html -->
-				<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+				<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 				</th:block>
-				<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+				<th:block th:unless="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
 				<div style="height:4rem"></div><!-- 여백용 html -->
-				<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+				<iframe th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey+'?player_version=html5' }" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 				</th:block>
 			</div>
 			</th:block>
 		</div>
+		<!-- 상세 베너 -->
+		<div class="mdhtml_box  bnnoti" th:if="${goodsDescBannerList != null and !goodsDescBannerList.empty}">
+			<th:block th:each="goodsBanner, status : ${goodsDescBannerList}" th:with="target=${(goodsBanner.linkTarget == 'N')? '_blank': '_self'}">
+			<th:block th:if="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}">
+				<div style="height:4rem"></div><!-- 여백용 html -->
+				<p><a th:href="${goodsBanner.linkUrl}" th:target="${target}"><img th:src="${imgUrl+goodsBanner.imgPath}" alt=""></a></p>
+			</th:block>
+			<th:block th:unless="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}"  >
+				<div style="height:4rem"></div><!-- 여백용 html -->
+				<p><img th:src="${imgUrl+goodsBanner.imgPath}" alt=""></p>
+			</th:block>
+			</th:block>
+		</div>	
 		<div class="mdhtml_box  bnnoti" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }">
 			<!-- 관리자 에디터입력 내용 노출  상단 html -->
 				<div style="height:4rem"></div><!-- 여백용 html -->

+ 22 - 22
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -305,37 +305,37 @@
 				<div class="mdhtml_box  bnnoti" th:if="${goodsNoticeList != null and !goodsNoticeList.empty}">
 					<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 				</div>
-				<!-- 공통상품베너 -->
-				<div class="mdhtml_box  bnnoti" th:if="${goodsBannerList != null and !goodsBannerList.empty}">
-					<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
-					<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
-						<div style="height:4rem"></div><!-- 여백용 html -->
-						<a th:href="${goodsBanner.strVar1}" target="_blank">
-						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
-						</a>
-					</th:block>
-					<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
-						<div style="height:4rem"></div><!-- 여백용 html -->
-						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
-					</th:block>
-					</th:block>
-				</div>	
-				<!-- 관리자 에디터입력 내용 노출 -->
-				<div class="mdhtml_box" th:if="${goodsVideoList != null and !goodsVideoList.empty}">
+				<!-- 상세 동영상 노출 -->
+				<div class="mdhtml_box" th:if="${goodsDescVideoList != null and !goodsDescVideoList.empty}">
 					<!-- 관리자 에디터입력 내용   공지 html -->
-					<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+					<th:block th:each="goodsVideo, status : ${goodsDescVideoList}">
 					<div class="movblock">
-						<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+						<th:block th:if="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
 						<div style="height:4rem"></div><!-- 여백용 html -->
-						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 						</th:block>
-						<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+						<th:block th:unless="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
 						<div style="height:4rem"></div><!-- 여백용 html -->
-						<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+						<iframe th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey+'?player_version=html5' }" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 						</th:block>
 					</div>
 					</th:block>
 				</div>
+				<!-- 상세 베너 -->
+				<div class="mdhtml_box  bnnoti" th:if="${goodsDescBannerList != null and !goodsDescBannerList.empty}">
+					<th:block th:each="goodsBanner, status : ${goodsDescBannerList}" th:with="target=${(goodsBanner.linkTarget == 'N')? '_blank': '_self'}">
+					<th:block th:if="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}">
+						<div style="height:4rem"></div><!-- 여백용 html -->
+						<p><a th:href="${goodsBanner.linkUrl}" th:target="${target}"><img th:src="${imgUrl+goodsBanner.imgPath}" alt=""></a></p>
+					</th:block>
+					<th:block th:unless="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}"  >
+						<div style="height:4rem"></div><!-- 여백용 html -->
+						<p><img th:src="${imgUrl+goodsBanner.imgPath}" alt=""></p>
+					</th:block>
+					</th:block>
+				</div>	
+				<!-- 관리자 에디터입력 내용 노출 -->
+				
 				<div class="mdhtml_box  bnnoti" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >	
 					<div style="height:4rem"></div><!-- 여백용 html -->
 					<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block>

+ 6 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -44,20 +44,26 @@
 					</div>
 					<div class="mem_box">
 						<div class="mem_point">
+							<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_POINT)">
 							<p class="tit">STYLE포인트</p>
 							<em th:text="${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')}"></em>P
+							</a>
 						</div>
 						<div class="mem_gift">
+							<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_GIFTCARD)">
 							<p class="tit">상품권</p>
 							<span>
 								<em th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></em>원
 							</span>
+							</a>
 						</div>
 						<div class="mem_coupon">
+							<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON)">
 							<p class="tit">쿠폰</p>
 							<span>
 								<em id="couponCnt" th:text="${couponCnt}"></em>장
 							</span>
+							</a>
 						</div>
 					</div>
 				</div>

+ 9 - 15
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -155,7 +155,7 @@
 								<div class="swiper-slide">
 									<a th:onclick="cfnGoToPlanDetail([[${PlanData.planSq}]])" class="dp_lookbook_item" tabindex="0">
 										<div class="img">
-											<img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg+'?RS=960'}" alt="${PlanData.planNm}">
+											<img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg+'?RS=960'}" th:alt="${PlanData.planNm}">
 										</div>
 										<div class="txt">
 											<div class="tit" th:text="${PlanData.planNm}"></div>
@@ -987,13 +987,10 @@ var fnJoinConfirm = function () {
 	let planSq = plan.planSq;
 	if (!cfCheckLogin()) {
 		// mcxDialog.alert("로그인 후 참여 가능합니다.");
-		var btn = ["확인"];
-		mcxDialog.confirmC("로그인 후 참여 가능합니다.", { //내용
-			btn: btn,
-			btnClick: function (index) {
-				if (index == 1) { //button1 일때 처리문
-					location.href = "/signin";
-				}
+		mcxDialog.alertC("로그인 후 참여 가능합니다.", { //내용
+			sureBtnText: "로그인",  //버튼명
+			sureBtnClick: function(){
+				location.href="/signin";
 			}
 		});
 		return false;
@@ -1045,13 +1042,10 @@ var fnTextConfirm = function() {
 	//로그인 확인
 	if (!cfCheckLogin()) {
 		//mcxDialog.alert("로그인 후 참여 가능합니다.");
-		var btn = ["확인"];
-		mcxDialog.confirmC("로그인 후 참여 가능합니다.", { //내용
-			btn: btn,
-			btnClick: function(index){
-				if (index == 1) { //button1 일때 처리문
-					location.href="/signin";
-				}
+		mcxDialog.alertC("로그인 후 참여 가능합니다.", { //내용
+			sureBtnText: "로그인",  //버튼명
+			sureBtnClick: function(){
+				location.href="/signin";
 			}
 		});
 		$("#replyText").val('');

+ 11 - 8
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html

@@ -283,7 +283,13 @@ var appendHtml = function () {
 		html += '</tr>\n';
 
 		$("#monthTbody").append(html);
-		$('.day').html('<span>' + custAttendList.length + '</span>일');
+		let custAttendListLength = 0;
+		if(cfCheckLogin()){
+			custAttendListLength = custAttendList.length;
+		}else{
+			custAttendListLength = 0;
+		}
+		$('.day').html('<span>' + custAttendListLength + '</span>일');
 		if (cfCheckLogin()) {
 			$.each(custAttendList, function(idx1, item1) {
 				if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
@@ -299,13 +305,10 @@ var appendHtml = function () {
 var fnAttendEntry = function () {
 	if (!cfCheckLogin()) {
 		// mcxDialog.alert("로그인 후 참여 가능합니다.");
-		var btn = ["확인"];
-		mcxDialog.confirmC("로그인 후 참여 가능합니다.", { //내용
-			btn: btn,
-			btnClick: function(index){
-				if (index == 1) { //button1 일때 처리문
-					location.href="/signin";
-				}
+		mcxDialog.alertC("로그인 후 참여 가능합니다.", { //내용
+			sureBtnText: "로그인",  //버튼명
+			sureBtnClick: function(){
+				location.href="/signin";
 			}
 		});
 		return false;

+ 1 - 3
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -448,9 +448,7 @@
 								}else{
 									tag +=' 	<a href="'+item.strVar1+'" target="">';
 									tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
-									tag +=' 		<div class="open_bnr_area">';
-									tag += '		'+item.html+' ';
-									tag +=' 		</div>';
+									tag +=' 		<div class="open_bnr_area">'+item.html+'</div>';
 									tag +=' 	</a>';
 									tag +=' 	<button class="btn_toggle_bnr">열기</button>';
 								}

+ 50 - 0
src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html

@@ -545,6 +545,15 @@ $(document).ready( function() {
 				delay: 7000, //210422_수정 : delay 시간 늘림.
 				disableOnInteraction: false,
 			},
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			navigation: {
 				nextEl: '.brand_main .brand_visual .swiper-button-next',
 				prevEl: '.brand_main .brand_visual .swiper-button-prev',
@@ -615,6 +624,15 @@ $(document).ready( function() {
 			delay: 3000,
 			disableOnInteraction:false,
 		},
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.new_item .swiper-button-next',
 			prevEl: '.new_item .swiper-button-prev',
@@ -660,6 +678,15 @@ $(document).ready( function() {
 				watchOverflow : true, //210503_추가 : 슬라이드 1개일때 롤링 막는 기능 추가.
 				slidesPerView: 1,
 				speed : 1000,
+				a11y: {
+					enabled: true,
+					notificationClass: 'swiper-notification',
+					prevSlideMessage: '이전 슬라이드',
+					nextSlideMessage: '다음 슬라이드',
+					firstSlideMessage: '첫번째 슬라이드 입니다',
+					lastSlideMessage: '마지막 슬라이드 입니다',
+					paginationBulletMessage: '슬라이드 {{index}}로 이동',
+				},
 				navigation: {
 					nextEl: '.main_1stage .swiper-button-next',
 					prevEl: '.main_1stage .swiper-button-prev',
@@ -716,6 +743,13 @@ $(document).ready( function() {
 			//slidesPerGroup:5, //210429_추가 : slidesPerGroup 추가.
 			spaceBetween: 22,
 			speed : 1000,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			pagination: {
 				el: '.md_item .swiper-pagination',
 				clickable: true,
@@ -732,6 +766,13 @@ $(document).ready( function() {
 			slidesPerGroup:5, //210429_추가 : slidesPerGroup 추가.
 			spaceBetween: 22,
 			speed : 1000,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			pagination: {
 				el: '.md_item .swiper-pagination',
 				clickable: true,
@@ -828,6 +869,15 @@ $(document).ready( function() {
 			centeredSlides: true,
 			speed : 1000,
 			autoplay: false,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				firstSlideMessage: '첫번째 슬라이드 입니다',
+				lastSlideMessage: '마지막 슬라이드 입니다',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			navigation: {
 				nextEl: '.main_tv .swiper-button-next',
 				prevEl: '.main_tv .swiper-button-prev',

+ 28 - 6
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -294,9 +294,9 @@
 		<input type="hidden" name="cate3No" th:value="${cateInfo.cate3No}"/>
 		<input type="hidden" name="cate4No" th:value="${cateInfo.cate4No}"/>
 		<input type="hidden" name="sortingType" value="NEW"/>
-<!--		<input type="hidden" name="newGoods" th:value="${cateInfo.formalGb=='G009_20'?'':'40'}" />-->
+		<input type="hidden" name="newGoods" th:unless="${cateInfo.formalGb=='G009_20'}" th:value="${cateInfo.formalGb=='G009_20'?'':'40'}" />
 		<input type="hidden" name="keyword" value=""/>
-		<input type="hidden" name="benefitArr" th:unless="${cateInfo.formalGb=='G009_20'}" th:value="${cateInfo.formalGb=='G009_20'?'':'40:신상'}"/>
+<!--		<input type="hidden" name="benefitArr" th:unless="${cateInfo.formalGb=='G009_20'}" th:value="${cateInfo.formalGb=='G009_20'?'':'40:신상'}"/>-->
 	</form>
 
 	<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
@@ -304,7 +304,6 @@
 	<script th:src="@{'/biz/goods.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/goods.js"></script>
 	<script th:inline="javascript">
 		/*<![CDATA[*/
-		console.log([[${cateInfo.formalGb}]]);
 		var filterPriceList = [[${filterPriceList}]];
 		var custom_values = [];
 		var custom_values02  = [];
@@ -322,6 +321,7 @@
 					$(".br_header").css('background-color','#fff');
 				}
 			}
+
 			//가격 슬라이드
 			//var custom_values = ['9,000원', '230,000원', '487,000원', '700,000원', '1,360,000원', '1,799,000원'];
 
@@ -730,21 +730,25 @@ console.log(allCateList);
 			if(thisId == 'unisex'){
 				if(stat=='on'){
 					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+					$(obj).attr('checked', true);
 					tag += '<input type="hidden" name="unisex" value="G007_Z"/>\n';
 					$("#searchGoodsForm").append(tag);
 				}else{
 					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+					$(obj).attr('checked', false);
 					$("#searchGoodsForm input:hidden[name=unisex]").remove();
 				}
 			}else{
 				if(stat=='on'){
 					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
-					// tag += '<input type="hidden" name="newGoods" value="40"/>\n';
-					tag += '<input type="hidden" name="benefitArr" value="40:신상"/>\n';
+					$(obj).attr('checked', true);
+					tag += '<input type="hidden" name="newGoods" value="40"/>\n';
+					// tag += '<input type="hidden" name="benefitArr" value="40:신상"/>\n';
 					$("#searchGoodsForm").append(tag);
 				}else{
 					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
-					// $("#searchGoodsForm input:hidden[name=newGoods]").remove();
+					$(obj).attr('checked', false);
+					$("#searchGoodsForm input:hidden[name=newGoods]").remove();
 					$("#searchGoodsForm input:hidden[name=benefitArr]").each(function(){
 						if($(this).val() == "40:신상"){
 							$(this).remove();
@@ -752,6 +756,7 @@ console.log(allCateList);
 					});
 				}
 			}
+			fnSetFilterHtml();
 			fnCategoryGoodsInfiniteScrollInit();
 			fnGoodsListSearch();
 		}
@@ -1364,6 +1369,8 @@ console.log(allCateList);
 				}
 			});
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
+				$("#searchGoodsForm input:hidden[name=unisex]").remove();
+				$("#searchGoodsForm input:hidden[name=newGoods]").remove();
 				if( history.scrollRestoration ) window.history.scrollRestoration = 'manual';
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
@@ -1401,6 +1408,21 @@ console.log(allCateList);
 					$("#filterForm").find('input[name=hDcRateTo]').val($("#searchGoodsForm").find('input[name=dcRateTo]').val());
 				}
 				idx++;
+				if(gagajf.isNull($("#searchGoodsForm").find("input[name=unisex]").val())){
+					$("#unisex").attr('onclick','fnFilterOption(this,\'on\');');
+					$("#unisex").attr('checked', false);
+				}else{
+					$("#unisex").attr('onclick','fnFilterOption(this,\'off\');');
+					$("#unisex").attr('checked', true);
+				}
+
+				if(gagajf.isNull($("#searchGoodsForm").find("input[name=newGoods]").val())){
+					$("#newGoods").attr('onclick','fnFilterOption(this,\'on\');');
+					$("#newGoods").attr('checked', false);
+				}else{
+					$("#newGoods").attr('onclick','fnFilterOption(this,\'off\');');
+					$("#newGoods").attr('checked', true);
+				}
 				if(typeof historyData.sortingType!='undefined' && historyData.sortingType!=''){
 					$("#searchGoodsForm input:hidden[name=sortingType]").val(historyData.sortingType);
 					fnSortingChange(this,historyData.sortingType,'back');

+ 13 - 0
src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html

@@ -183,7 +183,13 @@
 		var submain_slide = new Swiper('.dp_submain .swiper-container', {
 			slidesPerView: 4,
 			spaceBetween: 20,
+			watchOverflow:true,
 			freeMode:true,
+			speed:1000,
+			autoplay: {
+				delay: 3000,
+				disableOnInteraction: false,
+			},
 			scrollbar: {
 				el: '.dp_submain .swiper-scrollbar',
 				hide: false,
@@ -196,6 +202,13 @@
 			watchSlidesVisibility: true,
 			allowTouchMove: false,
 			speed : 1000,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			autoplay: {
 				delay: 3000,
 				disableOnInteraction:false,

+ 139 - 14
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -215,7 +215,7 @@
 							<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
 								<th:block th:if="${ContentsData.contentsType!=null && ContentsData.contentsType!=''}">
 									<div class="bnnbox_crop" th:if="${ContentsData.contentsType=='1'}">
-										<div class="" style="width: 100%;height: 230px;float: none;overflow: hidden;">
+										<div class=""> <!--style="width: 100%;height: 230px;float: none;overflow: hidden;"-->
 											<a th:href="${ContentsData.strVar1}" target="_blank">
 												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
 											</a>
@@ -1036,6 +1036,13 @@ if ( (navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (age
 			delay: 3000,
 			disableOnInteraction: false,
 		},
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.post-visual .swiper-button-next',
 			prevEl: '.post-visual .swiper-button-prev',
@@ -1064,6 +1071,13 @@ if ( (navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (age
 			delay: 3000,
 			disableOnInteraction: false,
 		},
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.post-visual .swiper-button-next',
 			prevEl: '.post-visual .swiper-button-prev',
@@ -1102,6 +1116,13 @@ var main_trendy_slide = new Swiper('.main_trendy .post-trendy', {
 		delay: 3000,
 		disableOnInteraction:false,
 	},
+	a11y: {
+		enabled: true,
+		notificationClass: 'swiper-notification',
+		prevSlideMessage: '이전 슬라이드',
+		nextSlideMessage: '다음 슬라이드',
+		paginationBulletMessage: '슬라이드 {{index}}로 이동',
+	},
 	navigation: {
 		nextEl: '.main_trendy .swiper-button-next',
 		prevEl: '.main_trendy .swiper-button-prev',
@@ -1208,6 +1229,13 @@ if (pickLength < 7) { //210614_ 수정 : 슬라이드 갯수 7개 미만일시 
 		watchSlidesVisibility: true,
 		watchSlidesProgress: true,
 		freeMode: false,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.main_pick .swiper-button-next',
 			prevEl: '.main_pick .swiper-button-prev',
@@ -1226,6 +1254,13 @@ if (pickLength < 7) { //210614_ 수정 : 슬라이드 갯수 7개 미만일시 
 		watchSlidesVisibility: true,
 		watchSlidesProgress: true,
 		freeMode: false,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.main_pick .swiper-button-next',
 			prevEl: '.main_pick .swiper-button-prev',
@@ -1248,6 +1283,13 @@ if (pickForLength < 7) {
 		spaceBetween: 10,
 		loopAdditionalSlides: 1,
 		allowTouchMove: false,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		thumbs: {
 			swiper: main_pick_nav
 		},
@@ -1260,25 +1302,66 @@ if (pickForLength < 7) {
 		loopeSlides: 6,
 		loopAdditionalSlides: 1,
 		allowTouchMove: false,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		thumbs: {
 			swiper: main_pick_nav
 		},
 	});
 }
 
-var main_pick_lookbook = new Swiper ('.main_pick .post-lookbook', {
-	slidesPerView: 1,
-	speed : 1000,
-	loop: false,
-	watchOverflow: true, //loop와 함께 사용 불가.
-	autoplay: {
-		delay: 3000,
-		disableOnInteraction: false,
-	},
-	pagination: {
-		el: '.main_pick .post-lookbook .swiper-pagination',
-		clickable: true,
-	},
+$(".main_pick .post-lookbook").each(function(index){
+	var lookbookBnnCont = $(this).find('.swiper-slide');
+	var lookbookBnnLength = lookbookBnnCont.length;
+	if (lookbookBnnLength < 2) {
+		var main_pick_lookbook = new Swiper ($(this), {
+			slidesPerView: 1,
+			speed : 1000,
+			loop: false,
+			watchOverflow: true, //loop와 함께 사용 불가.
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
+			autoplay: {
+				delay: 3000,
+				disableOnInteraction: false,
+			},
+			pagination: {
+				el: '.main_pick .post-lookbook .swiper-pagination',
+				clickable: true,
+			},
+		});
+	}else{
+		var main_pick_lookbook = new Swiper ($(this), {
+			slidesPerView: 1,
+			speed : 1000,
+			loop: true,
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
+			autoplay: {
+				delay: 3000,
+				disableOnInteraction: false,
+			},
+			pagination: {
+				el: '.main_pick .post-lookbook .swiper-pagination',
+				clickable: true,
+			},
+		});
+	}
 });
 
 //210705_수정 : 기획전 배너 2개이상 등록시 슬라이드 각각 실행.
@@ -1293,6 +1376,13 @@ $(".main_1stage .post-bnnWide").each(function(index){
 			initialSlide: 0,
 			loop: false,
 			watchOverflow: true, //loop와 함께 사용 불가.
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			navigation: {
 				nextEl: '.main_1stage .swiper-button-next',
 				prevEl: '.main_1stage .swiper-button-prev',
@@ -1311,6 +1401,13 @@ $(".main_1stage .post-bnnWide").each(function(index){
 				delay: 4000,
 				disableOnInteraction: false,
 			},
+			a11y: {
+				enabled: true,
+				notificationClass: 'swiper-notification',
+				prevSlideMessage: '이전 슬라이드',
+				nextSlideMessage: '다음 슬라이드',
+				paginationBulletMessage: '슬라이드 {{index}}로 이동',
+			},
 			navigation: {
 				nextEl: '.main_1stage .swiper-button-next',
 				prevEl: '.main_1stage .swiper-button-prev',
@@ -1340,6 +1437,13 @@ function init(){
 		speed : 1000,
 		spaceBetween: 20,
 		loop : true,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		pagination: {
 			el: '.main_recomm .swiper-pagination',
 			clickable: true,
@@ -1366,6 +1470,13 @@ var main_foryou_slide = new Swiper ('.main_foryou .post-sug .swiper-container',
 		delay: 25000,
 		disableOnInteraction: false,
 	},
+	a11y: {
+		enabled: true,
+		notificationClass: 'swiper-notification',
+		prevSlideMessage: '이전 슬라이드',
+		nextSlideMessage: '다음 슬라이드',
+		paginationBulletMessage: '슬라이드 {{index}}로 이동',
+	},
 	pagination: {
 		el: '.post-sug .swiper-pagination',
 		clickable: true,
@@ -1447,6 +1558,13 @@ if (mainTvLength < 2) {
 		centeredSlides: true,
 		speed : 1000,
 		autoplay: false,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.main_tv .swiper-button-next',
 			prevEl: '.main_tv .swiper-button-prev',
@@ -1464,6 +1582,13 @@ if (mainTvLength < 2) {
 		centeredSlides: true,
 		speed : 1000,
 		autoplay: false,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.main_tv .swiper-button-next',
 			prevEl: '.main_tv .swiper-button-prev',

+ 21 - 0
src/main/webapp/WEB-INF/views/web/display/OutletMainFormWeb.html

@@ -183,11 +183,18 @@
 	$(document).ready(function() {
 		fnSetCategory1Depts();
 
+		//210624_ 수정 : 옵션 수정.
 		/* SLIDE - 상단 스크롤 슬라이드 배너 */
 		var submain_slide = new Swiper('.dp_submain .swiper-container', {
 			slidesPerView: 4,
 			spaceBetween: 20,
+			spped:1000,
+			watchOverflow:true,
 			freeMode:true,
+			autoplay: {
+				delay: 3000,
+				disableOnInteraction: false,
+			},
 			scrollbar: {
 				el: '.dp_submain .swiper-scrollbar',
 				hide: false,
@@ -212,6 +219,13 @@
 				//     delay: 3000,
 				//     disableOnInteraction:false,
 				// },
+				a11y: {
+					enabled: true,
+					notificationClass: 'swiper-notification',
+					prevSlideMessage: '이전 슬라이드',
+					nextSlideMessage: '다음 슬라이드',
+					paginationBulletMessage: '슬라이드 {{index}}로 이동',
+				},
 				navigation: {
 					nextEl: '.dp .md_item .swiper-button-next',
 					prevEl: '.dp .md_item .swiper-button-prev',
@@ -235,6 +249,13 @@
 				//     delay: 3000,
 				//     disableOnInteraction:false,
 				// },
+				a11y: {
+					enabled: true,
+					notificationClass: 'swiper-notification',
+					prevSlideMessage: '이전 슬라이드',
+					nextSlideMessage: '다음 슬라이드',
+					paginationBulletMessage: '슬라이드 {{index}}로 이동',
+				},
 				navigation: {
 					nextEl: '.dp .md_item .swiper-button-next',
 					prevEl: '.dp .md_item .swiper-button-prev',

+ 17 - 0
src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html

@@ -717,6 +717,8 @@
 			});
 
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
+				$("#searchGoodsForm input:hidden[name=unisex]").remove();
+				$("#searchGoodsForm input:hidden[name=newGoods]").remove();
 				var historyData = sessionStorage.getItem(document.location.href);
 				// console.log('historyData>>'+historyData);
 				if(historyData!=null){
@@ -740,6 +742,21 @@
 				if(typeof historyData.totalCount!='undefined' && historyData.totalCount!=''){
 					$("#totCntId").text(historyData.totalCount);
 				}
+				if(gagajf.isNull($("#searchGoodsForm").find("input[name=unisex]").val())){
+					$("#unisex").attr('onclick','fnFilterOption(this,\'on\');');
+					$("#unisex").attr('checked', false);
+				}else{
+					$("#unisex").attr('onclick','fnFilterOption(this,\'off\');');
+					$("#unisex").attr('checked', true);
+				}
+
+				if(gagajf.isNull($("#searchGoodsForm").find("input[name=newGoods]").val())){
+					$("#newGoods").attr('onclick','fnFilterOption(this,\'on\');');
+					$("#newGoods").attr('checked', false);
+				}else{
+					$("#newGoods").attr('onclick','fnFilterOption(this,\'off\');');
+					$("#newGoods").attr('checked', true);
+				}
 				if(!gagajf.isNull($("#searchGoodsForm").find('input[name=priceArr]').val())){
 					let tempPrice = $("#searchGoodsForm").find('input[name=priceArr]').val();
 					let temp  = tempPrice.split(",");

+ 1 - 1
src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html

@@ -198,7 +198,7 @@
 		<!-- //검색결과 입력 후 -->
 
 		<!-- 검색결과 없을때 노출 -->
-		<div class="empty_box">
+		<div class="empty_box" style="display: none">
 		<div class="">
 			<div class="nodata">
 				<p>

+ 25 - 23
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -40,34 +40,36 @@
 			<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
 		<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 			</th:block>
-		<!-- 공통상품베너 -->
-		<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
-		<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
-		<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
-			<div style="height:100px"></div><!-- 여백용 html -->
-			<a th:href="${goodsBanner.strVar1}" target="_blank">
-			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
-			</a>
-		</th:block>
-		<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
-			<div style="height:100px"></div><!-- 여백용 html -->
-			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
-		</th:block>
-		</th:block>
-		</th:block>
-		<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+		<!-- 상세동영상 -->
+		<th:block th:if="${goodsDescVideoList != null and !goodsDescVideoList.empty}">
+		<th:block th:each="goodsVideo, status : ${goodsDescVideoList}">
+		<div style="height:100px"></div><!-- 여백용 html -->
 		<div class="movblock">
-			<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-			<div style="height:100px"></div><!-- 여백용 html -->
-			<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+			<th:block th:if="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
+			<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 			</th:block>
-			<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
-			<div style="height:100px"></div><!-- 여백용 html -->
-			<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
+			<th:block th:unless="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
+			<iframe th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+			<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey+'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 			</th:block>
 		</div>
+		</th:block>	
+		</th:block>
+		<!-- 상세 베너 -->
+		<th:block th:if="${goodsDescBannerList != null and !goodsDescBannerList.empty}">
+		<th:block th:each="goodsBanner, status : ${goodsDescBannerList}" >
+		<th:block th:if="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}" th:with="target=${(goodsBanner.linkTarget == 'N')? '_blank': '_self'}">
+			 <div style="height:100px"></div><!-- 여백용 html -->
+			<a th:href="${goodsBanner.linkUrl}" th:target="${target}">
+			<img th:src="${imgUrl+goodsBanner.imgPath}" alt="">
+			</a>
+		</th:block>
+		<th:block th:unless="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}">
+		 	<div style="height:100px"></div><!-- 여백용 html -->
+			<img th:src="${imgUrl+goodsBanner.imgPath}" alt="">
+		</th:block>
+		</th:block>
 		</th:block>
-		
 		
 		<!-- 관리자 에디터입력 내용 노출  상단 html -->
 		<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >

+ 25 - 19
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -686,35 +686,41 @@
 				<!-- //상품설명 노출 -->
 				<!-- 관리자 에디터입력 내용   공지 html -->
 				<div class="mdhtml_box">
-						<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
+					<!-- 공지 -->
+					<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
 					<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
+					</th:block>
+					<!-- 상세동영상 -->
+					<th:block th:if="${goodsDescVideoList != null and !goodsDescVideoList.empty}">
+					<th:block th:each="goodsVideo, status : ${goodsDescVideoList}">
+					<div style="height:100px"></div><!-- 여백용 html -->
+					<div class="movblock">
+						<th:block th:if="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
+						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+						</th:block>
+						<th:block th:unless="${goodsVideo.goodsContentsVideoGubun == 'Y'}">
+						<iframe width="840" height="472" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey+'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 						</th:block>
-					<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
-					<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
-					<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					</div>
+					</th:block>	
+					</th:block>
+					<!-- 상세 베너 -->
+					<th:block th:if="${goodsDescBannerList != null and !goodsDescBannerList.empty}">
+					<th:block th:each="goodsBanner, status : ${goodsDescBannerList}" >
+					<th:block th:if="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}" th:with="target=${(goodsBanner.linkTarget == 'N')? '_blank': '_self'}">
 						 <div style="height:100px"></div><!-- 여백용 html -->
-						<a th:href="${goodsBanner.strVar1}" target="_blank">
-						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+						<a th:href="${goodsBanner.linkUrl}" th:target="${target}">
+						<img th:src="${imgUrl+goodsBanner.imgPath}" alt="">
 						</a>
 					</th:block>
-					<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<th:block th:unless="${goodsBanner.linkUrl != null and  not #strings.equals(goodsBanner.linkUrl, '#')}">
 					 	<div style="height:100px"></div><!-- 여백용 html -->
-						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+						<img th:src="${imgUrl+goodsBanner.imgPath}" alt="">
 					</th:block>
 					</th:block>
 					</th:block>
 					<!-- 관리자 에디터입력 내용   공지 html -->
-					<th:block th:each="goodsVideo, status : ${goodsVideoList}">
-					<div class="movblock">
-					 	<div style="height:100px"></div><!-- 여백용 html -->
-						<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-						</th:block>
-						<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
-						<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
-						</th:block>
-					</div>
-					</th:block>
+					
 					<!-- 공통상품베너 -->
 					
 					

+ 3 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -49,19 +49,19 @@
 									<li>
 										<div>
 											<p class="txt">보유쿠폰 / 만료예정</p>
-											<p class="count"><span id="couponCnt" th:text="${couponCnt}"></span>장 / <span id="expiredSoonCouponCnt" th:text="|${expiredSoonCouponCnt}|"></span>장</p>
+											<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON)"><p class="count"><span id="couponCnt" th:text="${couponCnt}"></span>장 / <span id="expiredSoonCouponCnt" th:text="|${expiredSoonCouponCnt}|"></span>장</p></a>
 										</div>
 									</li>
 									<li>
 										<div>
 											<p class="txt">STYLE 포인트</p>
-											<p class="count"><span th:text="${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')}"></span>P</p>
+											<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_POINT)"><p class="count"><span th:text="${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')}"></span>P</p></a>
 										</div>
 									</li>
 									<li>
 										<div>
 											<p class="txt">상품권</p>
-											<p class="count"><span th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></span>원</p>
+											<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_GIFTCARD)"><p class="count"><span th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></span>원</p></a>
 										</div>
 									</li>
 								</ul>

+ 16 - 16
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -164,7 +164,7 @@
                             <div class="swiper-slide">                   
                                 <a th:onclick="cfnGoToPlanDetail([[${PlanData.planSq}]])">
                                     <div class="thumb">
-                                        <img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg}" alt="${PlanData.planNm}">
+                                        <img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg}" th:alt="${PlanData.planNm}">
                                     </div>
                                     <div class="txt">
                                         <p class="tit" th:text="${PlanData.planNm}"></p>
@@ -858,13 +858,10 @@ var fnJoinConfirm = function () {
 
 	if (!cfCheckLogin()) {
 		// mcxDialog.alert("로그인 후 참여 가능합니다.");
-		var btn = ["확인"];
-		mcxDialog.confirmC("로그인 후 참여 가능합니다.", { //내용
-			btn: btn,
-			btnClick: function (index) {
-				if (index == 1) { //button1 일때 처리문
-					location.href = "/signin";
-				}
+		mcxDialog.alertC("로그인 후 참여 가능합니다.", { //내용
+			sureBtnText: "로그인",  //버튼명
+			sureBtnClick: function(){
+				location.href="/signin";
 			}
 		});
 		return false;
@@ -878,7 +875,13 @@ var fnJoinConfirm = function () {
 var fnTextConfirm = function() {
 	//로그인 확인
 	if (!cfCheckLogin()) {
-		mcxDialog.alert("로그인 후 참여 가능합니다.");
+		// mcxDialog.alert("로그인 후 참여 가능합니다.");
+		mcxDialog.alertC("로그인 후 참여 가능합니다.", { //내용
+			sureBtnText: "로그인",  //버튼명
+			sureBtnClick: function(){
+				location.href="/signin";
+			}
+		});
 		$("#replyText").val('');
 		return false;
 	}
@@ -1217,13 +1220,10 @@ $(document).ready( function() {
 	$('.imgUpload .fileAdd').click(function(){
 		if (!cfCheckLogin()) {
 			// mcxDialog.alert("로그인 후 참여 가능합니다.");
-			var btn = ["확인"];
-			mcxDialog.confirmC("로그인 후 참여 가능합니다.", { //내용
-				btn: btn,
-				btnClick: function(index){
-					if (index == 1) { //button1 일때 처리문
-						location.href="/signin";
-					}
+			mcxDialog.alertC("로그인 후 참여 가능합니다.", { //내용
+				sureBtnText: "로그인",  //버튼명
+				sureBtnClick: function(){
+					location.href="/signin";
 				}
 			});
 			$("#replyText").val('');

+ 5 - 8
src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html

@@ -209,7 +209,7 @@
                             <div class="swiper-slide">                   
                                 <a th:onclick="cfnGoToPlanDetail([[${PlanData.planSq}]])">
                                     <div class="thumb">
-                                        <img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg}" alt="${PlanData.planNm}">
+                                        <img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg}" th:alt="${PlanData.planNm}">
                                     </div>
                                     <div class="txt">
                                         <p class="tit" th:text="${PlanData.planNm}"></p>
@@ -330,13 +330,10 @@ var fnAttendEntry = function () {
 	if (!cfCheckLogin()) {
 		// mcxDialog.alert("로그인 후 참여 가능합니다.");
 		//
-		var btn = ["확인"];
-		mcxDialog.confirmC("로그인 후 참여 가능합니다.", { //내용
-			btn: btn,
-			btnClick: function(index){
-				if (index == 1) { //button1 일때 처리문
-					location.href="/signin";
-				}
+		mcxDialog.alertC("로그인 후 참여 가능합니다.", { //내용
+			sureBtnText: "로그인",  //버튼명
+			sureBtnClick: function(){
+				location.href="/signin";
 			}
 		});
 		return false;

+ 7 - 2
src/main/webapp/biz/goods.js

@@ -514,7 +514,7 @@ var fnFilterSet = function (searchId, sizeGb, appGb){
 		});
 		if(searchId=='benefit'){
 			if ($('#newGoods').is(":checked")) {
-				tag = '<input type="hidden" name="'+searchId+'Arr" value="40:신상"/>\n';
+				// tag = '<input type="hidden" name="'+searchId+'Arr" value="40:신상"/>\n';
 				$("#searchGoodsForm").append(tag);
 			}
 		}
@@ -602,7 +602,12 @@ var fnSetFilterHtml = function (gubun, staus, mobGb){
 		dcRateVal += ',' + $("#filterForm input[name=hDcRateTo]").val();
 	}
 	filterHtml += '<input type="hidden" name="dcRateArr" value="'+dcRateVal+'"/>\n';
-
+	if($('#filterForm').find("input:checkbox[id='unisex']").is(":checked") == true){
+		filterHtml += '<input type="hidden" name="unisex" value="G007_Z"/>\n';
+	}
+	if($('#filterForm').find("input:checkbox[id='newGoods']").is(":checked") == true){
+		filterHtml += '<input type="hidden" name="newGoods" value="40"/>\n';
+	}
 	// console.log('filterHtml>>'+filterHtml);
 	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
 }

+ 15 - 4
src/main/webapp/biz/search.js

@@ -208,21 +208,25 @@ var fnFilterOption = function (obj, stat){
 	if(thisId == 'unisex'){
 		if(stat=='on'){
 			$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+			$(obj).attr('checked', true);
 			tag += '<input type="hidden" name="unisex" value="G007_Z"/>\n';
 			$("#searchGoodsForm").append(tag);
 		}else{
 			$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+			$(obj).attr('checked', false);
 			$("#searchGoodsForm input:hidden[name=unisex]").remove();
 		}
 	}else{
 		if(stat=='on'){
 			$(obj).attr('onclick','fnFilterOption(this,\'off\');');
-			// tag += '<input type="hidden" name="newGoods" value="40"/>\n';
-			tag += '<input type="hidden" name="benefitArr" value="40:신상"/>\n';
+			$(obj).attr('checked', true);
+			tag += '<input type="hidden" name="newGoods" value="40"/>\n';
+			// tag += '<input type="hidden" name="benefitArr" value="40:신상"/>\n';
 			$("#searchGoodsForm").append(tag);
 		}else{
 			$(obj).attr('onclick','fnFilterOption(this,\'on\');');
-			// $("#searchGoodsForm input:hidden[name=newGoods]").remove();
+			$(obj).attr('checked', false);
+			$("#searchGoodsForm input:hidden[name=newGoods]").remove();
 			$("#searchGoodsForm input:hidden[name=benefitArr]").each(function(){
 				if($(this).val() == "40:신상"){
 					$(this).remove();
@@ -230,6 +234,7 @@ var fnFilterOption = function (obj, stat){
 			});
 		}
 	}
+	fnSetFilterHtml();
 	fnCategoryGoodsInfiniteScrollInit();
 	fnSearchGoodsListSearch();
 }
@@ -312,7 +317,7 @@ var fnFilterSet = function (searchId, sizeGb, appGb){
 		});
 		if(searchId=='benefit'){
 			if ($('#newGoods').is(":checked")) {
-				tag = '<input type="hidden" name="'+searchId+'Arr" value="40:신상"/>\n';
+				// tag = '<input type="hidden" name="'+searchId+'Arr" value="40:신상"/>\n';
 				$("#searchGoodsForm").append(tag);
 			}
 		}
@@ -413,6 +418,12 @@ var fnSetFilterHtml = function (gubun, staus, mobGb){
 	if(!gagajf.isNull($("#searchGoodsForm").find('input[name=cate5No]').val())){
 		filterHtml += '<input type="hidden" name="cate1No" value="'+$("#searchGoodsForm").find('input[name=cate5No]').val()+'"/>\n';
 	}
+	if($('#filterForm').find("input:checkbox[id='unisex']").is(":checked") == true){
+		filterHtml += '<input type="hidden" name="unisex" value="G007_Z"/>\n';
+	}
+	if($('#filterForm').find("input:checkbox[id='newGoods']").is(":checked") == true){
+		filterHtml += '<input type="hidden" name="newGoods" value="40"/>\n';
+	}
 
 	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
 }

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

@@ -685,11 +685,11 @@ header #htopSub{border-bottom: 0 solid #e5e5e5;box-sizing: border-box;}
 header #htopSubs{border-bottom: 0 solid #000000;box-sizing: border-box;}
 header #htopSub.my_main {background-color: #f5f5f5; border-bottom: 0.1rem solid rgba(0, 0, 0, 0.0)!important;}
 header .htop h1 {display: inline-block;position: relative;width:auto;max-width: calc(100% - 14.5rem);height: 5.5rem;line-height: 5.5rem;vertical-align: middle;margin: 0 0 0 2.0rem;font-size: 1.8rem;color: #222;}
-header .htop h1#htopTitle {display: inline-block;position: relative;max-width: 18rem;width: auto;height: 100%;line-height: 4.5rem;vertical-align: middle;padding: 0 1.5rem 0 0rem;font-size: 1.8rem;color: #222;}
+header .htop h1#htopTitle {display: inline-block;position: relative;max-width: 18rem;width: auto;height: 100%;line-height: 5.8rem;vertical-align: middle;padding: 0 1.5rem 0 0rem;font-size: 1.8rem;color: #222;}
 header .htop h1 a {height: 100%;width: 100%;display: block;}
 header .htop h1 img {margin: 0;width: 11.5rem;height: auto;line-height: 1.6rem;vertical-align: middle;}
 header .htop h1 a p{color: #222;line-height: 5.5rem;font-size: 2.0rem;height: 5.5rem;display: inline;vertical-align: middle;display: -webkit-box;word-break: break-all;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical;overflow: hidden;}
-header .htop .btn_back {margin: 1.0rem 0 0 1.5rem;width: 3.5rem;height: 3.5rem;}
+header .htop .btn_back {margin: 1.0rem 0 0 1.5rem;width: 3.5rem;height: 3.5rem; float: left;}
 header .htop .btn_back span {display: block;width: 2.4rem;height: 2.4rem;margin: 0 auto;position: relative;}
 header .htop .btn_back span i {display: block;position: absolute;background: #222;-webkit-transition: all 0.3s ease-out;transition: all 0.3s ease-out;}
 header .htop .btn_back span i.gl1 {left: -0.2rem;top: 0.7rem;width: 1.2rem;height: 0.2rem;-webkit-transform: rotate(-45deg);transform: rotate(-45deg);}
@@ -722,7 +722,7 @@ header .btn_gnb span i {display: block;position: absolute;left: 0;width:100%;hei
 /* header .btn_gnb.on span i.gl1 {transform: rotate(45deg);-webkit-transform: rotate(45deg);} */
 /* header .btn_gnb.on span i.gl2 {transform: rotate(-45deg);-webkit-transform: rotate(-45deg);} */
 
-header .subs .btn_gnbs {position: absolute;top: 0;right: -2.0rem;width: 3.5rem;height: 4.5rem;z-index: 10;}
+header .subs .btn_gnbs {position: absolute;top: 0.8rem;right: -2.0rem;width: 3.5rem;height: 4rem;z-index: 10;}
 header .subs .btn_gnbs span i {display: block;position: absolute;left: 0;width: 100%;height: 100%;-webkit-transition: all 0.5s ease-out;transition: all 0.5s ease-out;}
 /* header .subs .btn_gnbs span {display: block;width: 2.4rem;height: 2.4rem;margin: 0 auto;position: relative;} */
 /* header .subs .btn_gnbs span i {display: block;position: absolute;left: 0;width: 2.4rem;height: 0.2rem;background: #222;-webkit-transition: all 0.15s ease-out;transition: all 0.15s ease-out;} */

+ 2 - 1
src/main/webapp/ux/mo/css/layout_m.css

@@ -416,7 +416,8 @@
 .itemLike.likeit::before {opacity: 1;}
 .item_prod .itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
 .item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0;overflow: hidden; background: #fff;}
-.item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0;left: 0;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);z-index: 2;}
+.item_prod .itemPic::before {content: "";display: block;position: absolute;top: 0;left: 0;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);z-index: 2;}
+/* .item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0;left: 0;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);z-index: 2;} */
 .item_prod .itemPic .pd_img {position: absolute;width: 100%;height: auto;top: 50%;left: 0;transform: translateY(-50%);}
 .item_prod .itemPic .pd_mov {position: absolute;width: 100%;height: 100%;top: 50%;left: 0;transform: translateY(-50%);z-index: 2;}
 .item_prod .itemBrand {display: inline-block; margin: 0 0.5rem 0.3rem; font-size: 1rem;font-weight: 300;color: rgb(137, 137, 137); text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:10rem;overflow:hidden;}

+ 13 - 11
src/main/webapp/ux/mo/css/style24_m.css

@@ -403,8 +403,8 @@
 .main_pick .inner_body .pick-cont .swiper-container a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
 .main_pick .inner_body .pick-cont a {position: relative;display: block;}
 .main_pick .inner_body .pick-cont a .txtWrap{position: absolute;bottom: 4rem;margin-left: 1.9rem; z-index: 1;}
-.main_pick .inner_body .pick-cont a .txtWrap p{font-size: 2.3rem;font-weight: 500;color: #fff;font-weight: 300;}
-.main_pick .inner_body .pick-cont a .txtWrap span{font-size: 1.2rem;font-weight: 100;color: #fff;margin-top: 0.5rem;display: block;}
+.main_pick .inner_body .pick-cont a .txtWrap p{font-size: 2.3rem;font-weight: 500;color: #fff;font-weight: 300;overflow: hidden;white-space: normal;overflow-wrap: break-word;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 2;-webkit-box-orient: vertical;}
+.main_pick .inner_body .pick-cont a .txtWrap span{font-size: 1.2rem;font-weight: 100;color: #fff;margin-top: 0.5rem;display: block;overflow: hidden;white-space: normal;overflow-wrap: break-word;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical;}
 .main_pick .inner_body .pick-cont a img{width: 100%;height: auto;}
 .main_pick .inner_body .btn_group_flex > div > button > span {display: inline-block;background: url(/images/mo/ico_btn_brand.png) no-repeat;background-size: 1.1rem 1.1rem;width: 1.1rem;height: 1.1rem;margin-left: 0.8rem;}
 
@@ -526,15 +526,15 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .hookGrp .hook_cont h4{font-size:1.4rem;font-weight:500;color:#222222;line-height:1.6rem;letter-spacing:-0.025em;}
 .hookGrp .hook_cont p {font-size:1.2rem;color:#666666;line-height:2.2rem;letter-spacing:-0.025em;}
 .hookGrp .hook_cont p em{font-size:1.2rem;font-weight:400;color:#222222;line-height:2.2rem;letter-spacing:-0.025em;}
-.hookGrp .hook_cont ol li{font-size:1.2rem;padding-left: 0.3rem;}
+.hookGrp .hook_cont ol li{font-size:1.2rem;padding-left: 0.3rem;} 
 
 
+.ps#prvc_sel {margin-bottom: 5.0rem;}
 .ps#prvc_sel h4 {font-size:1.4rem;font-weight:500;color:#222222;line-height:1.6rem;letter-spacing:-0.025em;}
 .ps#prvc_sel p {font-size:1.2rem;color:#666666;line-height:2.2rem;letter-spacing:-0.025em;}
 .ps#prvc_sel p em{font-size:1.2rem;font-weight:400;color:#222222;line-height:2.2rem;letter-spacing:-0.025em;}
-.ps#prvc_sel ol li {font-size:1.2rem;padding-left: 0.3rem;}
-.ps#prvc_sel ol li {line-height: 2.6rem;}
-.ps#prvc_sel {margin-bottom: 5.0rem;}
+.ps#prvc_sel ol li {font-size:1.2rem;padding-left: 0.3rem; line-height: 2.6rem;} 
+.ps#prvc_sel ol li a.on{font-weight: 400;}
 
 .pager {height: 100%;margin-top: 2.0rem;margin-bottom: 2.0rem;}
 .pager .pageNav {display: table;margin-left: auto;margin-right: auto;}
@@ -667,7 +667,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .survey_wrap .survey_con .btn_wrap button.btn {width: 100%; padding:1.6rem 0; font-size: 1.4rem; font-weight: 500; height:auto; } 
 
 /* ev_comment_1 */
-.dp .inner {background: #fff; padding-bottom: 0; margin-bottom:1.2rem;}
+/* .dp .inner {background: #fff; padding-bottom: 0; margin-bottom:1.2rem;} */
+.dp .inner {background: #fff; padding-bottom: 0; margin-bottom:1.2rem;margin: 0 0 -1.2rem 0;}
 .dp .inner::after {content:''; clear:none;}
 .cmt_wrap {background: #f5f5f5;}
 .cmt_wrap .cmt_write {background: #fff;}
@@ -1718,7 +1719,7 @@ main.my .my_wishlist .inner:last-child {padding-bottom: 0;}
 .my .my_wishlist .monthly_wish_wrap .date span {display:inline-block; width:7.4rem; height:2.6rem; background-color:#222; color:#fff; font-size:1.4rem; font-weight:300; text-align:center; border-radius:2rem; overflow:hidden; line-height: 2.6rem;}
 
 /* dp_submain */
-main.dp .inner:last-child {padding-bottom: 0;}
+/* main.dp .inner:last-child {padding-bottom: 0;} */
 .dp .submain_visual a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
 .dp .submain_visual img {width: 100%;}
 .dp .submain_visual .swiper-pagination-fraction {bottom: 4rem ; width:auto; left: 2rem; background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
@@ -1739,7 +1740,8 @@ main.dp .inner:last-child {padding-bottom: 0;}
 background-size:100%;}
 .dp .sub_category .more_btn.on .btn span:before {background: url('/images/mo/ico_btn_more02.png') no-repeat bottom center; background-size:100%;}
 .dp .dp_submain .new_item .dp_subtitle, .dp .dp_submain .best_item .dp_subtitle {text-align: center; margin-bottom: 2.4rem; font-size: 2rem;}
-.dp .dp_submain .new_item {padding:0 2rem; margin:0 0 -1.2rem 0;}
+/* .dp .dp_submain .new_item {padding:0 2rem; margin:0 0 -1.2rem 0;} */
+.dp .dp_submain .new_item {padding:0 2rem; /* margin: 0 0 -1.2rem 0; */}
 .dp .dp_submain .new_item .swiper-slide {width: 43.75%;}
 .dp .dp_submain .new_item .swiper-container {padding:0 2rem; margin:0 -2rem;}
 .dp .dp_submain .best_item {padding-bottom: 2rem;}
@@ -1893,7 +1895,7 @@ background-size:100%;}
 .od .fold_cont .area_overseas .form_field {margin-top: 2.4rem;}
 .od .fold_cont .area_overseas .form_field input[type="radio"] + label {margin-bottom: 1.5rem;}
 .od .fold_cont .area_overseas .form_field > div {}
-.od .fold_cont .area_overseas .info_txt {background: #fff6f2; margin-top: 0;}
+/* .od .fold_cont .area_overseas .info_txt {background: #fff6f2; margin-top: 0;} */
 .od .fold_cont .area_overseas .info_box {font-size:1.6rem;}
 .od .fold_cont .area_overseas .info_box .t_err {margin-top:0.5rem; font-size:1.1rem;}
 .od .fold_cont .area_overseas .info_box.overs1 {margin-right:0}
@@ -2595,7 +2597,7 @@ main.container .od_gift .inner:last-child {padding-bottom: 0;}
 .od_gift .tbl_wrap .tbl.tbl_request input[type="text"]::placeholder {}
 .od_gift .tbl_wrap .tbl.tbl_request .desc_txt {margin-top: 1rem;}
 
-.od_gift .info_txt {margin-top: 2.4rem; background: #f5f5f5;}
+/* .od_gift .info_txt {margin-top: 2.4rem; background: #f5f5f5;} */
 
 .part_goods .goods_section > .od_calc {margin: 1rem 0 0 0; padding:1.3rem 0 0 0; position: relative; line-height: 1; border-top: 0.1rem solid #ddd;}
 .part_goods .goods_section > .od_calc .price {top: auto; bottom: 0;}

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

@@ -807,7 +807,8 @@ content: "〉";font-size: 12px;padding-left: 8px;
 
 .itemLink {z-index:20;position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
 .itemPic {position: relative;width: 100%;margin-bottom:20px;padding-top: 150%;font-size: 0px;overflow: hidden;}
-.itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);z-index: 999;}
+.itemPic::before {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);z-index: 98;}
+/* .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);z-index: 999;} */
 .itemPic .pd_img,
 .itemPic .pd_mov {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
 .itemPic .pd_mov {z-index: 2;height: 100%;left: -83.45%;width: 267%;}

+ 2 - 2
src/main/webapp/ux/pc/css/layout.css

@@ -165,7 +165,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .common_header.br_header .depth_menu .head_category .menu ul.maintabs {border-left:0}
 .common_header.br_header .depth_menu .head_banner {background: #ffffff; width:32%;}
 .common_header.br_header .depth_menu .head_banner li { width: 33.333%;}
-.common_header.br_header .depth_menu .head_banner li img{top: 50%;left: 0px;}
+.common_header.br_header .depth_menu .head_banner li img{top: 50%;left: 0px;transform: translateY(-50%);}
 .common_header.br_header .depth_menu .head_banner li:first-child {margin-right:0;}
 .common_header.br_header .depth_menu .item_prod {width: 100%;}
 .common_header.br_header > .area {height:90px;background: inherit;}
@@ -4907,7 +4907,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemLink {display: table-cell; position: static; vertical-align: middle;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 260px; height:390px; padding:0; background: #f9f9f9;}
 	/* .modal.lookbook_item_pop .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; text-align: center;} */
-	.modal.lookbook_item_pop .itemsGrp .item_prod .itemBrand {margin:0px 0px 15px; font-size: 14px; font-weight: 300;}
+	.modal.lookbook_item_pop .itemsGrp .item_prod .itemBrand {margin:0px 0px 15px; font-size: 14px; font-weight: 300; line-height: 14px;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemName {margin:0px 0px 25px; font-size: 18px; font-weight: 300; line-height: 28px; height:56px;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemPrice {font-size: 26px; line-height: 1; font-weight: 500; margin:0;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemPrice_original {display: inline-block; margin-left:0; margin-bottom:10px; font-size: 20px; font-weight: 200;}

+ 2 - 2
src/main/webapp/ux/pc/css/main.css

@@ -375,7 +375,7 @@
 .bnnbox_crop {width:100%;}
 .bnnbox_crop::after {content:''; clear:both; display:block;}
 .bnnbox_crop > div {width: 100%;height: 230px;float: none;overflow: hidden;}
-.bnnbox_crop > div > img {width: 100%;height: auto;}
+.bnnbox_crop > div > a > img {width: 100%; height: auto; margin: 0 auto;}
 .bnnbox_crop > .bnn_half {float:left; width:50%;}
 .bnnbox_crop > .bnn_half > a {display:block; position:relative; width:100%; height:0%; padding-top:26.0918%; overflow:hidden;}
 .bnnbox_crop > .bnn_half > a img {position:absolute; left:50%; right:0; top:50%; bottom:auto; transform:translate(-50%, -50%); width:auto; height:100%;}
@@ -505,7 +505,7 @@
 .fy_nav .btn_shape div span {color:#888888; font-size:18px; font-weight:300; line-height:1;display: inline;}
 .fy_nav .btn_shape div::after {content: ''; display: inline-block; clear: both; }
 .fy_nav .btn_shape div .number { float: left; padding-right:25px; color:#222222; font-size:20px; font-weight:500;}
-.fy_nav .btn_shape div .number + span {color:#888888; font-size:18px; font-weight:300; line-height:1.2;width: 162px;display: inline-block;overflow: hidden;white-space: normal;overflow-wrap: break-word;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical;}
+.fy_nav .btn_shape div .number + span {color:#888888; font-size:18px; font-weight:300; line-height:1.2;width: 151px;display: inline-block;overflow: hidden;white-space: normal;overflow-wrap: break-word;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical;}
 .fy_nav .btn_shape + a {display:none;}
 .fy_nav .btn_shape.active {position:relative; background:#222222; border-color:rgb(245 245 245);}
 .fy_nav .btn_shape.active span {position:relative; color:#ffffff;}