Selaa lähdekoodia

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

card007 4 vuotta sitten
vanhempi
commit
e661e0caf4
28 muutettua tiedostoa jossa 244 lisäystä ja 329 poistoa
  1. 11 0
      src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java
  2. 23 11
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  3. 70 26
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  4. 14 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  5. 1 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  6. 24 0
      src/main/java/com/style24/persistence/domain/SearchKeyword.java
  7. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  8. 15 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  9. 5 0
      src/main/resources/config/application-locd.yml
  10. 5 0
      src/main/resources/config/application-run.yml
  11. 5 0
      src/main/resources/config/application-style.yml
  12. 5 0
      src/main/resources/config/application-tsit.yml
  13. 1 1
      src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html
  14. 10 3
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html
  15. 4 4
      src/main/webapp/WEB-INF/views/mob/display/SearchLayerMob.html
  16. 8 1
      src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html
  17. 1 1
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  18. 29 3
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  19. 5 3
      src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html
  20. BIN
      src/main/webapp/images/mo/ico_btn_expand.png
  21. BIN
      src/main/webapp/images/mo/ico_btn_narrow.png
  22. BIN
      src/main/webapp/images/pc/apple-touch-icon.png
  23. BIN
      src/main/webapp/images/pc/favicon-16x16.png
  24. BIN
      src/main/webapp/images/pc/favicon-32x32.png
  25. 0 68
      src/main/webapp/ux/plugins/gaga/gaga.alert.js
  26. 0 73
      src/main/webapp/ux/plugins/gaga/gaga.se2.js
  27. 0 129
      src/main/webapp/ux/plugins/gaga/gaga.smarteditor.js
  28. 6 3
      src/main/webapp/ux/style24_link.js

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

@@ -16,6 +16,7 @@ import com.style24.persistence.domain.GnbTab;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Popup;
+import com.style24.persistence.domain.SearchKeyword;
 import com.style24.persistence.domain.searchengine.Filter;
 import com.style24.persistence.domain.searchengine.SearchEngine;
 
@@ -235,4 +236,14 @@ public interface TsfDisplayDao {
 	 * @since 2021. 4. 14
 	 */
 	Collection<Contents> getGnbTabBannerList(Contents contents);
+
+	/**
+	 * 검색키워드 조회
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author bin2107
+	 * @since 2021. 7. 2
+	 */
+	Collection<SearchKeyword> getSearchKeywordList(SearchKeyword searchKeyword);
 }

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

@@ -3,17 +3,6 @@ package com.style24.front.biz.service;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-
-import com.style24.core.biz.service.TscEnvsetService;
-import com.style24.core.support.env.TscConstants;
-import com.style24.front.biz.dao.TsfDisplayDao;
-import com.style24.front.biz.dao.TsfGoodsDao;
-import com.style24.front.support.env.TsfConstants;
-import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.BrandGroup;
 import com.style24.persistence.domain.Cate1;
 import com.style24.persistence.domain.Cate2;
@@ -28,6 +17,18 @@ import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Popup;
+import com.style24.persistence.domain.SearchKeyword;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.front.biz.dao.TsfDisplayDao;
+import com.style24.front.biz.dao.TsfGoodsDao;
+import com.style24.front.support.env.TsfConstants;
+import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.searchengine.Filter;
 import com.style24.persistence.domain.searchengine.SearchEngine;
 
@@ -842,4 +843,15 @@ public class TsfDisplayService {
 		return goodsDao.getContentsCategoryGoodsCount(cate4Srch);
 	}
 
+	/**
+	 * 검색키워드 조회
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author bin2107
+	 * @since 2021. 7. 2
+	 */
+	public Collection<SearchKeyword> getSearchKeywordList(SearchKeyword searchKeyword) {
+		return displayDao.getSearchKeywordList(searchKeyword);
+	}
 }

+ 70 - 26
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -571,6 +571,7 @@ public class TsfGoodsService {
 	 * @date 2021. 3. 8
 	 */
 	public Collection<Goods> getTmtbGoodsList(Goods goods) {
+		Integer[] arrTmtbSq = goods.getArrTmtbSq();		// 장바구니 다다익선 추천상품 적용을 위해 백업.
 		goods.setArrTmtbSq(null);		// 배열 사용하여 진행시에 IN절에 걸려 query timeout 걸려 null처리
 		Collection<Goods> result = new ArrayList<Goods>();
 
@@ -586,43 +587,86 @@ public class TsfGoodsService {
 			tCount = 20;
 		}
 
-		for (Tmtb tmtb : tmtbSqList) {
-
-			goods.setTmtbSq(tmtb.getTmtbSq());
-			Collection<Goods> tmtbGoodsList = goodsDao.getTmtbGoodsList(goods);
-			if (tmtbGoodsList == null || tmtbGoodsList.isEmpty()) {
-				continue;
-			}
+		// 상품상세 다다익선 조회 쿼리
+		if(arrTmtbSq == null || arrTmtbSq.length < 1) {
+			for (Tmtb tmtb : tmtbSqList) {
+				goods.setTmtbSq(tmtb.getTmtbSq());
+				Collection<Goods> tmtbGoodsList = goodsDao.getTmtbGoodsList(goods);
+				if (tmtbGoodsList == null || tmtbGoodsList.isEmpty()) {
+					continue;
+				}
 
-			if (tCount <= 0) { //잔여수가 없으면 종료
-				break;
-			}
+				if (tCount <= 0) { //잔여수가 없으면 종료
+					break;
+				}
 
-			//다다익선 조회 상품 수
-			rCount = tmtbGoodsList.size();
+				//다다익선 조회 상품 수
+				rCount = tmtbGoodsList.size();
 
-			if (tCount > rCount) { 	//조회수보다 잔여수가 클경우
-				result.addAll(tmtbGoodsList);
-				tCount = tCount - rCount; //남은 잔여수 계산
-			} else {
-				if (tCount == rCount) {	//잔여 수량과 조회수가 같은면 종료
+				if (tCount > rCount) { 	//조회수보다 잔여수가 클경우
 					result.addAll(tmtbGoodsList);
-					break;
+					tCount = tCount - rCount; //남은 잔여수 계산
 				} else {
+					if (tCount == rCount) {	//잔여 수량과 조회수가 같은면 종료
+						result.addAll(tmtbGoodsList);
+						break;
+					} else {
 
-					for (int i = 0; i < tCount; i++) {  //잔여수량만큼 loop
-						int tmtbGoodsListCnt = 0;
-						for (Goods tmtbGoods : tmtbGoodsList) {
-							if (i == tmtbGoodsListCnt) {
-								result.add(tmtbGoods);
-								tCount--;
-								break;
+						for (int i = 0; i < tCount; i++) {  //잔여수량만큼 loop
+							int tmtbGoodsListCnt = 0;
+							for (Goods tmtbGoods : tmtbGoodsList) {
+								if (i == tmtbGoodsListCnt) {
+									result.add(tmtbGoods);
+									tCount--;
+									break;
+								}
+								tmtbGoodsListCnt++;
 							}
-							tmtbGoodsListCnt++;
 						}
 					}
+
 				}
+			}
+		} else {		// 장바구니 다다익선 팝업 조회 쿼리
+			for (int tmtb : arrTmtbSq) {
+				if(tmtb > 0) {
+					goods.setTmtbSq(tmtb);
+					Collection<Goods> tmtbGoodsList = goodsDao.getTmtbGoodsList(goods);
+					if (tmtbGoodsList == null || tmtbGoodsList.isEmpty()) {
+						continue;
+					}
+
+					if (tCount <= 0) { //잔여수가 없으면 종료
+						break;
+					}
+
+					//다다익선 조회 상품 수
+					rCount = tmtbGoodsList.size();
 
+					if (tCount > rCount) { 	//조회수보다 잔여수가 클경우
+						result.addAll(tmtbGoodsList);
+						tCount = tCount - rCount; //남은 잔여수 계산
+					} else {
+						if (tCount == rCount) {	//잔여 수량과 조회수가 같은면 종료
+							result.addAll(tmtbGoodsList);
+							break;
+						} else {
+
+							for (int i = 0; i < tCount; i++) {  //잔여수량만큼 loop
+								int tmtbGoodsListCnt = 0;
+								for (Goods tmtbGoods : tmtbGoodsList) {
+									if (i == tmtbGoodsListCnt) {
+										result.add(tmtbGoods);
+										tCount--;
+										break;
+									}
+									tmtbGoodsListCnt++;
+								}
+							}
+						}
+
+					}
+				}
 			}
 		}
 

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

@@ -54,6 +54,7 @@ import com.style24.persistence.domain.searchengine.Filter;
 import com.style24.persistence.domain.searchengine.GoodsListResponse;
 import com.style24.persistence.domain.searchengine.PlanningResponse;
 import com.style24.persistence.domain.searchengine.SearchEngine;
+import com.style24.persistence.domain.SearchKeyword;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -1192,4 +1193,17 @@ public class TsfDisplayController extends TsfBaseController {
 		return eigeneaiApi.getWeeklySellBestGoodsList(30);
 	}
 
+	/**
+	 * 검색키워드 조회
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author bin2107
+	 * @since 2021. 7. 2
+	 */
+	@GetMapping("/search/keyword/list")
+	@ResponseBody
+	public Collection<SearchKeyword> getSearchKeywordList(SearchKeyword searchKeyword) {
+		return displayService.getSearchKeywordList(searchKeyword);
+	}
 }

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

@@ -799,7 +799,7 @@ public class TsfMypageController extends TsfBaseController {
 	 */
 	@PostMapping("/return/cancel")
 	@ResponseBody
-	public GagaResponse rtnReqCancel(@RequestBody OrderChange orderChange) {
+	public GagaResponse rtnReqCancel(@RequestBody OrderChange orderChange) throws Exception {
 
 		if (orderChange== null) {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));

+ 24 - 0
src/main/java/com/style24/persistence/domain/SearchKeyword.java

@@ -0,0 +1,24 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+import lombok.Data;
+
+/**
+ * 검색키워드  Domain
+ *
+ * @author bin2107
+ * @since 2021. 07. 02
+ */
+@SuppressWarnings("serial")
+@Data
+public class SearchKeyword extends TscBaseDomain {
+
+	private Integer keywordSq;
+	private String keyword;
+	private String linkUrl;
+	private String dispStdt;
+	private String dispEddt;
+	private String stDate;
+	private String edDate;
+
+}

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -974,9 +974,9 @@
 		                , G.SELF_GOODS_YN
 		                , G.MAIN_COLOR_CD ) A
 		LEFT   OUTER JOIN TB_COLOR C
-		ON     A.CART_OPT_CD1 = C.COLOR_CD
+		ON     A.OPT_CD1 = C.COLOR_CD
 		AND    C.USE_YN = 'Y'
-		ORDER  BY NULLIF(C.COLOR_KNM, A.CART_OPT_CD1)
+		ORDER  BY NULLIF(C.COLOR_KNM, A.OPT_CD1)
 	</select>
 
 	<!-- 장바구니 상품 사이즈 정보 조회 -->

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

@@ -1238,5 +1238,20 @@
 			LIMIT #{maxRow}
 		</if>
 	</select>
+
+	<select id="getSearchKeywordList" parameterType="SearchKeyword" resultType="SearchKeyword">
+		/* TsfDisplay.getSearchKeywordList */
+		SELECT
+		       KEYWORD_SQ
+		     , KEYWORD
+		     , LINK_URL
+		     , DISP_STDT
+		     , DISP_EDDT
+		FROM TB_SEARCH_KEYWORD
+		WHERE 1=1
+		AND NOW() BETWEEN DISP_STDT AND DISP_EDDT
+		ORDER BY KEYWORD_SQ
+		LIMIT 1
+	</select>
 	
 </mapper>

+ 5 - 0
src/main/resources/config/application-locd.yml

@@ -94,6 +94,11 @@ naverPay:
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://test-order.pay.naver.com/customer/buy/
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
+    access.license: 01000100005b15bb8faab722d100d589f34bd64843659e37a168b3617443c4f52a3fda45b8
+    secret.key: AQABAADtZ/jOC1Y3LNsyI0TWwCMvPfrg0sqM9pnxliSegbjSqQ==
+    port.address: http://sandbox.api.naver.com/Checkout/MallService5
+    service.name: MallService5
+    version: 5.0
 
 # 검색엔진(NHN다이퀘스트)
 search:

+ 5 - 0
src/main/resources/config/application-run.yml

@@ -117,6 +117,11 @@ naverPay:
     order.api.url: https://api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://order.pay.naver.com/customer/buy/
     order.mobile.url: https://m.pay.naver.com/o/customer/buy/
+    access.license:
+    secret.key:
+    port.address: http://ec.api.naver.com/Checkout/MallService5
+    service.name: MallService5
+    version: 5.0
 
 # 검색엔진(NHN다이퀘스트)
 search:

+ 5 - 0
src/main/resources/config/application-style.yml

@@ -106,6 +106,11 @@ naverPay:
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://test-order.pay.naver.com/customer/buy/
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
+    access.license: 01000100005b15bb8faab722d100d589f34bd64843659e37a168b3617443c4f52a3fda45b8
+    secret.key: AQABAADtZ/jOC1Y3LNsyI0TWwCMvPfrg0sqM9pnxliSegbjSqQ==
+    port.address: http://sandbox.api.naver.com/Checkout/MallService5
+    service.name: MallService5
+    version: 5.0
 
 # 검색엔진(NHN다이퀘스트)
 search:

+ 5 - 0
src/main/resources/config/application-tsit.yml

@@ -99,6 +99,11 @@ naverPay:
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://test-order.pay.naver.com/customer/buy/
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
+    access.license: 01000100005b15bb8faab722d100d589f34bd64843659e37a168b3617443c4f52a3fda45b8
+    secret.key: AQABAADtZ/jOC1Y3LNsyI0TWwCMvPfrg0sqM9pnxliSegbjSqQ==
+    port.address: http://sandbox.api.naver.com/Checkout/MallService5
+    service.name: MallService5
+    version: 5.0
 
 # 검색엔진(NHN다이퀘스트)
 search:

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html

@@ -95,7 +95,7 @@
 				tag += '	</div>\n';
 				tag += '	<div class="fold_cont">\n';
 				tag += '		<div class="fold_answer">\n';
-				tag += '			<div class="answer_body">' + item.noticeContent.escapeHtml().replace(/\n/g,'<br/>') + '</div>\n';
+				tag += '			<div class="answer_body">' + item.noticeContent.replaceAll('&lt;','<').replaceAll('&gt;', '>').replaceAll('&quot;', '"') + '</div>\n';
 				tag += '		</div>\n';
 				tag += '	</div>\n';
 				tag += '</li>\n';

+ 10 - 3
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html

@@ -31,9 +31,16 @@
 				<button class="btn_gnb" title="메인메뉴 열기/닫기"><span><i></i></span></button>
 			</h1>
 			<div class="button_wrap">
-				<button class="search" onclick="cfnSearchLayer();">
-					<img src="/images/mo/ico_btn_search.png" alt="검색">
-				</button>
+				<th:block th:if="${brandGroupInfo?.brandGroupNo == null}">
+					<button class="search" onclick="cfnSearchLayer();">
+						<img src="/images/mo/ico_btn_search.png" alt="검색">
+					</button>
+				</th:block>
+				<th:block th:unless="${brandGroupInfo?.brandGroupNo == null}">
+					<button class="search" th:onclick="cfnSearchLayer([[${brandGroupInfo?.brandGroupNo}]]);">
+						<img src="/images/mo/ico_btn_search.png" alt="검색">
+					</button>
+				</th:block>
 				<button class="store" onclick="cfnGoToPage(_PAGE_CART);">
 					<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
 					<span id="spanGnbCartCnt" style="display: none;"></span>

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

@@ -51,8 +51,8 @@
 				</ul>
 				<p class="nodata_txt" th:if="${#lists.isEmpty(recentlyKeywordList)}">최근 검색어가 없습니다.</p>
 			</div>
-			<h3 class="hot-key">STYLE24에서 검색되고 있어요</h3>
-			<div class="related_keyword">
+			<h3 class="hot-key" th:if="${brandGroupNo==null}">STYLE24에서 검색되고 있어요</h3>
+			<div class="related_keyword" th:if="${brandGroupNo==null}">
 				<div class="sub_category">
 					<div class="cate_wrap" id="popularKeyArea">
 <!--						<a href="javascript:;" class="on">전체</a>-->
@@ -278,7 +278,7 @@
 		<!-- //3.지금 많이 보고 있어요 상품. -->
 
 		<!-- 4.검색어 타이핑 -->
-		<div class="inner" id="keyupArea">
+		<div class="inner" id="keyupArea" th:if="${brandGroupNo==null}">
 <!--			<div class="sch_title">-->
 <!--				<input type="text" class="form_control" value="티비제이 제기장 스웨터" placeholder="NBA 겨울 클리어런스+봄 프리뷰!">-->
 <!--				<button class="btn_x"><span>검색어 지우기</span></button>-->
@@ -348,7 +348,7 @@
 <!--				<p class="nodata_txt">&lsquo;<span>스웨터 제기장</span>&rsquo; 에 맞는 상품을 찾지 못했습니다.<br>검색어를 변경해 보세요.</p>-->
 			</div>
 		</div>
-		<div class="inner" id="keyupCateArea">
+		<div class="inner" id="keyupCateArea" th:if="${brandGroupNo==null}">
 			<div class="sch_category">
 <!--				<h3>카테고리</h3>-->
 <!--				<ul>-->

+ 8 - 1
src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html

@@ -86,6 +86,13 @@
 		gagaPaging.load(1);
 	}
 	
+	String.prototype.unescapeHtml = function(){
+	  return this.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"");
+	};
+
+
+
+	
 	var fnGetListCallback = function(result) {
 		$('#ulNotice').html('');
 
@@ -120,7 +127,7 @@
 				tag += '	</div>\n';
 				tag += '	<div class="fold_cont" style="display: none;">\n';
 				tag += '		<div class="fold_detail">\n';
-				tag += '			<div>' + item.noticeContent + '</div>\n';
+				tag += '			<div>' + item.noticeContent.replaceAll('&lt;','<').replaceAll('&gt;', '>').replaceAll('&quot;', '"') + '</div>\n';
 				tag += '		</div>\n';
 				tag += '	</div>\n';
 				tag += '</li>\n';

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

@@ -59,7 +59,7 @@
 			
 			<!-- search -->
 			<div class="search">
-				<button type="button" class="btn_open_search"><i class="ico ico_search"><em>통합검색 열기</em></i></button>
+				<button type="button" class="btn_open_search" th:onClick="cfnSearchLayer([[${brandGroupInfo.brandGroupNo}]]);"><i class="ico ico_search"><em>통합검색 열기</em></i></button>
 				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count"></span></a>
 			</div>
 			<!-- //search -->

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

@@ -108,9 +108,9 @@
 			<!-- search -->
 			<div class="search">
 				<!-- 프로모션 문구 노출 검색용-->
-				<div class="area">
-					<p class="promotion_search">모이몰론, 남들보다 빠르게! 신상 check</p>
-					<button type="button" class="btn_sch_promotion" id="btnGnbSearch" onclick="cfnSearchLayer();"><i class="ico ico_search"><em>프로모션 검색 바로가기</em></i></button>
+				<div class="area" id="searchArea">
+<!--					<p class="promotion_search">모이몰론, 남들보다 빠르게! 신상 check</p>-->
+<!--					<button type="button" class="btn_sch_promotion" id="btnGnbSearch" onclick="cfnSearchLayer();"><i class="ico ico_search"><em>프로모션 검색 바로가기</em></i></button>-->
 				</div>
 				<!-- //프로모션 문구 노출 검색용-->
 				<!-- 통합검색 -->
@@ -507,6 +507,29 @@
 			}
 		});
 	}
+
+	// 검색키워드 조회
+	var fnCreateSearchArea = function (){
+		var url = '/display/search/keyword/list';
+		let html = '';
+		$.getJSON(url, function (result, status){
+			if(result.length>0){
+				$.each(result, function (idx, item) {
+					html += '<p class="promotion_search">'+item.keyword+'</p>\n';
+					html += '<button type="button" class="btn_sch_promotion" id="btnGnbSearch" onclick="fnGotoLink(\''+item.linkUrl+'\');"><i class="ico ico_search"><em>프로모션 검색 바로가기</em></i></button>';
+				});
+			}else{
+				html += '<p class="promotion_search"></p>\n';
+				html += '<button type="button" class="btn_sch_promotion" id="btnGnbSearch" onclick="cfnSearchLayer();"><i class="ico ico_search"><em>프로모션 검색 바로가기</em></i></button>\n';
+			}
+			$("#searchArea").append(html);
+		});
+	}
+
+	// 검색 키워드 링크 연결
+	let fnGotoLink = function (linkUrl){
+		document.location.href = linkUrl;
+	}
 	
 	// gnb overs show/hide
 	function fnui_gnbOvers() {
@@ -626,6 +649,9 @@
 
 		// 띠배너 조회
 		fnCreateTopBanner();
+
+		// 검색키워드 조회
+		fnCreateSearchArea();
 	});
 /*]]>*/
 </script>

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

@@ -49,7 +49,7 @@
 				</div>
 				<!-- //최근검색어 없을 시 노출 -->
 			</div>
-			<div class="popular_blk">
+			<div class="popular_blk" th:if="${brandGroupNo==null}">
 				<h3>STYLE24에서 검색되고 있어요</h3>
 				<div class="list_popular_keword">
 					<ul id="popularKeyArea">
@@ -125,7 +125,7 @@
 		<!-- //검색결과 입력 전 -->
 		<!-- 검색결과 입력 후 -->
 		<div class="searching_box" style="display:none;">
-			<div class="autokeyword_blk">
+			<div class="autokeyword_blk" th:if="${brandGroupNo==null}">
 <!--				<ul>-->
 <!--					<li><a href=""><em>가</em>을컬리수</a></li>-->
 <!--					<li><a href=""><em>가</em>드상하</a></li>-->
@@ -139,7 +139,7 @@
 <!--					<li><a href=""><em>가</em>을잠옷</a></li>-->
 <!--				</ul>-->
 			</div>
-			<div class="exfind_blk">
+			<div class="exfind_blk" th:if="${brandGroupNo==null}">
 				<!-- 검색어 매칭 브랜드 있을 시 노출  -->
 				<div class="find_brand">
 <!--					<h3><a href="">나이키 주니어 샵 바로가기</a></h3>-->
@@ -364,6 +364,8 @@
 	});
 
 	$(document).ready( function() {
+		console.log('xxxx brandNo::'+[[${brandGroupNo}]]);
+
 		$("#layer_search").addClass('active');
 
 		if (trendKeywordList.length > 0) {

BIN
src/main/webapp/images/mo/ico_btn_expand.png


BIN
src/main/webapp/images/mo/ico_btn_narrow.png


BIN
src/main/webapp/images/pc/apple-touch-icon.png


BIN
src/main/webapp/images/pc/favicon-16x16.png


BIN
src/main/webapp/images/pc/favicon-32x32.png


+ 0 - 68
src/main/webapp/ux/plugins/gaga/gaga.alert.js

@@ -1,68 +0,0 @@
-/*
- * Alert, Confirm Java Script written by gagamel.
- *
- * Copyright (c) 2010 gagamel
- * Dual licensed under GPL (GPL-LICENSE.txt) licenses.
- *
- * $Date: 2019-07-01 $
- */
-
-var gagaAlert = {
-	obj : {
-		message : '',
-		callback : '',
-		cancelCallback : ''
-	},
-	
-	show : function(type, message) {
-		var liTag = '<ul class="popup modal" data-width="350" style="min-width: 350px;">\n';
-		liTag += '		<li class="mdPopContent">' + message + '</li>\n';
-		liTag += '		<li class="mdPopBtnB aR">\n';
-		liTag += '			<button id="okBtn" type="button" class="btn btn-primary btn-lg" onclick="gagaAlert.ok();">확인</button>\n';
-		
-		if (type == 'confirm') {
-			liTag += '			<button type="button" class="btn btn-dark btn-lg" onclick="gagaAlert.cancel();">취소</button>\n';
-		}
-		
-		liTag += '		</li>\n';
-		liTag += '	</ul>\n';
-
-		if ($('#customAlert').length == 0) {
-			var tag = '<div class="popupWrap bgTrans" id="customAlert" style="z-index:900;">\n';
-			tag += liTag;
-			tag += '</div>';
-			$('body').append(tag);
-		} else {
-			$('#customAlert').append(liTag);
-		}
-		uifnMpopup('customAlert');
-		$("#okBtn").attr("tabindex", -1).focus();
-	},
-	
-	alert : function(message,callback) {
-		this.obj.callback = null;
-		gagaAlert.show('alert', message);
-		this.obj.callback = callback;
-	},
-	
-	confirm : function(message, callback, cancelCallback) {
-		gagaAlert.show('confirm', message);
-		this.obj.callback = callback;
-		this.obj.cancelCallback = cancelCallback;
-	},
-	
-	ok : function() {
-		uifnPopClose('customAlert');
-		if (typeof(this.obj.callback) != undefined && typeof(this.obj.callback) == 'function' && this.obj.callback != null ) {
-			this.obj.callback('abc');
-		}
-	},
-	
-	cancel : function() {
-		uifnPopClose('customAlert');
-		if (typeof(this.obj.cancelCallback) != undefined && typeof(this.obj.cancelCallback) == 'function' && this.obj.cancelCallback != null ) {
-			this.obj.cancelCallback('abc');
-		}
-	}
-	
-}

+ 0 - 73
src/main/webapp/ux/plugins/gaga/gaga.se2.js

@@ -1,73 +0,0 @@
-/*
- * Smart Editor Java Script written by gagamel.
- *
- * Copyright (c) 2010 gagamel
- * Dual licensed under GPL (GPL-LICENSE.txt) licenses.
- *
- * $Date: 2019-07-02 $
- * 
- * 사용 예)
- * 		// HTML 태그는 textarea로 구성
- * 		// id는 gagaSe2.createSmartEditor 함수 호출 시에 넘겨줘야 한다.
- * 		<textarea name="contentKorWeb" id="contentKorWeb" rows="5" cols="50" style="width: 100%; height: 400px;"></textarea>
- * 
- * 		// Import할 자바스크립트 파일
- * 		<script type="text/javascript" src="/se2/js/service/HuskyEZCreator.js?v=2019070211"></script>
- *		<script type="text/javascript" src="/ux/plugins/gaga/gaga.se2.js?v=2019070222"></script>
- *
- * 		<script type="text/javascript">
- * 			// Get a SmartEditor2 options
- * 			var se2Options = gagaSe2.getEditorOptions();
- * 
- * 			$(document).ready(function() {
- * 				// Create a SmartEditor2
- * 				gagaSe2.createSmartEditor(se2Options, 'contentKorWeb');
- * 			});
- * 		</script>
- */
-
-var gagaSe2 = {
-	obj : {
-		oEditors : []
-	},
-	
-	/**
-	 * Get a Smart Editor options
-	 */
-	getEditorOptions : function() {
-		return {
-				oAppRef: this.obj.oEditors,
-				sSkinURI: '/se2/SmartEditor2Skin.html',
-				htParams : {
-					bUseToolbar : true, // 툴바사용
-					bUseVerticalResizer : true, // 입력창크기조절바사용
-					bUseModeChanger : true, // 모드탭(Editor|HTML|TEXT)사용
-//					bSkipXssFilter : true, // client-side xss filter 무시
-//					aAdditionalFontList : aAdditionalFontSet, // 추가 글꼴 목록
-					fOnBeforeUnload : function() {
-					}
-				},
-				fCreator: 'createSEditor2'
-		};
-	},
-	
-	/**
-	 * Create a Smart Editor
-	 * @param editorId - 에디터 ID
-	 */
-	createSmartEditor : function(editorOptions, editorId) {
-		editorOptions.elPlaceHolder =editorId;
-		nhn.husky.EZCreator.createInIFrame(editorOptions);
-	},
-	
-	/**
-	 * 스마트에디터에 입력한 내용이 editorId로 지정된 textarea에 설정되고,
-	 * textarea에 설정된 값을 반환한다.
-	 * @param editorId - 에디터 ID
-	 */
-	getContents : function(editorId) {
-		this.obj.oEditors.getById[editorId].exec("UPDATE_CONTENTS_FIELD", []);
-		return document.getElementById(editorId).value;
-	}
-	
-}

+ 0 - 129
src/main/webapp/ux/plugins/gaga/gaga.smarteditor.js

@@ -1,129 +0,0 @@
-/*
- * Smart Editor Java Script written by gagamel.
- *
- * Copyright (c) 2010 gagamel
- * Dual licensed under GPL (GPL-LICENSE.txt) licenses.
- *
- * $Date: 2019-07-02 $
- *
- * 사용 예)
- * 		// HTML 태그는 textarea로 구성
- * 		// id는 gagaSe.createSmartEditor 함수 호출 시에 넘겨줘야 한다.
- * 		<textarea name="contentKorWeb" id="contentKorWeb" rows="5" cols="50" style="width: 100%; height: 400px;"></textarea>
- *
- * 		// Import할 자바스크립트 파일
- * 		<script type="text/javascript" src="/smartEditor/js/HuskyEZCreator.js?v=2019070303" charset="utf-8"></script>
- * 		<script type="text/javascript" src="/ux/plugins/gaga/gaga.smarteditor.js?v=2019070301"></script>
- *
- * 		<script type="text/javascript">
- * 			// Get a SmartEditor options
- * 			var seOptions = gagaSe.getEditorOptions();
- *
- * 			$(document).ready(function() {
- * 				// Create a SmartEditor
- * 				gagaSe.createSmartEditor(seOptions, 'contentKorWeb');
- * 			});
- * 		</script>
- */
-
-var gagaSe = {
-	obj : {
-		oEditors : []
-	},
-
-	/**
-	 * Get a Smart Editor options
-	 */
-	getEditorOptions : function() {
-		return {
-				oAppRef: this.obj.oEditors,
-				sSkinURI: '/smartEditor/SEditorSkin.html',
-				htParams : {
-					bUseToolbar : true, // 툴바사용
-					bUseVerticalResizer : true, // 입력창크기조절바사용
-					bUseModeChanger : true, // 모드탭(Editor|HTML|TEXT)사용
-					fOnBeforeUnload : function() {
-					}
-				},
-
-				fCreator: 'createSEditorInIFrame'
-		};
-	},
-
-	/**
-	 * Create a Smart Editor
-	 * @param editorId - 에디터 ID
-	 */
-	createSmartEditor : function(editorOptions, editorId) {
-		editorOptions.elPlaceHolder = editorId;
-		nhn.husky.EZCreator.createInIFrame(editorOptions);
-	},
-
-	/**
-	 * 스마트에디터에 입력한 내용이 editorId로 지정된 textarea에 설정되고,
-	 * textarea에 설정된 값을 반환한다.
-	 * @param editorId - 에디터 ID
-	 */
-	getContents : function(editorId) {
-		this.obj.oEditors.getById[editorId].exec("UPDATE_IR_FIELD", []);
-		return document.getElementById(editorId).value;
-	},
-
-	setContents : function(editorId, content) {
-		var newContent = "";
-		if (content != null) {
-			newContent = content.replaceAll("&lt;", "<").replaceAll("&gt;",">");
-		}
-
-		try {
-			this.obj.oEditors.getById[editorId].exec("SET_IR", [newContent]);
-		} catch(e) {
-			$('#'+editorId).val(newContent);
-		}
-	},
-
-	/**
-	 * @type   : function
-	 * @access : public
-	 * @desc   : 스마트에디터 유효성 검사
-	 * <pre>
-	 *     gagaSe.getContents('contentKorWeb');
-	 *     getContents 를 먼저 해줘야 textarea에 스마트에디터 내용이 들어간다.
-	 *     if (!gagaSe.validationCheck($('#registerwebKorViewYn') , $('#contentKorWeb'))) return;
-	 *     또는
-	 *     if (!gagaSe.validationCheck($('#detailForm input:checkbox[name=webKorViewYn]') , $('#detailForm textarea[name=contentKorWeb]'))) return;
-	 * </pre>
-	 * @param  : elTarget - 국가/디바이스 스마트에디터(필수)
-	 * @param  : elCheck - 국가/디바이스 체크박스(옵션)
-	 * @since  : 2019/08/21
-	 * @author : rladbwnd5
-	 */
-	validationCheck : function(elTarget, elCheck) {
-		if (elTarget.prop('tagName') != 'TEXTAREA') {
-			mcxDialog.alert('파라메터 입력 오류');
-			console.log('입력하신 파라메터는 ' + elTarget.prop('tagName') + '입니다. textarea를  입력하세요.');
-			return false;
-		}
-
-		var checkStr = $(elTarget).val().replaceAll("<p>", "").replaceAll("</p>","").replaceAll("<br>","").replaceAll("<span style=\"white-space:pre\">","").replaceAll("&nbsp;","").replaceAll("</span>","");
-		var checked = $(elCheck).is(":checked") ? true : false;
-
-		if (checked) {
-			if (gagajf.isNull(checkStr)) {
-				var TargetNm = $(elCheck)[0].labels[0].textContent;
-				mcxDialog.alert(TargetNm + '에 체크된 내용을 입력하세요.');
-				return false;
-			}
-		} else {
-			if (elCheck == null) {
-				if (gagajf.isNull(checkStr)) {
-					mcxDialog.alert('내용을 입력하세요.');
-					return false;
-				}
-			}
-		}
-
-		return true;
-	}
-
-}

+ 6 - 3
src/main/webapp/ux/style24_link.js

@@ -93,7 +93,7 @@ const _PAGE_NOMEMBER_ORDER_DETAIL = _frontUrl + "/noMember/order/detail/form/";
 const _PAGE_NOMEMBER_CRE_LIST = _frontUrl + "/noMember/cre/list/form";				// 비회원 > 취소/교환/반품 목록
 
 //== 검색 ==/
-const _PAGE_SEARCH_LAYER = _frontUrl + "/display/search/layer/";					// 검색레이어
+const _PAGE_SEARCH_LAYER = _frontUrl + "/display/search/layer";					// 검색레이어
 const _PAGE_SEARCH_GOODS = _frontUrl + "/display/search/goods/list/form";			// 검색상품목록
 
 //== 기획전 ==/
@@ -1447,10 +1447,13 @@ function cfnSearchLayer(brandGroupNo) {
 		$('body').append(str);
 	}
 
+	var params = "";
+	if (typeof (brandGroupNo) != 'undefined') params += "?brandGroupNo=" + brandGroupNo;
+
 	if ("P" == _frontGb) {
-		cfnOpenFullLayer(_PAGE_SEARCH_LAYER, 'layer_search');
+		cfnOpenFullLayer(_PAGE_SEARCH_LAYER + params, 'layer_search');
 	} else {
-		cfnOpenLayer(_PAGE_SEARCH_LAYER, 'layer_search');
+		cfnOpenLayer(_PAGE_SEARCH_LAYER + params, 'layer_search');
 	}
 }