Explorar el Código

베스트메인 수정

bin2107 hace 5 años
padre
commit
2d5c5d7cd7

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

@@ -401,4 +401,5 @@ public interface TsfGoodsDao {
 	 */
 	Collection<SearchEngine> getSearchGoodsList(SearchEngine params);
 
+	int getContentsCategoryGoodsCount(Cate4Srch cate4Srch);
 }

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

@@ -462,6 +462,8 @@ public class TsfDisplayService {
 		cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
 		cate4Srch.setCateGb("G032_101");
 
+		log.info("getBestItemCategoryGoodsList cate4Srch:::::::::{}",cate4Srch);
+
 		Collection<Goods> goodsList = goodsDao.getContentsCategoryGoodsList(cate4Srch);
 
 		if (goodsList.size() < 100) {
@@ -651,4 +653,25 @@ public class TsfDisplayService {
 		return cate1List;
 	}
 
+	public int getContentsCategoryGoodsCount(Contents contents) {
+		Cate4Srch cate4Srch = new Cate4Srch();
+		// 로그인 유무 확인 (로그인이 되어 있지 않으면 regNo 를 0으로 장바구니에 저장한다.)
+		Login login = new Login();
+		if (TsfSession.isLogin()) {
+			login = TsfSession.getInfo();
+		} else {
+			login.setCustNo(0);
+		}
+
+		cate4Srch.setCustNo(login.getCustNo());
+		cate4Srch.setPageGb(contents.getPageGb());
+		cate4Srch.setContentsLoc(contents.getContentsLoc());
+		cate4Srch.setMaxRow(100);
+		cate4Srch.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
+		cate4Srch.setCate1No(contents.getCateNo());
+		cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
+		cate4Srch.setCateGb("G032_101");
+		return goodsDao.getContentsCategoryGoodsCount(cate4Srch);
+	}
+
 }

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

@@ -747,20 +747,14 @@ public class TsfDisplayController extends TsfBaseController {
 
 		contents.setContentsLoc("SCM003");
 		contents.setPageGb("BEST");
-		MainLayout mainLayout = new MainLayout();
-		mainLayout.setGoodsList(displayService.getBestItemCategoryGoodsList(contents));
-		int totalCnt = mainLayout.getGoodsList().size();
-		if (totalCnt > 100) {
-			totalCnt = 100;
-		}
+
+		int totalCnt = displayService.getContentsCategoryGoodsCount(contents);
 		pageable.setTotalCount(totalCnt);
 		contents.setPageable(pageable);
 
 		result.set("paging", contents);
 		result.set("totalCnt", totalCnt);
 		result.set("endRow", pageable.getEndRow());
-		contents.setContentsLoc("SCM003");
-		contents.setPageGb("BEST");
 		result.set("dataList", displayService.getBestItemCategoryGoodsList(contents));
 		return result;
 	}

+ 198 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1344,9 +1344,16 @@
 	                        AND    C4.SITE_CD = #{siteCd}
 	                        AND    C4.CATE_GB = #{cateGb}
 	                        AND    C4.CATE_TYPE = 'G031_20' /*컨텐츠카테고리*/
-	                        <if test="pageGb == null or pageGb != 'BEST'">
-		                    AND    C4.CATE1_NO = #{cate1No}
-		                    </if>
+		                    <choose>
+		                        <when test="pageGb != null and pageGb == 'BEST'">
+		                            <if test="cate1No != null and cate1No != ''">
+		                            AND    C4.CATE1_NO = #{cate1No}
+		                            </if>
+		                        </when>
+		                        <otherwise>
+		                        AND    C4.CATE1_NO = #{cate1No}
+		                        </otherwise>
+		                    </choose>
 		                    AND    C4.CONTENTS_LOC = #{contentsLoc}
 		              </otherwise>
 		           </choose>
@@ -1362,7 +1369,14 @@
 		           ) G
 		    WHERE  1=1
 		<if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
-			AND  G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		    <choose>
+		        <when test="pageGb == 'BEST' and pageable.endRow >= 100">
+		    AND  G.NUMB BETWEEN #{pageable.startRow} AND 100
+		        </when>
+		        <otherwise>
+		    AND  G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		        </otherwise>
+		    </choose>
 		</if>
 		<if test="maxRow != null and maxRow !=''">
 			AND  G.NUMB <![CDATA[<=]]> #{maxRow}
@@ -1460,6 +1474,186 @@
 		                             AND W.CUST_NO = #{custNo}
 		</if>
 	</select>
+
+	<!-- 컨텐츠카테고리상품 건수 -->
+	<select id="getContentsCategoryGoodsCount"  parameterType="Cate4Srch" resultType="int">
+		/* TsfGoods.getContentsCategoryGoodsCount */
+		WITH TAB_GOODS AS (
+		           SELECT G.BRAND_GROUP_NM     /*브랜드그룹명*/
+		           , G.GOODS_CD           /*상품코드*/
+		           , G.GOODS_NM           /*상품명*/
+		           , G.GOODS_GB           /*상품구분*/
+		           , G.FOREIGN_BUY_YN     /*해외구매대행여부*/
+		           , G.PARALLEL_IMPORT_YN /*병행수입여부*/
+		           , G.ORDER_MADE_YN      /*주문제작여부*/
+		           , G.GOODS_TNM          /*상품타이틀명*/
+		           , G.MAIN_COLOR_CD      /*대표색상코드*/
+		           , G.LIST_PRICE         /*정상가(최초판매가)*/
+		           , G.CURR_PRICE         /*현재판매가*/
+		           , G.REG_DT             /*등록일시*/
+		           , G.NUMB
+		           FROM   (
+		                    SELECT CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                    BG.BRAND_GROUP_ENM
+		                    ELSE
+		                    BG.BRAND_GROUP_KNM
+		                    END                                    AS BRAND_GROUP_NM /*브랜드그룹명*/
+		                    , G.GOODS_CD                                               /*상품코드*/
+		                    , G.GOODS_NM                                               /*상품명*/
+		                    , G.GOODS_GB                                               /*상품구분*/
+		                    , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		                    , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		                    , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		                    , G.GOODS_TNM                                              /*상품타이틀명*/
+		                    , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		                    , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		                    , G.CURR_PRICE                                             /*현재판매가*/
+		                    , G.REG_DT                                                 /*등록일시*/
+		             <choose>
+		             	<when test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		             		, ROW_NUMBER() OVER(ORDER BY GS.SELL_WEEK_QTY DESC
+		             		, G.GOODS_CD) AS NUMB
+		             	</when>
+		             	<when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007' or contentsLoc == 'SMM012'"> <!-- md추천 -->
+		             		, ROW_NUMBER() OVER(ORDER BY CTG.DISP_ORD
+		             		, G.REG_DT DESC
+		             		, G.GOODS_CD) AS NUMB
+		             	</when>
+		             	<when test="contentsLoc == 'SCM002' or (contentsLoc == 'SCM003' and pageGb == null)"> <!-- md추천 -->
+		             		, ROW_NUMBER() OVER(ORDER BY CG.DISP_ORD ,G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC) AS NUMB
+		             	</when>
+		             	<when test="contentsLoc == 'SCM003' and pageGb != null and pageGb == 'BEST'">
+		             		, ROW_NUMBER() OVER(ORDER BY C4.CATE1_NO, CG.DISP_ORD ,G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC) AS NUMB
+		             	</when>
+		             	<otherwise>
+		             		, ROW_NUMBER() OVER(ORDER BY CG.DISP_ORD
+		             		, G.REG_DT DESC
+		             		, G.GOODS_CD) AS NUMB
+		             	</otherwise>
+		             </choose>
+		<choose>
+		        	<when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007' or contentsLoc == 'SMM012'"> <!-- md추천 -->
+		        		FROM	TB_CONTENTS CT
+		        		, TMP_CONTENTS_GOODS CTG
+		        		, TB_GOODS G
+		        		, TB_GOODS_STOCK S
+		        		, TB_BRAND B
+		        		, TB_BRAND_GROUP BG
+		        		WHERE	CT.CONTENTS_LOC = CTG.CONTENTS_LOC
+		        		AND 	CT.DISP_ORD = CTG.CONTENTS_SQ
+		        		AND		CTG.GOODS_CD = G.GOODS_CD
+		        		AND		CTG.GOODS_CD = S.GOODS_CD
+		        		AND		G.BRAND_CD = B.BRAND_CD
+		        		AND     B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		        		AND		CT.CONTENTS_LOC = #{contentsLoc}
+		        		AND 	CTG.CONTENTS_SQ = #{dispOrd}
+		        		AND		NOW() BETWEEN CT.DISP_STDT AND CT.DISP_EDDT
+		        	</when>
+		        	<otherwise>
+		        		FROM   TB_CATE_4SRCH C4
+		        		, TB_CATE_GOODS CG
+		        		, TB_GOODS G
+		        		, TB_GOODS_STOCK S
+		        		, TB_BRAND B
+		        		, TB_BRAND_GROUP BG
+		        		<if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		        			, TB_GOODS_SUMMARY GS
+		        		</if>
+		        		WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		        		<choose>
+		        			<when test="brandGroupNo != null and brandGroupNo != ''">
+		        				AND    CG.BRAND_GROUP_NO = #{brandGroupNo}</when>
+		        			<otherwise>
+		        				AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		        			</otherwise>
+		        		</choose>
+		        		AND    CG.GOODS_CD = G.GOODS_CD
+		        		AND    CG.GOODS_CD = S.GOODS_CD
+		        		AND    G.BRAND_CD = B.BRAND_CD
+		        		AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		        		<if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		        			AND    CG.GOODS_CD = GS.GOODS_CD
+		        		</if>
+		        		AND    C4.SITE_CD = #{siteCd}
+		        		AND    C4.CATE_GB = #{cateGb}
+		        		AND    C4.CATE_TYPE = 'G031_20' /*컨텐츠카테고리*/
+		        		<choose>
+		        			<when test="pageGb != null and pageGb == 'BEST'">
+		        				<if test="cate1No != null and cate1No != ''">
+		        					AND    C4.CATE1_NO = #{cate1No}
+		        				</if>
+		        			</when>
+		        			<otherwise>
+		        				AND    C4.CATE1_NO = #{cate1No}
+		        			</otherwise>
+		        		</choose>
+		        		AND    C4.CONTENTS_LOC = #{contentsLoc}
+		        	</otherwise>
+		        </choose>
+		        AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		        AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		        AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		        AND    S.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		        AND    B.USE_YN = 'Y'
+		        AND    BG.USE_YN = 'Y'
+		        <if test="pageGb != null and pageGb == 'BEST'">
+		        	ORDER BY C4.CATE1_NO
+		        </if>
+		        ) G
+		    WHERE  1=1
+		    <if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
+		    	AND  G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		    </if>
+		    <if test="maxRow != null and maxRow !=''">
+		    	AND  G.NUMB <![CDATA[<=]]> #{maxRow}
+		    </if>
+		    )
+		    , TAB_GOODS_IMG AS (
+		         /* 상품의 이미지 */
+		         SELECT GOODS_CD
+		               ,MAX(SYS_IMG_NM) AS SYS_IMG_NM
+		               ,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
+		         FROM (
+		                SELECT G.GOODS_CD
+		                , CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END   AS SYS_IMG_NM
+		                , CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
+		                FROM   TAB_GOODS G
+		                , TB_GOODS_IMG GI
+		                WHERE  G.GOODS_CD = GI.GOODS_CD
+		                AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		         ) Z
+		         GROUP BY GOODS_CD
+		    )
+		, TAB_GOODS_VIDEO AS (
+		        /* 상품의 동영상 목록 */
+		        SELECT GOODS_CD
+		        , MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END)  AS VIDEO_GB_M
+		        , MAX(CASE WHEN RNUM = 1 THEN KMC_KEY END) AS VIDEO_VAL_M
+		        , MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END)  AS VIDEO_GB_S
+		        , MAX(CASE WHEN RNUM = 2 THEN KMC_KEY END) AS VIDEO_VAL_S
+		        FROM   (
+		             SELECT G.GOODS_CD
+		             , VD.VIDEO_GB
+		             , VD.KMC_KEY
+		             , VD.REG_DT
+		             , RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY VD.REG_DT) AS RNUM
+		             FROM   TAB_GOODS G
+		             , TB_GOODS_VIDEO VD
+		             WHERE  G.GOODS_CD = VD.GOODS_CD
+		             AND    VD.DISP_YN = 'Y'
+		             AND    VD.KMC_KEY IS NOT NULL
+		        ) Z
+		    GROUP  BY GOODS_CD
+		)
+		SELECT COUNT(1) AS CNT
+		FROM TAB_GOODS G
+		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+			LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
+			AND W.CUST_NO = #{custNo}
+		</if>
+	</select>
 	
 	<!-- 컨텐츠카테고리 신규상품 목록 -->
 	<select id="getContentsCategoryNewGoodsList"  parameterType="Cate4Srch" resultType="Goods">

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

@@ -37,7 +37,7 @@
 					<div class="taps">
 						<div>
 							<ul id="cateListArea">
-								<li class="active" id="li0"><a href="javascript:void(0);" onclick="fnBestListSearch(this,0);">전체</a></li>
+								<li class="active" id="li0"><a href="javascript:void(0);" onclick="fnBestListSearch(this,'');">전체</a></li>
 								<th:block th:each="item, stat : ${bestCateList}">
 									<li class="" th:id="${'li'+item.cateNo}"><a href="javascript:void(0);" th:onclick="fnBestListSearch(this,[[${item.cateNo}]]);" th:text="${item.cateNm}"></a></li>
 								</th:block>