|
|
@@ -1922,12 +1922,193 @@
|
|
|
<!-- 카테고리별 상품 총건수 -->
|
|
|
<select id="getCategoryGoodsCount" parameterType="SearchEngine" resultType="int">
|
|
|
/* TsfGoods.getCategoryGoodsCount */
|
|
|
- WITH BASE_GOODS AS (
|
|
|
- SELECT CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
|
|
|
+ WITH TAB_GOODS AS (
|
|
|
+ SELECT DISTINCT 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.OPT_CD1,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 /*리뷰등록건수*/
|
|
|
+ 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 /*유효한 판매기간*/
|
|
|
+ <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
|
|
|
+ AND G.AGE_GRP_CD IN
|
|
|
+ <foreach collection="ageArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="seasonArr != null and seasonArr.length > 0"> <!-- 시즌 -->
|
|
|
+ AND G.SEASON_CD IN
|
|
|
+ <foreach collection="seasonArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ AND S.STOCK_QTY > 0 /*재고있는 상품*/
|
|
|
+ AND B.USE_YN = 'Y' /*사용하는 브랜드*/
|
|
|
+ AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
|
|
|
+ AND G.SELF_GOODS_YN = 'Y'
|
|
|
+ <if test="brandGroupArr != null and brandGroupArr.length > 0">
|
|
|
+ AND BG.BRAND_GROUP_NO IN
|
|
|
+ <foreach collection="brandGroupArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="unisex != null and unisex != ''">
|
|
|
+ AND G.SEX_GB = #{unisex}
|
|
|
+ </if>
|
|
|
+ <if test='sizeArr != null and sizeArr.length > 0'>
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_OPTION
|
|
|
+ WHERE GOODS_CD = CG.GOODS_CD
|
|
|
+ AND OPT_CD2 IN
|
|
|
+ <foreach collection="sizeArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND DISP_YN = 'Y'
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="newGoods != null and newGoods != ''">
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB = #{newGoods}
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test='benefitArr != null and benefitArr.length > 0'>
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB IN
|
|
|
+ <foreach collection="benefitArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="priceFrom != null and priceFrom != ''">
|
|
|
+ AND G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
|
|
|
+ </if>
|
|
|
+ <if test="priceTo != null and priceTo != ''">
|
|
|
+ AND G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
|
|
|
+ </if>
|
|
|
+ <if test="dcRateFrom != null and dcRateFrom != ''">
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
|
|
|
+ </if>
|
|
|
+ <if test="dcRateTo != null and dcRateTo != ''">
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
|
|
|
+ </if>
|
|
|
+ ) G
|
|
|
+ INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND O.DISP_YN = 'Y' <!--AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/-->
|
|
|
+ <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
|
|
|
+ AND O.OPT_CD1 IN (SELECT COLOR_CD
|
|
|
+ FROM TB_COLOR
|
|
|
+ WHERE 1 = 1
|
|
|
+ AND COLOR_GRP_CD IN
|
|
|
+ <foreach collection="colorArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND USE_YN = 'Y' /*사용하는색상*/
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ UNION ALL
|
|
|
+ SELECT DISTINCT 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 /*상품타이틀명*/
|
|
|
+ , NULL AS 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 /*상품구분*/
|
|
|
@@ -1939,183 +2120,310 @@
|
|
|
, 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 /*현재판매가*/
|
|
|
+ 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 /*유효한 판매기간*/
|
|
|
- <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
|
|
|
- AND G.AGE_GRP_CD IN
|
|
|
- <foreach collection="ageArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- </if>
|
|
|
- <if test="seasonArr != null and seasonArr.length > 0"> <!-- 시즌 -->
|
|
|
- AND G.SEASON_CD IN
|
|
|
- <foreach collection="seasonArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- </if>
|
|
|
- AND S.STOCK_QTY > 0 /*재고있는 상품*/
|
|
|
- AND B.USE_YN = 'Y' /*사용하는 브랜드*/
|
|
|
- AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
|
|
|
- <if test="brandGroupArr != null and brandGroupArr.length > 0">
|
|
|
- AND BG.BRAND_GROUP_NO IN
|
|
|
- <foreach collection="brandGroupArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- </if>
|
|
|
- <if test="unisex != null and unisex != ''">
|
|
|
- AND G.SEX_GB = #{unisex}
|
|
|
- </if>
|
|
|
- <if test='sizeArr != null and sizeArr.length > 0'>
|
|
|
- AND EXISTS (SELECT 1
|
|
|
- FROM TB_OPTION
|
|
|
- WHERE GOODS_CD = CG.GOODS_CD
|
|
|
- AND OPT_CD2 IN
|
|
|
- <foreach collection="sizeArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- AND DISP_YN = 'Y'
|
|
|
- )
|
|
|
- </if>
|
|
|
- <if test="newGoods != null and newGoods != ''">
|
|
|
- AND EXISTS (SELECT 1
|
|
|
- FROM TB_GOODS_BENEFIT
|
|
|
- WHERE GOODS_CD = G.GOODS_CD
|
|
|
- AND BENEFIT_GB = #{newGoods}
|
|
|
- )
|
|
|
- </if>
|
|
|
- <if test='benefitArr != null and benefitArr.length > 0'>
|
|
|
- AND EXISTS (SELECT 1
|
|
|
- FROM TB_GOODS_BENEFIT
|
|
|
- WHERE GOODS_CD = G.GOODS_CD
|
|
|
- AND BENEFIT_GB IN
|
|
|
- <foreach collection="benefitArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- )
|
|
|
- </if>
|
|
|
- <if test="priceFrom != null and priceFrom != ''">
|
|
|
- AND G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
|
|
|
- </if>
|
|
|
- <if test="priceTo != null and priceTo != ''">
|
|
|
- AND G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
|
|
|
- </if>
|
|
|
- <if test="dcRateFrom != null and dcRateFrom != ''">
|
|
|
- AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
|
|
|
- </if>
|
|
|
- <if test="dcRateTo != null and dcRateTo != ''">
|
|
|
- AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
|
|
|
- </if>
|
|
|
- <if test="priceArr != null and priceArr.length>0">
|
|
|
- AND (${priceSql})
|
|
|
- </if>
|
|
|
- <if test="dcRateArr != null and dcRateArr.length>0">
|
|
|
- AND (${dcRateSql})
|
|
|
- </if>
|
|
|
- )
|
|
|
- , TAB_OPT_SIZE AS (
|
|
|
- /*옵션 사이즈 목록 조회*/
|
|
|
- /*자사상품*/
|
|
|
- SELECT G.GOODS_CD
|
|
|
- , VS.OPT_CD1
|
|
|
- , C.COLOR_CD
|
|
|
- , CC.CD_DESC AS COLOR_CHIP /*RGB값*/
|
|
|
- , GROUP_CONCAT(DISTINCT CONCAT(VS.OPT_CD2 ,':' ,CASE WHEN VS.SOLDOUT_YN = 'Y' THEN 'Y'
|
|
|
- ELSE CASE WHEN VS.CURR_STOCK_QTY - VS.BASE_STOCK_QTY > 0 THEN 'N' ELSE 'Y' END END) ORDER BY VS.DISP_ORD
|
|
|
- SEPARATOR ',') AS SIZES
|
|
|
- FROM BASE_GOODS G
|
|
|
- , VW_STOCK VS
|
|
|
- , TB_COLOR C
|
|
|
- , TB_COMMON_CODE CC
|
|
|
- WHERE G.GOODS_CD = VS.GOODS_CD
|
|
|
- AND VS.OPT_CD1 = C.COLOR_CD
|
|
|
- AND G.SELF_GOODS_YN = 'Y' /*자사상품*/
|
|
|
- AND VS.DISP_YN = 'Y'
|
|
|
- AND C.USE_YN = 'Y'
|
|
|
- AND C.COLOR_GRP_CD = CC.CD
|
|
|
- AND CC.USE_YN = 'Y'
|
|
|
- GROUP BY G.GOODS_CD, VS.OPT_CD1, C.COLOR_CD, CC.CD_DESC
|
|
|
- )
|
|
|
- , TAB_OPT_SIZE_SELFNO AS (
|
|
|
- /*옵션 사이즈 목록 조회*/
|
|
|
- /*입점상품*/
|
|
|
- SELECT G.GOODS_CD
|
|
|
- , GROUP_CONCAT(DISTINCT CONCAT(VS.OPT_CD2 ,':' ,CASE WHEN VS.SOLDOUT_YN = 'Y' THEN 'Y'
|
|
|
- ELSE CASE WHEN VS.CURR_STOCK_QTY - VS.BASE_STOCK_QTY > 0 THEN 'N' ELSE 'Y' END END) ORDER BY VS.DISP_ORD
|
|
|
- SEPARATOR ',') AS SIZES
|
|
|
- FROM BASE_GOODS G
|
|
|
- , VW_STOCK VS
|
|
|
- WHERE G.GOODS_CD = VS.GOODS_CD
|
|
|
- AND G.SELF_GOODS_YN = 'N' /*자사상품*/
|
|
|
- AND VS.DISP_YN = 'Y'
|
|
|
- GROUP BY G.GOODS_CD
|
|
|
+ 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 /*유효한 판매기간*/
|
|
|
+ <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
|
|
|
+ AND G.AGE_GRP_CD IN
|
|
|
+ <foreach collection="ageArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="seasonArr != null and seasonArr.length > 0"> <!-- 시즌 -->
|
|
|
+ AND G.SEASON_CD IN
|
|
|
+ <foreach collection="seasonArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ AND S.STOCK_QTY > 0 /*재고있는 상품*/
|
|
|
+ AND B.USE_YN = 'Y' /*사용하는 브랜드*/
|
|
|
+ AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
|
|
|
+ AND G.SELF_GOODS_YN = 'N'
|
|
|
+ <if test="brandGroupArr != null and brandGroupArr.length > 0">
|
|
|
+ AND BG.BRAND_GROUP_NO IN
|
|
|
+ <foreach collection="brandGroupArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="unisex != null and unisex != ''">
|
|
|
+ AND G.SEX_GB = #{unisex}
|
|
|
+ </if>
|
|
|
+ <if test='sizeArr != null and sizeArr.length > 0'>
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_OPTION
|
|
|
+ WHERE GOODS_CD = CG.GOODS_CD
|
|
|
+ AND OPT_CD2 IN
|
|
|
+ <foreach collection="sizeArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND DISP_YN = 'Y'
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="newGoods != null and newGoods != ''">
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB = #{newGoods}
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test='benefitArr != null and benefitArr.length > 0'>
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB IN
|
|
|
+ <foreach collection="benefitArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
|
|
|
+ AND G.MAIN_COLOR_CD IN (SELECT COLOR_CD
|
|
|
+ FROM TB_COLOR
|
|
|
+ WHERE 1 = 1
|
|
|
+ AND COLOR_GRP_CD IN
|
|
|
+ <foreach collection="colorArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND USE_YN = 'Y' /*사용하는색상*/
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="priceFrom != null and priceFrom != ''">
|
|
|
+ AND G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
|
|
|
+ </if>
|
|
|
+ <if test="priceTo != null and priceTo != ''">
|
|
|
+ AND G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
|
|
|
+ </if>
|
|
|
+ <if test="dcRateFrom != null and dcRateFrom != ''">
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
|
|
|
+ </if>
|
|
|
+ <if test="dcRateTo != null and dcRateTo != ''">
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
|
|
|
+ </if>
|
|
|
+ ) G
|
|
|
)
|
|
|
- , TAB_OPT AS (
|
|
|
- /*옵션 목록*/
|
|
|
- SELECT OS.GOODS_CD
|
|
|
- , OS.OPT_CD1
|
|
|
- , OS.COLOR_CHIP /*RGB값*/
|
|
|
- , GROUP_CONCAT(OS.SIZES ORDER BY OS.SIZES) AS SIZES
|
|
|
- FROM TAB_OPT_SIZE OS
|
|
|
- GROUP BY OS.GOODS_CD, OS.OPT_CD1, OS.COLOR_CHIP
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM TAB_GOODS G
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 카테고리별 상품 목록 -->
|
|
|
+ <select id="getCategoryGoodsList" parameterType="SearchEngine" resultType="SearchEngine">
|
|
|
+ /* TsfGoods.getCategoryGoodsList */
|
|
|
+ WITH TAB_GOODS AS (
|
|
|
+ SELECT DISTINCT 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.OPT_CD1,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 /*리뷰등록건수*/
|
|
|
+ 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 /*유효한 판매기간*/
|
|
|
+ <if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
|
|
|
+ AND G.AGE_GRP_CD IN
|
|
|
+ <foreach collection="ageArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="seasonArr != null and seasonArr.length > 0"> <!-- 시즌 -->
|
|
|
+ AND G.SEASON_CD IN
|
|
|
+ <foreach collection="seasonArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ AND S.STOCK_QTY > 0 /*재고있는 상품*/
|
|
|
+ AND B.USE_YN = 'Y' /*사용하는 브랜드*/
|
|
|
+ AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
|
|
|
+ AND G.SELF_GOODS_YN = 'Y'
|
|
|
+ <if test="brandGroupArr != null and brandGroupArr.length > 0">
|
|
|
+ AND BG.BRAND_GROUP_NO IN
|
|
|
+ <foreach collection="brandGroupArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="unisex != null and unisex != ''">
|
|
|
+ AND G.SEX_GB = #{unisex}
|
|
|
+ </if>
|
|
|
+ <if test='sizeArr != null and sizeArr.length > 0'>
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_OPTION
|
|
|
+ WHERE GOODS_CD = CG.GOODS_CD
|
|
|
+ AND OPT_CD2 IN
|
|
|
+ <foreach collection="sizeArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND DISP_YN = 'Y'
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="newGoods != null and newGoods != ''">
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB = #{newGoods}
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test='benefitArr != null and benefitArr.length > 0'>
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB IN
|
|
|
+ <foreach collection="benefitArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="priceFrom != null and priceFrom != ''">
|
|
|
+ AND G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
|
|
|
+ </if>
|
|
|
+ <if test="priceTo != null and priceTo != ''">
|
|
|
+ AND G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
|
|
|
+ </if>
|
|
|
+ <if test="dcRateFrom != null and dcRateFrom != ''">
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
|
|
|
+ </if>
|
|
|
+ <if test="dcRateTo != null and dcRateTo != ''">
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
|
|
|
+ </if>
|
|
|
+ ) G
|
|
|
+ INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND O.DISP_YN = 'Y' <!--AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/-->
|
|
|
+ <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
|
|
|
+ AND O.OPT_CD1 IN (SELECT COLOR_CD
|
|
|
+ FROM TB_COLOR
|
|
|
+ WHERE 1 = 1
|
|
|
+ AND COLOR_GRP_CD IN
|
|
|
+ <foreach collection="colorArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND USE_YN = 'Y' /*사용하는색상*/
|
|
|
+ )
|
|
|
+ </if>
|
|
|
UNION ALL
|
|
|
- SELECT OSS.GOODS_CD
|
|
|
- , '' AS OPT_CD1
|
|
|
- , '' AS COLOR_CHIP
|
|
|
- , OSS.SIZES
|
|
|
- FROM TAB_OPT_SIZE_SELFNO OSS
|
|
|
- )
|
|
|
- , TAB_GOODS AS (
|
|
|
- SELECT G.BRAND_GROUP_NM /*브랜드그룹명*/
|
|
|
+ SELECT DISTINCT G.BRAND_GROUP_NM /*브랜드그룹명*/
|
|
|
, G.GOODS_CD /*상품코드*/
|
|
|
, G.GOODS_NM /*상품명*/
|
|
|
, G.GOODS_GB /*상품구분*/
|
|
|
@@ -2124,341 +2432,247 @@
|
|
|
, G.PARALLEL_IMPORT_YN /*병행수입여부*/
|
|
|
, G.ORDER_MADE_YN /*주문제작여부*/
|
|
|
, G.GOODS_TNM /*상품타이틀명*/
|
|
|
- , IFNULL(O.OPT_CD1,G.MAIN_COLOR_CD) AS MAIN_COLOR_CD /*대표색상코드*/
|
|
|
+ , NULL AS MAIN_COLOR_CD /*대표색상코드*/
|
|
|
, G.LIST_PRICE /*정상가(최초판매가)*/
|
|
|
, G.CURR_PRICE /*현재판매가*/
|
|
|
, G.FORMAL_GB /*정상이월구분*/
|
|
|
, G.REG_DT /*등록일시*/
|
|
|
, G.SELL_WEEK_QTY /*주간판매수량*/
|
|
|
, G.REVIEW_REG_CNT /*리뷰등록건수*/
|
|
|
- , O.SIZES
|
|
|
- FROM BASE_GOODS g
|
|
|
- , TAB_OPT O
|
|
|
- WHERE G.GOODS_CD = O.GOODS_CD
|
|
|
- <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
|
|
|
- AND O.OPT_CD1 IN (SELECT COLOR_CD
|
|
|
- FROM TB_COLOR
|
|
|
- WHERE 1 = 1
|
|
|
- AND COLOR_GRP_CD IN
|
|
|
- <foreach collection="colorArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- AND USE_YN = 'Y' /*사용하는색상*/
|
|
|
- )
|
|
|
- </if>
|
|
|
- )
|
|
|
- SELECT COUNT(*)
|
|
|
- FROM TAB_GOODS G
|
|
|
- WHERE 1=1
|
|
|
- </select>
|
|
|
-
|
|
|
- <!-- 카테고리별 상품 목록 -->
|
|
|
- <select id="getCategoryGoodsList" parameterType="SearchEngine" resultType="SearchEngine">
|
|
|
- /* TsfGoods.getCategoryGoodsList */
|
|
|
- WITH BASE_GOODS AS (
|
|
|
- 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' /*상품카테고리*/
|
|
|
+ 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}
|
|
|
+ AND C4.CATE1_NO = #{cate1No}
|
|
|
</if>
|
|
|
<if test="cate2No != null and cate2No != ''">
|
|
|
- AND C4.CATE2_NO = #{cate2No}
|
|
|
+ AND C4.CATE2_NO = #{cate2No}
|
|
|
</if>
|
|
|
<if test="cate3No != null and cate3No != ''">
|
|
|
- AND C4.CATE3_NO = #{cate3No}
|
|
|
+ AND C4.CATE3_NO = #{cate3No}
|
|
|
</if>
|
|
|
<if test="cate4No != null and cate4No != ''">
|
|
|
- AND C4.CATE4_NO = #{cate4No}
|
|
|
+ AND C4.CATE4_NO = #{cate4No}
|
|
|
</if>
|
|
|
<if test="cate5No != null and cate5No != ''">
|
|
|
- AND C4.CATE5_NO = #{cate5No}
|
|
|
+ AND C4.CATE5_NO = #{cate5No}
|
|
|
</if>
|
|
|
<choose>
|
|
|
<when test="brandGroupNo != null and brandGroupNo > 0">
|
|
|
- AND B.BRAND_GROUP_NO = #{brandGroupNo}
|
|
|
+ AND B.BRAND_GROUP_NO = #{brandGroupNo}
|
|
|
</when>
|
|
|
<otherwise>
|
|
|
- AND CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
|
|
|
+ AND CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
|
|
|
</otherwise>
|
|
|
</choose>
|
|
|
<if test="formalGb != null and formalGb !=''">
|
|
|
- AND G.FORMAL_GB = #{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 G.GOODS_STAT = 'G008_90' /*승인완료상품*/
|
|
|
+ AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
|
|
|
+ AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
|
|
|
<if test="ageArr != null and ageArr.length > 0"> <!-- 연령대 -->
|
|
|
- AND G.AGE_GRP_CD IN
|
|
|
+ AND G.AGE_GRP_CD IN
|
|
|
<foreach collection="ageArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
#{item}
|
|
|
</foreach>
|
|
|
</if>
|
|
|
<if test="seasonArr != null and seasonArr.length > 0"> <!-- 시즌 -->
|
|
|
- AND G.SEASON_CD IN
|
|
|
+ AND G.SEASON_CD IN
|
|
|
<foreach collection="seasonArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
#{item}
|
|
|
</foreach>
|
|
|
</if>
|
|
|
- AND S.STOCK_QTY > 0 /*재고있는 상품*/
|
|
|
- AND B.USE_YN = 'Y' /*사용하는 브랜드*/
|
|
|
- AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
|
|
|
+ AND S.STOCK_QTY > 0 /*재고있는 상품*/
|
|
|
+ AND B.USE_YN = 'Y' /*사용하는 브랜드*/
|
|
|
+ AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
|
|
|
+ AND G.SELF_GOODS_YN = 'N'
|
|
|
<if test="brandGroupArr != null and brandGroupArr.length > 0">
|
|
|
- AND BG.BRAND_GROUP_NO IN
|
|
|
+ AND BG.BRAND_GROUP_NO IN
|
|
|
<foreach collection="brandGroupArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
#{item}
|
|
|
</foreach>
|
|
|
</if>
|
|
|
<if test="unisex != null and unisex != ''">
|
|
|
- AND G.SEX_GB = #{unisex}
|
|
|
+ AND G.SEX_GB = #{unisex}
|
|
|
</if>
|
|
|
<if test='sizeArr != null and sizeArr.length > 0'>
|
|
|
- AND EXISTS (SELECT 1
|
|
|
- FROM TB_OPTION
|
|
|
- WHERE GOODS_CD = CG.GOODS_CD
|
|
|
- AND OPT_CD2 IN
|
|
|
- <foreach collection="sizeArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- AND DISP_YN = 'Y'
|
|
|
- )
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_OPTION
|
|
|
+ WHERE GOODS_CD = CG.GOODS_CD
|
|
|
+ AND OPT_CD2 IN
|
|
|
+ <foreach collection="sizeArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND DISP_YN = 'Y'
|
|
|
+ )
|
|
|
</if>
|
|
|
<if test="newGoods != null and newGoods != ''">
|
|
|
- AND EXISTS (SELECT 1
|
|
|
- FROM TB_GOODS_BENEFIT
|
|
|
- WHERE GOODS_CD = G.GOODS_CD
|
|
|
- AND BENEFIT_GB = #{newGoods}
|
|
|
- )
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB = #{newGoods}
|
|
|
+ )
|
|
|
</if>
|
|
|
<if test='benefitArr != null and benefitArr.length > 0'>
|
|
|
- AND EXISTS (SELECT 1
|
|
|
- FROM TB_GOODS_BENEFIT
|
|
|
- WHERE GOODS_CD = G.GOODS_CD
|
|
|
- AND BENEFIT_GB IN
|
|
|
- <foreach collection="benefitArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- )
|
|
|
+ AND EXISTS (SELECT 1
|
|
|
+ FROM TB_GOODS_BENEFIT
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND BENEFIT_GB IN
|
|
|
+ <foreach collection="benefitArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
|
|
|
+ AND G.MAIN_COLOR_CD IN (SELECT COLOR_CD
|
|
|
+ FROM TB_COLOR
|
|
|
+ WHERE 1 = 1
|
|
|
+ AND COLOR_GRP_CD IN
|
|
|
+ <foreach collection="colorArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ AND USE_YN = 'Y' /*사용하는색상*/
|
|
|
+ )
|
|
|
</if>
|
|
|
<if test="priceFrom != null and priceFrom != ''">
|
|
|
- AND G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
|
|
|
+ AND G.CURR_PRICE <![CDATA[>=]]> #{priceFrom}
|
|
|
</if>
|
|
|
<if test="priceTo != null and priceTo != ''">
|
|
|
- AND G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
|
|
|
+ AND G.CURR_PRICE <![CDATA[<=]]> #{priceTo}
|
|
|
</if>
|
|
|
<if test="dcRateFrom != null and dcRateFrom != ''">
|
|
|
- AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[>=]]> #{dcRateFrom}
|
|
|
</if>
|
|
|
<if test="dcRateTo != null and dcRateTo != ''">
|
|
|
- AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
|
|
|
- </if>
|
|
|
- <if test="priceArr != null and priceArr.length>0">
|
|
|
- AND (${priceSql})
|
|
|
- </if>
|
|
|
- <if test="dcRateArr != null and dcRateArr.length>0">
|
|
|
- AND (${dcRateSql})
|
|
|
+ AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
|
|
|
</if>
|
|
|
+ ) G
|
|
|
+ <choose>
|
|
|
+ <when test="sortingType == 'BEST'"> <!-- 인기상품순 -->
|
|
|
+ ORDER BY SELL_WEEK_QTY DESC, GOODS_CD
|
|
|
+ </when>
|
|
|
+ <when test="sortingType == 'REVIEW'"> <!-- 리뷰많은순 -->
|
|
|
+ ORDER BY REVIEW_REG_CNT DESC, GOODS_CD
|
|
|
+ </when>
|
|
|
+ <otherwise> <!-- 최신상품순 -->
|
|
|
+ ORDER BY REG_DT DESC, GOODS_CD
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
+ <if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
|
|
|
+ LIMIT #{pageable.limitStartRow} , #{pageable.pageSize}
|
|
|
+ </if>
|
|
|
)
|
|
|
- , TAB_OPT_SIZE AS (
|
|
|
- /*옵션 사이즈 목록 조회*/
|
|
|
- /*자사상품*/
|
|
|
- SELECT G.GOODS_CD
|
|
|
- , VS.OPT_CD1
|
|
|
- , C.COLOR_CD
|
|
|
- , CC.CD_DESC AS COLOR_CHIP /*RGB값*/
|
|
|
- , GROUP_CONCAT(DISTINCT CONCAT(VS.OPT_CD2 ,':' ,CASE WHEN VS.SOLDOUT_YN = 'Y' THEN 'Y'
|
|
|
- ELSE CASE WHEN VS.CURR_STOCK_QTY - VS.BASE_STOCK_QTY > 0 THEN 'N' ELSE 'Y' END END) ORDER BY VS.DISP_ORD
|
|
|
- SEPARATOR ',') AS SIZES
|
|
|
- FROM BASE_GOODS G
|
|
|
- , VW_STOCK VS
|
|
|
- , TB_COLOR C
|
|
|
- , TB_COMMON_CODE CC
|
|
|
- WHERE G.GOODS_CD = VS.GOODS_CD
|
|
|
- AND VS.OPT_CD1 = C.COLOR_CD
|
|
|
- AND G.SELF_GOODS_YN = 'Y' /*자사상품*/
|
|
|
- AND VS.DISP_YN = 'Y'
|
|
|
- AND C.USE_YN = 'Y'
|
|
|
- AND C.COLOR_GRP_CD = CC.CD
|
|
|
- AND CC.USE_YN = 'Y'
|
|
|
- GROUP BY G.GOODS_CD, VS.OPT_CD1, C.COLOR_CD, CC.CD_DESC
|
|
|
- )
|
|
|
- , TAB_OPT_SIZE_SELFNO AS (
|
|
|
- /*옵션 사이즈 목록 조회*/
|
|
|
- /*입점상품*/
|
|
|
- SELECT G.GOODS_CD
|
|
|
- , GROUP_CONCAT(DISTINCT CONCAT(VS.OPT_CD2 ,':' ,CASE WHEN VS.SOLDOUT_YN = 'Y' THEN 'Y'
|
|
|
- ELSE CASE WHEN VS.CURR_STOCK_QTY - VS.BASE_STOCK_QTY > 0 THEN 'N' ELSE 'Y' END END) ORDER BY VS.DISP_ORD
|
|
|
- SEPARATOR ',') AS SIZES
|
|
|
- FROM BASE_GOODS G
|
|
|
- , VW_STOCK VS
|
|
|
- WHERE G.GOODS_CD = VS.GOODS_CD
|
|
|
- AND G.SELF_GOODS_YN = 'N' /*자사상품*/
|
|
|
- AND VS.DISP_YN = 'Y'
|
|
|
- GROUP BY G.GOODS_CD
|
|
|
- )
|
|
|
- , TAB_OPT AS (
|
|
|
- /*옵션 목록*/
|
|
|
- SELECT OS.GOODS_CD
|
|
|
- , OS.OPT_CD1
|
|
|
- , OS.COLOR_CHIP /*RGB값*/
|
|
|
- , GROUP_CONCAT(OS.SIZES ORDER BY OS.SIZES) AS SIZES
|
|
|
- FROM TAB_OPT_SIZE OS
|
|
|
- GROUP BY OS.GOODS_CD, OS.OPT_CD1, OS.COLOR_CHIP
|
|
|
- UNION ALL
|
|
|
- SELECT OSS.GOODS_CD
|
|
|
- , '' AS OPT_CD1
|
|
|
- , '' AS COLOR_CHIP
|
|
|
- , OSS.SIZES
|
|
|
- FROM TAB_OPT_SIZE_SELFNO OSS
|
|
|
- )
|
|
|
- , 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 /*상품타이틀명*/
|
|
|
- , IFNULL(O.OPT_CD1,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 /*리뷰등록건수*/
|
|
|
- , O.SIZES
|
|
|
- FROM BASE_GOODS g
|
|
|
- , TAB_OPT O
|
|
|
- WHERE G.GOODS_CD = O.GOODS_CD
|
|
|
- <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
|
|
|
- AND O.OPT_CD1 IN (SELECT COLOR_CD
|
|
|
- FROM TB_COLOR
|
|
|
- WHERE 1 = 1
|
|
|
- AND COLOR_GRP_CD IN
|
|
|
- <foreach collection="colorArr" item="item" index="index" open="(" close=")" separator=",">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- AND USE_YN = 'Y' /*사용하는색상*/
|
|
|
- )
|
|
|
- </if>
|
|
|
- <choose>
|
|
|
- <when test="sortingType == 'BEST'"> <!-- 인기상품순 -->
|
|
|
- ORDER BY G.SELL_WEEK_QTY DESC, G.GOODS_CD
|
|
|
- </when>
|
|
|
- <when test="sortingType == 'REVIEW'"> <!-- 리뷰많은순 -->
|
|
|
- ORDER BY G.REVIEW_REG_CNT DESC, G.GOODS_CD
|
|
|
- </when>
|
|
|
- <otherwise> <!-- 최신상품순 -->
|
|
|
- ORDER BY G.REG_DT DESC, G.GOODS_CD
|
|
|
- </otherwise>
|
|
|
- </choose>
|
|
|
- <if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
|
|
|
- LIMIT #{pageable.limitStartRow} , #{pageable.pageSize}
|
|
|
- </if>
|
|
|
- )
|
|
|
- SELECT DISTINCT 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.SELF_GOODS_YN
|
|
|
- , G.MAIN_COLOR_CD
|
|
|
- , G.LIST_PRICE
|
|
|
- , G.CURR_PRICE
|
|
|
- , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM
|
|
|
- , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND MOUSEOVER_IMG_YN = 'Y' LIMIT 1) AS 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 /*컬러칩*/
|
|
|
- , G.SIZES /*사이즈*/
|
|
|
- , (
|
|
|
- SELECT GROUP_CONCAT(CONCAT(BENEFIT_GB,':',BENEFIT_NM) ORDER BY NUMB SEPARATOR ',')
|
|
|
- FROM (
|
|
|
+ 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.SELF_GOODS_YN
|
|
|
+ , G.MAIN_COLOR_CD
|
|
|
+ , G.LIST_PRICE
|
|
|
+ , G.CURR_PRICE
|
|
|
+ , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1) AS SYS_IMG_NM
|
|
|
+ , (SELECT SYS_IMG_NM FROM TB_GOODS_IMG X WHERE X.GOODS_CD = G.GOODS_CD AND IF(G.SELF_GOODS_YN= 'N', 'XX', G.MAIN_COLOR_CD) = X.COLOR_CD AND MOUSEOVER_IMG_YN = 'Y' LIMIT 1) AS 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
|
|
|
+ , 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
|
|
|
+ ) Z
|
|
|
+ ) AS BENEFITS
|
|
|
+ , G.FORMAL_GB
|
|
|
+ , G.REG_DT
|
|
|
<choose>
|
|
|
<when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
|
|
|
- , IF(W.GOODS_CD IS NULL,'','likeit') AS LIKE_IT /*위시리스트담긴상품*/
|
|
|
+ , IF(W.GOODS_CD IS NULL,'','likeit') AS LIKE_IT /*위시리스트담긴상품*/
|
|
|
</when>
|
|
|
<otherwise>
|
|
|
- , '' AS LIKE_IT /*위시리스트담긴상품*/
|
|
|
+ , '' AS LIKE_IT /*위시리스트담긴상품*/
|
|
|
</otherwise>
|
|
|
</choose>
|
|
|
FROM TAB_GOODS G
|
|
|
<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}
|
|
|
+ LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
|
|
|
+ AND W.CUST_NO = #{custNo}
|
|
|
</if>
|
|
|
WHERE 1=1
|
|
|
</select>
|