소스 검색

상품 사이즈 조회 쿼리 수정중

eskim 5 년 전
부모
커밋
7228340406

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

@@ -98,14 +98,14 @@ public interface TsfGoodsDao {
 	Collection<GoodsCompose> getGoodsDealComposeList(Goods goods);
 
 	/**
-	 * 상품 옵션 사이즈 목록
+	 * 상품 옵션1 목록
 	 *
 	 * @param goods
 	 * @return
 	 * @author eskim
 	 * @date 2021. 2. 9
 	 */
-	Collection<GoodsStock> getGoodsOtherColorList(Goods goods);
+	Collection<GoodsStock> getGoodsOption1List(Goods goods);
 
 
 	/**

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

@@ -204,15 +204,15 @@ public class TsfGoodsService {
 	}
 
 	/**
-	 * 상품 옵션 사이즈 목록
+	 * 상품 옵션1 목록
 	 *
 	 * @param goods
 	 * @return
 	 * @author eskim
 	 * @since 2021. 2. 9
 	 */
-	public Collection<GoodsStock> getGoodsOtherColorList(Goods goods) {
-		return goodsDao.getGoodsOtherColorList(goods);
+	public Collection<GoodsStock> getGoodsOption1List(Goods goods) {
+		return goodsDao.getGoodsOption1List(goods);
 	}
 
 	/**

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

@@ -98,8 +98,8 @@ public class TsfGoodsController extends TsfBaseController {
 			mav.addObject("goodsExtendList", goodsService.getGoodsDealComposeList(paramsGoods));
 		} else {
 			if ("N".equals(goods.getGoodsType())) {	// 일반상품
-				// 상품 다른컬러정보
-				mav.addObject("goodsOtherColorList", goodsService.getGoodsOtherColorList(paramsGoods));
+				// 상품 옵션1 정보
+				mav.addObject("goodsOtherColorList", goodsService.getGoodsOption1List(paramsGoods));
 				// 상품 사이즈정보
 				mav.addObject("goodsSizeList", goodsService.getGoodsSizeList(paramsGoods));
 

+ 1 - 0
src/main/java/com/style24/persistence/domain/Goods.java

@@ -70,6 +70,7 @@ public class Goods extends TscBaseDomain {
 	private String adultYn;		//성인용품여부
 
 	private String colorCd;		//색상코드
+	private String colorNM;		//색상코드명
 	private String brandnm;		//브랜드명
 	private String brandGrpNm;	//브랜드그룹명
 	private String frontGb;		//프론트구분

+ 13 - 5
src/main/java/com/style24/persistence/domain/GoodsStock.java

@@ -14,14 +14,22 @@ import lombok.Data;
 @Data
 public class GoodsStock extends TscBaseDomain {
 	// 재고 정보
-	private int currStockQty;		// 가용재고
-	private int goodsQty;			// 안전재고
 	private String goodsCd;			// 상품번호
-	private String itemCd;			// 구성상품코드
-	private String goodsType;		// 상품구분
 	private String optCd;			// 옵션코드
 	private String optCd1;			// 옵션코드1(자사 : 컬러, 입점 : 옵션명1)
 	private String optCd2;			// 옵션코드1(자사 : 사이즈, 입점 : 옵션명2)
+	private Integer skuModelNo;		// SKUModelNo(WMS)
+	private Integer productNo;		// ProductNo(WMS)
+	private Integer productCode;	// ProductCode(WMS)
+	private int currStockQty;		// 가용재고
+	private int addPrice;			// 추가금액
 	private String soldoutYn;		// 품절여부
-	private String skuModelNo;		// SKUModelNo(WMS)
+	private int dispOrd;			// 표시순서
+
+	private String itemCd;			// 구성상품코드
+	private String goodsType;		// 상품구분
+	private int goodsQty;			// 안전재고
+	private String sysImgNm;		// 상품이미지
+	private int stockQty;			// 상품 재고
+
 }

+ 86 - 46
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -120,6 +120,7 @@
 		     , G.RETURNABLE_YN
 		     , (SELECT CATE1_NO FROM TB_SITE_BRAND WHERE  BRAND_CD = G.BRAND_CD AND SITE_CD = #{siteCd} AND USE_YN = 'Y') AS BRAND_CATE1_NO
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(#{colorCd}, IFNULL(G.MAIN_COLOR_CD,'00')) AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
+		     , (SELECT ) AS COLOR_NM
 		     , BP.CURR_PRICE AS BENEFIT_PRICE
 		     , (CASE WHEN W.GOODS_CD IS NULL THEN 'N' ELSE 'Y' END) AS WISH_YN
 		     , (CASE WHEN G.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
@@ -199,56 +200,95 @@
 	<!-- 상품 옵션1 목록 -->
 	<select id="getGoodsOption1List" parameterType="Goods" resultType="GoodsStock">
 		/* TsfGoods.getGoodsOption1List */
-		SELECT Z.*
+		SELECT GOODS_CD
+		     , OPT_CD1
+		     , STOCK_QTY
+		FROM (
+		     SELECT G.GOODS_CD
+		          , G.SELF_GOODS_YN
+		          , O.OPT_CD1 
+		          , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IF(G.SELF_GOODS_YN ='Y', O.OPT_CD1, '00') AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
+		          , IFNULL(S.STOCK_QTY,0) AS STOCK_QTY
+		          , G.MIN_ORD_QTY
+		     FROM TB_GOODS G
+		     INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		                           AND B.USE_YN = 'Y'
+		     INNER JOIN (SELECT GOODS_CD, OPT_CD1, MIN(DISP_ORD) AS DISP_ORD FROM TB_OPTION WHERE DISP_YN = 'Y' GROUP BY  GOODS_CD, OPT_CD1 ) O ON G.GOODS_CD = O.GOODS_CD
+		     LEFT OUTER JOIN (SELECT GOODS_CD
+		                           , OPT_CD1
+		                           , SUM(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		                                      ELSE CURR_STOCK_QTY
+		                                      END) AS STOCK_QTY
+		                      FROM VW_STOCK
+		                      WHERE DISP_YN = 'Y'
+		                      GROUP BY GOODS_CD, OPT_CD1) S ON G.GOODS_CD = S.GOODS_CD 
+		                                                    AND O.OPT_CD1 = S.OPT_CD1
+		     WHERE G.GOODS_CD = #{goodsCd})
+		     AND G.GOODS_TYPE = 'G056_N' -- 일반상품
+		     <if test='adminYn == null or adminYn != "Y"'>
+		     AND G.GOODS_STAT = 'G008_90'
+		     </if>
+		     ORDER BY O.DISP_ORD
+		)
+	</select>
+	
+	<!-- 상품 사이즈 목록 -->
+	<select id="getGoodsSizeList" parameterType="Tsfgoods" resultType="TsfStock">
+		/* TsfGoods.getGoodsSizeList */
+		SELECT GOODS_CD
+		     , OPT_CD
+		     , OPT_CD1
+		     , OPT_CD2
+		     , STOCK_QTY
+		     , SOLDOUT_YN
+		     , DISP_ORD
 		FROM (
-		    SELECT G.GOODS_CD
-		         , G.SELF_GOODS_YN
-		         , G.GOODS_STAT
-		         , G.MAIN_COLOR_CD
-		         , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(#{colorCd}, IFNULL(G.MAIN_COLOR_CD,'00')) AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
-		         , IFNULL( (CASE WHEN G.GOODS_CD = #{goodsCd} THEN  1 
-		                         ELSE ( CASE WHEN G.GOODS_TYPE = 'G056_N'THEN S.STOCK_QTY ELSE S1.STOCK_QTY END) 
-		                         END)
-		                 ,0) AS STOCK_QTY
-		         , (SELECT CATE1_NO
-		            FROM TB_SITE_BRAND
-		            WHERE  BRAND_CD = G.BRAND_CD
-		            AND SITE_CD = #{siteCd}
-		            AND USE_YN = 'Y') AS BRAND_CATE1_NO
-		    FROM TB_GOODS G
-		    INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
-		                          AND B.USE_YN = 'Y'
-		    INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD
-		    LEFT OUTER JOIN (SELECT GOODS_CD
-		                          , MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
-		                                     ELSE CURR_STOCK_QTY
-		                                     END) AS STOCK_QTY
-		                     FROM VW_STOCK
-		                     WHERE SOLDOUT_YN = 'N'
-		                     GROUP BY GOODS_CD) S ON G.GOODS_CD = S.GOODS_CD
-		    LEFT OUTER JOIN (SELECT GOODS_CD
-		                          , MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
-		                                     ELSE CURR_STOCK_QTY
-		                                     END) AS STOCK_QTY
-		                     FROM VW_STOCK_COMPOSE
-		                     WHERE SOLDOUT_YN = 'N'
-		                     GROUP BY GOODS_CD) S1 G.GOODS_CD = S1.GOODS_CD
-		    WHERE G.GOODS_NUM = (SELECT GOODS_NUM FROM TB_GOODS WHERE GOODS_CD = #{goodsCd})
-		    AND G.GOODS_TYPE = 'G056_N' -- 일반상품
-		    <if test='goodsCdIncludeYn != null and goodsCdIncludeYn == "N"'>
-		    AND G.GOODS_CD <![CDATA[<>]]> #{goodsCd}
-		    </if>
-		    <if test='adminYn == null or adminYn != "Y"'>
-		    AND G.GOODS_STAT = 'G008_90'
-		    </if>
-		) Z
+		    SELECT GOODS_CD
+		         , OPT_CD
+		         , OPT_CD1
+		         , OPT_CD2
+		         , (CASE WHEN STOCK_QTY - MIN_ORD_QTY >= 0 THEN STOCK_QTY
+		                 ELSE 0
+		            END ) AS STOCK_QTY
+		         , SOLDOUT_YN
+		         , DISP_ORD
+		    FROM (
+		          SELECT GOODS_CD
+		               , OPT_CD
+		               , OPT_CD1
+		               , OPT_CD2
+		               , STOCK_QTY
+		               , SOLDOUT_YN
+		               , DISP_ORD
+		               , (SELECT MIN_ORD_QTY FROM TB_GOODS WHERE GOODS_CD = A.GOODS_CD ) AS MIN_ORD_QTY
+		          FROM (
+		                SELECT GOODS_CD
+		                     , OPT_CD
+		                     , OPT_CD1
+		                     , OPT_CD2
+		                     , CURR_STOCK_QTY AS STOCK_QTY
+		                     , SOLDOUT_YN
+		                     , DISP_ORD
+		                FROM VW_STOCK
+		                WHERE GOODS_CD = #{goodsCd}
+		                AND DISP_YN ='Y'
+		               ) A
+		        ) B
+		     ) Z
 		WHERE 1 = 1
-		<if test='soldoutGoodsDisplayYn != null and soldoutGoodsDisplayYn =="N"'>
-		AND Z.STOCK_QTY > 0
+		<if test='soldoutYn != null and soldoutYn == "Y"'>
+		AND (SOLDOUT_YN = 'Y'
+		     OR
+		     STOCK_QTY <![CDATA[<=]]> 0
+		    )
+		</if>
+		<if test='soldoutYn != null and soldoutYn == "N"'>
+		AND SOLDOUT_YN = 'N'
+		AND STOCK_QTY > 0
 		</if>
-		ORDER BY Z.COLOR_CD
+		ORDER BY DISP_ORD
 	</select>
-		
+	
 	<!-- 상품 동영상정보 -->
 	<select id="getVideoList" parameterType="String" resultType="VideoDisploc">
 		/* TsfGoods.getVideoList */