Преглед изворни кода

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

swkim пре 5 година
родитељ
комит
817a97acf2

+ 1 - 1
산출물/3.설계/05.DB-Object/03.db_function/fn_get_user_nm.sql

@@ -34,7 +34,7 @@ BEGIN
 	    SET O_RET_VALUE = '배치';
 	END IF;
 
-	IF I_USER_NO > 1000000 THEN
+	IF I_USER_NO > 100000 THEN
 	    SET O_RET_VALUE = '본인';
 	END IF;
 

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

@@ -3504,6 +3504,31 @@ INSERT INTO TB_COMMON_CODE VALUES ('G941', 'G941_28', 'AMEX카드', NULL, 'Y', 2
 INSERT INTO TB_COMMON_CODE VALUES ('G941', 'G941_29', 'JCB카드', NULL, 'Y', 30, 2, NOW(), 2, NOW());
 INSERT INTO TB_COMMON_CODE VALUES ('G941', 'G941_30', 'Unionpay카드', NULL, 'Y', 31, 2, NOW(), 2, NOW());
 
+INSERT INTO TB_COMMON_CODE VALUES ('ROOT', 'G942', '은행(계좌인증용)', NULL, 'Y', 942, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '02', '산업은행', NULL, 'Y', 2, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '03', '기업은행', NULL, 'Y', 3, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '04', '국민은행', NULL, 'Y', 4, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '07', '수협', NULL, 'Y', 7, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '11', '농협', NULL, 'Y', 11, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '20', '농협', NULL, 'Y', 20, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '23', 'SC제일은행', NULL, 'Y', 23, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '27', '한국시티은행', NULL, 'Y', 27, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '31', '대구은행', NULL, 'Y', 31, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '32', '부산은행', NULL, 'Y', 32, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '34', '광주은행', NULL, 'Y', 34, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '35', '제주은행', NULL, 'Y', 35, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '37', '전북은행', NULL, 'Y', 37, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '39', '경남은행', NULL, 'Y', 39, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '45', '새마을금고', NULL, 'Y', 45, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '48', '신협', NULL, 'Y', 48, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '54', 'HSBC', NULL, 'Y', 54, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '64', '산림조합', NULL, 'Y', 64, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '71', '우체국', NULL, 'Y', 71, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '81', 'KEB 하나은행', NULL, 'Y', 81, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '88', '신한은행', NULL, 'Y', 88, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '89', '케이뱅크', NULL, 'Y', 89, 14, NOW(), 14, NOW());
+INSERT INTO TB_COMMON_CODE VALUES ('G942', '90', '카카오뱅크', NULL, 'Y', 90, 14, NOW(), 14, NOW());
+
 #G097 - 이메일 도메인
 INSERT INTO TB_COMMON_CODE VALUES ('ROOT', 'G097', '메일도메인주소', '메일도메인주소', 'Y', 97, 1, now(), 1, now());
 INSERT INTO TB_COMMON_CODE VALUES ('G097', '99', '기타(직접입력)', '기타(직접입력)', 'Y', 1, 1, now(), 1, now());
@@ -5389,8 +5414,10 @@ ALTER TABLE TB_POLL
 ################################################################################
 #투표문항답변
 ################################################################################
+
 DROP TABLE IF EXISTS TB_POLL_ANSWER RESTRICT;
 CREATE TABLE TB_POLL_ANSWER (
+  POLL_ASQ    INT UNSIGNED  NOT NULL COMMENT '투표답변일련번호' PRIMARY KEY , -- 투포답변일련번호
   POLL_QSQ    INT UNSIGNED  NOT NULL COMMENT '투표문항일련번호', -- 투표문항일련번호
   ANS_CUST_NO INT UNSIGNED  NOT NULL COMMENT '답변자고객번호', -- 답변자고객번호
   POLL_QTYPE  VARCHAR(20)   NOT NULL COMMENT '문제유형(공통코드G670)', -- 문제유형(공통코드G670)
@@ -5400,13 +5427,16 @@ CREATE TABLE TB_POLL_ANSWER (
 )
 COMMENT '투표문항답변. 투표의 문항에 대한 답변 등록에 의한 발생';
 
--- 투표문항답변
+CREATE INDEX IX_POLL_ANSWER_01 ON TB_POLL_ANSWER (POLL_QSQ, ANS_CUST_NO);
+
 ALTER TABLE TB_POLL_ANSWER
   ADD CONSTRAINT PK_POLL_ANSWER -- 투표문항답변 기본키
     PRIMARY KEY (
       POLL_QSQ    -- 투표문항일련번호
     );
 
+ALTER TABLE TB_POLL_ANSWER AUTO_INCREMENT = 1;
+
 ################################################################################
 #투표문항
 ################################################################################

BIN
산출물/3.설계/ST24_TSIT-D202-프로그램목록(V2.7)-20210402.xlsx


+ 248 - 1
산출물/4.구축/데이터처리/상품리스트_쿼리문.sql

@@ -423,4 +423,251 @@ SELECT '40'   AS BENEFIT_CD
      , '신상' AS BENEFIT_NM
 FROM   TAB_BENEFIT
 WHERE  FORMAL_GB = 'G009_10'
-;
+;
+
+	<!-- 상품 목록 -->
+	<select id="getGoodsList" parameterType="Cate4Srch" resultType="Goods">
+		/* TsfGoods.getGoodsList */
+		WITH TAB_GOODS AS (
+		    SELECT G.BRAND_GROUP_NM     /*브랜드그룹명*/
+		         , G.GOODS_CD           /*상품코드*/
+		         , G.GOODS_NM           /*상품명*/
+		         , G.GOODS_GB           /*상품구분*/
+		         , G.FOREIGN_BUY_YN     /*해외구매대행여부*/
+		         , G.PARALLEL_IMPORT_YN /*병행수입여부*/
+		         , G.ORDER_MADE_YN      /*주문제작여부*/
+		         , G.GOODS_TNM          /*상품타이틀명*/
+		         , G.MAIN_COLOR_CD      /*대표색상코드*/
+		         , G.LIST_PRICE         /*정상가(최초판매가)*/
+		         , G.CURR_PRICE         /*현재판매가*/
+		         , G.REG_DT             /*등록일시*/
+		         , G.OPT_CD1            /*옵션코드1(색상코드)*/
+		         , G.NUMB
+		    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.FOREIGN_BUY_YN                                                                     /*해외구매대행여부*/
+		                 , G.PARALLEL_IMPORT_YN                                                                 /*병행수입여부*/
+		                 , G.ORDER_MADE_YN                                                                      /*주문제작여부*/
+		                 , G.GOODS_TNM                                                                          /*상품타이틀명*/
+		                 , G.MAIN_COLOR_CD                                                                      /*대표색상코드*/
+		                 , G.LIST_PRICE                                                                         /*정상가(최초판매가)*/
+		                 , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb}) AS CURR_PRICE     /*현재판매가*/
+		                 , G.MIN_ORD_AMT                                                                        /*최수주문금액*/
+		                 , G.REG_DT                                                                             /*등록일시*/
+		                 , O.OPT_CD1                                                                            /*옵션코드1(색상코드)*/
+		                 <choose>
+		                     <when test="sortingType == 'BELOVED'"> <!-- 인기상품순 -->
+		                 , RANK() OVER(ORDER BY CG.DISP_ORD
+		                                      , GS.SELL_WEEK_QTY DESC
+		                                      , G.GOODS_CD) AS NUMB
+		                     </when>
+		                     <when test="sortingType == 'REVIEW'"> <!-- 리뷰많은순 -->
+		                 , RANK() OVER(ORDER BY CG.DISP_ORD
+		                                      , GS.REVIEW_REG_CNT DESC
+		                                      , G.GOODS_CD) AS NUMB
+		                     </when>
+		                     <otherwise> <!-- 최신상품순 -->
+		                 , RANK() OVER(ORDER BY CG.DISP_ORD
+		                                      , G.FORMAL_GB
+		                                      , G.REG_DT DESC
+		                                      , G.GOODS_CD) AS NUMB
+		                     </otherwise>
+		                 </choose>
+		            FROM   TB_CATE_4SRCH C4
+		                 , TB_CATE_GOODS CG
+		                 , TB_GOODS G
+		                 , TB_GOODS_STOCK S
+		                 , TB_BRAND B
+		                 , TB_BRAND_GROUP BG
+		                 , TB_OPTION O
+		                 <if test="sortingType == 'BELOVED' or sortingType == 'REVIEW'"> <!-- 인기상품순, 리뷰많은순 -->
+		                 , TB_GOODS_SUMMARY GS
+		                 </if>
+		            WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		            AND    CG.GOODS_CD = G.GOODS_CD
+		            AND    G.GOODS_CD = S.GOODS_CD
+		            AND    G.BRAND_CD = B.BRAND_CD
+		            AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		            AND    G.GOODS_CD = O.GOODS_CD
+		            <if test="sortingType == 'BELOVED' or sortingType == 'REVIEW'"> <!-- 인기상품순, 리뷰많은순 -->
+		            AND    G.GOODS_CD = GS.GOODS_CD
+		            </if>
+		            AND    C4.SITE_CD = #{siteCd}
+		            AND    C4.CATE_GB = #{cateGb}
+		            AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		            AND    C4.CATE1_NO = #{cate1No}
+		            <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 != ''">
+		            AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+		                </when>
+		                <otherwise>
+		            AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		                </otherwise>
+		            </choose>
+		            <if test="brandGroupNoArr != null and brandGroupNoArr.length > 0">
+		            AND	   CG.BRAND_GROUP_NO IN
+		                <foreach collection="brandGroupNoArr" item="item" index="index"  open="(" close=")" separator=",">
+		                #{item}
+		                </foreach>
+		            </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="agesArr != null and agesArr.length > 0"> <!-- 연령대 -->
+		            AND	   G.AGE_GRP_CD IN
+		                <foreach collection="agesArr" 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 <![CDATA[>]]> 0 /*재고있는 상품*/
+		            AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+		            AND    BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
+		            <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
+		            AND	   O.OPT_CD1 IN (SELECT COLOR_CD
+		                                 FROM   TB_COLOR
+		                                 WHERE  COLOR_GRP_CD IN
+		                                 <foreach collection="colorArr" item="item" index="index"  open="(" close=")" separator=",">
+		                                     #{item}
+		                                 </foreach>
+		                                 AND    USE_YN = 'Y' /*사용하는색상*/
+		                                )
+		            </if>
+		            <if test="sizeArr != null and sizeArr.length > 0"> <!-- 사이즈 -->
+		            AND	   O.OPT_CD2 IN
+		                <foreach collection="sizeArr" item="item" index="index"  open="(" close=")" separator=",">
+		                #{item}
+		                </foreach>
+		            </if>
+		           ) G
+		    WHERE  G.NUMB <![CDATA[<=]]> #{maxRow}
+		    <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="benefitArr != null and benefitArr.length > 0"> <!-- 혜택 -->
+		        <foreach collection="benefitArr" item="item" index="index">
+		            <if test="item == '10'"> <!-- 쿠폰할인 -->
+		    AND   EXISTS (SELECT 1
+		                  FROM   TB_GOODS_BENEFIT
+		                  WHERE  GOODS_CD = G.GOODS_CD
+		                  AND    CPN_YN = 'Y'
+		                 )
+		            </if>
+		            <if test="item == '20'"> <!-- 무료배송 -->
+		    AND   G.MIN_ORD_AMT <![CDATA[>=]]> G.CURR_PRICE
+		            </if>
+		            <if test="item == '30'"> <!-- 사은품 -->
+		    AND   EXISTS (SELECT 1
+		                  FROM   TB_GOODS_BENEFIT
+		                  WHERE  GOODS_CD = G.GOODS_CD
+		                  AND    FREEGIFT_YN = 'Y'
+		                 )
+		            </if>
+		            <if test="item == '40'"> <!-- 신상 -->
+		    AND   G.FORMAL_GB = 'G009_10'
+		            </if>
+		        </foreach>
+		    </if>
+		)
+		, TAB_GOODS_IMG AS (
+		    /* 상품의 이미지 */
+		    SELECT GOODS_CD
+		          ,MAX(SYS_IMG_NM) AS SYS_IMG_NM
+		          ,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
+		    FROM   (
+		            SELECT G.GOODS_CD
+		                 , CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END   AS SYS_IMG_NM
+		                 , CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
+		            FROM   TAB_GOODS G
+		                 , TB_GOODS_IMG GI
+		            WHERE  G.GOODS_CD = GI.GOODS_CD
+		            AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		           ) Z
+		    GROUP  BY GOODS_CD
+		)
+		, TAB_GOODS_VIDEO AS (
+		    /* 상품의 동영상 목록 */
+		    SELECT GOODS_CD
+		         , MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END)  AS VIDEO_GB_M
+		         , MAX(CASE WHEN RNUM = 1 THEN VIDEO_VAL END) AS VIDEO_VAL_M
+		         , MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END)  AS VIDEO_GB_S
+		         , MAX(CASE WHEN RNUM = 2 THEN VIDEO_VAL END) AS VIDEO_VAL_S
+		    FROM   (
+		            SELECT G.GOODS_CD
+		                 , V.VIDEO_GB
+		                 , V.VIDEO_VAL
+		                 , VD.REG_DT
+		                 , RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY VD.REG_DT) AS RNUM
+		            FROM   TAB_GOODS G
+		                 , TB_VIDEO_DISPLOC VD
+		                 , TB_VIDEO V
+		            WHERE  G.GOODS_CD = VD.DISPLOC_VAL
+		            AND    VD.VIDEO_SQ = V.VIDEO_SQ
+		            AND    VD.DISPLOC_GB = 'G' /*상품*/
+		            AND    VD.DISP_YN = 'Y'
+		            AND    V.DISP_YN ='Y'
+		           ) Z
+		    GROUP  BY GOODS_CD
+		)
+		SELECT G.BRAND_GROUP_NM
+		     , G.GOODS_CD
+		     , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
+		     , G.GOODS_TNM
+		     , G.MAIN_COLOR_CD
+		     , G.LIST_PRICE
+		     , G.CURR_PRICE                                                                                                  /*현재판매가*/
+		     , GI.SYS_IMG_NM
+		     , GI.SYS_IMG_NM2
+		     , GV.VIDEO_GB_M
+		     , GV.VIDEO_VAL_M
+		     , GV.VIDEO_GB_S
+		     , GV.VIDEO_VAL_S
+		     <choose>
+		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		     , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/
+		         </when>
+		         <otherwise>
+		     , ''                                                                                           AS LIKE_IT       /*위시리스트담긴상품*/
+		         </otherwise>
+		     </choose>
+		FROM TAB_GOODS G  
+		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
+		                             AND W.CUST_NO = #{custNo}
+		</if>
+	</select>