Browse Source

베스트메인

bin2107 4 years ago
parent
commit
8514298089

+ 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);
+	}
 }

+ 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>

+ 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();
 		}
 	});

+ 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;