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

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

card007 4 лет назад
Родитель
Сommit
0c8d02d760

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

@@ -661,24 +661,52 @@ public class TsfDisplayService {
 			login.setCustNo(0);
 		}
 
-		cate4Srch.setCustNo(login.getCustNo());
-		cate4Srch.setPageGb(contents.getPageGb());
-		cate4Srch.setContentsLoc(contents.getContentsLoc());
-		cate4Srch.setPageable(contents.getPageable());
-		cate4Srch.setPageNo(contents.getPageNo());
-		cate4Srch.setPageSize(contents.getPageSize());
-		cate4Srch.setPageUnit(contents.getPageUnit());
-		cate4Srch.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
-		cate4Srch.setCate1No(contents.getCateNo());
-		cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
-		cate4Srch.setCateGb("G032_101");
-
-		log.info("getBestItemCategoryGoodsList cate4Srch:::::::::{}", cate4Srch);
-
-		Collection<Goods> goodsList = goodsDao.getContentsCategoryGoodsList(cate4Srch);
+		String cateNo = String.valueOf(contents.getCateNo());
+		Collection<Goods> goodsList = new ArrayList<>();
+		if(!"".equals(cateNo) && !"null".equals(cateNo) && !cateNo.equals(null)){
+			cate4Srch.setCustNo(login.getCustNo());
+			cate4Srch.setPageGb(contents.getPageGb());
+			cate4Srch.setContentsLoc(contents.getContentsLoc());
+			cate4Srch.setPageable(contents.getPageable());
+			cate4Srch.setPageNo(contents.getPageNo());
+			cate4Srch.setPageSize(contents.getPageSize());
+			cate4Srch.setPageUnit(contents.getPageUnit());
+			cate4Srch.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
+			cate4Srch.setCate1No(contents.getCateNo());
+			cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
+			cate4Srch.setCateGb("G032_101");
+
+			log.info("getBestItemCategoryGoodsList cate4Srch:::::::::{}", cate4Srch);
+
+			goodsList = goodsDao.getContentsCategoryGoodsList(cate4Srch);
+			log.info("goodsList 1::::::{}",goodsList);
+		}
 
 		if (goodsList.size() < 100) {
 			// TODO 추천솔루션
+			log.info("goodsList.size()::::::{}",goodsList.size());
+			int cnt = 100 - goodsList.size();
+			log.info("itemList cnt::::::{}",cnt);
+			Collection<Eigeneai.Result> itemList = new ArrayList<>();
+			if(!"".equals(cateNo) && !"null".equals(cateNo) && !cateNo.equals(null)){
+				itemList = eigeneaiApi.getCategoryWeeklySellBestGoodsList(cnt, contents.getCateNo());
+			}else{
+				itemList = eigeneaiApi.getWeeklySellBestGoodsList(cnt);
+			}
+
+			log.info("itemList::::::{}",itemList);
+			for(Eigeneai.Result tempData: itemList){
+				Goods tempBest = new Goods();
+				tempBest.setBrandGroupNm(tempData.getProduct().getBrandName());
+				tempBest.setGoodsCd(tempData.getProduct().getItemId());
+				tempBest.setGoodsFullNm(tempData.getProduct().getItemName());
+				tempBest.setListPrice((int) tempData.getProduct().getOriginalPrice());
+				tempBest.setCurrPrice((int) tempData.getProduct().getSalePrice());
+				tempBest.setSysImgNm(tempData.getProduct().getItemImage().replaceAll("//image.istyle24.com/Upload/ProductImage/",""));
+				tempBest.setItemUrl(tempData.getProduct().getItemUrl());
+				goodsList.add(tempBest);
+			}
+			log.info("goodsList 2::::::{}",goodsList);
 		}
 
 		return goodsList;

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

@@ -290,8 +290,14 @@ public class EigeneaiApi {
 	 * @author gagamel
 	 * @since 2021. 6. 30
 	 */
-	public Collection<Item> getRealtimeViewBestGoodsList(int size) {
-		String requestUrl = rtsApiUrl + "/stats-transition?cuid=" + cuid + "&size=" + size + "&type=view&interval=5&span=10";
+	public Collection<Item> getRealtimeViewBestGoodsList(int size , String cate1No) {
+		String requestUrl = "";
+		if(cate1No.equals(null) || "null".equals(cate1No) || "".equals(cate1No)){
+			requestUrl = rtsApiUrl + "/stats-transition?cuid=" + cuid + "&size=" + size + "&type=view&interval=30&span=30&offset=0&categoryid1=";
+		}else{
+			requestUrl = rtsApiUrl + "/stats-transition?cuid=" + cuid + "&size=" + size + "&type=view&interval=30&span=30&offset=0&categoryid1="+cate1No;
+		}
+		//&type=view&interval=5&span=10
 
 		Eigeneai eigeneai = this.getEigeneaiInfo(requestUrl);
 		if (eigeneai.getItems() != null && !eigeneai.getItems().isEmpty()) {

+ 23 - 2
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.style24.persistence.domain.eigene.Eigeneai;
+import com.style24.persistence.domain.eigene.Item;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
@@ -851,8 +852,13 @@ public class TsfDisplayController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/BestMainForm"));
 
 		contents.setContentsLoc("SCM003");
+		// 실시간 상품
+		mav.addObject("viewBestGoodsList", eigeneaiApi.getRealtimeViewBestGoodsList(20, String.valueOf(contents.getCateNo())));
+		// 카테고리 리스트
 		mav.addObject("bestCateList", displayService.getBestItemCategoryList(contents));
 
+		log.info("bestMain mav::::{}",mav);
+
 		return mav;
 	}
 
@@ -872,14 +878,16 @@ public class TsfDisplayController extends TsfBaseController {
 		contents.setContentsLoc("SCM003");
 		contents.setPageGb("BEST");
 
-		int totalCnt = displayService.getContentsCategoryGoodsCount(contents);
+		Collection<Goods> bestGoodsList = displayService.getBestItemCategoryGoodsList(contents);
+		result.set("dataList", bestGoodsList);
+//		int totalCnt = displayService.getContentsCategoryGoodsCount(contents);
+		int totalCnt = bestGoodsList.size();
 		pageable.setTotalCount(totalCnt);
 		contents.setPageable(pageable);
 
 		result.set("paging", contents);
 		result.set("totalCnt", totalCnt);
 		result.set("endRow", pageable.getEndRow());
-		result.set("dataList", displayService.getBestItemCategoryGoodsList(contents));
 		return result;
 	}
 
@@ -1358,4 +1366,17 @@ public class TsfDisplayController extends TsfBaseController {
 
 		return diquest.getCategoryList(cate1);
 	}
+
+	/**
+	 * 베스트 실시간 상품 목록
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 7. 21
+	 */
+	@GetMapping("/realtime/best/list")
+	@ResponseBody
+	public Collection<Item> getRealtimeBestGoodsList(Contents contents) {
+		String cateNo = String.valueOf(contents.getCateNo());
+		return eigeneaiApi.getRealtimeViewBestGoodsList(30, cateNo);
+	}
 }

+ 1 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfDelivery.xml

@@ -57,6 +57,7 @@
 		/*TssDelivery.updateTbOrderDtlStat*/
 		UPDATE TB_ORDER_DETAIL SET
 			  ORD_DTL_STAT = #{ordDtlStat}
+			, DELV_EDDT    = NOW()
 			, UPD_NO       = #{regNo}
 			, UPD_DT       = NOW()
 		WHERE ORD_DTL_NO   = #{ordDtlNo}

+ 39 - 27
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -964,10 +964,10 @@
 		              , ''                                                 AS IMG_PATH2
 		              , CONCAT('/planning/detail/form?planSq=', P.PLAN_SQ) AS STR_VAR1
 		              , ''                                                 AS STR_VAR2
-		              , P.DTL_TITLE1                                       AS STR_TITLE1
-		              , P.DTL_TITLE2                                       AS STR_TITLE2
-		              , ''                                                 AS SUB_TEXT1
-		              , ''                                                 AS SUB_TEXT2
+		              , P.PLAN_NM                                          AS STR_TITLE1
+		              , ''                                                 AS STR_TITLE2
+		              , P.DTL_TITLE1                                       AS SUB_TEXT1
+		              , P.DTL_TITLE2                                       AS SUB_TEXT2
 		         FROM TB_PLAN P
 		         INNER JOIN TB_PLAN_BRAND PB ON P.PLAN_SQ = PB.PLAN_SQ AND PB.DISP_YN = 'Y'
 		         WHERE 1 = 1
@@ -1211,37 +1211,49 @@
 	<!-- 브랜드 전체 이미지 리스트 조회 -->
 	<select id="getBrandImgList" parameterType="BrandGroup" resultType="BrandGroup">
 		/* TsfDisplay.getBrandImgList */
+		WITH TAB AS (
+		    SELECT  STR_TITLE3
+		    FROM  TB_CONTENTS
+		    WHERE 1=1
+		    AND   CONTENTS_LOC = 'STAB001'
+		    AND   DISP_STDT <![CDATA[<=]]> NOW()
+		    AND   DISP_EDDT <![CDATA[>=]]> NOW()
+		    GROUP BY STR_TITLE3
+		    ORDER BY STR_TITLE3
+		    LIMIT 1
+		)
 		SELECT	Z.BRAND_GROUP_NO
-		, FN_GET_BRAND_INITIAL(Z.BRAND_GROUP_NM) AS BRAND_INITIAL
-		, Z.BRAND_GROUP_NM
-		, Z.DISP_NM_LANG
-		, Z.BRAND_GROUP_ENM
-		, Z.BRAND_GROUP_KNM
-		, Z.LOGO_FILE_NM
+		     , FN_GET_BRAND_INITIAL(Z.BRAND_GROUP_NM) AS BRAND_INITIAL
+		     , Z.BRAND_GROUP_NM
+		     , Z.DISP_NM_LANG
+		     , Z.BRAND_GROUP_ENM
+		     , Z.BRAND_GROUP_KNM
+		     , Z.LOGO_FILE_NM
 		FROM (
-		SELECT  BG.BRAND_GROUP_NO
-		, (CASE WHEN BG.DISP_NM_LANG = 'EN' THEN BG.BRAND_GROUP_ENM ELSE BG.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
-		, BG.DISP_NM_LANG
-		, BG.BRAND_GROUP_ENM
-		, BG.BRAND_GROUP_KNM
-		, BG.LOGO_FILE_NM
-		FROM  TB_CONTENTS C
-		LEFT JOIN TB_BRAND B ON C.STR_VAR1 = B.BRAND_GROUP_NO
-		INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-		WHERE	1=1
-		AND	B.USE_YN = 'Y'
-		AND	BG.USE_YN = 'Y'
+		    SELECT  BG.BRAND_GROUP_NO
+		          , (CASE WHEN BG.DISP_NM_LANG = 'EN' THEN BG.BRAND_GROUP_ENM ELSE BG.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
+		          , BG.DISP_NM_LANG
+		          , BG.BRAND_GROUP_ENM
+		          , BG.BRAND_GROUP_KNM
+		          , BG.LOGO_FILE_NM
+		    FROM  TAB T
+		    JOIN  TB_CONTENTS C ON T.STR_TITLE3 = C.STR_TITLE3
+		    LEFT JOIN TB_BRAND B ON C.STR_VAR1 = B.BRAND_GROUP_NO
+		    INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		    WHERE	1=1
+		    AND		B.USE_YN = 'Y'
+		    AND		BG.USE_YN = 'Y'
 		<if test='selfYn != null and selfYn == "Y"'>
-			AND	B.SELF_YN = 'Y'
-			AND	(BG.LOGO_FILE_NM <![CDATA[<>]]> '' AND BG.LOGO_FILE_NM IS NOT NULL)
+		    AND		B.SELF_YN = 'Y'
+		    AND		(BG.LOGO_FILE_NM <![CDATA[<>]]> '' AND BG.LOGO_FILE_NM IS NOT NULL)
 		</if>
 		<if test="brandGroupNo != null and brandGroupNo != ''">
-			AND	B.BRAND_GROUP_NO = #{brandGroupNo}
+		    AND		B.BRAND_GROUP_NO = #{brandGroupNo}
 		</if>
 		<if test="brandGroupNm != null and brandGroupNm != ''">
-			AND	(BG.BRAND_GROUP_ENM LIKE CONCAT('%',#{brandGroupNm},'%') OR BG.BRAND_GROUP_KNM LIKE CONCAT('%',#{brandGroupNm},'%'))
+		    AND		(BG.BRAND_GROUP_ENM LIKE CONCAT('%',#{brandGroupNm},'%') OR BG.BRAND_GROUP_KNM LIKE CONCAT('%',#{brandGroupNm},'%'))
 		</if>
-		GROUP BY C.STR_TITLE2, C.DISP_ORD , BG.BRAND_GROUP_NO
+		GROUP BY  C.STR_TITLE2, C.DISP_ORD , BG.BRAND_GROUP_NO
 		) Z
 		WHERE	1=1
 	</select>

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

@@ -1537,9 +1537,7 @@
 		                                                                                        </if>
 		                                                                                    </if>
 		                                                                                    AND A.USE_YN = 'Y' ORDER BY A.DISP_ORD
-		                                                                                    <if test="pageGb == null and pageGb != 'BEST'">
 		                                                                                    LIMIT 1
-		                                                                                    </if>
 		                                                                          ) AS TMP
 		                                                              )
 		                    </if>

+ 1 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -1135,6 +1135,7 @@
 		            AND    O.OPT_CD1 = C.COLOR_CD
 		            AND    C.COLOR_GRP_CD = CC.CD
 		            AND    O.DISP_YN = 'Y'
+					AND    C.COLOR_GRP_CD = CC.CD
 		            AND    C.USE_YN = 'Y'
 		            AND    CC.USE_YN = 'Y'
 		            GROUP  BY PG.GOODS_CD

+ 5 - 76
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -677,45 +677,6 @@
 														</dd>
 													</dl>
 												</li>
-												<li>
-													<dl>
-														<dt>
-															<button>
-																<span class="fold_rank">8</span>
-																<span class="fold_txt">키워드_8</span>
-															</button>
-														</dt>
-														<dd>
-															키워드_8_슬라이드
-														</dd>
-													</dl>
-												</li>
-												<li>
-													<dl>
-														<dt>
-															<button>
-																<span class="fold_rank">9</span>
-																<span class="fold_txt">키워드_9</span>
-															</button>
-														</dt>
-														<dd>
-															키워드_9_슬라이드
-														</dd>
-													</dl>
-												</li>
-												<li>
-													<dl>
-														<dt>
-															<button>
-																<span class="fold_rank">10</span>
-																<span class="fold_txt">키워드_10</span>
-															</button>
-														</dt>
-														<dd>
-															키워드_10_슬라이드
-														</dd>
-													</dl>
-												</li>
 											</ol>
 											<!-- 폴딩종료 -->
 										</div>
@@ -1178,10 +1139,10 @@
 			pagination: {
 				el: '.swiper-pagination',
 			},
-			autoplay: {
-				delay: 24700,
-				disableOnInteraction: false,
-			},
+			// autoplay: {
+			// 	delay: 24700,
+			// 	disableOnInteraction: false,
+			// },
 			on : {
 				slideChange: function(){
 					foryouIndex = 0;
@@ -1202,11 +1163,8 @@
 		});
 
 		var foryouIndex = 0;
-		//var foryouIndex1 = -1;
-		//var foryouIndex2 = -1;
 		var cntNum = 0;
 		function foryouInterval(_foryouIndex) {
-			//console.log($(".main_foryou .post-sug .swiper-slide.swiper-slide-active .list_cate li")[0]);
 			var foryouCateItems1 = $(".main_foryou .post-sug .swiper-slide.type1.swiper-slide-active .list_cate li");
 			var foryouCateItems2 = $(".main_foryou .post-sug .swiper-slide.type2.swiper-slide-active .list_cate li");
 			$(".main_foryou .post-sug .swiper-slide.type1 .list_cate li").removeClass("on");
@@ -1216,50 +1174,20 @@
 				$(foryouCateItems1[(_foryouIndex + 1) % 5]).addClass("on");
 				if (_foryouIndex >= 5) foryouIndex = 0;
 				foryouIndex++;
-				//$(foryouCateItems1[_foryouIndex % 5]).removeClass("on");
-				//setTimeout(function () {
-				//		foryouInterval(foryouIndex1);
-				//		if (foryouIndex1 >= 5) foryouIndex1 = 0;
-				//		foryouIndex1++;
-				//}, 0);
 				$(foryouCateItems1).click(function () {
-					//console.log($(this).index());
 					foryouIndex = $(this).index();
-					//setInterval(function () {
-					//	foryouInterval(foryouIndex1);
-					//	if (foryouIndex1 >= 5) foryouIndex1 = 0;
-					//	foryouIndex1++;
-					//}, 2000);
 					clearInterval(stopInter);
 					stopInter = startTimeInterval();
-					//setTimeout(function () {
-					//	foryouInterval(foryouIndex);
-					//}, 0);
 				});
 			}
 			if($(".main_foryou .post-sug .swiper-slide.type2").hasClass("swiper-slide-active")){
 				$(foryouCateItems2[(_foryouIndex + 1) % 5]).addClass("on");
 				if (_foryouIndex >= 5) foryouIndex = 0;
 				foryouIndex++;
-				//$(foryouCateItems2[_foryouIndex % 5]).removeClass("on");
-				//setTimeout(function () {
-				//		foryouInterval(foryouIndex2);
-				//		if (foryouIndex2 >= 5) foryouIndex2 = 0;
-				//		foryouIndex2++;
-				//}, 0);
 				$(foryouCateItems2).click(function () {
-					//console.log($(this).index());
 					foryouIndex = $(this).index();
-					//setInterval(function () {
-					//	foryouInterval(foryouIndex2);
-					//	if (foryouIndex2 >= 5) foryouIndex2 = 0;
-					//	foryouIndex2++;
-					//}, 2000);
 					clearInterval(stopInter);
 					stopInter = startTimeInterval();
-					//setTimeout(function () {
-					//	foryouInterval(foryouIndex);
-					//}, 0);
 				});
 			}
 		}
@@ -1281,6 +1209,7 @@
 
 
 		var post_sug_items = new Swiper ('.swiper-container.post-sug-items', {
+			autoHeight: true, //210720_ 추가
 			slidesPerView: 3,
 			spaceBetween: 10,
 			speed : 1000,

+ 90 - 16
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -759,7 +759,7 @@ if(template.length>0){
 }
 
 if(template.length>0){
-	if(review.length>0 || reviewContent[0].title != ''){
+	if(review.length>0 || (reviewContent.length>0 && !gagajf.isNull(reviewContent[0].title)) ){
 		$("#G082_10").show();
 		var html = '';
 		
@@ -882,7 +882,7 @@ if(image.length>0){
 
 
 if(template.length>0){
-	if(coupon.length>0 || (couponContent[0].title != '' && couponContent[0].title != null) || (couponContent[0].cpnNote0 != '' && couponContent[0].cpnNote0 != null)){
+	if(coupon.length>0 || (couponContent.length > 0 && !gagajf.isNull(couponContent[0].title)) || (couponContent.length > 0 && !gagajf.isNull(couponContent[0].cpnNote0))){
 		$("#G082_20").show();
 		
 		var html = '';
@@ -1090,18 +1090,30 @@ $(document).ready(function(){
 	//상단 빅배너 슬라이드
 	var big_banner_slide = new Swiper('.big_banner_slide .swiper-container', {
 		slidesPerView: 1,
-		spaceBetween: 8,
+		spaceBetween: 0,
+		speed: 1000,
 		centerMode: true,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		pagination: {
 			el: '.big_banner_slide .swiper-pagination',
 		},
 	});
 	//review 슬라이드
+	// 210615_ 수정 : 슬라이드 간격, width값, centeredSlides 수정.
 	var dp_reviewitem_slide = new Swiper('.review .swiper-container', {
-		slidesPerView: 1,
-		spaceBetween: 8,
+		slidesPerView: 'auto',
+		spaceBetween: 15,
+		speed: 1000,
 		loop: true,
-		centerMode: true,
+		centeredSlides: true,
 		pagination: {
 			el: '.review .swiper-pagination',
 			type: 'fraction',
@@ -1111,6 +1123,16 @@ $(document).ready(function(){
 	var dp_listItems_cont1 = new Swiper('.dp_listItems_cont .swiper-container.item01', {
 		slidesPerView: 1,
 		spaceBetween: 0,
+		speed: 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		centerMode: true,
 		pagination: {
 			el: '.dp_listItems_cont .swiper-container.item01 .swiper-pagination',
@@ -1119,24 +1141,53 @@ $(document).ready(function(){
 
 	// 아이템스라이드(리스트갯수2)
 	var dp_listItems_slide3 = new Swiper('.dp_listItems_cont .swiper-container.item02', {
-		slidesPerView: 'auto',
-		slidesPerView: 2,
+		slidesPerView: "auto",
 		spaceBetween: 8,
+		speed: 1000,
 		centerMode: true,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 	});
 
 	// 아이템스라이드(리스트갯수3)
 	var dp_listItems_slide3 = new Swiper('.dp_listItems_slide .swiper-container.item03', {
 		slidesPerView: 3,
 		spaceBetween: 8,
+		speed: 1000,
 		centerMode: true,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 	});
 	
 	/* SLIDE - 다른 기획전,이벤트 보기 */
 	var other_promotion_slide = new Swiper('.other_promotion_slide .swiper-container', {
-		slidesPerView: 'auto',
+		slidesPerView: "auto",
 		spaceBetween: 8,
-		centerMode:true,
+		speed: 1000,
+		centerMode: true,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			firstSlideMessage: '첫번째 슬라이드 입니다',
+			lastSlideMessage: '마지막 슬라이드 입니다',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 	});
 	
 	 $(document).on('click','.popup_box .button_list button',function(){
@@ -1176,15 +1227,38 @@ $(document).ready(function(){
 	}); */
     
 	// 210415_드롭박스 상단고정
+	var itemTopTxt=$('.dp .dp_listItems_wrap.type1 .dp_subtitle').text();
+	var itemTop2Txt=$('.dp .dp_listItems_wrap.type2 .dp_subtitle').text();
+	var itemTop3Txt=$('.dp .other_promotion_slide .dp_subtitle').text();
 	$(window).scroll(function(){
 		var scrollTop= $(window).scrollTop();
-		var itemTop=$('.dp .dp_listItems_wrap.type1').offset().top;
+		var itemTop=$('.dp .dp_listItems_wrap.type1').offset().top - 61;  // 210720_위치 이동 치수 추가
+		var itemTop2=$('.dp .dp_listItems_wrap.type2').offset().top - 61; // 210720_위치 이동 치수 추가
+		var itemTop3=$('.dp .other_promotion_slide').offset().top - 61;   // 210720_위치 이동 치수 추가
+		$('.dp .dp_listItems_wrap .items_option').css('display', 'block');
 
-        if (scrollTop >= itemTop){
-            $('.dp .dp_listItems_wrap .items_option').addClass('fix');
-        } else {
-            $('.dp .dp_listItems_wrap .items_option').removeClass('fix');
-        }
+		if (scrollTop >= itemTop-120 && scrollTop < itemTop2){
+			$('.dp .dp_listItems_wrap .items_option').addClass('fix');
+			$('.dp .dp_listItems_wrap .items_option').closest('.inner').css('padding-top', '7rem');
+			$('.dp .dp_listItems_wrap .items_option #filter').text(itemTopTxt);
+		} else if(scrollTop >= itemTop2 && scrollTop < itemTop3) {
+			$('.dp .dp_listItems_wrap .items_option #filter').text(itemTop2Txt);
+		} else if(scrollTop >= itemTop3) {
+			$('.dp .dp_listItems_wrap .items_option #filter').text(itemTop3Txt);
+		} else {
+			$('.dp .dp_listItems_wrap .items_option').removeClass('fix');
+			$('.dp .dp_listItems_wrap .items_option').closest('.inner').css('padding-top', '0');
+			$('.dp .dp_listItems_wrap .items_option #filter').text('모이몰른');
+		}
+		if($(window).scrollTop() + $(window).height() == $(document).height()) {
+			$('.dp .dp_listItems_wrap .items_option').css('display', 'none');
+		}
+		//210622_ 추가 : 헤더에 gnb 있을 경우. gnb 노출 제어.
+		if($(".typeSelector .items_option").hasClass("fix")){
+			$("#gnb").hide();
+		}else{
+			$("#gnb").show();
+		}
 	});
 	
 	//210510_추가 : 토스트 팝업 button 클릭 시 팝업 닫기.

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

@@ -367,15 +367,15 @@ $(document).ready(function(){
 		}
 	});
 	
-	$('.ev .survey_wrap .survey_con .survey_row input[type="radio"]').change(function(){
-		if ($('.etc_radio').is(':checked')) {
-			// $('.etc_input').removeAttr('disabled');
-			$('.etc_input').css({'visibility': 'visible'}); 
-		} else {
-			// $('.etc_input').attr('disabled', true);
-			$('.etc_input').css({'visibility': 'hidden'}); 
-		}   
-	});				
+	// $('.ev .survey_wrap .survey_con .survey_row input[type="radio"]').change(function(){
+	// 	if ($('.etc_radio').is(':checked')) {
+	// 		// $('.etc_input').removeAttr('disabled');
+	// 		$('.etc_input').css({'visibility': 'visible'});
+	// 	} else {
+	// 		// $('.etc_input').attr('disabled', true);
+	// 		$('.etc_input').css({'visibility': 'hidden'});
+	// 	}
+	// });
 	
 	
 })

+ 83 - 131
src/main/webapp/WEB-INF/views/web/display/BestMainFormWeb.html

@@ -45,127 +45,33 @@
 						</div>
 					</div>
 					<!-- 지금 많이 보고 있어요 -->
-					<div class="dp_best_live">
+					<div class="dp_best_live" id="itemViewArea">
 						<div class="sec_head">
 							<p class="dp_live_txt"><img src="/images/pc/dp_best_livetxt.jpg" alt="STYLE24 실시간 베스트 상품!   "></p>
 							<p class="displayH">지금 많이 <br> <span>보고 있어요</span></p>
-							<button type="button"><span><em class="time">17:30</em> 기준</span></button>
+							<button type="button"><span><em class="time" th:text="${#calendars.format(#calendars.createNow(), 'HH:mm')}">17:30</em> 기준</span></button>
 						</div>
 						<div class="sec_body">
 							<div class="swiper-container dp_live_slider">
 								<div class="swiper-wrapper">
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
+									<th:block th:each="item, status : ${viewBestGoodsList}">
+										<div class="swiper-slide">
+											<div class="item_prod">
+												<div class="item_state">
+													<button type="button" class="itemLike" th:classappend="${item.wishCnt > 0} ? 'likeit active'" onclick="cfnPutWishList(this);" th:attr="goodscd=${item.itemId}">관심상품 추가</button>
+													<a th:href="${item.itemUrl}" class="itemLink">
+														<div class="itemPic">
+															<img alt="" class="vLHTC pd_img" th:src="${item.imageUrl}">
+														</div>
+														<div class="itemName" th:text="${item.itemName}"></div>
+														<div class="viewCount">
+															<span th:text="${item.count < 10 ? '10명 미만' : item.count + '명 보는중'}"></span>
+														</div>
+													</a>
+												</div>
 											</div>
 										</div>
-									</div>
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
-											</div>
-										</div>
-									</div>
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
-											</div>
-										</div>
-									</div>
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
-											</div>
-										</div>
-									</div>
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
-											</div>
-										</div>
-									</div>
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
-											</div>
-										</div>
-									</div>
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
-											</div>
-										</div>
-									</div>
-									<div class="swiper-slide">
-										<div class="item_prod">
-											<div class="item_state">
-												<button type="button" class="itemLike">관심상품 추가</button>
-												<a href="#none" class="itemLink">
-													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-													</div>
-													<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
-													<div class="viewCount"><span>508</span>명 보는중</div>
-												</a>
-											</div>
-										</div>
-									</div>
+									</th:block>
 								</div>
 								<div class="swiper-controls">
 									<div class="swiper-scrollbar"></div>
@@ -217,14 +123,15 @@
 						</div>
 					</div>
 
-					<div id="infiniteContainer">
+					<div id="infiniteContainer" class="list_content">
 						<div id="listBoxOuter" class="itemsGrp">
-							<ul class="productlist quarter" >
+							<ul class="productlist quarter" id="listBox">
 							</ul>
 						</div>
 					</div>
-					<div class="list_content">
-						<div class="itemsGrp" id="listBox"> <!-- itemsGrp rank hot deal -->
+<!--					<div class="list_content">-->
+<!--						<div class="itemsGrp" id="listBox"> -->
+							<!-- itemsGrp rank hot deal -->
 							<!--<div class="item_prod">
 								<div class="item_state">
 									<button type="button" class="itemLike">관심상품 추가</button>
@@ -251,8 +158,8 @@
 									</a>
 								</div>
 							</div>-->
-						</div>
-					</div>
+<!--						</div>-->
+<!--					</div>-->
 				</div>
 			</div>
 			<div class="last_page" id="divLastPage" style="display: none;">
@@ -299,7 +206,7 @@
 		// if(gagajf.isNull(cateNo)){
 		// 	cateNo = 0;
 		// }
-
+		console.log('here1');
 		$.each($("#cateListArea").find('li'), function() {
 			$(this).removeClass();
 		});
@@ -310,14 +217,46 @@
 		}
 
 		$("#bestGoodsForm input[name=cateNo]").val(cateNo);
-		fnCategoryGoodsInfiniteScrollInit();
+
+		// 카테고리별 실시간 베스트 상품 조회 getRealtimeViewBestGoodsList
+		// fnRealtimeViewBestList(cateNo);
+
+		// fnCategoryGoodsInfiniteScrollInit();
 		gagaInfiniteScroll.getHistory();
 	}
 
+	//
+/*
+		let fnRealtimeViewBestList = function(cateNo) {
+			$.getJSON('/display/realtime/best/list'
+					, function(result, status) {
+						if (result.length > 0) {
+							searchEngineAllCate = result;
+							// GNB탭 > 브랜드 생성
+							// fnCreateGnbBrandGroup();
+							fnCreateGnbTab();
+						}
+					});
+		}
+		*/
+	var fnRealtimeViewBestList = function (cateNo){
+		$("#bestGoodsForm input[name=cateNo]").val(cateNo);
+		gagajf.ajaxFormSubmit("/display/realtime/best/list", document.bestGoodsForm, callbackRealtimeView);
+	}
+
+	var callbackRealtimeView = function (result){
+		console.log('[callbackRealtimeView]');
+		console.log('result::'+result);
+		console.log(result);
+		$("#itemViewArea").html('');
+	}
+
 	var totalCnt = 0;
 	var idx = 1;
 	// 상품 검색
 	var fnGetInfiniteScrollDataList = function (pageNum){
+		console.log('here2');
+		console.log('here2 pageNum::'+pageNum);
 		$("#bestGoodsForm input[name=pageNo]").val(pageNum+1);
 		// if(idx==1 || totalCnt > Number($("#bestGoodsForm").find("input[name=pageSize]").val())){
 		// 	idx++;
@@ -326,25 +265,37 @@
 	}
 
 	var fnDrawInfiniteScrollData = function (result){
-		totalCnt = result.totalCnt;
-		gagaInfiniteScroll.pageStatus.totalCount = result.totalCnt;
+		console.log('here3');
+		console.log(result);
+		totalCnt = result.paging.totalCount;
+		gagaInfiniteScroll.pageStatus.totalCount = totalCnt;
 		var ithrCd = '';
 		var contentLoc = '';
+		let dataListLen = 0;
+		if(result.dataList != null){
+			dataListLen = result.dataList.length-1;
+		}
 
-		if (result.dataList != null && result.dataList.length > 0) {
+		if (dataListLen > 0) {
+			idx++;
 			var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];;
-			let lastPage = result.paging.pageable.pageNo;
-			let endRow = result.endRow - result.paging.pageable.pageSize;
+			let lastPage = result.paging.pageNo;
+			let endRow = result.paging.endRow - result.paging.pageSize;
 			var htm = fnCreateGoodsList(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow);
 			gagaInfiniteScroll.draw(htm);
+			console.log('1818');
 		}else{
-			if(totalCnt > Number($("#bestGoodsForm").find("input[name=pageSize]").val())){
-				if($("#bestGoodsForm input[name=pageNo]").val()==1){
-					$('#listBox').html('<li class="none">상품정보가 존재하지 않습니다.</li>');
+			if(idx > 1) { // 데이터가 1건 이상
+				if(totalCnt > Number($("#bestGoodsForm").find("input[name=pageSize]").val())){
+					if($("#bestGoodsForm input[name=pageNo]").val()==1){
+						$('#listBox').html('<li class="none">상품정보가 존재하지 않습니다.</li>');
+					}
+					$("#divLastPage").show();
 				}
-				$("#divLastPage").show();
-			}
+			}else{
 
+			}
+			console.log('18');
 			gagaInfiniteScroll.draw('not');
 		}
 	}
@@ -359,9 +310,10 @@
 				historyData = {};
 			}
 			fnBestListSearch();
+			console.log('1');
 		}else{
 			fnCategoryGoodsInfiniteScrollInit();
-
+			console.log('2');
 			fnBestListSearch();
 		}
 	});

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

@@ -380,7 +380,7 @@ if(planCornerList.length>0 && plan.cornerNmDispYn == "Y"){
 }
 
 if(template.length>0){
-	if(review.length>0 || reviewContent[0].title != ''){
+	if(review.length>0 || (reviewContent.length>0 && !gagajf.isNull(reviewContent[0].title))){
 		$("#G082_10").show();
 		var html = '';
 		
@@ -717,7 +717,7 @@ if(template.length>0){
 }
 
 if(template.length>0){
-	if(coupon.length>0 || (couponContent[0].title != '' && couponContent[0].title != null) || (couponContent[0].cpnNote0 != '' && couponContent[0].cpnNote0 != null)){
+	if(coupon.length>0 || (couponContent.length > 0 && !gagajf.isNull(couponContent[0].title)) || (couponContent.length > 0 && !gagajf.isNull(couponContent[0].cpnNote0))){
 		$("#G082_20").show();
 		var html = '';
 		 
@@ -1147,6 +1147,13 @@ $(document).ready( function() {
 		slidesPerView: 1,
 		autoHeight:true,
 		speed : 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.promotion_visual.type2 .swiper-button-next',
 			prevEl: '.promotion_visual.type2 .swiper-button-prev',
@@ -1162,6 +1169,13 @@ $(document).ready( function() {
 		loop: true,
 		slidesPerView: 1,
 		speed : 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.mid_banner .swiper-button-next',
 			prevEl: '.mid_banner .swiper-button-prev',
@@ -1179,6 +1193,13 @@ $(document).ready( function() {
 		slidesPerGroup: 2,
 		spaceBetween: 20,
 		speed : 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.dp_listItems_cont.type2 .swiper-button-next',
 			prevEl: '.dp_listItems_cont.type2 .swiper-button-prev',
@@ -1196,6 +1217,13 @@ $(document).ready( function() {
 		slidesPerGroup: 4,
 		spaceBetween: 20,
 		speed : 1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.dp_listItems_cont.type3 .swiper-button-next',
 			prevEl: '.dp_listItems_cont.type3 .swiper-button-prev',
@@ -1210,6 +1238,13 @@ $(document).ready( function() {
 		slidesPerView: 5,
 		spaceBetween: 20,
 		speed:1000,
+		a11y: {
+			enabled: true,
+			notificationClass: 'swiper-notification',
+			prevSlideMessage: '이전 슬라이드',
+			nextSlideMessage: '다음 슬라이드',
+			paginationBulletMessage: '슬라이드 {{index}}로 이동',
+		},
 		navigation: {
 			nextEl: '.other_promotion_slide .swiper-button-next',
 			prevEl: '.other_promotion_slide .swiper-button-prev',

+ 9 - 9
src/main/webapp/WEB-INF/views/web/planning/PlanningEventPollFormWeb.html

@@ -362,15 +362,15 @@ $(document).ready( function() {
 	});
 
 
-	$('.ev .survey_wrap .survey_con .survey_row input[type="radio"]').change(function(){
-		if ($('.etc_radio').is(':checked')) {
-			// $('.etc_input').removeAttr('disabled');
-			$('.etc_input').css({'visibility': 'visible'}); 
-		} else {
-			// $('.etc_input').attr('disabled', true);
-			$('.etc_input').css({'visibility': 'hidden'}); 
-		}   
-	});		
+	// $('.ev .survey_wrap .survey_con .survey_row input[type="radio"]').change(function(){
+	// 	if ($('.etc_radio').is(':checked')) {
+	// 		// $('.etc_input').removeAttr('disabled');
+	// 		$('.etc_input').css({'visibility': 'visible'});
+	// 	} else {
+	// 		// $('.etc_input').attr('disabled', true);
+	// 		$('.etc_input').css({'visibility': 'hidden'});
+	// 	}
+	// });
 });
 
 

+ 1 - 1
src/main/webapp/biz/goods.js

@@ -285,7 +285,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 				}
 			}
 			// tag += '		<img class=" vLHTC pd_img" src="' + item.sysImgNm + '" data-img="' + item.sysImgNm2 + '" onerror="noneImg(this)">';
-			tag += '		<img class=" vLHTC pd_img" src="' + goodsUrl + '/' + item.sysImgNm.replaceAll('//image.istyle24.com/Upload/ProductImage/','') + '" data-img="' + goodsUrl + '/' + item.sysImgNm2.replaceAll('//image.istyle24.com/Upload/ProductImage/','') + '" onerror="noneImg(this)">';
+			tag += '		<img class=" vLHTC pd_img" src="' + goodsUrl + '/' + item.sysImgNm + '" data-img="' + goodsUrl + '/' + item.sysImgNm2 + '" onerror="noneImg(this)">';
 			if (!gagajf.isNull(item.sizes) && item.selfGoodsYn == 'Y') {
 				var sizeArr = item.sizes.split(",");
 				var minSize;