Ver código fonte

몰메인/브랜드메인 수정

bin2107 5 anos atrás
pai
commit
d2514e354d

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

@@ -21,6 +21,7 @@ import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.SizeInfo;
 import com.style24.persistence.domain.Tmtb;
+import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.searchengine.SearchEngine;
 
 /**
@@ -401,5 +402,21 @@ public interface TsfGoodsDao {
 	 */
 	Collection<SearchEngine> getSearchGoodsList(SearchEngine params);
 
+	/**
+	 * 컨텐츠 카테고리 상품 건수
+	 * @param params
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 5. 10
+	 */
 	int getContentsCategoryGoodsCount(Cate4Srch cate4Srch);
+
+	/**
+	 * 브랜드메인 브랜드별 신상품 50개 목록
+	 * @param params
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 5. 12
+	 */
+	Collection<Goods> getBrandNewGoodsList(GoodsSearch goodsSearch);
 }

+ 11 - 12
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -31,6 +31,7 @@ import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.SizeInfo;
 import com.style24.persistence.domain.Tmtb;
 import com.style24.persistence.domain.searchengine.SearchEngine;
+import com.style24.persistence.domain.GoodsSearch;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -802,18 +803,16 @@ public class TsfGoodsService {
 				}
 			}
 		} else if (cate.getContentsLoc().equals("SBM013") || cate.getContentsLoc().equals("SBMM013")) {
-//			GoodsSearch goodsSearch = new GoodsSearch();
-//			goodsSearch.setSiteCd(TscConstants.Site.STYLE24.value());
-//			goodsSearch.setFormalGb(cate.getFormalGb());
-//			goodsSearch.setCustGb(cate.getCustGb());
-//			goodsSearch.setCustNo(cate.getCustNo());
-//			goodsSearch.setBrandGroupNo(cate.getBrandGroupNo());
-//			goodsSearch.setMaxRow(cate.getMaxRow());
-//			goodsSearch.setContentsLoc(cate.getContentsLoc());
-//			goodsList = displayDao.getCategoryGoodsList(goodsSearch);
-			//todo 최신상품 불러오는거 만들어야함
-			log.info("SBM013 goodsList cate>>>{}", cate);
-			goodsList = goodsDao.getContentsCategoryGoodsList(cate);
+			GoodsSearch goodsSearch = new GoodsSearch();
+			goodsSearch.setSiteCd(TscConstants.Site.STYLE24.value());
+			goodsSearch.setCateGb("G032_101");
+			goodsSearch.setFrontGb(TsfSession.getFrontGb());
+			goodsSearch.setFormalGb(cate.getFormalGb());
+			goodsSearch.setCustGb(cate.getCustGb());
+			goodsSearch.setCustNo(cate.getCustNo());
+			goodsSearch.setBrandGroupNo(cate.getBrandGroupNo());
+			goodsSearch.setMaxRow(cate.getMaxRow());
+			goodsList = goodsDao.getBrandNewGoodsList(goodsSearch);
 
 			for (Goods temp : goodsList) {
 				if (temp.getSizes() != null) {

+ 251 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -2798,5 +2798,255 @@
 		                             AND W.CUST_NO = #{custNo}
 		</if>
 	</select>
-	
+
+	<!-- 브랜드메인 브랜드별 신상품 50개 목록 -->
+	<select id="getBrandNewGoodsList" parameterType="goodsSearch" resultType="Goods">
+		/* TsfGoods.getBrandNewGoodsList */
+		WITH TAB_GOODS AS (
+		       SELECT G.BRAND_GROUP_NM /*브랜드그룹명*/
+		            , G.GOODS_CD /*상품코드*/
+		            , G.GOODS_NM /*상품명*/
+		            , G.GOODS_GB /*상품구분*/
+		            , G.SELF_GOODS_YN /*자사상품여부*/
+		            , 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.FORMAL_GB /*정상이월구분*/
+		            , G.REG_DT /*등록일시*/
+		            , G.SELL_WEEK_QTY /*주간판매수량*/
+		            , G.REVIEW_REG_CNT /*리뷰등록건수*/
+		       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.SELF_GOODS_YN /*자사상품여부*/
+		                 , G.FOREIGN_BUY_YN /*해외구매대행여부*/
+		                 , G.PARALLEL_IMPORT_YN /*병행수입여부*/
+		                 , G.ORDER_MADE_YN /*주문제작여부*/
+		                 , G.GOODS_TNM /*상품타이틀명*/
+		                 , G.MAIN_COLOR_CD /*대표색상코드*/
+		                 , G.LIST_PRICE /*정상가(최초판매가)*/
+		                 , CASE WHEN #{frontGb} = 'P' AND #{custGb} = 'G100_20' THEN IFNULL(GBP.STAFF_PC_CURR_PRICE,G.CURR_PRICE)
+		                        WHEN #{frontGb} = 'M' AND #{custGb} = 'G100_20' THEN IFNULL(GBP.STAFF_MO_CURR_PRICE,G.CURR_PRICE)
+		                        WHEN #{frontGb} = 'A' AND #{custGb} = 'G100_20' THEN IFNULL(GBP.STAFF_APP_CURR_PRICE,G.CURR_PRICE)
+		                        WHEN #{frontGb} = 'P' AND #{custGb} != 'G100_20' THEN IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE)
+		                        WHEN #{frontGb} = 'M' AND #{custGb} != 'G100_20' THEN IFNULL(GBP.MO_CURR_PRICE,G.CURR_PRICE)
+		                        WHEN #{frontGb} = 'A' AND #{custGb} != 'G100_20' THEN IFNULL(GBP.APP_CURR_PRICE,G.CURR_PRICE)
+		                    ELSE G.CURR_PRICE
+		                    END AS CURR_PRICE /*현재판매가*/
+		                 , G.MIN_ORD_AMT /*최소주문금액*/
+		                 , G.FORMAL_GB /*정상이월구분*/
+		                 , G.REG_DT /*등록일시*/
+		                 , GS.SELL_WEEK_QTY /*주간판매수량*/
+		                 , GS.REVIEW_REG_CNT /*리뷰등록건수*/
+		            FROM TB_CATE_4SRCH C4
+		            INNER JOIN TB_CATE_GOODS CG ON C4.LEAF_CATE_NO = CG.CATE_NO
+		            INNER JOIN TB_GOODS G ON CG.GOODS_CD = G.GOODS_CD
+		            INNER JOIN TB_GOODS_STOCK S ON CG.GOODS_CD = S.GOODS_CD
+		            INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		            INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		            INNER JOIN TB_GOODS_SUMMARY GS ON CG.GOODS_CD = GS.GOODS_CD
+		            LEFT OUTER JOIN TB_GOODS_BENEFIT_PRICE GBP ON CG.GOODS_CD = GBP.GOODS_CD
+		            WHERE C4.SITE_CD = #{siteCd}
+		            AND C4.CATE_GB = #{cateGb}
+		            AND C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		        <if test="cate1No != null and cate1No != ''">
+		            AND C4.CATE1_NO = #{cate1No}
+		        </if>
+		        <if test="cate2No != null and cate2No != ''">
+		            AND C4.CATE2_NO = #{cate2No}
+		        </if>
+		        <if test="cate3No != null and cate3No != ''">
+		            AND C4.CATE3_NO = #{cate3No}
+		        </if>
+		        <if test="cate4No != null and cate4No != ''">
+		            AND C4.CATE4_NO = #{cate4No}
+		        </if>
+		        <if test="cate5No != null and cate5No != ''">
+		            AND C4.CATE5_NO = #{cate5No}
+		        </if>
+		    <choose>
+		        <when test="brandGroupNo != null and brandGroupNo > 0">
+		            AND B.BRAND_GROUP_NO = #{brandGroupNo}
+		        </when>
+		        <otherwise>
+		            AND CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+			    </otherwise>
+		    </choose>
+		        <if test="formalGb != null and formalGb !=''">
+		            AND G.FORMAL_GB = #{formalGb}
+		        </if>
+		            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 > 0 /*재고있는 상품*/
+		            AND B.USE_YN = 'Y' /*사용하는 브랜드*/
+		            AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
+		            AND EXISTS (SELECT 1
+		            FROM TB_GOODS_BENEFIT
+		            WHERE GOODS_CD = G.GOODS_CD
+		            AND BENEFIT_GB = '40'
+		        )
+		    ) G
+		    WHERE 1 = 1
+		)
+		, TAB_OPTION AS (
+		      /* 자사상품 색상 목록 */
+		      SELECT O.GOODS_CD
+		           , O.OPT_CD1 AS MAIN_COLOR_CD
+		      FROM TAB_GOODS G
+		      , TB_OPTION O
+		      WHERE G.GOODS_CD = O.GOODS_CD
+		      AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/
+		      AND O.DISP_YN = 'Y'
+		      GROUP BY O.GOODS_CD, O.OPT_CD1
+		)
+		, TAB_ALL_GOODS AS (
+		     SELECT BRAND_GROUP_NM /*브랜드그룹명*/
+		          , GOODS_CD /*상품코드*/
+		          , GOODS_NM /*상품명*/
+		          , GOODS_GB /*상품구분*/
+		          , SELF_GOODS_YN /*자사상품여부*/
+		          , FOREIGN_BUY_YN /*해외구매대행여부*/
+		          , PARALLEL_IMPORT_YN /*병행수입여부*/
+		          , ORDER_MADE_YN /*주문제작여부*/
+		          , GOODS_TNM /*상품타이틀명*/
+		          , MAIN_COLOR_CD /*대표색상코드*/
+		          , LIST_PRICE /*정상가(최초판매가)*/
+		          , CURR_PRICE /*현재판매가*/
+		          , FORMAL_GB /*정상이월구분*/
+		          , REG_DT /*등록일시*/
+		          , SELL_WEEK_QTY /*주간판매수량*/
+		          , REVIEW_REG_CNT /*리뷰등록건수*/
+		          , NUMB
+		     FROM (
+		                SELECT G.BRAND_GROUP_NM /*브랜드그룹명*/
+		                , G.GOODS_CD /*상품코드*/
+		                , G.GOODS_NM /*상품명*/
+		                , G.GOODS_GB /*상품구분*/
+		                , G.SELF_GOODS_YN /*자사상품여부*/
+		                , G.FOREIGN_BUY_YN /*해외구매대행여부*/
+		                , G.PARALLEL_IMPORT_YN /*병행수입여부*/
+		                , G.ORDER_MADE_YN /*주문제작여부*/
+		                , G.GOODS_TNM /*상품타이틀명*/
+		                , IFNULL(O.MAIN_COLOR_CD,G.MAIN_COLOR_CD) AS MAIN_COLOR_CD /*대표색상코드*/
+		                , G.LIST_PRICE /*정상가(최초판매가)*/
+		                , G.CURR_PRICE /*현재판매가*/
+		                , G.FORMAL_GB /*정상이월구분*/
+		                , G.REG_DT /*등록일시*/
+		                , G.SELL_WEEK_QTY /*주간판매수량*/
+		                , G.REVIEW_REG_CNT /*리뷰등록건수*/
+		                , ROW_NUMBER() OVER(ORDER BY G.REG_DT DESC, G.GOODS_CD) AS NUMB
+		                FROM TAB_GOODS G
+		                LEFT OUTER JOIN TAB_OPTION O ON G.GOODS_CD = O.GOODS_CD
+		                WHERE 1=1
+		         ) ORIGINAL
+		     WHERE 1 = 1
+		    <if test="maxRow != null and maxRow > 0">
+		     LIMIT #{maxRow}
+		    </if>
+		)
+		, TAB_GOODS_IMG AS (
+		      /* 상품의 이미지 */
+		      SELECT GOODS_CD
+		           , MAIN_COLOR_CD
+		           , MAX(SYS_IMG_NM) AS SYS_IMG_NM
+		           , MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
+		      FROM (
+		           SELECT G.GOODS_CD
+		                , GI.COLOR_CD AS MAIN_COLOR_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_ALL_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 , MAIN_COLOR_CD
+		)
+		SELECT G.BRAND_GROUP_NM
+		     , G.GOODS_CD
+		     , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
+		     , G.GOODS_TNM
+		     , G.MAIN_COLOR_CD
+		     , G.LIST_PRICE
+		     , G.CURR_PRICE
+		     , GI.SYS_IMG_NM
+		     , GI.SYS_IMG_NM2
+		, (
+		    SELECT GROUP_CONCAT(CONCAT(VIDEO_GB,':',KMC_KEY) ORDER BY NUMB SEPARATOR ',')
+		    FROM (
+		        SELECT GV.VIDEO_GB
+		             , GV.KMC_KEY
+		             , GV.REG_DT
+		             , RANK() OVER(ORDER BY GV.REG_DT, GV.KMC_KEY) AS NUMB
+		        FROM TB_GOODS_VIDEO GV
+		        WHERE GV.GOODS_CD = G.GOODS_CD
+		        AND GV.DISP_YN = 'Y'
+		        AND GV.KMC_KEY IS NOT NULL
+		    ) Z
+		    WHERE NUMB <![CDATA[<=]]> 2
+		) AS VIDEOS
+		, (
+		    SELECT GROUP_CONCAT(DISTINCT CONCAT(C.COLOR_CD,':',CC.CD_DESC) ORDER BY CC.DISP_ORD SEPARATOR ',') AS COLOR_CHIPS
+		    FROM TB_OPTION O
+		       , TB_COLOR C
+		       , TB_COMMON_CODE CC
+		    WHERE O.OPT_CD1 = C.COLOR_CD
+		    AND C.COLOR_GRP_CD = CC.CD
+		    AND O.GOODS_CD = G.GOODS_CD
+		    AND O.DISP_YN = 'Y'
+		    AND C.USE_YN = 'Y'
+		    AND CC.USE_YN = 'Y'
+		) AS COLOR_CHIPS /*컬러칩*/
+		, (
+		   SELECT GROUP_CONCAT(DISTINCT CONCAT(OPT_CD2 ,':' ,CASE WHEN SOLDOUT_YN = 'Y' THEN 'Y'
+		          ELSE CASE WHEN CURR_STOCK_QTY - BASE_STOCK_QTY > 0 THEN 'N' ELSE 'Y' END
+		          END) ORDER BY DISP_ORD SEPARATOR ',') AS SIZES
+		   FROM VW_STOCK
+		   WHERE GOODS_CD = G.GOODS_CD
+		   AND OPT_CD1 = G.MAIN_COLOR_CD
+		   AND DISP_YN = 'Y'
+		) AS SIZES /*사이즈*/
+		, (
+		   SELECT GROUP_CONCAT(CONCAT(BENEFIT_GB,':',BENEFIT_NM) ORDER BY NUMB SEPARATOR ',')
+		   FROM (
+		       SELECT GB.BENEFIT_GB
+		            , CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
+		                   WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
+		                   WHEN GB.BENEFIT_GB = '30' THEN '사은품'
+		                   WHEN GB.BENEFIT_GB = '40' THEN '신상'
+		              ELSE '총알배송' END AS BENEFIT_NM
+		            , RANK() OVER(ORDER BY GB.BENEFIT_GB, GB.GOODS_CD) AS NUMB
+		       FROM TB_GOODS_BENEFIT GB
+		       WHERE GB.GOODS_CD = G.GOODS_CD
+		   ) Z
+		) AS BENEFITS
+		, G.FORMAL_GB
+		, G.REG_DT
+		, G.NUMB
+		<choose>
+		    <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		        , IF(W.GOODS_CD IS NULL,'','likeit') AS LIKE_IT /*위시리스트담긴상품*/
+		    </when>
+		    <otherwise>
+		        , '' AS LIKE_IT /*위시리스트담긴상품*/
+		    </otherwise>
+		</choose>
+		FROM TAB_ALL_GOODS G
+		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD AND G.MAIN_COLOR_CD = GI.MAIN_COLOR_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>
 </mapper>

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

@@ -205,7 +205,7 @@
 							<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
 								<th:block th:if="${ContentsData.contentsType!=null && ContentsData.contentsType!=''}">
 									<div class="bnnbox_crop" th:if="${ContentsData.contentsType=='1'}">
-										<div class="bnn_half" style="width: 100%;height: 230px;float: none;overflow: hidden;">
+										<div class="" style="width: 100%;height: 230px;float: none;overflow: hidden;">
 											<a th:href="${ContentsData.strVar1}" target="_blank">
 												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
 											</a>

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

@@ -224,7 +224,6 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 			var sizeVal = '';
 			var soldOutYn = '';
 			tag +='<div class="itemOpt">';
-			tag +='	<p>SIZE</p>';
 
 			if(sizeArr.length>5){
 				for(let i=0; i<sizeArr.length; i++){