Quellcode durchsuchen

GOODS DOMAIN 변경

eskim vor 5 Jahren
Ursprung
Commit
7e7eab5ab4

+ 95 - 6
src/main/java/com/style24/persistence/domain/Goods.java

@@ -1,6 +1,7 @@
 package com.style24.persistence.domain;
 
 import com.style24.persistence.TscBaseDomain;
+
 import lombok.Data;
 
 /**
@@ -13,15 +14,103 @@ import lombok.Data;
 @Data
 public class Goods extends TscBaseDomain {
 	// 상품 정보
-	private String goodsCd;			// 상품번호
-	private String productNo;		// ProductNo(WMS)
-	private String productCode;		// ProductCode(WMS)
+	private String goodsCd;		//상품코드
+	//private String productNo;		// ProductNo(WMS)
+	//private String productCode;		// ProductCode(WMS)
+	private String brandCd;		//브랜드코드
+	private String itemkindCd;		//품목코드
+	private String goodsNm;		//상품명
+	private String goodsTnm;		//상품타이틀명
+	private String goodsSnm;		//상품검색명
+	private String goodsSnm1;		//상품검색명1(사용자등록용)
+	private String mainColorCd;		//대표색상코드
+	private String styleYear;		//스타일연도
+	private String seasonCd;		//시즌코드(공통코드G006)
+	private String sexGb;		//성별구분(공통코드G007)
+	private String goodsNum;		//품번(자사상품만 사용)
+	private String goodsType;		//상품타입(공통코드G056)
+	private int listPrice;		//정상가(최초판매가)
+	private int currPrice;		//현재판매가
+	private String priceUpdDt;		//가격변경일시
+	private float dcRate;		//할인율
+	private int benefitCurrPrice;		//즉시할인판매가
+	private String goodsStat;		//상품상태(공통코드G008)
+	private String selfMallYn;		//자사몰노출여부
+	private String goodsGb;		//해외구매대행/병행수입 상품일 경우 주문 시 통관부호 입력 란이 추가되어야 한다
+	private String distributionGb;		//유통구분(공콩코드 G065)
+	private String selfGoodsYn;		//자사상품여부
+	private String supplyCompCd;		//공급업체코드
+	private String supplyGoodsCd;		//공급업체상품코드(원코드)
+	private String ageGrpCd;		//상품연령대(공통코드 G023)
+	private String delvFeeCd;	//배송비정책코드
+	private int delvFee;		//배송비
+	private int minOrdAmt;		//무료배송비최소구매금액
+	private float pntPrate;		//포인트적립율(PC)
+	private float pntMrate;		//포인트적립율(모바일)
+	private float sellFeeRate;		//판매수수료율
+	private String formalGb;		//정상이월구분(공통코드G009)
+	private String changeableYn;		//교환가능여부
+	private String returnableYn;		//반품가능여부
+	private String changeFeeFreeYn;		//교환배송비무료여부
+	private String returnFeeFreeYn;		//반품배송비무료여부
+	private String prePpntUsableYn;		//선포인트사용가능여부(PC)
+	private String preMpntUsableYn;		//선포인트사용가능여부(모바일)
+	private int minOrdQty;		//최소주문수량
+	private int maxOrdQty;		//최대주문수량
+	private int dayMaxOrdQty;		//ID당1일최대구매수량
+	private String giftPackYn;		//선물포장여부
+	private String frstCfrmDt;		//최초승인일시
+	private String originCd;		//제조국(원산지)
+	private String makeYmd;		//제조연월일
+	private String taxGb;		//과세구분(10:과세, 20:비과세)
+	private String erpPriceLinkYn;		//ERP가격연계여부(자사상품만 사용. Y:연계)
+	private String erpStockLinkYn;		//ERP재고연계여부(자사상품만 사용. Y:연계)
+	private String newCustOrdYn;		//신규고객 구매가능여부(Y:신규고객만 구매가능)
+	private int costPrice;		//원가
+	private String adultYn;		//성인용품여부
+
+	private String brandnm;		//브랜드명
+	private String brandGrpNm;	//브랜드그룹명
+	private String frontGb;
+	private String isApp;
+	private String siteCd;
+	private String cateGb;
+	private String afLinkCd;
+	private String ithrCd;
+	private String contentsLoc;
+	private int pntRate;
+	private String prePntUsableYn;
+	private String niClsfCd;
+	private String brandTcateCd;
+	private String adminYn;
+	private String preview;
+	private String viewDt;
+	private String custGb;
+	private String custGrade;
+	private String custNo;
+	private String soldoutGoodsDisplayYn = "N";
+	private int pointUnit = 10;
+	private String goodsNmFull;
+	private String sysImgNm;
+	private String logoFileNm;
+	private int stockQty;
+	private String soldoutYn;
+	private String wishYn;
+	private String socialSq;
+	private String socialTypeNm;
+	private String socialType;
+	private String socialTnm;
+	private String socialStdt;
+	private String socialEddt;
+	private String planDtlSq;
+
+	private int floorUnit; // 절사단위(10:일원단위절사, 100:십원단위절사, 1000:백원단위절사)
+
+
 	private String skuModelNo;		// SKUModelNo(WMS)
-	private String goodsType;		// 상품타입(공통코드G056)
 	private String compsGoodsCd;	// 세트 구성품 상품번호
 	private String optCd;			// 옵션코드
 	private String optCd1;			// 옵션코드1
-	private String goodsStat;		// 상품 상태(공통코드G008)
-	private int dayMaxOrdQty;		// 일일 최대 구매 수량
 	private int qty;				// 세트 상품 구성 수량
+
 }

+ 20 - 0
src/main/java/com/style24/persistence/domain/GoodsDesc.java

@@ -0,0 +1,20 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품 상세 설명 Domain
+ * @author eskim
+ * @since 2021. 02. 09
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsDesc extends TscBaseDomain {
+
+	private String goodsCd;
+	private String descGb;
+	private int seq;
+	private String goodsDesc;
+}

+ 121 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -156,6 +156,125 @@
 		</if>
 	</select>
 
+	<!-- 상품 상세 정보 조회 -->
+	<select id="getGoodsDescList" parameterType="GoodsDesc" resultType="GoodsDesc">
+		/* TsfGoods.getGoodsDescList */
+		SELECT GOODS_CD
+		     , DESC_GB
+		     , SEQ
+		     , GOODS_DESC
+		FROM TB_GOODS_DESC
+		WHERE GOODS_CD = #{goodsCd}
+		AND DESC_GB = #{descGb}
+		ORDER BY SEQ
+	</select>
+	
+	<!-- 핫딜 상품 조회 -->
+	<select id="getSocialGoods" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getSocialGoods */
+		SELECT *
+		FROM (
+		    SELECT A.SOCIAL_SQ
+		         , A.SOCIAL_TYPE
+		         , FN_GET_CODE_NM('G062', A.SOCIAL_TYPE) AS SOCIAL_TYPE_NM
+		         , A.SOCIAL_TNM
+		         , B.GOODS_CD
+		         , IFNULL(B.CURR_APRICE, C.CURR_PRICE) AS CURR_PRICE
+		         , IFNULL(B.DC_ARATE, C.DC_RATE) AS DC_RATE
+		         , (CASE WHEN #{frontGb} = 'P' THEN IFNULL(B.PNT_APRATE, C.PNT_PRATE) ELSE IFNULL(B.PNT_AMRATE,C.PNT_MRATE) END ) AS PNT_RATE
+		         , DATE_FORMAT(A.SOCIAL_STDT, '%Y-%m-%d %H:%i:%S')  AS SOCIAL_STDT
+		         , DATE_FORMAT(A.SOCIAL_EDDT, '%Y-%m-%d %H:%i:%S')  AS SOCIAL_EDDT
+		    FROM TB_SOCIAL A
+		    INNER JOIN TB_SOCIAL_GOODS B ON A.SOCIAL_SQ = B.SOCIAL_SQ
+		                                 AND B.GOODS_CD = #{goodsCd}
+		                                 AND B.DEL_YN = 'N'
+		    INNER JOIN TB_GOODS C ON B.GOODS_CD = C.GOODS_CD
+		    WHERE A.USE_YN = 'Y'
+		    AND A.SITE_CD = #{siteCd}
+		    AND NOW() BETWEEN A.SOCIAL_STDT AND A.SOCIAL_EDDT
+		    AND A.FRONT_GB IN ('A', #{frontGb})
+		    AND A.APPLY_GB = 'A' -- 적용
+		    ORDER BY A.SOCIAL_SQ DESC
+		) A
+		LIMIT 1
+	</select>
+	
+		<!-- 상품 다른컬러 목록 -->
+	<select id="getGoodsOtherColorList" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getGoodsOtherColorList */
+		SELECT Z.*
+		FROM (
+		    SELECT G.GOODS_CD
+		         , G.GOODS_NM
+		         , G.GOODS_TNM
+		         , CONCAT(G.GOODS_TNM,' ',G.GOODS_NM) AS GOODS_TNM_FULL
+		         , G.BRAND_CD
+		         , (CASE WHEN B.DISP_NM_LANG = 'EN' THEN B.BRAND_ENM ELSE B.BRAND_KNM END) AS BRAND_NM
+		         , B.BRAND_GRP_NM
+		         , G.ITEMKIND_CD
+		         , G.FORMAL_GB
+		         , G.LIST_PRICE
+		         , G.CURR_PRICE
+		         , G.SELF_GOODS_YN
+		         , G.GOODS_STAT
+		         , G.MAIN_COLOR_CD
+		         , G.SEX_GB
+		         , FN_GET_CODE_NM('G007',G.SEX_GB) AS SEX_NM
+		         , G.SUPPLY_COMP_CD
+		         , G.GOODS_TYPE
+		         , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD 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
+		       , TB_BRAND B
+		       , TB_COLOR C
+		       , (SELECT GOODS_CD
+		               , MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		                          WHEN UPPER(NVL(#{isApp},'FALSE')) = 'TRUE' THEN CURR_APP_STOCK_QTY
+		                          WHEN #{frontGb} = 'M' THEN CURR_MO_STOCK_QTY
+		                          ELSE CURR_PC_STOCK_QTY
+		                     END) AS STOCK_QTY
+		          FROM VW_STOCK
+		          WHERE SOLDOUT_YN = 'N'
+		          GROUP BY GOODS_CD) S
+		       , (SELECT GOODS_CD
+		               , MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		                          WHEN UPPER(NVL(#{isApp},'FALSE')) = 'TRUE' THEN CURR_APP_STOCK_QTY
+		                          WHEN #{frontGb} = 'M' THEN CURR_MO_STOCK_QTY
+		                          ELSE CURR_PC_STOCK_QTY
+		                     END) AS STOCK_QTY
+		          FROM VW_STOCK_EXTEND
+		          WHERE SOLDOUT_YN = 'N'
+		          GROUP BY GOODS_CD) S1
+		    WHERE G.GOODS_NUM = (SELECT GOODS_NUM FROM TB_GOODS WHERE GOODS_CD = #{goodsCd})
+		    AND G.GOODS_TYPE = 'G056_N' -- 일반상품
+		    -- AND G.SELF_MALL_YN = 'Y' -- 자사몰 노출
+		    AND G.BRAND_CD = B.BRAND_CD
+		    AND B.USE_YN = 'Y'
+		    AND G.GOODS_CD = S.GOODS_CD(+)
+		    AND G.GOODS_CD = S1.GOODS_CD(+)
+		    <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 = '90'
+		    </if>
+		) Z
+		WHERE 1 = 1
+		<if test='soldoutGoodsDisplayYn != null and soldoutGoodsDisplayYn =="N"'>
+		AND Z.STOCK_QTY > 0
+		</if>
+		ORDER BY Z.COLOR_CD
+	</select>
+	
+	
 	<!-- 구성 상품 정보 -->
 	<select id="getGoodsCompsInfo" parameterType="Goods" resultType="Goods">
 		/* TsfGoods.getGoodsCompsInfo */
@@ -165,13 +284,13 @@
 		     , GC.QTY
 		     , G.PRODUCT_NO
 		     , G.PRODUCT_CODE
-			 , G.GOODS_STAT
+		     , G.GOODS_STAT
 		  FROM TB_GOODS_COMPOSE GC
 		 INNER JOIN TB_GOODS G
 		    ON GC.COMPS_GOODS_CD = G.GOODS_CD
 		 WHERE GC.USE_YN = 'Y'
 		   AND G.SELF_MALL_YN = 'Y'							<!-- 자사몰 노출 여부 -->
-		   AND G.GOODS_STAT IN ('G008_90', 'G008_70')		<!-- 상품 승인완료, 일시품절 (품절도 프론트에서 보여져야함) -->
+		   AND G.GOODS_STAT = 'G008_90'	<!-- 상품 승인완료, 일시품절 (품절도 프론트에서 보여져야함) -->
 		   AND GC.GOODS_TYPE = #{goodsType}
 		   AND GC.GOODS_CD = #{goodsCd}
 		   AND GC.COMPS_GOODS_CD = #{compsGoodsCd}