Selaa lähdekoodia

전시 GNB 개발 임시 저장

gagamel 5 vuotta sitten
vanhempi
commit
834905a259

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

@@ -1,6 +1,17 @@
 package com.style24.front.biz.dao;
 
+import java.util.Collection;
+
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.BrandGroup;
+import com.style24.persistence.domain.Cate1;
+import com.style24.persistence.domain.Cate2;
+import com.style24.persistence.domain.Cate3;
+import com.style24.persistence.domain.Cate4;
+import com.style24.persistence.domain.Cate4Srch;
+import com.style24.persistence.domain.Cate5;
+import com.style24.persistence.domain.Contents;
+import com.style24.persistence.domain.GnbTab;
 
 /**
  * 전시 Dao
@@ -11,4 +22,76 @@ import com.style24.core.support.annotation.ShopDs;
 @ShopDs
 public interface TsfDisplayDao {
 
+	/**
+	 * GNB탭 목록
+	 * @param gnbTab - GNB탭 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<GnbTab> getGnbTabList(GnbTab gnbTab);
+
+	/**
+	 * 컨텐츠 목록
+	 * @param contents - 컨텐츠 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<Contents> getContentsList(Contents contents);
+
+	/**
+	 * GNB 브랜드그룹 목록
+	 * @param contents - 컨텐츠 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<BrandGroup> getGnbBrandGroupList(Contents contents);
+
+	/**
+	 * 카테고리1 목록
+	 * @param cate - 카테고리 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<Cate1> getCategory1List(Cate4Srch cate);
+
+	/**
+	 * 카테고리2 목록
+	 * @param cate - 카테고리 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<Cate2> getCategory2List(Cate4Srch cate);
+
+	/**
+	 * 카테고리3 목록
+	 * @param cate - 카테고리 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<Cate3> getCategory3List(Cate4Srch cate);
+
+	/**
+	 * 카테고리4 목록
+	 * @param cate - 카테고리 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<Cate4> getCategory4List(Cate4Srch cate);
+
+	/**
+	 * 카테고리5 목록
+	 * @param cate - 카테고리 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	Collection<Cate5> getCategory5List(Cate4Srch cate);
+
 }

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

@@ -1,9 +1,22 @@
 package com.style24.front.biz.service;
 
+import java.util.ArrayList;
+import java.util.Collection;
+
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
+import com.style24.core.support.env.TscConstants;
 import com.style24.front.biz.dao.TsfDisplayDao;
+import com.style24.front.support.env.TsfConstants;
+import com.style24.persistence.domain.BrandGroup;
+import com.style24.persistence.domain.Cate1;
+import com.style24.persistence.domain.Cate2;
+import com.style24.persistence.domain.Cate3;
+import com.style24.persistence.domain.Cate4;
+import com.style24.persistence.domain.Cate4Srch;
+import com.style24.persistence.domain.Contents;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -20,4 +33,150 @@ public class TsfDisplayService {
 	@Autowired
 	private TsfDisplayDao displayDao;
 
+	/**
+	 * 컨텐츠 목록
+	 * @param contents - 컨텐츠 정보
+	 * @return
+	 * @author gagamel
+	 * @date 2021. 3. 11
+	 */
+	public Collection<Contents> getContentsList(Contents contents) {
+		return displayDao.getContentsList(contents);
+	}
+
+	/**
+	 * GNB 브랜드그룹 목록
+	 * @param contents - 컨텐츠 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	public Collection<BrandGroup> getGnbBrandGroupList(Contents contents) {
+		return displayDao.getGnbBrandGroupList(contents);
+	}
+
+//	/**
+//	 * GNB 탭 목록
+//	 * @param gnbTab - GNB탭 정보
+//	 * @return
+//	 * @author gagamel
+//	 * @date 2021. 3. 11
+//	 */
+//	public Collection<Contents> getGnbTapList(GnbTab gnbTab) {
+//		this.getGnbBrandGroupList(contents);
+//
+//		// GNB 탭 목록
+//		Collection<GnbTab> tapList = displayDao.getGnbTabList(gnbTab);
+//
+//		if (tapList != null && !tapList.isEmpty()) {
+//			for (GnbTab tap : tapList) {
+//				if (tap.getContentsType().equals("B")) { // 컨텐츠유형:브랜드
+//					// 캐주얼 브랜드그룹 목록
+//					contents.setCasualBrandGroupList(displayDao.getBrandGroupList(tap.getStrVar2()));
+//
+//					// 골프 브랜드그룹 목록
+//					contents.setGolfBrandGroupList(displayDao.getBrandGroupList(tap.getStrVar3()));
+//
+//					// 키즈 브랜드그룹 목록
+//					contents.setKidsBrandGroupList(displayDao.getBrandGroupList(tap.getStrVar4()));
+//				} else if (tap.getContentsType().equals("C")) { // 컨텐츠유형:카테고리
+//					contents.setCateList(this.getCategoryList(TsfConstants.CateGb.BYITEM.value(), Integer.parseInt(tap.getStrVar2())));
+////					contents.
+//				}
+//			}
+//		}
+//
+//		return tapList;
+//	}
+
+	/**
+	 * 카테고리 목록
+	 * @param cateGb - 카테고리구분
+	 * @param cate1No - 카테고리1번호
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	@Cacheable(value = "cate", key = "'cateList-'.concat(#cateGb).concat(#cate1No)")
+	public Collection<Cate1> getCategoryList(String cateGb, Integer cate1No) {
+		Cate4Srch cate = new Cate4Srch();
+		cate.setSiteCd(TscConstants.Site.STYLE24.value()); // 사이트코드
+		cate.setCateGb(cateGb); // 카테고리구분
+		cate.setCateType(TsfConstants.CateType.GOODS.value()); // 상품분류카테고리
+		cate.setCate1No(cate1No);
+
+		return this.getAllCategoryList(cate);
+	}
+
+	/**
+	 * 전체 카테고리 목록
+	 * @param cate - 카테고리 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 11
+	 */
+	public Collection<Cate1> getAllCategoryList(Cate4Srch cate) {
+		Collection<Cate1> fullCateList = new ArrayList<>();
+
+		// 카테고리1 목록
+		Collection<Cate1> cate1List = displayDao.getCategory1List(cate);
+
+		if (cate1List != null && !cate1List.isEmpty()) {
+			for (Cate1 cate1 : cate1List) {
+				if (cate1.getLeafYn().equals("N")) {
+					cate.setCate1No(cate1.getCate1No());
+
+					// 카테고리2 목록
+					Collection<Cate2> cate2List = displayDao.getCategory2List(cate);
+
+					if (cate2List != null && !cate2List.isEmpty()) {
+						for (Cate2 cate2 : cate2List) {
+							if (cate2.getLeafYn().equals("N")) {
+								cate.setCate2No(cate2.getCate2No());
+
+								// 카테고리3 목록
+								Collection<Cate3> cate3List = displayDao.getCategory3List(cate);
+
+								if (cate3List != null && !cate3List.isEmpty()) {
+									for (Cate3 cate3 : cate3List) {
+										if (cate3.getLeafYn().equals("N")) {
+											cate.setCate3No(cate3.getCate3No());
+
+											// 카테고리4 목록
+											Collection<Cate4> cate4List = displayDao.getCategory4List(cate);
+
+											if (cate4List != null && !cate4List.isEmpty()) {
+												for (Cate4 cate4 : cate4List) {
+													if (cate4.getLeafYn().equals("N")) {
+														cate.setCate4No(cate4.getCate4No());
+
+														// 카테고리5 목록 담기
+														cate4.setCate5List(displayDao.getCategory5List(cate));
+													}
+												}
+
+												// 카테고리4 목록 담기
+												cate3.setCate4List(cate4List);
+											}
+										}
+									}
+
+									// 카테고리3 목록 담기
+									cate2.setCate3List(cate3List);
+								}
+							}
+						}
+
+						// 카테고리2 목록 담기
+						cate1.setCate2List(cate2List);
+					}
+				}
+
+				fullCateList.add(cate1);
+			}
+		}
+
+		return fullCateList;
+	}
+
 }

+ 33 - 0
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -48,4 +48,37 @@ public class TsfDisplayController extends TsfBaseController {
 		return mav;
 	}
 
+//	/**
+//	 * GNB 탭 목록
+//	 * @param contents - 컨텐츠 정보
+//	 * @return
+//	 * @throws Exception
+//	 * @author gagamel
+//	 * @since 2020. 3. 11
+//	 */
+//	@GetMapping("/gnb/tap/list")
+//	@ResponseBody
+//	public Collection<Contents> getGnbTapList(Contents contents) {
+//		contents.setContentsLoc("STAB001");
+//
+//		// GNB 브랜드그룹 목록
+//		displayService.getGnbBrandGroupList(contents);
+//
+//		return displayService.getGnbTapList(contents);
+//	}
+
+//	/**
+//	 * 전체 카테고리 목록
+//	 * @return
+//	 * @throws Exception
+//	 * @author gagamel
+//	 * @since 2020. 2. 7
+//	 */
+//	@GetMapping("/all/cate/list")
+//	@ResponseBody
+//	public Collection<Cate4Srch> getAllCategoryList() {
+//		String soldoutGoodsDisplayYn = policyService.getSoldoutGoodsDisplayYn(WfoConstants.SITE_CD);
+//		return displayService.getAllCategoryList(WfoConstants.CATE_GB.BYITEM.value(), soldoutGoodsDisplayYn);
+//	}
+
 }

+ 30 - 0
src/main/java/com/style24/front/support/env/TsfConstants.java

@@ -22,6 +22,36 @@ public class TsfConstants {
 	// 로그인블락실패건수
 	public static final int LOGIN_BLOCK_FAIL_CNT = 10;
 
+	// 카테고리구분
+	public enum CateGb {
+		BYITEM("G032_101"), BYBRAND("G032_102"), BYOUTLET("G032_103");
+
+		private String value;
+
+		private CateGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+	// 카테고리유형
+	public enum CateType {
+		GOODS("G031_10"), CONTENTS("G031_20");
+
+		private String value;
+
+		private CateType(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
 //	// 카테고리구분
 //	public enum CATE_GB {
 //		BYITEM("101"), BYBRAND("102"), BYOUTLET("103");

+ 28 - 0
src/main/java/com/style24/persistence/domain/BrandGroup.java

@@ -0,0 +1,28 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * 컨텐츠 Domain
+ * 
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+@Builder
+public class BrandGroup extends TscBaseDomain {
+
+	private String title;			// 브랜드그룹타이틀
+	private Integer brandGroupNo;	// 브랜드그룹번호
+	private String brandGroupEnm;	// 브랜드그룹영문명
+	private String brandGroupKnm;	// 브랜드그룹한글명
+	private String brandGroupNm;	// 전시브랜드그룹명
+	private String logoFileNm;		// 로고파일명
+	private int dispOrd;			// 표시순서
+	private String rgbCd;			// RGB코드(front 브랜드메인 GNB 색상)
+
+}

+ 37 - 0
src/main/java/com/style24/persistence/domain/Cate1.java

@@ -0,0 +1,37 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 카테고리1 Domain
+ *
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+public class Cate1 extends TscBaseDomain {
+
+	private Integer cate1No;
+	private String cate1Nm;
+	private String siteCd;
+	private String cateGb;
+	private String cateType;
+	private String leafYn;
+	private int dispOrd;
+	private String formalGb;
+	private String contentsLoc;
+
+	private String soldoutGoodsDispYn;	// 품절상품전시여부
+
+	// 카테고리2 목록
+	private Collection<Cate2> cate2List;
+
+	// 카테고리1의 배너 목록
+	private Collection<Contents> bannerList;
+
+}

+ 34 - 0
src/main/java/com/style24/persistence/domain/Cate2.java

@@ -0,0 +1,34 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 카테고리2 Domain
+ *
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+public class Cate2 extends TscBaseDomain {
+
+	private Integer cate2No;
+	private String cate2Nm;
+	private String siteCd;
+	private String cateGb;
+	private Integer cate1No;
+	private String cateType;
+	private String leafYn;
+	private int dispOrd;
+	private String formalGb;
+	private String contentsLoc;
+
+	private String soldoutGoodsDispYn;	// 품절상품전시여부
+
+	private Collection<Cate3> cate3List;
+
+}

+ 35 - 0
src/main/java/com/style24/persistence/domain/Cate3.java

@@ -0,0 +1,35 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 카테고리3 Domain
+ *
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+public class Cate3 extends TscBaseDomain {
+
+	private Integer cate3No;
+	private String cate3Nm;
+	private String siteCd;
+	private String cateGb;
+	private Integer cate1No;
+	private Integer cate2No;
+	private String cateType;
+	private String leafYn;
+	private int dispOrd;
+	private String formalGb;
+	private String contentsLoc;
+
+	private String soldoutGoodsDispYn;	// 품절상품전시여부
+
+	private Collection<Cate4> cate4List;
+
+}

+ 36 - 0
src/main/java/com/style24/persistence/domain/Cate4.java

@@ -0,0 +1,36 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 카테고리4 Domain
+ *
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+public class Cate4 extends TscBaseDomain {
+
+	private Integer cate4No;
+	private String cate4Nm;
+	private String siteCd;
+	private String cateGb;
+	private Integer cate1No;
+	private Integer cate2No;
+	private Integer cate3No;
+	private String cateType;
+	private String leafYn;
+	private int dispOrd;
+	private String formalGb;
+	private String contentsLoc;
+
+	private String soldoutGoodsDispYn;	// 품절상품전시여부
+
+	private Collection<Cate5> cate5List;
+
+}

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

@@ -35,4 +35,6 @@ public class Cate4Srch extends TscBaseDomain {
 	private String formalGb;
 	private String contentsLoc;
 
+	private Integer brandGroupNo;	// 브랜드그룹번호
+
 }

+ 33 - 0
src/main/java/com/style24/persistence/domain/Cate5.java

@@ -0,0 +1,33 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 카테고리5 Domain
+ *
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+public class Cate5 extends TscBaseDomain {
+
+	private Integer cate5No;
+	private String cate5Nm;
+	private String siteCd;
+	private String cateGb;
+	private Integer cate1No;
+	private Integer cate2No;
+	private Integer cate3No;
+	private Integer cate4No;
+	private String cateType;
+	private String leafYn;
+	private int dispOrd;
+	private String formalGb;
+	private String contentsLoc;
+
+	private String soldoutGoodsDispYn;	// 품절상품전시여부
+
+}

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

@@ -0,0 +1,67 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * 컨텐츠 Domain
+ * 
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+@Builder
+public class Contents extends TscBaseDomain {
+
+	private Integer preContentsSq;	// 컨텐츠미리보기일련번호
+	private Integer contentsSq;		// 컨텐츠일련번호
+	private Integer cateNo;			// 카테고리번호
+	private String contentsLoc;		// 컨텐츠위치
+	private String contentsType;	// 컨텐츠유형
+	private String dispStdt;		// 전시시작일시
+	private String dispEddt;		// 전시종료일시
+	private int dispOrd;			// 표시순서
+	private String imgPath1;		// 이미지경로1
+	private String imgPath2;		// 이미지경로2
+	private String imgPath3;		// 이미지경로3
+	private String imgPath4;		// 이미지경로4
+	private String imgPath5;		// 이미지경로5
+	private String imgPath6;		// 이미지경로6
+	private String imgPath7;		// 이미지경로7
+	private String imgPath8;		// 이미지경로8
+	private String strVar1;			// 링크필드1
+	private String strVar2;			// 링크필드2
+	private String strVar3;			// 링크필드3
+	private String strVar4;			// 링크필드4
+	private String strVar5;			// 링크필드5
+	private String strVar6;			// 링크필드6
+	private String strVar7;			// 링크필드7
+	private String strVar8;			// 링크필드8
+	private String strTitle1;		// 제목필드1
+	private String strTitle2;		// 제목필드2
+	private String strTitle3;		// 제목필드3
+	private String strTitle4;		// 제목필드4
+	private String subText1;		// 서브텍스트1
+	private String subText2;		// 서브텍스트2
+	private String subText3;		// 서브텍스트3
+	private String subText4;		// 서브텍스트4
+	private String brandGroupNo;	// 브랜드그룹번호
+	private String brandGroupImg;	// 브랜드그룹이미지경로
+	private String mdTitle;			// MD타이틀
+
+	private String viewDt;			// 미리보기일시
+	private String preview;			// 미리보기여부
+	private int maxRow;				// 최대ROW
+
+	private Collection<BrandGroup> casualBrandGroupList;	// 캐주얼브랜드그룹목록
+	private Collection<BrandGroup> golfBrandGroupList;		// 골프브랜드그룹목록
+	private Collection<BrandGroup> kidsBrandGroupList;		// 키즈브랜드그룹목록
+
+	private Collection<Cate1> cateList;	// 카테고리목록
+
+}

+ 42 - 0
src/main/java/com/style24/persistence/domain/GnbTab.java

@@ -0,0 +1,42 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * 컨텐츠 Domain
+ * 
+ * @author gagamel
+ * @since 2021. 3. 11
+ */
+@SuppressWarnings("serial")
+@Data
+@Builder
+public class GnbTab extends TscBaseDomain {
+
+	private Integer preGtabSq;		// GNB탭미리보기일련번호
+	private Integer gtabSq;			// GNB탭일련번호
+	private String gtabGb;			// GNB탭구분(C:공통GNB, B:브랜드GNB)
+	private String gtabNm;			// GNB탭명
+	private String contentsType;	// 컨텐츠유형(C:카테고리, O:아울렛, L:링크)
+	private Integer cate1No;		// 카테고리1번호
+	private Integer brandGroupNo;	// 브랜드그룹번호
+	private String linkUrl;			// 링크URL
+	private String dispStdt;		// 전시시작일시
+	private String dispEddt;		// 전시종료일시
+	private int dispOrd;			// 표시순서
+
+	private String viewDt;			// 미리보기일시
+	private String preview;			// 미리보기여부
+
+	private Collection<BrandGroup> casualBrandGroupList;	// 캐주얼브랜드그룹목록
+	private Collection<BrandGroup> golfBrandGroupList;		// 골프브랜드그룹목록
+	private Collection<BrandGroup> kidsBrandGroupList;		// 키즈브랜드그룹목록
+
+	private Collection<Cate1> cateList;	// 카테고리목록
+
+}

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

@@ -14,6 +14,375 @@
 		WHERE  NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
 	</sql>
 	
+	<!-- GNB탭 목록 -->
+	<select id="getGnbTabList" parameterType="GnbTab" resultType="GnbTab">
+		/* TsfDisplay.getGnbTabList */
+		SELECT GTAB_GB                                            /*GNB탭구분*/
+		     , GTAB_NM                                            /*GNB탭명*/
+		     , CONTENTS_TYPE                                      /*컨텐츠유형*/
+		     , CATE1_NO                                           /*카테고리1번호*/
+		     , BRAND_GROUP_NO                                     /*브랜드그룹번호*/
+		     , LINK_URL                                           /*링크URL*/
+		     , DATE_FORMAT(DISP_STDT,'%Y%m%d%H%i%S') AS DISP_STDT /*전시시작일시*/
+		     , DATE_FORMAT(DISP_EDDT,'%Y%m%d%H%i%S') AS DISP_EDDT /*전시종료일시*/
+		     , DISP_ORD                                           /*표시순서*/
+		<choose>
+		    <when test='preview != null and preview == "Y"'>
+		     , PRE_GTAB_SQ                           AS GTAB_SQ   /*GNB탭일련번호*/
+		FROM   TB_GNB_TAB_PREVIEW A
+		    </when>
+		    <otherwise>
+		     , GTAB_SQ                                            /*GNB탭일련번호*/
+		FROM   TB_GNB_TAB A
+		    </otherwise>
+		</choose>
+		WHERE  GTAB_GB = #{gtabGb}
+		AND    USE_YN = 'Y'
+		<choose>
+		    <when test='preview != null and preview == "Y"'>
+		AND    DISP_STDT <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		AND    DISP_EDDT <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		ORDER  BY DISP_ORD, PRE_GTAB_SQ
+		    </when>
+		    <otherwise>
+		AND    DISP_STDT <![CDATA[<=]]> NOW()
+		AND    DISP_EDDT <![CDATA[>=]]> NOW()
+		ORDER  BY DISP_ORD, GTAB_SQ
+		    </otherwise>
+		</choose>
+	</select>
 	
+	<!-- 컨텐츠 목록 -->
+	<select id="getContentsList" parameterType="Contents" resultType="Contents">
+		/* TsfDisplay.getContentsList */
+		SELECT CONTENTS_SQ     /*컨텐츠일련번호*/
+		     , CATE_NO         /*카테고리번호*/
+		     , CONTENTS_LOC    /*컨텐츠위치*/
+		     , CONTENTS_TYPE   /*컨텐츠유형*/
+		     , DISP_STDT       /*전시시작일시*/
+		     , DISP_EDDT       /*전시종료일시*/
+		     , DISP_ORD        /*표시순서*/
+		     , IMG_PATH1       /*이미지경로1*/
+		     , IMG_PATH2       /*이미지경로2*/
+		     , IMG_PATH3       /*이미지경로3*/
+		     , IMG_PATH4       /*이미지경로4*/
+		     , IMG_PATH5       /*이미지경로5*/
+		     , IMG_PATH6       /*이미지경로6*/
+		     , IMG_PATH7       /*이미지경로7*/
+		     , IMG_PATH8       /*이미지경로8*/
+		     , STR_VAR1        /*링크필드1*/
+		     , STR_VAR2        /*링크필드2*/
+		     , STR_VAR3        /*링크필드3*/
+		     , STR_VAR4        /*링크필드4*/
+		     , STR_VAR5        /*링크필드5*/
+		     , STR_VAR6        /*링크필드6*/
+		     , STR_VAR7        /*링크필드7*/
+		     , STR_VAR8        /*링크필드8*/
+		     , STR_TITLE1      /*제목필드1*/
+		     , STR_TITLE2      /*제목필드2*/
+		     , STR_TITLE3      /*제목필드3*/
+		     , STR_TITLE4      /*제목필드4*/
+		     , SUB_TEXT1       /*서브텍스트1*/
+		     , SUB_TEXT2       /*서브텍스트2*/
+		     , SUB_TEXT3       /*서브텍스트3*/
+		     , SUB_TEXT4       /*서브텍스트4*/
+		     , BRAND_GROUP_NO  /*브랜드그룹번호*/
+		     , BRAND_GROUP_IMG /*브랜드그룹이미지경로*/
+		     , MD_TITLE        /*MD타이틀*/
+		FROM   (
+		        SELECT CATE_NO                                            /*카테고리번호*/
+		             , CONTENTS_LOC                                       /*컨텐츠위치*/
+		             , CONTENTS_TYPE                                      /*컨텐츠유형*/
+		             , DATE_FORMAT(DISP_STDT,'%Y%m%d%H%i%S') AS DISP_STDT /*전시시작일시*/
+		             , DATE_FORMAT(DISP_EDDT,'%Y%m%d%H%i%S') AS DISP_EDDT /*전시종료일시*/
+		             , DISP_ORD                                           /*표시순서*/
+		             , IMG_PATH1                                          /*이미지경로1*/
+		             , IMG_PATH2                                          /*이미지경로2*/
+		             , IMG_PATH3                                          /*이미지경로3*/
+		             , IMG_PATH4                                          /*이미지경로4*/
+		             , IMG_PATH5                                          /*이미지경로5*/
+		             , IMG_PATH6                                          /*이미지경로6*/
+		             , IMG_PATH7                                          /*이미지경로7*/
+		             , IMG_PATH8                                          /*이미지경로8*/
+		             , STR_VAR1                                           /*링크필드1*/
+		             , STR_VAR2                                           /*링크필드2*/
+		             , STR_VAR3                                           /*링크필드3*/
+		             , STR_VAR4                                           /*링크필드4*/
+		             , STR_VAR5                                           /*링크필드5*/
+		             , STR_VAR6                                           /*링크필드6*/
+		             , STR_VAR7                                           /*링크필드7*/
+		             , STR_VAR8                                           /*링크필드8*/
+		             , STR_TITLE1                                         /*제목필드1*/
+		             , STR_TITLE2                                         /*제목필드2*/
+		             , STR_TITLE3                                         /*제목필드3*/
+		             , STR_TITLE4                                         /*제목필드4*/
+		             , SUB_TEXT1                                          /*서브텍스트1*/
+		             , SUB_TEXT2                                          /*서브텍스트2*/
+		             , SUB_TEXT3                                          /*서브텍스트3*/
+		             , SUB_TEXT4                                          /*서브텍스트4*/
+		             , BRAND_GROUP_NO                                     /*브랜드그룹번호*/
+		             , BRAND_GROUP_IMG                                    /*브랜드그룹이미지경로*/
+		             , MD_TITLE                                           /*MD타이틀*/
+		        <choose>
+		            <when test='preview != null and preview == "Y"'>
+		             , PRE_CONTENTS_SQ                       AS CONTENTS_SQ /*컨텐츠일련번호*/
+		             -- , RANK() OVER(PARTITION BY CATE_NO, CONTENTS_LOC
+		             --               ORDER BY CATE_NO, DISP_ORD, PRE_CONTENTS_SQ) AS NUMB
+		        FROM   TB_CONTENTS_PREVIEW A
+		            </when>
+		            <otherwise>
+		             , CONTENTS_SQ
+		             -- , RANK() OVER (PARTITION BY CATE_NO, CONTENTS_LOC
+		             --               ORDER BY CATE_NO, DISP_ORD, CONTENTS_SQ) AS NUMB
+		        FROM   TB_CONTENTS A
+		            </otherwise>
+		        </choose>
+		        WHERE  CONTENTS_LOC = #{contentsLoc}
+		        AND    USE_YN = 'Y'
+		        <if test="cateNo != null and cateNo != ''">
+		        AND    CATE_NO = #{cateNo}
+		        </if>
+		        <choose>
+		            <when test='preview != null and preview == "Y"'>
+		        AND    DISP_STDT <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		        AND    DISP_EDDT <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		        AND    IFNULL((SELECT DISP_EDDT
+		                       FROM   TB_PLAN
+		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
+		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
+		                                             ELSE
+		                                                 NULL
+		                                        END
+		                      ),STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		                     ) <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		        AND    IFNULL((SELECT DISP_STDT
+		                       FROM   TB_PLAN
+		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
+		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
+		                                             ELSE
+		                                                 NULL
+		                                        END
+		                      ),STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		                     ) <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		        ORDER  BY CONTENTS_LOC, DISP_ORD, PRE_CONTENTS_SQ
+		            </when>
+		            <otherwise>
+		        AND    DISP_STDT <![CDATA[<=]]> NOW()
+		        AND    DISP_EDDT <![CDATA[>=]]> NOW()
+		        AND    IFNULL((SELECT DISP_EDDT
+		                       FROM   TB_PLAN
+		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
+		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
+		                                             ELSE
+		                                                 NULL
+		                                        END
+		                      ),NOW()
+		                     ) <![CDATA[>=]]> NOW()
+		        AND    IFNULL((SELECT DISP_STDT
+		                       FROM   TB_PLAN
+		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
+		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
+		                                             ELSE
+		                                                 NULL
+		                                        END
+		                      ),NOW()
+		                     ) <![CDATA[<=]]> NOW()
+		        ORDER  BY CONTENTS_LOC, DISP_ORD, CONTENTS_SQ
+		            </otherwise>
+		        </choose>
+		       )
+		<if test="maxRow != null and maxRow > 0">
+		LIMIT #{maxRow}
+		</if>
+	</select>
+	
+	<!-- GNB 브랜드그룹 목록 -->
+	<select id="getGnbBrandGroupList" parameterType="Contents" resultType="BrandGroup">
+		/* TsfDisplay.getGnbBrandGroupList */
+		SELECT B.STR_TITLE1     AS TITLE
+		     , A.BRAND_GROUP_NO
+		     , CASE WHEN A.DISP_NM_LANG = 'EN' THEN A.BRAND_GROUP_ENM
+		            ELSE A.BRAND_GROUP_KNM
+		       END              AS BRAND_GROUP_NM
+		     , A.LOGO_FILE_NM
+		     , B.DISP_ORD
+		FROM   TB_BRAND_GROUP A
+		<choose>
+		    <when test='preview != null and preview == "Y"'>
+		     , TB_CONTENTS_PREVIEW B
+		    </when>
+		    <otherwise>
+		     , TB_CONTENTS B
+		    </otherwise>
+		</choose>
+		WHERE  A.BRAND_GROUP_NO = B.STR_VAR1
+		AND    A.USE_YN = 'Y'
+		AND    B.CONTENTS_LOC = 'STAB001'
+		<choose>
+		    <when test='preview != null and preview == "Y"'>
+		AND    B.DISP_STDT <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		AND    B.DISP_EDDT <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		ORDER  BY B.DISP_ORD, B.PRE_CONTENTS_SQ
+		    </when>
+		    <otherwise>
+		AND    B.DISP_STDT <![CDATA[<=]]> NOW()
+		AND    B.DISP_EDDT <![CDATA[>=]]> NOW()
+		ORDER  BY B.DISP_ORD, B.CONTENTS_SQ
+		    </otherwise>
+		</choose>
+	</select>
+	
+	<!-- 카테고리1 목록 -->
+	<select id="getCategory1List" parameterType="Cate4Srch" resultType="Cate1">
+		/* TsfDisplay.getCategory1List */
+		SELECT SITE_CD
+		     , CATE_GB
+		     , CATE1_NO
+		     , CATE1_NM
+		     , LEAF_YN
+		FROM   TB_CATE1 A
+		WHERE  SITE_CD = #{siteCd} /*사이트코드*/
+		AND    CATE_GB = #{cateGb} /*카테고리구분*/
+		AND    CATE_TYPE = #{cateType} /*카테고리유형*/
+		<if test="cate1No != null and cate1No != ''">
+		AND    CATE1_NO = #{cate1No}
+		</if>
+		AND    DISP_YN = 'Y'
+		AND    USE_YN = 'Y'
+		AND    EXISTS (SELECT 1
+		               FROM   TB_CATE_STOCK
+		               WHERE  CATE_GB = A.CATE_GB
+		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               AND    CATE_NO = A.CATE1_NO
+		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
+		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               </if>
+		              )
+		ORDER  BY DISP_ORD
+	</select>
+	
+	<!-- 카테고리2 목록 -->
+	<select id="getCategory2List" parameterType="Cate4Srch" resultType="Cate2">
+		/* TsfDisplay.getCategory2List */
+		SELECT SITE_CD
+		     , CATE_GB
+		     , CATE1_NO
+		     , CATE2_NO
+		     , CATE2_NM
+		     , LEAF_YN
+		FROM   TB_CATE2 A
+		WHERE  SITE_CD = #{siteCd} /*사이트코드*/
+		AND    CATE_GB = #{cateGb} /*카테고리구분*/
+		AND    CATE_TYPE = #{cateType} /*카테고리유형*/
+		AND    CATE1_NO = #{cate1No} /*카테고리1번호*/
+		AND    DISP_YN = 'Y'
+		AND    USE_YN = 'Y'
+		AND    EXISTS (SELECT 1
+		               FROM   TB_CATE_STOCK
+		               WHERE  CATE_GB = A.CATE_GB
+		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               AND    CATE_NO = A.CATE2_NO
+		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
+		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               </if>
+		              )
+		ORDER  BY DISP_ORD
+	</select>
+	
+	<!-- 카테고리3 목록 -->
+	<select id="getCategory3List" parameterType="Cate4Srch" resultType="Cate3">
+		/* TsfDisplay.getCategory3List */
+		SELECT SITE_CD
+		     , CATE_GB
+		     , CATE1_NO
+		     , CATE2_NO
+		     , CATE3_NO
+		     , CATE3_NM
+		     , LEAF_YN
+		FROM   TB_CATE3 A
+		WHERE  SITE_CD = #{siteCd} /*사이트코드*/
+		AND    CATE_GB = #{cateGb} /*카테고리구분*/
+		AND    CATE_TYPE = #{cateType} /*카테고리유형*/
+		AND    CATE1_NO = #{cate1No} /*카테고리1번호*/
+		AND    CATE2_NO = #{cate2No} /*카테고리2번호*/
+		AND    DISP_YN = 'Y'
+		AND    USE_YN = 'Y'
+		AND    EXISTS (SELECT 1
+		               FROM   TB_CATE_STOCK
+		               WHERE  CATE_GB = A.CATE_GB
+		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               AND    CATE_NO = A.CATE3_NO
+		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
+		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               </if>
+		              )
+		ORDER  BY DISP_ORD
+	</select>
+	
+	<!-- 카테고리4 목록 -->
+	<select id="getCategory4List" parameterType="Cate4Srch" resultType="Cate4">
+		/* TsfDisplay.getCategory4List */
+		SELECT SITE_CD
+		     , CATE_GB
+		     , CATE1_NO
+		     , CATE2_NO
+		     , CATE3_NO
+		     , CATE4_NO
+		     , CATE4_NM
+		     , LEAF_YN
+		FROM   TB_CATE4 A
+		WHERE  SITE_CD = #{siteCd} /*사이트코드*/
+		AND    CATE_GB = #{cateGb} /*카테고리구분*/
+		AND    CATE_TYPE = #{cateType} /*카테고리유형*/
+		AND    CATE1_NO = #{cate1No} /*카테고리1번호*/
+		AND    CATE2_NO = #{cate2No} /*카테고리2번호*/
+		AND    CATE3_NO = #{cate3No} /*카테고리3번호*/
+		AND    DISP_YN = 'Y'
+		AND    USE_YN = 'Y'
+		AND    EXISTS (SELECT 1
+		               FROM   TB_CATE_STOCK
+		               WHERE  CATE_GB = A.CATE_GB
+		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               AND    CATE_NO = A.CATE4_NO
+		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
+		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               </if>
+		              )
+		ORDER  BY DISP_ORD
+	</select>
+	
+	<!-- 카테고리5 목록 -->
+	<select id="getCategory5List" parameterType="Cate4Srch" resultType="Cate5">
+		/* TsfDisplay.getCategory5List */
+		SELECT SITE_CD
+		     , CATE_GB
+		     , CATE1_NO
+		     , CATE2_NO
+		     , CATE3_NO
+		     , CATE4_NO
+		     , CATE5_NM
+		     , CATE5_NM
+		     , LEAF_YN
+		FROM   TB_CATE5 A
+		WHERE  SITE_CD = #{siteCd} /*사이트코드*/
+		AND    CATE_GB = #{cateGb} /*카테고리구분*/
+		AND    CATE_TYPE = #{cateType} /*카테고리유형*/
+		AND    CATE1_NO = #{cate1No} /*카테고리1번호*/
+		AND    CATE2_NO = #{cate2No} /*카테고리2번호*/
+		AND    CATE3_NO = #{cate3No} /*카테고리3번호*/
+		AND    CATE4_NO = #{cate4No} /*카테고리4번호*/
+		AND    DISP_YN = 'Y'
+		AND    USE_YN = 'Y'
+		AND    EXISTS (SELECT 1
+		               FROM   TB_CATE_STOCK
+		               WHERE  CATE_GB = A.CATE_GB
+		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               AND    CATE_NO = A.CATE5_NO
+		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
+		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               </if>
+		              )
+		ORDER  BY DISP_ORD
+	</select>
 
 </mapper>

+ 471 - 0
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb2.html

@@ -0,0 +1,471 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GnbWeb.html
+ * @desc    : GNB
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.28   gagamel     최초 작성
+ *******************************************************************************
+ -->
+<header id="header" th:fragment="gnb">
+
+	<!-- head start -->
+	<div class="common_header">
+		<!-- 프로모션 띠 배너 등록 시 노출 -->
+		<div class="hd_top_banner" style="background-color:#fd4801;">
+			<a href="" class="t_bnr">
+				<span style="margin:0 auto;height:60px;line-height:60px;font-size: 20px;font-weight: 600;letter-spacing: -.025em; color:#fff;">APP 수신동의 하면 1만 포인트 증정!</span>
+				<!--<img src="ABC.jpg" alt="프로모션"/>-->
+			</a>
+		</div>
+		<!-- //프로모션 띠 배너 등록 시 노출 -->
+	
+		<div class="area">
+			<div class="logo">
+				<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">
+					<h1>
+						<i class="ico ico_logo"></i>
+						<em class="blind">STYLE24</em>
+					</h1>
+				</a>
+			</div>
+			<div class="util_group">
+				<span th:if="${sessionInfo == null}"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_LOGIN);" title="로그인 바로가기">로그인</a></span>
+				<span th:if="${sessionInfo != null}"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_LOGOUT);" title="로그아웃">로그아웃</a></span>
+				<span th:if="${sessionInfo == null}"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);" title="회원가입 바로가기">회원가입</a></span>
+				<span><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE);" title="마이페이지 바로가기">마이페이지</a></span>
+			</div>
+		</div>
+		
+		<div class="gnb">
+			<!-- nav -->
+			<div class="nav">
+				<ul class="bundle btn_home">
+					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);" class="">홈</a></li>
+				</ul>
+			
+				<ul class="bundle">
+					<li class="has_depth">
+						<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_ALL_BRAND);">브랜드</a>
+						<!-- 브랜드_depth -->
+						<div class="depth_menu brand">
+							<div class="head_category">
+								<div class="tit">
+									<p>브랜드</p>
+									<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_ALL_BRAND);" class="more">전체보기</a>
+								</div>
+								<div class="menu" id="divBrandGrp">
+								</div>
+							</div>
+						</div>
+					</li>
+				</ul>
+				
+				<ul class="bundle" id="divCate">
+				</ul>
+				
+				<ul class="bundle" id="category3">
+					<li class="active" ><a href="#">베스트</a></li>
+				<li><a href="#">핫딜</a></li>
+				<li><a href="#">기획전</a></li>
+				<li><a href="#">총알배송</a></li>
+				<li class="has_depth">
+					<a href="#">아울렛</a>
+					<!-- depth_menu start -->
+					<div class="depth_menu category">
+						<div class="head_category">
+							<div class="tit">
+								<p>아울렛</p>
+								<a href="" class="more">전체보기</a>
+							</div>
+							<div class="menu">
+								<ul class="maintabs">
+									<li><a href="javascript:;">티셔츠/셔츠</a></li>
+									<li>
+										<a href="javascript:;">여성</a>
+										<!-- 2depth -->
+										<ul class="box_depth2">
+											<li>
+												<a href="/">상의</a>
+											</li>
+											<li>
+												<a href="/">하의</a>
+												<!-- 3depth -->
+												<ul class="box_depth3">
+													<li><a href="/">상의</a></li>
+													<li><a href="/">하의</a></li>
+													<li><a href="/">세트</a></li>
+													<li><a href="/">시즌스포츠의류</a></li>
+													<li>
+														<a href="/">스포츠잡화</a>
+														<!-- 4depth -->
+														<ul class="box_depth4">
+															<li><a href="/">운동화/등산화</a></li>
+															<li><a href="/">가방/모자/잡화</a></li>
+														</ul> 
+													</li>
+												</ul>                
+											</li>
+											<li>
+												<a href="/">세트</a>
+											</li>
+											<li>
+												<a href="/">시즌스포츠의류</a>
+											</li>
+											<li>
+												<a href="javascript:;">스포츠잡화</a>
+											</li>
+										</ul>    
+									</li>
+									<li>
+										<a href="">원피스/스커트</a>
+									</li>
+									<li><a href="">팬츠/레깅스</a></li>
+									<li><a href="">데님</a></li>
+									<li><a href="">자켓/점퍼/코트</a></li>
+									<li><a href="">트레이닝/스포츠</a></li>
+									<li><a href="">여성잡화</a></li>
+									<li><a href="">언더웨어</a></li>
+								</ul>   
+							</div>
+						</div>
+						<div class="head_banner">
+							<div class="tit">
+								<p>가을의 신상 만나기</p>
+							</div>
+							<div class="list">
+								<ul class="clear event_con">
+									<li>
+										<a href="">
+											<div class="ev_img"><img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션"></div>
+											<div class="txt">
+												<p class="tit">2020 FALL COLLECTION 가을에는 이 컬러 2020 FALL COLLECTION 가을에는 이 컬러</p>
+											</div>
+										</a>
+									</li>
+									<li>
+										<a href="">
+											<div class="ev_img"><img src="/images/pc/thumb/ev_list_img02.jpg" alt="단 48시간, 퓨어캐시미어 최대 80%세일 PURE CASHMERE 48H POP-UP">
+											</div>
+											<div class="txt">
+												<p class="tit">FALL NEW ARRIVAL</p>
+											</div>
+										</a>
+									</li>
+								</ul>
+							</div>
+						</div>
+					</div>
+					<!-- //depth_menu end -->
+				</li>
+				<li><a href="#">룩북</a></li>
+				<li><a href="#">이벤트/혜택</a></li>
+				</ul>
+			</div>
+			<!-- // nav -->
+
+			<!-- search -->
+			<div class="search">
+				<div class="area">
+					<form id="searchMainForm" name="searchMainForm">
+						<fieldset>  
+							<legend>통합검색</legend>
+							<input type="text" id="search" name="search" value="" placeholder="모이몰론, 남들보다 빠르게! 신상 check" class="search_input" title="검색어 입력" maxlength="100">								
+							<div class="search_group" id="ark" style="display: none;">
+								<div id="ark_down" style="position: absolute; display: block; cursor: pointer; top: 3px; left: 366px;"></div>
+								<div id="ark_up" style="position: absolute; display: none; cursor: pointer; top: 3px; left: 366px;"></div>
+								<div class="area">
+									<p class="blind">연관검색</p>
+									<div class="search_list">
+										<div id="ark_content_list" style="width: 410px;"></div>
+										<div id="ark_category_list" class="category"></div>
+										<div id="ark_event_list" class="exhibition"></div>
+										<div id="ark_powerdeal_list"></div>
+									</div>
+									<div class="close">
+										<a href="#" class="search_close">닫기<i class="ico ico_search_close_gray"><em>닫기</em></i></a>
+									</div>
+								</div>
+							</div>
+							<!-- 검색어 입력전 -->
+							<div id="mykeyword" class="my_search_group sch_auto" style="display: none;">
+								<p class="blind">인기 검색어 &amp; 최근 검색어</p>
+								<div class="area">
+									<div class="hot_search_list" id="popkeyword">
+										<p>인기 검색어</p>
+										<ul>
+											<li>
+												<a href="#"><span>1</span>나이키</a>
+											</li>
+											<li>
+												<a href="#"><span>2</span>tamiya</a>
+											</li>
+											<li>
+												<a href="#"><span>3</span>니콘 z6</a>
+											</li>
+											<li>
+												<a href="#"><span>4</span>갤럭시 자켓</a>
+											</li>
+											<li>
+												<a href="#"><span>5</span>아동운동화</a>
+											</li>
+											<li>
+												<a href="#"><span>6</span>타미야</a>
+											</li>
+											<li>
+												<a href="#"><span>7</span>널디</a>
+											</li>
+											<li>
+												<a href="#"><span>8</span>호박목걸이</a>
+											</li>
+											<li>
+												<a href="#"><span>9</span>제시뉴욕</a>
+											</li>
+											<li>
+												<a href="#"><span>10</span>뉴에라</a>
+											</li>
+										</ul>
+									</div>
+									<div class="my_search_list" id="searchkeyword">
+										<p>최근 검색어</p>
+										<button type="button" onclick="removeMyKeyword();">최근 검색어 전체삭제<i class="ico ico_mysearch_delete"></i></button>
+									</div>
+								</div>
+								<div class="close">
+									<a href="#" class="search_close">닫기<i class="ico ico_search_close_gray"><em>닫기</em></i></a>
+								</div>
+							</div>
+							<!-- // 검색어 입력전 -->
+							<button type="button" class="close"><i class="ico ico_search_close"><em>닫기</em></i></button>
+							<button type="button" class="sch_btn" onclick="goSearch();"><i class="ico ico_search"><em>검색</em></i></button>
+						</fieldset>
+					</form>
+				</div>
+
+				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count">99+</span></a>
+				
+			</div>
+			<!-- // search -->
+		</div>
+	</div>
+	<!-- head end -->
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	// 탭 > 브랜드 생성
+	let fnCreateBrandGroup = function(brandGrpList) {
+		let tag = '';
+		
+		if (brandGrpList.length > 0) {
+			tag += '<div class="row">\n';
+			tag += '	<p>캐주얼</p>\n';
+			tag += '	<div class="brand_list swiper-container">\n';
+			tag += '		<ul class="clear swiper-wrapper">\n';
+			
+			$.each(brandGrpList, function(idx, item) {
+				tag += '			<li class="swiper-slide">\n';
+				tag += '				<a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + item.brandGroupNo + ');">\n';
+				tag += '					<img src="' + _uploadDefaultUrl + item.logoFileNm + '" alt=""/>\n';
+				tag += '					<span><em>' + item.brandGroupNm + '</em></span>\n';
+				tag += '				</a>\n';
+				tag += '			</li>\n';
+			});
+			
+			tag += '		</ul>\n';
+			tag += '	</div>\n';
+			tag += '</div>\n';
+		}
+		
+		return tag;
+	}
+	
+	// 탭 > 카테고리 생성
+	let fnCreateCategory = function(cateList) {
+		let tag = '';
+		
+		if (cateList.length > 0) {
+			$.each(cateList, function(idx1, cate1) {
+				tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
+				tag += '	<a href="javascript:void(0);" onclick="cfnGoToCategory(' + cate1.cate1Nm + ');">' + cate1.cate1Nm + '</a>\n';
+				tag += '	<div class="depth_menu category">\n';
+				tag += '		<div class="head_category">\n';
+				tag += '			<div class="tit">\n';
+				tag += '				<p>' + cate1.cate1Nm + '</p>\n';
+				tag += '				<a href="javascript:void(0);" onclick="cfnGoToCategory(' + cate1.cate1No + ');" class="more">전체보기</a>\n';
+				tag += '			</div>\n';
+				
+				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
+					tag += '			<div class="menu">\n';
+					tag += '				<ul class="maintabs">\n';
+					
+					$.each(cate1.cate2List, function(idx2, cate2) {
+						tag += '					<li>\n';
+						tag += '						<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate2.cateGb + '\',\'' + cate2.cate1No + '\',\'' + cate2.cate2No + '\');">' + cate2.cate2Nm + '</a>\n';
+						
+						if (cate2.leafYn == 'N' && cate2.cate3List.length > 0) {
+							tag += '						<ul class="box_depth2">\n';
+							
+							$.each(cate2.cate3List, function(idx3, cate3) {
+								tag += '							<li>\n';
+								tag += '								<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate3.cateGb + '\',\'' + cate3.cate1No + '\',\'' + cate3.cate2No + '\',\'' + cate3.cate3No + '\');">' + cate3.cate3Nm + '</a>\n';
+								
+								if (cate3.leafYn == 'N' && cate3.cate4List.length > 0) {
+									tag += '								<ul class="box_depth3">\n';
+								
+									$.each(cate3.cate4List, function(idx4, cate4) {
+										tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate4.cateGb + '\',\'' + cate4.cate1No + '\',\'' + cate4.cate2No + '\',\'' + cate4.cate3No + '\',\'' + cate4.cate4No + '\');">' + cate4.cate4Nm + '</a></li>\n';
+									});
+									
+									tag += '								</ul>\n';
+								}
+								
+								tag += '							</li>\n';
+							});
+							
+							tag += '						</ul>\n';
+						}
+						
+						tag += '					</li>\n';
+					});
+					
+					tag += '				</ul>\n';
+					tag += '			</div>\n';
+					tag += '		</div>\n';
+					tag += '	</div>\n';
+				}
+				
+				if (cate1.bannerList.length > 0) {
+					tag += '	<div class="head_banner">\n';
+					tag += '		<div class="tit">\n';
+					tag += '			<p>가을의 신상 만나기</p>\n';
+					tag += '		</div>\n';
+					tag += '		<div class="list">\n';
+					tag += '			<ul class="clear event_con">\n';
+					tag += '				<li>\n';
+					tag += '					<a href="">\n';
+					tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션"></div>\n';
+					tag += '						<div class="txt">\n';
+					tag += '							<p class="tit">2020 FALL COLLECTION 가을에는 이 컬러 2020 FALL COLLECTION 가을에는 이 컬러</p>\n';
+					tag += '						</div>\n';
+					tag += '					</a>\n';
+					tag += '				</li>\n';
+					tag += '				<li>\n';
+					tag += '					<a href="">\n';
+					tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img02.jpg" alt="단 48시간, 퓨어캐시미어 최대 80%세일 PURE CASHMERE 48H POP-UP"></div>\n';
+					tag += '						<div class="txt">\n';
+					tag += '							<p class="tit">FALL NEW ARRIVAL</p>\n';
+					tag += '						</div>\n';
+					tag += '					</a>\n';
+					tag += '				</li>\n';
+					tag += '			</ul>\n';
+					tag += '		</div>\n';
+					tag += '	</div>\n';
+				}
+				
+				tag += '</li>\n';
+			});
+		}
+		
+		return tag;
+	}
+	
+	// 탭 목록
+	let fnTapList = function() {
+		$.getJSON('/display/tap/list'
+			, function(result, status) {
+				if (status == 'success') {
+					$.each(result, function(idx, item) {
+						if (item.contentsType == 'B') { // 컨텐츠유형:브랜드
+							$('#divBrandGrp').html('');
+							$('#divBrandGrp').append(fnCreateBrandGroup(item.casualBrandGroupList));
+							$('#divBrandGrp').append(fnCreateBrandGroup(item.golfBrandGroupList));
+							$('#divBrandGrp').append(fnCreateBrandGroup(item.kidsBrandGroupList));
+						} else if (item.contentsType == 'C') { // 컨텐츠유형:카테고리
+							$('#divCate').html('');
+							$('#divCate').append(fnCreateCategory(item.cateList));
+						}
+					});
+				}
+			});
+	}
+	
+	$(document).ready(function() {
+		//검색창 호출
+		$(".common_search").load("sch_layer_pop.html");
+		
+		// GNB toggle
+		$(document).on('mouseenter','.common_header .gnb .nav > ul > li',function(e){
+			if(!$(this).hasClass('has_depth')){
+				$('.black_screen').hide();
+				$('.common_header .gnb .depth_menu').hide();
+			} else if($(this).hasClass('has_depth')){
+				$('.black_screen').show();
+				$(this).find('.depth_menu').show();
+				$(this).parents('ul').siblings('ul').find('li.has_depth .depth_menu').hide();
+				$(this).siblings('li.has_depth').find('.depth_menu').hide();
+			}
+		}).on('mouseleave','.common_header .gnb',function(e){
+			$('.black_screen').hide();
+			$('.common_header .gnb .depth_menu').hide();
+		});
+
+		// GNB 하위메뉴
+		$(document).on('mouseenter','.common_header .maintabs li',function(e){
+			if($(this).find('> ul').length > 0){
+				$(this).addClass('on');
+			}
+			$(this).find('> ul').show();
+			$(this).siblings('li').find('> ul').hide();
+		});
+
+		// GNB 더보기
+		$(document).on('click','.more_category .btn_more_cate',function(e){
+			$(this).parent('.more_category').toggleClass('on');
+			$(this).parent('.more_category').find('.cate_list').toggle();
+			return false;
+		});
+
+		// GNB - 슬라이드 > 브랜드_GNB
+		var brand_gnb_slide = new Swiper('#header .gnb .brand_list', {
+			observer: true,
+			observeParents: true,
+			centeredSlides: false,
+			slidesPerView: 'auto',
+			freeMode:true,
+		});
+
+		//통합검색 - 슬라이드 > 지금 고객님들이 많이 보고 있어요 
+		var realtimeItemSwiper = new Swiper('.common_search .realtime_slider .swiper-container', {
+			observer: true,
+			observeParents: true,
+			slidesPerView: 5,
+			spaceBetween: 20,
+			autoplay: {
+				delay: 2500,
+				disableOnInteraction:false,
+			},
+			navigation: {
+				nextEl: '.common_search .realtime_slider .swiper-button-next',
+				prevEl: '.common_search .realtime_slider .swiper-button-prev',
+			},
+			pagination: {
+				el: '.common_search .realtime_slider .swiper-pagination',
+				clickable: true,
+			},
+		});
+		
+		fnTapList();
+	});
+/*]]>*/
+</script>
+
+</header>
+
+</html>