Explorar el Código

Merge branch 'master' of http://112.172.147.34:4936/style24/style24.doc

bin2107 hace 4 años
padre
commit
2679411e6d

BIN
산출물/2.분석/TSIT-A302-상품등록_업무흐름도_ISTYLE24(v0.1).pptx


+ 3 - 1
산출물/3.설계/05.DB-Object/06.DDL/table.sql

@@ -4252,7 +4252,7 @@ COMMENT 'EP다음. EP다음 생성에 의한 발생';
 
 CREATE UNIQUE INDEX IX_EP_DAUM_01
   ON TB_EP_DAUM (
-    GB, ID
+    GB, MAPID
   );
 
 ################################################################################
@@ -11459,7 +11459,9 @@ CREATE TABLE TB_ORDER_DETAIL_ITEM_HST (
   OPT_ADD_PRICE       INT               NOT NULL DEFAULT 0 COMMENT '옵션추가가격', -- 옵션추가가격
   DISP_ORD            SMALLINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '표시순서', -- 표시순서
   ORD_AMT             INT               NOT NULL DEFAULT 0 COMMENT '단품주문금액( ((단품금액 + 옵션추가금액) * 상세주문수량) * 단품수량)', -- 단품주문금액
+  ORD_QTY             SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '주문수량', -- 주문수량
   CNCL_RTN_AMT        INT               NOT NULL DEFAULT 0 COMMENT '단품취소금액( ((단품금액 + 옵션추가금액) * 상세취소수량) * 단품수량)', -- 단품취소금액
+  CNCL_RTN_QTY        SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '취소반품수량', -- 취소반품수량
   CPN1_DC_AMT         INT               NOT NULL DEFAULT 0 COMMENT '단품 1차쿠폰 할인금액', -- 단품 1차쿠폰 할인금액
   TMTB1_DC_AMT        INT               NOT NULL DEFAULT 0 COMMENT '단품 다다익선 1차 할인금액', -- 단품 다다익선 1차 할인금액
   TMTB2_DC_AMT        INT               NOT NULL DEFAULT 0 COMMENT '단품 다다익선 2차 할인금액', -- 단품 다다익선 2차 할인금액

+ 0 - 368
산출물/4.구축/데이터처리/EP_생성로직.sql

@@ -1,368 +0,0 @@
--- 네이버 전체 EP
-SELECT G.GOODS_CD                                             AS ID
-     , CONCAT('[',CASE WHEN B.DISP_NM_LANG = 'EN' THEN B.BRAND_ENM ELSE B.BRAND_KNM END,'] ',
-              G.GOODS_NM,
-              IFNULL(G.GOODS_NUM,''))                         AS TITLE
-     , IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS PRICE_PC     /*즉시할인이적용된가격*/
-     , IFNULL(GBP.MO_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS PRICE_MOBILE /*즉시할인이적용된가격*/
-     , G.LIST_PRICE                                           AS NORMAL_PRICE /*정상가*/
-     , G.GOODS_STAT
-     , CONCAT('https://www.style24.com/goods/detail/form?goodsCd=',
-              G.GOODS_CD)                                     AS LINK
-     , NULL                                                   AS MOBILE_LINK  /*PC URL과 다를 경우. 동일함으로 NULL로 처리*/
-     , CONCAT('https://image.istyle24.com/Upload/ProductImage/',
-              (SELECT SYS_IMG_NM
-               FROM   TB_GOODS_IMG
-               WHERE  GOODS_CD = G.GOODS_CD
-               AND    COLOR_CD = IF(G.SELF_GOODS_YN = 'N','XX',G.MAIN_COLOR_CD)
-               AND    DEFAULT_IMG_YN = 'Y'
-               LIMIT 1))                                      AS IMAGE_LINK
-     , (SELECT GROUP_CONCAT(CONCAT('https://image.istyle24.com/Upload/ProductImage/',SYS_IMG_NM) SEPARATOR '|')
-        FROM   (SELECT DISTINCT SYS_IMG_NM
-                FROM   TB_GOODS_IMG
-                WHERE  GOODS_CD = G.GOODS_CD
-                AND    DEFAULT_IMG_YN = 'N'
-                LIMIT 4
-               ) Z
-       )                                                      AS ADD_IMAGE_LINK /*이미지4개까지(|로 구분)*/
-     , SUBSTRING_INDEX(I.ITEMKIND_NM,'>',1)                   AS CATEGORY_NAME1
-     , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',1),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1) THEN
-                NULL
-            ELSE
-                SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1)
-       END                                                    AS CATEGORY_NAME2
-     , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1) THEN
-                NULL
-            ELSE
-                SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1)
-       END                                                    AS CATEGORY_NAME3
-     , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',4),'>',-1) THEN
-                NULL
-            ELSE
-                SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',4),'>',-1)
-       END                                                    AS CATEGORY_NAME4
---      , NULL                                                   AS NAVER_PRODUCT_ID
-     , FN_GET_CODE_NM('G073',G.GOODS_GB)                      AS CONDITION1
-     , G.FOREIGN_BUY_YN                                       AS IMPORT_FLAG     /*해외구매대행여부*/
-     , G.PARALLEL_IMPORT_YN                                   AS PARALLEL_IMPORT /*병행수입여부*/
-     , G.ORDER_MADE_YN                                        AS ORDER_MADE      /*주문제작상품여부*/
-     , CASE WHEN IFNULL((SELECT COUNT(*)
-                         FROM   TB_GOODS_RES_SELL
-                         WHERE  GOODS_CD = G.GOODS_CD
-                         AND    DELV_RES_DT >= NOW()
-                         AND    USE_YN = 'Y'
-                        ),0) = 0 THEN NULL ELSE '예약판매' END  AS PRODUCT_FLAG /*예약판매*/
-     , G.ADULT_YN                                             AS ADULT           /*성인여부*/
---      , NULL                                                   AS GOODS_TYPE      /*상품유형. DP/HS/DF/MA(백화점/홈쇼핑/면세점/마트). 해당없음으로 NULL로 처리*/
---      , NULL                                                   AS BARCODE         /*바코드. 데이터 없어 NULL로 처리*/
-     , G.GOODS_NUM                                            AS MANUFACTURE_DEFINE_NUMBER /*제조번호*/
---      , CASE WHEN G.SELF_GOODS_YN = 'Y' THEN
---                 G.GOODS_NUM
---             ELSE
---                 G.SUPPLY_GOODS_CD
---        END                                                    AS MODEL_NUMBER
-     , CASE WHEN B.DISP_NM_LANG = 'EN' THEN
-                B.BRAND_ENM
-            ELSE
-                B.BRAND_KNM
-       END                                                    AS BRAND           /*브랜드명*/
-     , (SELECT NI_CONTENT
-        FROM   TB_GOODS_NOTI_INFO
-        WHERE  GOODS_CD = G.GOODS_CD
-        AND    NI_ITEM_CD = 'G005_005'
-        LIMIT 1)                                              AS MAKER            /*제조사*/
-     , IFNULL(FN_GET_CODE_NM('G076',G.ORIGIN_CD),G.ORIGIN_CD) AS ORIGIN          /*원산지*/
-     , (SELECT GROUP_CONCAT(DISTINCT
-                            CONCAT(FN_GET_CODE_NM('G941',CPT.PRMT_TARGET_CD),'^',
-                                   (IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE)
-                                    -
-                                    CASE WHEN CPC.DC_WAY = 'G240_10' /*정액할인*/ THEN CPC.DC_VAL
-                                         ELSE /*정율할인*/ CAST(IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY * CPC.DC_VAL / 100 AS SIGNED INTEGER)
-                                    END))
-                            SEPARATOR '|')
-        FROM   TB_CARD_PROMOTION CP
-             , TB_CARD_PROMOTION_CONDITION CPC
-             , TB_CARD_PROMOTION_TARGET CPT
-        WHERE  CP.CARD_PRMT_SQ = CPC.CARD_PRMT_SQ
-        AND    CPC.CARD_PRMT_CDT_SQ = CPT.CARD_PRMT_CDT_SQ
-        AND    CP.PRMT_GB = 'A' /*카드할인*/
-        AND    CP.DC_GB = '1' /*즉시할인*/
-        AND    CP.PRMT_STD <= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-        AND    CP.PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-        AND    CP.DISP_YN = 'Y'
-        AND    CPC.MIN_PAY_AMT < IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY
-       )                                                      AS CARD_EVENT      /*카드행사. 카드즉시할인 등록된 기준으로 적용. 카드명^카드적용가 형식*/
-     , G.GOODS_TNM                                            AS EVENT_WORDS     /*상품셀링문구*/
-     , (SELECT CONCAT(IFNULL(NORMAL_CPN,''),'^',IFNULL(AFLINK_CPN,''))
-        FROM   (
-                SELECT CASE WHEN IFNULL((SELECT COUNT(*)
-                                         FROM   TB_COUPON_AF_CHANNEL
-                                         WHERE  CPN_ID = C.CPN_ID
-                                        ),0) = 0 THEN
-                                CONCAT(C.DC_PVAL,CASE WHEN C.DC_WAY = 'G240_10' THEN '원' ELSE '%' END)
-                            ELSE
-                                NULL
-                       END                   AS NORMAL_CPN /*일반쿠폰*/
-                     , CASE WHEN IFNULL((SELECT COUNT(*)
-                                         FROM   TB_COUPON_AF_CHANNEL
-                                         WHERE  CPN_ID = C.CPN_ID
-                                        ),0) > 0 AND C.DC_WAY = 'G240_11' THEN
-                                C.DC_PVAL
-                            ELSE
-                                NULL
-                       END                   AS AFLINK_CPN /*제휴쿠폰*/
-                     , CASE WHEN IFNULL((SELECT COUNT(*)
-                                         FROM   TB_COUPON_AF_CHANNEL
-                                         WHERE  CPN_ID = C.CPN_ID
-                                        ),0) = 0 THEN
-                                CASE WHEN C.DC_WAY = 'G240_10' THEN C.DC_PVAL
-                                     ELSE 40000 * C.DC_PVAL / 100
-                                END
-                            ELSE
-                                0
-                       END                   AS NCPN_DC_AMT /*일반쿠폰할인금액*/
-                     , CASE WHEN IFNULL((SELECT COUNT(*)
-                                         FROM   TB_COUPON_AF_CHANNEL
-                                         WHERE  CPN_ID = C.CPN_ID
-                                        ),0) > 0 AND C.DC_WAY = 'G240_11' THEN
-                                40000 * C.DC_PVAL / 100
-                            ELSE
-                                0
-                       END                   AS ACPN_DC_AMT /*제휴쿠폰할인금액*/
-                FROM   TB_COUPON C
-                     , TB_COUPON_REFVAL CR
-                WHERE  C.CPN_ID = CR.CPN_ID
-                AND    C.SITE_CD = 'G000_10'
-                AND    C.CPN_STAT = 'G232_11' /*진행쿠폰*/
-                AND    C.CPN_TYPE IN ('G230_11','G230_20') /*상품쿠폰,주문서쿠폰*/
-                AND    (
-                        (C.PD_GB = 'D' AND NOW() < DATE_ADD(NOW(), INTERVAL C.AVAIL_DAYS DAY))
-                        OR
-                        (C.PD_GB = 'P' AND NOW() BETWEEN C.AVAIL_STDT AND C.AVAIL_EDDT)
-                       )
-                AND    C.APPLY_SCOPE = 'I' /*개별쿠폰*/
-                AND    CR.REF_VAL = G.GOODS_CD
-                AND    CR.CPN_TYPE IN ('G230_11','G230_20') /*상품쿠폰,주문서쿠폰*/
-                AND    CR.CPN_TARGET = 'G260_10' /*상품쿠폰*/
-                AND    CR.DEL_YN = 'N'
-                AND    NOT EXISTS (SELECT 1
-                                   FROM   TB_COUPON_REFVAL
-                                   WHERE  CPN_ID = CR.CPN_ID
-                                   AND    CPN_TARGET = 'G260_14' /*제외상품*/
-                                   AND    REF_VAL = CR.REF_VAL
-                                   AND    DEL_YN = 'N'
-                                  )
-                ORDER  BY NCPN_DC_AMT DESC, ACPN_DC_AMT DESC
-                LIMIT 1
-               ) Z
-       )                                                      AS COUPON
---      , NULL AS PARTNER_COUPON_DOWNLOAD /*COUPON 값이 있을 경우 Y로 표기*/
-     , (SELECT GROUP_CONCAT(DISTINCT
-                            CONCAT(FN_GET_CODE_NM('G941',CPT.PRMT_TARGET_CD),'^',
-                                   CPC.MIN_NO_ITRT,'~',CPC.MAX_NO_ITRT)
-                            SEPARATOR '|')
-        FROM   TB_CARD_PROMOTION CP
-             , TB_CARD_PROMOTION_CONDITION CPC
-             , TB_CARD_PROMOTION_TARGET CPT
-        WHERE  CP.CARD_PRMT_SQ = CPC.CARD_PRMT_SQ
-        AND    CPC.CARD_PRMT_CDT_SQ = CPT.CARD_PRMT_CDT_SQ
-        AND    CP.PRMT_GB = 'B' /*무이자할부*/
-        AND    CP.PRMT_STD <= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-        AND    CP.PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-        AND    CP.DISP_YN = 'Y'
-        AND    CPC.MIN_PAY_AMT < IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY
-       )                                                      AS INTEREST_FREE_EVENT /*무이자이벤트. 판매가 > 무이자할부 최소구매금액 기준 초과 시 노출. 카드명^개월수~개월수|카드명^개월수~개월수... 형식으로 노출*/
-     , CONCAT('스타일포인트','^',
-              CAST(IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY * G.PNT_PRATE AS SIGNED INTEGER)
-             )                                                AS PNT             /*포인트. 스타일포인트^포인트금액 형식으로 표기*/
---      , NULL                                                   AS INSTALLATION_COSTS /*별도설치비유무*/
-     , CONCAT(IFNULL(G.GOODS_SNM,''),
-              CASE WHEN LENGTH(IFNULL(G.GOODS_SNM1,'')) = 0 THEN
-                       ''
-                   ELSE
-                       '|'
-              END,
-              IFNULL(G.GOODS_SNM1,'')
-             )                                                AS SEARCH_TAG
---      , NULL                                                   AS GROUP_ID   /*없음*/
---      , NULL                                                   AS VENDOR_ID  /*몰별 상품아이디이나 별도 저장하고 있지 않아 사용안함*/
---      , NULL                                                   AS COORDI_ID  /*스타일링 추천에 세팅된 상품코드 노출. 상품코드|상품코드... 형식*/
-     , CASE WHEN G.MIN_ORD_QTY > 0 THEN
-                G.MIN_ORD_QTY
-            ELSE
-                ''
-       END                                                    AS MINIMUM_PURCHASE_QUANTITY
-     , IFNULL(GS.REVIEW_REG_CNT,0)                            AS REVIEW_REG_CNT
-     , IFNULL((SELECT CASE WHEN DELV_FEE_CRITE = 'G078_20' /*무료*/ THEN
-                               0
-                           ELSE /*조건부무료 또는 유료*/
-                               CASE WHEN MIN_ORD_AMT <= IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY THEN
-                                        0
-                                    ELSE
-                                        DELV_FEE
-                               END
-                      END
-               FROM   TB_DELV_FEE_POLICY
-               WHERE  SUPPLY_COMP_CD = G.SUPPLY_COMP_CD
-               AND    DELV_FEE_CD = G.DELV_FEE_CD
-               AND    USE_YN = 'Y'
-              ),0)                                            AS SHIPPING
---      , NULL                                                   AS DELIVERY_GRADE  /*현재없음*/
---      , NULL                                                   AS DELIVERY_DETAIL /*현재없음*/
---      , NULL                                                   AS ATTR            /*속성-별도없음*/
---      , NULL                                                   AS OPTION_DETAIL   /*옵션별목록-별도제공안함*/
---      , NULL                                                   AS SELLER_ID       /*해당없음. 오픈마켓/몰인몰일때만 사용*/
-     , CASE WHEN SUBSTRING(I.ITEMKIND_CD,1,2) = '07' THEN '유아'
-            WHEN SUBSTRING(I.ITEMKIND_CD,1,2) IN ('08','09','10') THEN '아동'
-            WHEN SUBSTRING(I.ITEMKIND_CD,1,2) IN ('11','12','13') THEN '청소년'
-            ELSE '성인'
-       END                                                    AS AGE_GROUP
-     , CASE WHEN G.SEX_GB = 'G007_F' THEN '여성'
-            WHEN G.SEX_GB = 'G007_M' THEN '남성'
-            ELSE '남여공용'
-       END                                                    AS GENDER
-     , CASE WHEN IFNULL((SELECT COUNT(*)
-                         FROM   TB_GOODS_STOCK
-                         WHERE  GOODS_CD = G.GOODS_CD
-                         AND    STOCK_QTY = 0
-                        ),0) = 0 THEN 'D'
-            ELSE 'I/U'
-       END                                                    AS CLASS /*전체색인:I, 부분색인:전체색인 데이터랑 비교해서 없으면 I, 있는데 변경되었으면 U, 품절: D)*/
-     , DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S')                 AS UPDATE_TIME
-FROM   TB_GOODS G
-INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
-INNER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
-LEFT OUTER JOIN TB_GOODS_BENEFIT_PRICE GBP ON G.GOODS_CD = GBP.GOODS_CD
-LEFT OUTER JOIN TB_GOODS_SUMMARY GS ON G.GOODS_CD = GS.GOODS_CD
-WHERE  1 = 1
-AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
-AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
-AND    G.SELL_STDT <= NOW() /*유효한 판매기간*/
-AND    G.SELL_EDDT >= NOW() /*유효한 판매기간*/
-AND    G.ADULT_YN = 'N' /*성인상품아닌넘만*/
--- AND    G.SELF_GOODS_YN = 'Y'
--- AND    G.GOODS_CD IN (
--- '10770353',
--- 'VNS11QJM49',
--- 'AOW13QDM76',
--- '10770353',
--- 'STYS00000002',
--- 'L191TJ571P',
--- 'MMF1BAKP40',
--- 'K193SH040P',
--- 'B191DS100M',
--- 'CNF0GABL01',
--- 'STYS00000009',
--- 'STYS00000028',
--- '10781128',
--- '10778030',
--- 'ANW11APT65',
--- '10781128'
--- )
-;
-
-SELECT GROUP_CONCAT(CONCAT('https://image.istyle24.com/Upload/ProductImage/',SYS_IMG_NM) SEPARATOR '|')
-FROM   (SELECT DISTINCT SYS_IMG_NM
-        FROM   TB_GOODS_IMG
-        WHERE  GOODS_CD = 'A82F-DP511A'
-        AND    DEFAULT_IMG_YN = 'N'
-        LIMIT 4
-       ) Z
-;
-
-SELECT NI_CONTENT
-FROM   TB_GOODS_NOTI_INFO
-WHERE  GOODS_CD = 'A82F-DP511A'
-AND    NI_ITEM_CD = 'G005_005'
-;
-
-SELECT DISTINCT SUBSTRING(ITEMKIND_CD,1,2)
-FROM   TB_ITEMKIND
-WHERE  ITEMKIND_NM LIKE '주니어공용%'
-;
-
--- 여성, 남성, 유니, 스포츠, 골프, 언더웨어, 베이비(07), 키즈여아(08), 키즈남아(09), 키즈공용(10), 주니어여아(11), 주니어남아(12), 주니어공용(13),
-
--- 카드행사- 카드즉시할인 등록된 기준으로 적용함
--- 전송 PRICE기준이 카드할인의 허들을 초과할경우, 카드할인의 기준으로 전송함
--- 카드명^카드적용가 로 전송함
--- 카드 구분값은 33번 (interest_free_event) 참조
-
-SELECT GROUP_CONCAT(DISTINCT
-                    CONCAT(FN_GET_CODE_NM('G941',CPT.PRMT_TARGET_CD),'^',
-                           (40000 - CASE WHEN CPC.DC_WAY = 'G240_10' /*정액할인*/ THEN CPC.DC_VAL
-                                         ELSE /*정율할인*/ CAST(40000 * CPC.DC_VAL / 100 AS SIGNED INTEGER)
-                                    END))
-                    SEPARATOR '|') AS AAAAAAA
-FROM   TB_CARD_PROMOTION CP
-     , TB_CARD_PROMOTION_CONDITION CPC
-     , TB_CARD_PROMOTION_TARGET CPT
-WHERE  CP.CARD_PRMT_SQ = CPC.CARD_PRMT_SQ
-AND    CPC.CARD_PRMT_CDT_SQ = CPT.CARD_PRMT_CDT_SQ
-AND    CP.PRMT_GB = 'A' /*카드할인*/
-AND    CP.DC_GB = '1' /*즉시할인*/
-AND    CP.PRMT_STD <= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.DISP_YN = 'Y'
-AND    CPC.MIN_PAY_AMT <= 40000
-;
-
-SELECT *
-FROM   TB_CARD_PROMOTION
-;
-
-SELECT GROUP_CONCAT(DISTINCT
-                    CONCAT(FN_GET_CODE_NM('G941',CPT.PRMT_TARGET_CD),'^',
-                           CPC.MIN_NO_ITRT,'~',CPC.MAX_NO_ITRT)
-                    SEPARATOR '|') AS AAAAAAA
-FROM   TB_CARD_PROMOTION CP
-     , TB_CARD_PROMOTION_CONDITION CPC
-     , TB_CARD_PROMOTION_TARGET CPT
-WHERE  CP.CARD_PRMT_SQ = CPC.CARD_PRMT_SQ
-AND    CPC.CARD_PRMT_CDT_SQ = CPT.CARD_PRMT_CDT_SQ
-AND    CP.PRMT_GB = 'B' /*무이자할부*/
-AND    CP.PRMT_STD <= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.DISP_YN = 'Y'
-AND    CPC.MIN_PAY_AMT < 40000
-;
-
-SELECT CASE WHEN DELV_FEE_CRITE = 'G078_20' /*무료*/ THEN
-                0
-            ELSE /*조건부무료 또는 유료*/
-                CASE WHEN MIN_ORD_AMT <= 20000 THEN 0 ELSE DELV_FEE END
-       END AS DELV_FEE
-FROM   TB_DELV_FEE_POLICY
-WHERE  DELV_FEE_CD = '4_01'
-AND    USE_YN = 'Y'
-;
-
--- G078_10	조건부 무료
--- G078_20	무료
--- G078_30	유료
-
-SELECT *
-FROM   TB_ITEMKIND
-WHERE  ITEMKIND_CD = '03180201Z'
-;
-
-SELECT CATE_NO
-FROM   TB_CATE_GOODS
-WHERE  BRAND_GROUP_NO = 0 /*BYITEM카테고리*/
-AND    GOODS_CD = 'A82F-DP511A'
-LIMIT 1
-;
-
-SELECT *
-FROM   TB_CATE_4SRCH
-WHERE  LEAF_CATE_NO IN (1109,1216)
-;
-
-SELECT *
-FROM   TB_GOODS_IMG
-;
-
-SELECT *
-FROM   TB_COMMON_CODE
-WHERE  CD_GB = 'G005'
-;

+ 541 - 299
산출물/4.구축/데이터처리/다음EP생성_20210614.sql

@@ -1,278 +1,217 @@
-SET GROUP_CONCAT_MAX_LEN = 150000;
+################################################################################
+#EP다음
+################################################################################
+DROP TABLE IF EXISTS TB_EP_DAUM RESTRICT;
+CREATE TABLE TB_EP_DAUM (
+  GB            VARCHAR(4)     NOT NULL COMMENT '구분(PREV:이전, CURR:현재)',
+  MAPID         VARCHAR(20)    NOT NULL COMMENT '상품코드(상품)',
+  LPRICE        INT UNSIGNED   COMMENT '정상가',
+  PRICE         INT UNSIGNED   COMMENT 'PC가격',
+  MPRIC         INT UNSIGNED   COMMENT '모바일가격',
+  PNAME         VARCHAR(100)   COMMENT '상품명([상품구분명]+[브랜드명]+상품명+상품코드 형식)',
+  PGURL         VARCHAR(200)   COMMENT 'PC상품상세URL',
+  IGURL         VARCHAR(200)   COMMENT '이미지링크',
+  UPIMG         VARCHAR(1)     DEFAULT 'N' COMMENT '전체EP생성 이후 이미지변경되었을때전송(Y/N)',
+  CATE1         VARCHAR(50)    COMMENT '카테고리명1',
+  CAID1         VARCHAR(10)    COMMENT '카테고리ID1',
+  CATE2         VARCHAR(50)    COMMENT '카테고리명2',
+  CAID2         VARCHAR(10)    COMMENT '카테고리ID2',
+  CATE3         VARCHAR(50)    COMMENT '카테고리명3',
+  CAID3         VARCHAR(10)    COMMENT '카테고리ID3',
+  CATE4         VARCHAR(50)    COMMENT '카테고리명4',
+  CAID4         VARCHAR(10)    COMMENT '카테고리ID4',
+  MODEL         VARCHAR(20)    COMMENT '모델(품번)',
+  BRAND         VARCHAR(50)    COMMENT '브랜드명',
+  MAKER         VARCHAR(50)    COMMENT '제조사',
+  COUPON        VARCHAR(100)   COMMENT '할인쿠폰정보(일반쿠폰^정율제휴쿠폰^정액제휴쿠폰 형식. 일반쿠폰은 최대할인기준 1개)',
+  MCOUPON       VARCHAR(100)   COMMENT '할인쿠폰정보(일반쿠폰^정율제휴쿠폰^정액제휴쿠폰 형식. 일반쿠폰은 최대할인기준 1개)',
+  PCARD         VARCHAR(100)   COMMENT '무이자행사(카드명^개월수-개월수|카드명^개월수-개월수... 형식)',
+  POINT         VARCHAR(10)    COMMENT '포인트율',
+  DELIV         INT UNSIGNED   COMMENT '배송료',
+  DELIVTERM     INT UNSIGNED   COMMENT '배송기간',
+  RATING        VARCHAR(20)    COMMENT '상품평점수(4.5/5 형식)',
+  REVCT         INT UNSIGNED   COMMENT '상품평수',
+  EVENT         VARCHAR(100)   COMMENT '상품타이틀명(세일링문구)',
+  CARDDN        VARCHAR(100)   COMMENT '카드행사(카드즉시할인 등록된 기준으로 적용. 카드명^카드적용가|카드명^카드적용가... 형식)',
+  CARDP         INT UNSIGNED   COMMENT '카드적용가(최대1개)',
+  ADULT         VARCHAR(1)     COMMENT '성인상품여부',
+  PUBDATE       VARCHAR(8)     COMMENT '상품등록일',
+  GOODS_STAT    VARCHAR(20)    COMMENT '상품상태(공통코드G008)',
+  SELF_MALL_YN  CHAR(1)        COMMENT '자사몰노출여부',
+  SELL_STDT     DATETIME       COMMENT '판매시작일시',
+  SELL_EDDT     DATETIME       COMMENT '판매종료일시',
+  UPD_GB        VARCHAR(1)     COMMENT '업데이트구분(I:신규상품, U:기존상품중업데이트된상품 또는 품절되었다가다시서비스되는상품, D:품절상품)',
+  UTIME         VARCHAR(20)    COMMENT '업데이트시간(YYYYMMDDHHMMSS 형식)'
+)
+COMMENT 'EP다음. EP다음 생성에 의한 발생';
 
--- 상품 이미지 정보 생성 (~30초. 1,645,082건)
-DROP TABLE TMP_EP_GOODS_IMG;
-CREATE TABLE TMP_EP_GOODS_IMG AS
-SELECT G.GOODS_CD
-     , MIN(CONCAT('https://image.istyle24.com/Upload/ProductImage/',GI.SYS_IMG_NM)) AS IMAGE_LINK
-FROM   TB_GOODS G
-     , TB_GOODS_IMG GI
-WHERE  G.GOODS_CD = GI.GOODS_CD
-AND    IF(G.SELF_GOODS_YN = 'N','XX',G.MAIN_COLOR_CD) = GI.COLOR_CD
-AND    GI.DEFAULT_IMG_YN = 'Y'
--- AND    G.GOODS_CD = 'A91M-SH121A'
-GROUP  BY G.GOODS_CD
-;
-SELECT COUNT(*) FROM TMP_EP_GOODS_IMG;
-
--- 상품 추가이미지 정보 생성 (~16초. 674,937건)
-DROP TABLE TMP_EP_GOODS_ADD_IMG;
-CREATE TABLE TMP_EP_GOODS_ADD_IMG AS
-SELECT GOODS_CD
-     , GROUP_CONCAT(CONCAT('https://image.istyle24.com/Upload/ProductImage/',SYS_IMG_NM) SEPARATOR '|') AS ADD_IMAGE_LINK
-FROM   (SELECT DISTINCT
-               GOODS_CD
-             , SYS_IMG_NM
-        FROM   TB_GOODS_IMG
-        WHERE  DEFAULT_IMG_YN = 'N'
-        GROUP  BY GOODS_CD, SYS_IMG_NM
-        HAVING COUNT(*) <= 4
-       ) Z
-GROUP  BY GOODS_CD
-;
-SELECT COUNT(*) FROM TMP_EP_GOODS_ADD_IMG;
-
--- 카드이벤트 정보 생성 (~1초, 541건)
-DROP TABLE TMP_EP_CARD_EVENT;
--- CREATE TABLE TMP_EP_CARD_EVENT AS
--- SELECT CPC.MIN_PAY_AMT
---      , GROUP_CONCAT(DISTINCT
---                     CONCAT(FN_GET_CODE_NM('G941',CPT.PRMT_TARGET_CD),'^',
---                            CPC.MIN_NO_ITRT,'~',CPC.MAX_NO_ITRT)
---                     SEPARATOR '|') AS CARD_EVENT
--- FROM   TB_CARD_PROMOTION CP
---      , TB_CARD_PROMOTION_CONDITION CPC
---      , TB_CARD_PROMOTION_TARGET CPT
--- WHERE  CP.CARD_PRMT_SQ = CPC.CARD_PRMT_SQ
--- AND    CPC.CARD_PRMT_CDT_SQ = CPT.CARD_PRMT_CDT_SQ
--- AND    CP.PRMT_GB = 'B' /*무이자할부*/
--- AND    CP.PRMT_STD <= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
--- AND    CP.PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
--- AND    CP.DISP_YN = 'Y'
--- GROUP  BY CPC.MIN_PAY_AMT
--- ;
-CREATE TABLE TMP_EP_CARD_EVENT AS
-SELECT G.GOODS_CD
-     , GROUP_CONCAT(DISTINCT
-                    CONCAT(FN_GET_CODE_NM('G941',CPT.PRMT_TARGET_CD),'^',
-                           (G.CURR_PRICE
-                            -
-                            CASE WHEN CPC.DC_WAY = 'G240_10' /*정액할인*/ THEN CPC.DC_VAL
-                                 ELSE /*정율할인*/ CAST(G.CURR_PRICE * CPC.DC_VAL / 100 AS SIGNED INTEGER)
-                            END))
-                    SEPARATOR '|') AS CARD_EVENT
-FROM   TB_CARD_PROMOTION CP
-     , TB_CARD_PROMOTION_CONDITION CPC
-     , TB_CARD_PROMOTION_TARGET CPT
-     , (
-        SELECT G.GOODS_CD
-             , IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS CURR_PRICE
-        FROM   TB_GOODS G
-             , TB_GOODS_BENEFIT_PRICE GBP
-        WHERE  G.GOODS_CD = GBP.GOODS_CD
-       ) G
-WHERE  CP.CARD_PRMT_SQ = CPC.CARD_PRMT_SQ
-AND    CPC.CARD_PRMT_CDT_SQ = CPT.CARD_PRMT_CDT_SQ
-AND    CP.PRMT_GB = 'A' /*카드할인*/
-AND    CP.DC_GB = '1' /*즉시할인*/
-AND    CP.PRMT_STD <= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.DISP_YN = 'Y'
-AND    CPC.MIN_PAY_AMT < G.CURR_PRICE
-GROUP  BY G.GOODS_CD
-;
-SELECT COUNT(*) FROM TMP_EP_CARD_EVENT;
+CREATE UNIQUE INDEX IX_EP_DAUM_01
+  ON TB_EP_DAUM (
+    GB, MAPID
+  );
 
--- 쿠폰 정보 생성 (~1초. 4건)
-DROP TABLE TMP_EP_COUPON;
-CREATE TABLE TMP_EP_COUPON AS
-SELECT GOODS_CD
-     , CONCAT(IFNULL(NORMAL_CPN,''),'^',IFNULL(AFLINK_CPN,'')) AS COUPON
-FROM   (
-        SELECT CR.REF_VAL            AS GOODS_CD
-             , CASE WHEN IFNULL((SELECT COUNT(*)
-                                 FROM   TB_COUPON_AF_CHANNEL
-                                 WHERE  CPN_ID = C.CPN_ID
-                                ),0) = 0 THEN
-                        CONCAT(C.DC_PVAL,CASE WHEN C.DC_WAY = 'G240_10' THEN '원' ELSE '%' END)
-                    ELSE
-                        NULL
-               END                   AS NORMAL_CPN /*일반쿠폰*/
-             , CASE WHEN IFNULL((SELECT COUNT(*)
-                                 FROM   TB_COUPON_AF_CHANNEL
-                                 WHERE  CPN_ID = C.CPN_ID
-                                ),0) > 0 AND C.DC_WAY = 'G240_11' THEN
-                        C.DC_PVAL
-                    ELSE
-                        NULL
-               END                   AS AFLINK_CPN /*제휴쿠폰*/
-             , CASE WHEN IFNULL((SELECT COUNT(*)
-                                 FROM   TB_COUPON_AF_CHANNEL
-                                 WHERE  CPN_ID = C.CPN_ID
-                                ),0) = 0 THEN
-                        CASE WHEN C.DC_WAY = 'G240_10' THEN C.DC_PVAL
-                             ELSE IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY * C.DC_PVAL / 100
-                        END
-                    ELSE
-                        0
-               END                   AS NCPN_DC_AMT /*일반쿠폰할인금액*/
-             , CASE WHEN IFNULL((SELECT COUNT(*)
-                                 FROM   TB_COUPON_AF_CHANNEL
-                                 WHERE  CPN_ID = C.CPN_ID
-                                ),0) > 0 AND C.DC_WAY = 'G240_11' THEN
-                        IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY * C.DC_PVAL / 100
-                    ELSE
-                        0
-               END                   AS ACPN_DC_AMT /*제휴쿠폰할인금액*/
-             , RANK() OVER(PARTITION BY CR.REF_VAL
-                           ORDER BY (CASE WHEN IFNULL((SELECT COUNT(*)
-                                                       FROM   TB_COUPON_AF_CHANNEL
-                                                       WHERE  CPN_ID = C.CPN_ID
-                                                      ),0) = 0 THEN
-                                              CASE WHEN C.DC_WAY = 'G240_10' THEN C.DC_PVAL
-                                                   ELSE IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY * C.DC_PVAL / 100
-                                              END
-                                          ELSE
-                                              0
-                                     END) DESC,
-                                    (CASE WHEN IFNULL((SELECT COUNT(*)
-                                                       FROM   TB_COUPON_AF_CHANNEL
-                                                       WHERE  CPN_ID = C.CPN_ID
-                                                      ),0) > 0 AND C.DC_WAY = 'G240_11' THEN
-                                              IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY * C.DC_PVAL / 100
-                                          ELSE
-                                              0
-                                     END) DESC
-                          )          AS RK
-        FROM   TB_COUPON C
-        INNER JOIN TB_COUPON_REFVAL CR ON C.CPN_ID = CR.CPN_ID
-        INNER JOIN TB_GOODS G ON CR.REF_VAL = G.GOODS_CD
-        LEFT OUTER JOIN TB_GOODS_BENEFIT_PRICE GBP ON G.GOODS_CD = GBP.GOODS_CD
-        WHERE  C.SITE_CD = 'G000_10'
-        AND    C.CPN_STAT = 'G232_11' /*진행쿠폰*/
-        AND    C.CPN_TYPE IN ('G230_11','G230_20') /*상품쿠폰,주문서쿠폰*/
-        AND    (
-                (C.PD_GB = 'D' AND NOW() < DATE_ADD(NOW(), INTERVAL C.AVAIL_DAYS DAY))
-                OR
-                (C.PD_GB = 'P' AND NOW() BETWEEN C.AVAIL_STDT AND C.AVAIL_EDDT)
-               )
-        AND    C.APPLY_SCOPE = 'I' /*개별쿠폰*/
-        AND    CR.CPN_TYPE IN ('G230_11','G230_20') /*상품쿠폰,주문서쿠폰*/
-        AND    CR.CPN_TARGET = 'G260_10' /*상품쿠폰*/
-        AND    CR.DEL_YN = 'N'
-        AND    NOT EXISTS (SELECT 1
-                           FROM   TB_COUPON_REFVAL
-                           WHERE  CPN_ID = CR.CPN_ID
-                           AND    CPN_TARGET = 'G260_14' /*제외상품*/
-                           AND    REF_VAL = CR.REF_VAL
-                           AND    DEL_YN = 'N'
-                          )
-       ) Z
-WHERE  1 = 1
--- AND    GOODS_CD = 'M211BLB35P'
-AND    RK = 1
-;
-SELECT COUNT(*) FROM TMP_EP_COUPON;
+-- EP다음 정보 삭제
+DELETE FROM TB_EP_DAUM WHERE GB = 'PREV';
 
--- 무이자이벤트 정보 생성 (~1초. 541건)
-DROP TABLE TMP_EP_INTEREST_FREE_EVENT;
-CREATE TABLE TMP_EP_INTEREST_FREE_EVENT AS
-SELECT G.GOODS_CD
-     , GROUP_CONCAT(DISTINCT
-                    CONCAT(FN_GET_CODE_NM('G941',CPT.PRMT_TARGET_CD),'^',
-                           CPC.MIN_NO_ITRT,'~',CPC.MAX_NO_ITRT)
-                    SEPARATOR '|') AS INTEREST_FREE_EVENT /*무이자이벤트. 판매가 > 무이자할부 최소구매금액 기준 초과 시 노출. 카드명^개월수~개월수|카드명^개월수~개월수... 형식으로 노출*/
-FROM   TB_CARD_PROMOTION CP
-     , TB_CARD_PROMOTION_CONDITION CPC
-     , TB_CARD_PROMOTION_TARGET CPT
-     , (
-        SELECT G.GOODS_CD
-             , IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS CURR_PRICE
-        FROM   TB_GOODS G
-             , TB_GOODS_BENEFIT_PRICE GBP
-        WHERE  G.GOODS_CD = GBP.GOODS_CD
-       ) G
-WHERE  CP.CARD_PRMT_SQ = CPC.CARD_PRMT_SQ
-AND    CPC.CARD_PRMT_CDT_SQ = CPT.CARD_PRMT_CDT_SQ
-AND    CP.PRMT_GB = 'B' /*무이자할부*/
-AND    CP.PRMT_STD <= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.PRMT_EDD >= DATE_FORMAT(CURRENT_DATE(),'%Y%m%d')
-AND    CP.DISP_YN = 'Y'
-AND    CPC.MIN_PAY_AMT < G.CURR_PRICE
-GROUP  BY G.GOODS_CD
+-- EP다음 이전 데이터로 백업
+INSERT INTO TB_EP_DAUM (
+       GB
+     , MAPID
+     , LPRICE
+     , PRICE
+     , MPRIC
+     , PNAME
+     , PGURL
+     , IGURL
+     , CATE1
+     , CAID1
+     , CATE2
+     , CAID2
+     , CATE3
+     , CAID3
+     , CATE4
+     , CAID4
+     , MODEL
+     , BRAND
+     , MAKER
+     , COUPON
+     , MCOUPON
+     , PCARD
+     , POINT
+     , DELIV
+     , DELIVTERM
+     , RATING
+     , REVCT
+     , EVENT
+     , CARDDN
+     , CARDP
+     , ADULT
+     , PUBDATE
+     , GOODS_STAT
+     , SELF_MALL_YN
+     , SELL_STDT
+     , SELL_EDDT
+)
+SELECT 'PREV' AS GB
+     , MAPID
+     , LPRICE
+     , PRICE
+     , MPRIC
+     , PNAME
+     , PGURL
+     , IGURL
+     , CATE1
+     , CAID1
+     , CATE2
+     , CAID2
+     , CATE3
+     , CAID3
+     , CATE4
+     , CAID4
+     , MODEL
+     , BRAND
+     , MAKER
+     , COUPON
+     , MCOUPON
+     , PCARD
+     , POINT
+     , DELIV
+     , DELIVTERM
+     , RATING
+     , REVCT
+     , EVENT
+     , CARDDN
+     , CARDP
+     , ADULT
+     , PUBDATE
+     , GOODS_STAT
+     , SELF_MALL_YN
+     , SELL_STDT
+     , SELL_EDDT
+FROM   TB_EP_DAUM
+WHERE  GB = 'LAST'
 ;
-SELECT COUNT(*) FROM TMP_EP_INTEREST_FREE_EVENT;
 
--- EP다음 생성 (~1분 40초. 1,025,330건)
-DROP TABLE TMP_EP_DAUM;
-CREATE TABLE TMP_EP_DAUM AS
-SELECT G.GOODS_CD                                             AS ID
-     , CONCAT('[',CASE WHEN B.DISP_NM_LANG = 'EN' THEN B.BRAND_ENM ELSE B.BRAND_KNM END,'] ',
-              G.GOODS_NM,
-              IFNULL(G.GOODS_NUM,''))                         AS TITLE
-     , IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS PRICE_PC     /*즉시할인이적용된가격*/
-     , IFNULL(GBP.MO_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS PRICE_MOBILE /*즉시할인이적용된가격*/
-     , G.LIST_PRICE                                           AS NORMAL_PRICE /*정상가*/
-     , G.GOODS_STAT
-     , CONCAT('https://www.style24.com/goods/detail/form?goodsCd=',
-              G.GOODS_CD)                                     AS LINK
-     , NULL                                                   AS MOBILE_LINK  /*PC URL과 다를 경우. 동일함으로 NULL로 처리*/
-     , GI.IMAGE_LINK
-     , GAI.ADD_IMAGE_LINK /*이미지4개까지(|로 구분)*/
-     , SUBSTRING_INDEX(I.ITEMKIND_NM,'>',1)                   AS CATEGORY_NAME1
+-- EP다음 현재 데이터 생성 (2분 6초)
+INSERT INTO TB_EP_DAUM (
+       GB
+     , MAPID
+     , LPRICE
+     , PRICE
+     , MPRIC
+     , PNAME
+     , PGURL
+     , IGURL
+     , CATE1
+     , CAID1
+     , CATE2
+     , CAID2
+     , CATE3
+     , CAID3
+     , CATE4
+     , CAID4
+     , MODEL
+     , BRAND
+     , MAKER
+     , COUPON
+     , MCOUPON
+     , PCARD
+     , POINT
+     , DELIV
+     , DELIVTERM
+     , RATING
+     , REVCT
+     , EVENT
+     , CARDDN
+     , CARDP
+     , ADULT
+     , PUBDATE
+     , GOODS_STAT
+     , SELF_MALL_YN
+     , SELL_STDT
+     , SELL_EDDT
+)
+SELECT 'CURR'                                                                                              AS GB         /*구분(PREV:이전, CURR:현재)*/
+     , G.GOODS_CD                                                                                          AS MAPID      /*상품ID*/
+     , G.LIST_PRICE                                                                                        AS LPRICE     /*정상가*/
+     , IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY                                              AS PRICE      /*즉시할인이적용된가격*/
+     , IFNULL(GBP.MO_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY                                              AS MPRIC      /*즉시할인이적용된가격*/
+     , SUBSTRING(CONCAT(CASE WHEN CC1.CD IN ('G073_12','G073_13') THEN CONCAT('[',CC1.CD_NM,']')
+                             WHEN G.FOREIGN_BUY_YN = 'Y' THEN '[해외]'
+                             ELSE ''
+                        END,
+                       '[',CASE WHEN B.DISP_NM_LANG = 'EN' THEN B.BRAND_ENM ELSE B.BRAND_KNM END,'] ',
+                       G.GOODS_NM,
+                       IFNULL(G.GOODS_NUM,'')),1,100)                                                      AS PNAME      /*상품명*/
+     , CONCAT('https://www.style24.com/goods/detail/form?goodsCd=',G.GOODS_CD)                             AS PGURL      /*PC상세URL*/
+     , GI.IMAGE_LINK                                                                                       AS IGURL      /*이미지URL*/
+     , SUBSTRING_INDEX(I.ITEMKIND_NM,'>',1)                                                                AS CATE1      /*카테고리명1*/
+     , SUBSTRING(G.ITEMKIND_CD,1,2)                                                                        AS CAID1      /*카테고리ID1*/
      , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',1),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1) THEN
                 NULL
             ELSE
                 SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1)
-       END                                                    AS CATEGORY_NAME2
+       END                                                                                                 AS CATE2      /*카테고리명2*/
+     , SUBSTRING(G.ITEMKIND_CD,3,2)                                                                        AS CAID2      /*카테고리ID2*/
      , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1) THEN
                 NULL
             ELSE
                 SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1)
-       END                                                    AS CATEGORY_NAME3
+       END                                                                                                 AS CATE3      /*카테고리명3*/
+     , SUBSTRING(G.ITEMKIND_CD,5,2)                                                                        AS CAID3      /*카테고리ID3*/
      , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',4),'>',-1) THEN
                 NULL
             ELSE
                 SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',4),'>',-1)
-       END                                                    AS CATEGORY_NAME4
---      , NULL                                                   AS NAVER_PRODUCT_ID
---     , FN_GET_CODE_NM('G073',G.GOODS_GB)                      AS CONDITION1
-     , CC1.CD_NM                                              AS CONDITION1
-     , G.FOREIGN_BUY_YN                                       AS IMPORT_FLAG     /*해외구매대행여부*/
-     , G.PARALLEL_IMPORT_YN                                   AS PARALLEL_IMPORT /*병행수입여부*/
-     , G.ORDER_MADE_YN                                        AS ORDER_MADE      /*주문제작상품여부*/
-     , IF(GRS.GOODS_CD IS NULL,NULL,'예약판매')                  AS PRODUCT_FLAG    /*예약판매*/
-     , G.ADULT_YN                                             AS ADULT           /*성인여부*/
-     , G.GOODS_NUM                                            AS MANUFACTURE_DEFINE_NUMBER /*제조번호*/
-     , IF(B.DISP_NM_LANG = 'EN',B.BRAND_ENM,B.BRAND_KNM)      AS BRAND           /*브랜드명*/
---      , (SELECT NI_CONTENT
---         FROM   TB_GOODS_NOTI_INFO
---         WHERE  GOODS_CD = G.GOODS_CD
---         AND    NI_ITEM_CD = 'G005_005'
---         LIMIT 1)                                              AS MAKER            /*제조사*/
---      , IFNULL(FN_GET_CODE_NM('G076',G.ORIGIN_CD),G.ORIGIN_CD) AS ORIGIN          /*원산지*/
-     , CC2.CD_NM                                              AS ORIGIN             /*원산지*/
-     , CE.CARD_EVENT      /*카드행사. 카드즉시할인 등록된 기준으로 적용. 카드명^카드적용가 형식*/
-     , G.GOODS_TNM                                            AS EVENT_WORDS     /*상품셀링문구*/
-     , TEC.COUPON
-     , IFE.INTEREST_FREE_EVENT /*무이자이벤트. 판매가 > 무이자할부 최소구매금액 기준 초과 시 노출. 카드명^개월수~개월수|카드명^개월수~개월수... 형식으로 노출*/
-     , CONCAT('스타일포인트','^',
-              CAST(IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY * G.PNT_PRATE AS SIGNED INTEGER)
-             )                                                AS PNT             /*포인트. 스타일포인트^포인트금액 형식으로 표기*/
-     , CONCAT(IFNULL(G.GOODS_SNM,''),
-              CASE WHEN LENGTH(IFNULL(G.GOODS_SNM1,'')) = 0 THEN
-                       ''
-                   ELSE
-                       '|'
-              END,
-              IFNULL(G.GOODS_SNM1,'')
-             )                                                AS SEARCH_TAG
-     , CASE WHEN G.MIN_ORD_QTY > 0 THEN
-                G.MIN_ORD_QTY
-            ELSE
-                ''
-       END                                                    AS MINIMUM_PURCHASE_QUANTITY
-     , IFNULL(GS.REVIEW_REG_CNT,0)                            AS REVIEW_REG_CNT
+       END                                                                                                 AS CATE4      /*카테고리명4*/
+     , SUBSTRING(G.ITEMKIND_CD,7,2)                                                                        AS CAID4      /*카테고리ID4*/
+     , G.GOODS_NUM                                                                                         AS MODEL      /*모델(품번)*/
+     , IF(B.DISP_NM_LANG = 'EN',B.BRAND_ENM,B.BRAND_KNM)                                                   AS BRAND      /*브랜드명*/
+     , SUBSTRING(GNI.NI_CONTENT,1,50)                                                                      AS MAKER      /*제조사*/
+     , TEC.COUPON                                                                                                        /*쿠폰*/
+     , TEC.COUPON                                                                                          AS MCOUPON    /*모바일쿠폰*/
+     , IFE.INTEREST_FREE_EVENT                                                                             AS PCARD      /*무이자행사*/
+     , CONCAT('',G.PNT_PRATE)                                                                              AS POINT      /*포인트율*/
      , IFNULL(CASE WHEN DFP.DELV_FEE_CRITE = 'G078_20' /*무료*/ THEN
                        0
                    ELSE /*조건부무료 또는 유료*/
@@ -281,63 +220,366 @@ SELECT G.GOODS_CD                                             AS ID
                             ELSE
                                 DFP.DELV_FEE
                        END
-              END,0)                                          AS SHIPPING
-     , CASE WHEN SUBSTRING(I.ITEMKIND_CD,1,2) = '07' THEN '유아'
-            WHEN SUBSTRING(I.ITEMKIND_CD,1,2) IN ('08','09','10') THEN '아동'
-            WHEN SUBSTRING(I.ITEMKIND_CD,1,2) IN ('11','12','13') THEN '청소년'
-            ELSE '성인'
-       END                                                    AS AGE_GROUP
-     , CASE WHEN G.SEX_GB = 'G007_F' THEN '여성'
-            WHEN G.SEX_GB = 'G007_M' THEN '남성'
-            ELSE '남여공용'
-       END                                                    AS GENDER
-     , 'I'                                                    AS CLASS /*전체색인:I, 부분색인:전체색인 데이터랑 비교해서 없으면 I, 있는데 변경되었으면 U, 품절: D)*/
-     , DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S')                 AS UPDATE_TIME
+              END,0)                                                                                       AS DELIV      /*배송료*/
+     , CASE WHEN G.SELF_GOODS_YN = 'Y' THEN 1 ELSE 3 END                                                   AS DELIVTERM  /*배송기간(자사상품:1일,입점상품:3일)*/
+     , CASE WHEN GS.SCORE IS NULL OR GS.SCORE = 0.0 THEN ''
+            ELSE CONCAT(IFNULL(GS.SCORE,0),'/',5)
+       END                                                                                                 AS RATING     /*상품평평점*/
+     , IFNULL(GS.REVIEW_REG_CNT,0)                                                                         AS REVCT      /*상품평수*/
+     , G.GOODS_TNM                                                                                         AS EVENT      /*상품셀링문구*/
+     , SUBSTRING_INDEX(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),'^',1)                                         AS CARDDN     /*카드행사*/
+     , SUBSTRING(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),INSTR(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),'^') + 1) AS CARDP      /*카드할인가*/
+     , G.ADULT_YN                                                                                          AS ADULT      /*성인여부*/
+     , DATE_FORMAT(G.REG_DT,'%Y%m%d')                                                                      AS PUBDATE    /*등록일*/
+     , G.GOODS_STAT
+     , G.SELF_MALL_YN
+     , G.SELL_STDT
+     , G.SELL_EDDT
 FROM   TB_GOODS G
 INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
 INNER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
 INNER JOIN TB_DELV_FEE_POLICY DFP ON G.DELV_FEE_CD = DFP.DELV_FEE_CD
 LEFT OUTER JOIN TB_GOODS_BENEFIT_PRICE GBP ON G.GOODS_CD = GBP.GOODS_CD
 LEFT OUTER JOIN TB_GOODS_SUMMARY GS ON G.GOODS_CD = GS.GOODS_CD
-LEFT OUTER JOIN TMP_EP_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
-LEFT OUTER JOIN TMP_EP_GOODS_ADD_IMG GAI ON G.GOODS_CD = GAI.GOODS_CD
+LEFT OUTER JOIN TB_EP_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+LEFT OUTER JOIN TB_EP_GOODS_ADD_IMG GAI ON G.GOODS_CD = GAI.GOODS_CD
+LEFT OUTER JOIN (
+                 SELECT ITEMKIND_CD
+                      , MIN(EP_CATE_CD) AS EP_CATE_CD
+                 FROM   TB_EP_CATE
+                 WHERE  EP_GB = '10' /*네이버*/
+                 AND    USE_YN = 'Y'
+                 GROUP  BY ITEMKIND_CD
+                ) EC ON G.ITEMKIND_CD = EC.ITEMKIND_CD
 LEFT OUTER JOIN TB_GOODS_RES_SELL GRS ON G.GOODS_CD = GRS.GOODS_CD
                                      AND GRS.DELV_RES_DT >= NOW()
                                      AND GRS.USE_YN = 'Y'
-LEFT OUTER JOIN TMP_EP_CARD_EVENT CE ON G.GOODS_CD = CE.GOODS_CD
-LEFT OUTER JOIN TMP_EP_COUPON TEC ON G.GOODS_CD = TEC.GOODS_CD
-LEFT OUTER JOIN TMP_EP_INTEREST_FREE_EVENT IFE ON G.GOODS_CD = IFE.GOODS_CD
+LEFT OUTER JOIN TB_EP_CARD_EVENT CE ON G.GOODS_CD = CE.GOODS_CD
+LEFT OUTER JOIN TB_EP_COUPON TEC ON G.GOODS_CD = TEC.GOODS_CD
+LEFT OUTER JOIN TB_EP_INTEREST_FREE_EVENT IFE ON G.GOODS_CD = IFE.GOODS_CD
+LEFT OUTER JOIN TB_GOODS_NOTI_INFO GNI ON G.GOODS_CD = GNI.GOODS_CD
+                                      AND GNI.NI_ITEM_CD = 'G005_005' /*제조사*/
 LEFT OUTER JOIN TB_COMMON_CODE CC1 ON G.GOODS_GB = CC1.CD
                                  AND CC1.CD_GB = 'G073'
 LEFT OUTER JOIN TB_COMMON_CODE CC2 ON G.ORIGIN_CD = CC2.CD
                                   AND CC2.CD_GB = 'G076'
-WHERE  G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+WHERE  1 = 1
+AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
 AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
 AND    G.SELL_STDT <= NOW() /*유효한 판매기간*/
 AND    G.SELL_EDDT >= NOW() /*유효한 판매기간*/
 AND    G.ADULT_YN = 'N' /*성인상품아닌넘만*/
+-- AND    G.UPD_DT >= DATE_ADD(NOW(), INTERVAL -7 HOUR) -- 요약EP
 ;
-SELECT COUNT(*) FROM TMP_EP_DAUM;
 
--- SELECT ID, COUNT(*) AS CNT
--- FROM   TMP_EP_NAVER Z
--- GROUP  BY ID
--- HAVING COUNT(*) > 1
--- ;
--- 
--- SELECT *
--- FROM   TMP_EP_NAVER
--- WHERE  ID IN (
--- 'A91M-SH121A',
--- 'F99U-TS971B',
--- 'F75A-MM92ZA',
--- 'B195Z5210P',
--- 'F75U-TS94ZA',
--- 'F71M-CP02ZA',
--- 'O174TS001P',
--- 'F75M-DP942B',
--- 'F71U-TS18ZA',
--- 'F65M-DP909A'
--- )
--- ORDER  BY ID
--- ;
+-- 최종 EP다음 데이터 생성 (45초)
+INSERT INTO TB_EP_DAUM (
+       GB
+     , MAPID
+     , LPRICE
+     , PRICE
+     , MPRIC
+     , PNAME
+     , PGURL
+     , IGURL
+     , UPIMG
+     , CATE1
+     , CAID1
+     , CATE2
+     , CAID2
+     , CATE3
+     , CAID3
+     , CATE4
+     , CAID4
+     , MODEL
+     , BRAND
+     , MAKER
+     , COUPON
+     , MCOUPON
+     , PCARD
+     , POINT
+     , DELIV
+     , DELIVTERM
+     , RATING
+     , REVCT
+     , EVENT
+     , CARDDN
+     , CARDP
+     , ADULT
+     , PUBDATE
+     , GOODS_STAT
+     , SELF_MALL_YN
+     , SELL_STDT
+     , SELL_EDDT
+     , UPD_GB
+     , UTIME
+)
+SELECT 'LAST'                                 AS GB
+     , MAPID
+     , LPRICE
+     , PRICE
+     , MPRIC
+     , PNAME
+     , PGURL
+     , IGURL
+     , UPIMG
+     , CATE1
+     , CAID1
+     , CATE2
+     , CAID2
+     , CATE3
+     , CAID3
+     , CATE4
+     , CAID4
+     , MODEL
+     , BRAND
+     , MAKER
+     , COUPON
+     , MCOUPON
+     , PCARD
+     , POINT
+     , DELIV
+     , DELIVTERM
+     , RATING
+     , REVCT
+     , EVENT
+     , CARDDN
+     , CARDP
+     , ADULT
+     , PUBDATE
+     , GOODS_STAT
+     , SELF_MALL_YN
+     , SELL_STDT
+     , SELL_EDDT
+     , UPD_GB
+     , DATE_FORMAT(NOW(),'%Y%m%d%H%i%S') AS UTIME
+FROM   (
+        /*신규 목록*/
+        SELECT MAPID
+             , LPRICE
+             , PRICE
+             , MPRIC
+             , PNAME
+             , PGURL
+             , IGURL
+             , 'N'           AS UPIMG
+             , CATE1
+             , CAID1
+             , CATE2
+             , CAID2
+             , CATE3
+             , CAID3
+             , CATE4
+             , CAID4
+             , MODEL
+             , BRAND
+             , MAKER
+             , COUPON
+             , MCOUPON
+             , PCARD
+             , POINT
+             , DELIV
+             , DELIVTERM
+             , RATING
+             , REVCT
+             , EVENT
+             , CARDDN
+             , CARDP
+             , ADULT
+             , PUBDATE
+             , GOODS_STAT
+             , SELF_MALL_YN
+             , SELL_STDT
+             , SELL_EDDT
+             , 'I'           AS UPD_GB /*변경구분*/
+        FROM   TB_EP_DAUM X
+        WHERE  GB = 'CURR' /*현재데이터*/
+        -- 요약EP
+--        AND    NOT EXISTS (SELECT 1
+--                           FROM   TB_EP_DAUM
+--                           WHERE  GB = 'PREV' /*이전백업데이터*/
+--                           AND    ID = X.ID
+--        UNION ALL
+--        /*변경 목록*/
+--        SELECT X.MAPID
+--             , X.LPRICE
+--             , X.PRICE
+--             , X.MPRIC
+--             , X.PNAME
+--             , X.PGURL
+--             , X.IGURL
+--             , CASE WHEN X.IGURL != Y.IGURL THEN 'Y' ELSE 'N' END AS UPIMG
+--             , X.CATE1
+--             , X.CAID1
+--             , X.CATE2
+--             , X.CAID2
+--             , X.CATE3
+--             , X.CAID3
+--             , X.CATE4
+--             , X.CAID4
+--             , X.MODEL
+--             , X.BRAND
+--             , X.MAKER
+--             , X.COUPON
+--             , X.MCOUPON
+--             , X.PCARD
+--             , X.POINT
+--             , X.DELIV
+--             , X.DELIVTERM
+--             , X.RATING
+--             , X.REVCT
+--             , X.EVENT
+--             , X.CARDDN
+--             , X.CARDP
+--             , X.ADULT
+--             , X.PUBDATE
+--             , X.GOODS_STAT
+--             , X.SELF_MALL_YN
+--             , X.SELL_STDT
+--             , X.SELL_EDDT
+--             , 'U'                         AS UPD_GB /*변경구분*/
+--        FROM   TB_EP_DAUM X
+--             , TB_EP_DAUM Y
+--        WHERE  X.ID = Y.ID
+--        AND    X.GB = 'CURR' /*현재데이터*/
+--        AND    Y.GB = 'PREV' /*이전백업데이터*/
+--        AND    (
+--                X.MAPID != Y.MAPID OR
+--                X.LPRICE != Y.LPRICE OR
+--                X.PRICE != Y.PRICE OR
+--                X.MPRIC != Y.MPRIC OR
+--                X.PNAME != Y.PNAME OR
+--                X.PGURL != Y.PGURL OR
+--                X.IGURL != Y.IGURL OR
+--                X.CATE1 != Y.CATE1 OR
+--                X.CAID1 != Y.CAID1 OR
+--                X.CATE2 != Y.CATE2 OR
+--                X.CAID2 != Y.CAID2 OR
+--                X.CATE3 != Y.CATE3 OR
+--                X.CAID3 != Y.CAID3 OR
+--                X.CATE4 != Y.CATE4 OR
+--                X.CAID4 != Y.CAID4 OR
+--                X.MODEL != Y.MODEL OR
+--                X.BRAND != Y.BRAND OR
+--                X.MAKER != Y.MAKER OR
+--                X.COUPON != Y.COUPON OR
+--                X.MCOUPON != Y.MCOUPON OR
+--                X.PCARD != Y.PCARD OR
+--                X.POINT != Y.POINT OR
+--                X.DELIV != Y.DELIV OR
+--                X.DELIVTERM != Y.DELIVTERM OR
+--                X.RATING != Y.RATING OR
+--                X.REVCT != Y.REVCT OR
+--                X.EVENT != Y.EVENT OR
+--                X.CARDDN != Y.CARDDN OR
+--                X.CARDP != Y.CARDP OR
+--                X.ADULT != Y.ADULT OR
+--                X.PUBDATE != Y.PUBDATE
+--               )
+--        UNION ALL
+--        /*삭제된 목록*/
+--        SELECT X.MAPID
+--             , X.LPRICE
+--             , X.PRICE
+--             , X.MPRIC
+--             , X.PNAME
+--             , X.PGURL
+--             , X.IGURL
+--             , CASE WHEN X.IGURL != Y.IGURL THEN 'Y' ELSE 'N' END AS UPIMG
+--             , X.CATE1
+--             , X.CAID1
+--             , X.CATE2
+--             , X.CAID2
+--             , X.CATE3
+--             , X.CAID3
+--             , X.CATE4
+--             , X.CAID4
+--             , X.MODEL
+--             , X.BRAND
+--             , X.MAKER
+--             , X.COUPON
+--             , X.MCOUPON
+--             , X.PCARD
+--             , X.POINT
+--             , X.DELIV
+--             , X.DELIVTERM
+--             , X.RATING
+--             , X.REVCT
+--             , X.EVENT
+--             , X.CARDDN
+--             , X.CARDP
+--             , X.ADULT
+--             , X.PUBDATE
+--             , X.GOODS_STAT
+--             , X.SELF_MALL_YN
+--             , X.SELL_STDT
+--             , X.SELL_EDDT
+--             , 'D'                         AS UPD_GB /*변경구분*/
+--        FROM   TB_EP_DAUM X
+--             , TB_EP_DAUM Y
+--        WHERE  X.ID = Y.ID
+--        AND    X.GB = 'CURR' /*현재데이터*/
+--        AND    Y.GB = 'PREV' /*이전백업데이터*/
+--        AND    (
+--                (Y.GOODS_STAT != 'G008_70' AND X.GOODS_STAT = 'G008_70')
+--                OR
+--                (Y.SELF_MALL_YN = 'Y' AND X.SELF_MALL_YN = 'N')
+--                OR
+--                (Y.SELL_EDDT != X.SELL_EDDT AND Y.SELL_EDDT < NOW())
+--               )
+       ) X
+;
+
+-- 다음 EP 목록
+SELECT IFNULL(MAPID,'')     AS MAPID
+     , LPRICE
+     , PRICE
+     , MPRIC
+     , IFNULL(PNAME,'')     AS PNAME
+     , IFNULL(PGURL,'')     AS PGURL
+     , IFNULL(IGURL,'')     AS IGURL
+     , IFNULL(UPIMG,'')     AS UPIMG
+     , IFNULL(CATE1,'')     AS CATE1
+     , IFNULL(CAID1,'')     AS CAID1
+     , IFNULL(CATE2,'')     AS CATE2
+     , IFNULL(CAID2,'')     AS CAID2
+     , IFNULL(CATE3,'')     AS CATE3
+     , IFNULL(CAID3,'')     AS CAID3
+     , IFNULL(CATE4,'')     AS CATE4
+     , IFNULL(CAID4,'')     AS CAID4
+     , IFNULL(MODEL,'')     AS MODEL
+     , IFNULL(BRAND,'')     AS BRAND
+     , IFNULL(MAKER,'')     AS MAKER
+     , IFNULL(COUPON,'')    AS COUPON
+     , IFNULL(MCOUPON,'')   AS MCOUPON
+     , IFNULL(PCARD,'')     AS PCARD
+     , IFNULL(POINT,'')     AS POINT
+     , IFNULL(DELIV,'')     AS DELIV
+     , IFNULL(DELIVTERM,'') AS DELIVTERM
+     , IFNULL(RATING,'')    AS RATING
+     , IFNULL(REVCT,'')     AS REVCT
+     , IFNULL(EVENT,'')     AS EVENT
+     , IFNULL(CARDDN,'')    AS CARDDN
+     , IFNULL(CARDP,'')     AS CARDP
+     , IFNULL(ADULT,'')     AS ADULT
+     , IFNULL(PUBDATE,'')   AS PUBDATE
+FROM   TB_EP_DAUM
+WHERE  GB = 'LAST'
+;
+
+-- 다음 상품평EP 목록
+SELECT R.GOODS_CD                           AS MAPID    /*상품ID*/
+     , R.REVIEW_SQ                          AS REVIEWID /*상품평ID*/
+     , CASE WHEN R.DISP_YN = 'N' OR R.DEL_YN = 'Y' THEN 'D'
+            ELSE 'S'
+       END                                  AS STATUS   /*상품평상태(S:정상, D:삭제)*/
+     , R.REVIEW_TITLE                       AS TITLE    /*상품평제목*/
+     , SUBSTRING(R.REVIEW_CONTENT,1,250)    AS CONTENT  /*상품평내용(250자이내)*/
+     , C.CUST_NM                            AS WRITER
+     , DATE_FORMAT(R.REG_DT,'%Y%m%d%H%i%S') AS CDATE /*상품평작성일시*/
+     , R.SCORE                              AS RATING /*상품평점수*/
+FROM   TB_REVIEW R
+     , TB_CUSTOMER C
+WHERE  R.REG_NO = C.CUST_NO
+AND    R.CONFIRM_YN = 'Y' /*컨펌된넘*/
+;

BIN
산출물/4.구축/앱/style24_debug_20210622.apk.txt


BIN
산출물/5.시험/ST24-C202-통합테스트시나리오계획서(V0.91)-20210622.xlsx