jsh77b пре 5 година
родитељ
комит
e7a0a202cf

+ 6 - 16
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -665,21 +665,10 @@ public class TscOrderService {
 			for (Order goodsCartCpnApply : goodsCartCpnApplyList) {
 				// 상품쿠폰목록
 				if ("G230_11".equals(goodsCartCpnApply.getCpnType())) {
-					Boolean temp1 = true;
-					for (Order goodsCpn : goodsCpnList) {
-						if (goodsCpn.getCpnId() == goodsCartCpnApply.getCpnId()) {
-							temp1 = false;
-						}
-					}
-					
-					// 쿠폰시퀀스가 중복 없을때 적용
-					if (temp1) {
-						goodsCpnList.add(goodsCartCpnApply);
-					}
+					goodsCpnList.add(goodsCartCpnApply);
 				}
 				// 장바구니쿠폰목록
 				else if ("G230_20".equals(goodsCartCpnApply.getCpnType())) {
-					
 					Boolean temp2 = true;
 					for (Order cartCpn : cartCpnList) {
 						if (cartCpn.getCpnId() == goodsCartCpnApply.getCpnId()) {
@@ -723,8 +712,7 @@ public class TscOrderService {
 			
 			for (Order goodsCpn : goodsCpnAllList) {
 				// 상품코드비교후 담기
-				if (("A".equals(goodsCpn.getApplyScope()) || tmtbGoods.getGoodsCd().equals(goodsCpn.getGoodsCd()))) {
-					
+				if ("A".equals(goodsCpn.getApplyScope()) || tmtbGoods.getGoodsCd().equals(goodsCpn.getGoodsCd())) {
 					temp = true;
 					
 					// 이미 담긴 상풐은 제외
@@ -798,12 +786,14 @@ public class TscOrderService {
 			// 1.2 즉시할인 적용가 * 주문수량(장바구니수량)
 			order.setCurrPrice(order.getCurrPrice() * order.getGoodsQty());
 			
+			log.info("order.getResDelvFeeCd() ::: {} ::: order.getGoodsCd() ::: {}", order.getResDelvFeeCd(), order.getGoodsCd());
+			
 			// 1.3 배송정책별 상품 구분
-			if (order.getDelvFeeCd().equals("WMS")) {
+			if (order.getResDelvFeeCd().equals("WMS")) {
 				wmsCartList.add(order);
 				wmsCnt++;
 			} 
-			else if (order.getDelvFeeCd().equals("RES")) {
+			else if (order.getResDelvFeeCd().equals("RES")) {
 				resCartList.add(order);
 				resCnt++;
 			} 

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

@@ -338,6 +338,7 @@ public class Order extends TscBaseDomain {
 	private int minOrdAmt;
 	private int orgDelvFee;
 	private String delvFeeCd;
+	private String resDelvFeeCd;
 	private int ordCanChgQty;
 	private String allCanYn;
 	

+ 183 - 131
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1711,6 +1711,8 @@
 				   AND CD.OPT_CD = VS.OPT_CD
 				  LEFT OUTER JOIN TB_GOODS_RES_SELL GRS
 					ON CA.GOODS_CD = GRS.GOODS_CD
+				   AND GRS.USE_YN = 'Y'
+				   AND GRS.DELV_RES_DT > NOW()
 				 WHERE 1 = 1
 				   AND G.GOODS_STAT = 'G008_90'
 				<if test="custNo == 0">
@@ -1757,6 +1759,7 @@
 			 , GI.SYS_IMG_NM
 		ORDER  BY Z.SUPPLY_COMP_CD
 				, Z.DELV_FEE_CD
+				, Z.GOODS_CD
 				, Z.CART_SQ
 	</select>
 	
@@ -1878,136 +1881,175 @@
 				#{item}
 			</foreach>
 		)
-		SELECT Z.GOODS_CD
-		     , Z.CART_SQ
-		     , Z.CURR_PRICE
-		     , CP.CPN_ID
-		     , CP.CPN_NM
-		     , CP.CPN_TYPE
-		     , CP.DC_WAY
-		     , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
-		            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
-		            ELSE CP.DC_AVAL END AS DC_VAL
-		     , CP.MAX_DC_AMT
-		     , CP.BUY_LIMIT_AMT
-		     , CP.APPLY_SCOPE
-		FROM   TB_COUPON CP
-		INNER  JOIN TB_COUPON_CUST_GRADE CGR
-		ON     CP.CPN_ID = CGR.CPN_ID
-		INNER  JOIN TB_CUST_COUPON CCP
-		ON     CP.CPN_ID = CCP.CPN_ID
-		INNER  JOIN TB_CUSTOMER CT
-		ON     CT.CUST_NO = CT.CUST_NO
-		AND    CGR.USABLE_CUST_GRADE = CT.CUST_GRADE
-		INNER  JOIN TB_COUPON_CUST_GBN CGB
-		ON     CP.CPN_ID = CGB.CPN_ID
-		AND    CGB.USABLE_CUST_GB = CT.CUST_GB
-		LEFT   OUTER JOIN (
-				SELECT X.*
-				FROM (
-					SELECT CR.CPN_ID
-					     , GD.GOODS_CD
-						 , GD.CART_SQ
-						 , GD.CURR_PRICE
-					FROM   TB_COUPON_REFVAL CR
-					INNER  JOIN GOODS_DATA GD
-					ON     CR.REF_VAL = GD.GOODS_CD
-					WHERE  1=1
-					AND    CR.CPN_TARGET = 'G260_10' -- 상품
-					AND    CR.DEL_YN = 'N'
-					UNION
-					SELECT CR.CPN_ID
-					     , GD.GOODS_CD
-						 , GD.CART_SQ
-						 , GD.CURR_PRICE
-					FROM   (
-						SELECT C4.LEAF_CATE_NO
-						     , CASE WHEN X = 1 THEN 'CATE1_NO' 
-						            WHEN X = 2 THEN 'CATE2_NO'
-						            WHEN X = 3 THEN 'CATE3_NO'
-						            WHEN X = 4 THEN 'CATE4_NO'
-						            ELSE 'CATE5_NO'
-						            END  CATE_LVL
-						     , CASE WHEN X = 1 THEN CATE1_NO 
-						            WHEN X = 2 THEN CATE2_NO
-						            WHEN X = 3 THEN CATE3_NO
-						            WHEN X = 4 THEN CATE4_NO
-						            ELSE CATE5_NO
-						            END  CATE_NO
-						FROM   TB_CATE_4SRCH C4
-						LEFT   OUTER JOIN (
-							SELECT 1 AS X
-							UNION  ALL 
-							SELECT 2 AS X
-							UNION  ALL 
-							SELECT 3 AS X
-							UNION  ALL 
-							SELECT 4 AS X
-							UNION  ALL 
-							SELECT 5 AS X
-						) B
-						ON     1=1
+		SELECT X.*
+		FROM (
+			SELECT Z.GOODS_CD
+			     , Z.CART_SQ
+			     , Z.CURR_PRICE
+			     , CP.CPN_ID
+			     , CP.CPN_NM
+			     , CP.CPN_TYPE
+			     , CP.DC_WAY
+			     , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
+			            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
+			            ELSE CP.DC_AVAL END AS DC_VAL
+			     , CP.MAX_DC_AMT
+			     , CP.BUY_LIMIT_AMT
+			     , CP.APPLY_SCOPE
+			FROM   TB_COUPON CP
+			INNER  JOIN TB_COUPON_CUST_GRADE CGR
+			ON     CP.CPN_ID = CGR.CPN_ID
+			INNER  JOIN TB_CUST_COUPON CCP
+			ON     CP.CPN_ID = CCP.CPN_ID
+			INNER  JOIN TB_CUSTOMER CT
+			ON     CCP.CUST_NO = CT.CUST_NO
+			AND    CGR.USABLE_CUST_GRADE = CT.CUST_GRADE
+			INNER  JOIN TB_COUPON_CUST_GBN CGB
+			ON     CP.CPN_ID = CGB.CPN_ID
+			AND    CGB.USABLE_CUST_GB = CT.CUST_GB
+			INNER  JOIN (
+					SELECT X.*
+					FROM (
+						SELECT CR.CPN_ID
+						     , GD.GOODS_CD
+							 , GD.CART_SQ
+							 , GD.CURR_PRICE
+						FROM   TB_COUPON_REFVAL CR
+						INNER  JOIN GOODS_DATA GD
+						ON     CR.REF_VAL = GD.GOODS_CD
 						WHERE  1=1
-						AND    C4.SITE_CD = 'G000_10'
-						AND    C4.CATE_TYPE = 'G031_10'
-						ORDER  BY LEAF_CATE_NO 
-						     , CATE_LVL
-					) C4SRCH
-					INNER  JOIN TB_COUPON_REFVAL CR
-					ON     C4SRCH.CATE_NO = CR.REF_VAL
-					INNER  JOIN TB_CATE_GOODS CG
-					ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
-					INNER  JOIN GOODS_DATA GD
-					ON     CG.GOODS_CD = GD.GOODS_CD
-					WHERE  C4SRCH.CATE_NO IS NOT NULL
-					AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
-					AND    CR.DEL_YN = 'N'
-					UNION
-					SELECT CR1.CPN_ID
-					     , GD.GOODS_CD
-						 , GD.CART_SQ
-						 , GD.CURR_PRICE
-					FROM   GOODS_DATA GD
-					INNER  JOIN TB_COUPON_REFVAL CR1 
-					ON     GD.SUPPLY_COMP_CD = CR1.REF_VAL
-					AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
-					AND    CR1.DEL_YN = 'N'
-					INNER  JOIN TB_COUPON_REFVAL CR2 
-					ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
-					AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
-					AND    CR2.DEL_YN = 'N'
-				) X
-				LEFT  OUTER JOIN TB_COUPON_REFVAL CR
-				ON    X.CPN_ID = CR.CPN_ID
-				AND   X.GOODS_CD = CR.REF_VAL 
-				AND   CR.CPN_TARGET = 'G260_14' -- 제외상품
-				AND   CR.DEL_YN = 'N'
-		) Z
-		ON     Z.CPN_ID = CP.CPN_ID
-		WHERE  1=1
-		<if test="cpnId != null and cpnId != 0">
-		AND    CP.CPN_ID = #{cpnId}
-		</if>
-		AND    CP.SITE_CD = 'G000_10'
-		AND    CP.CPN_STAT = 'G232_11'				 -- 진행쿠폰
-		AND    CP.CPN_TYPE IN ('G230_11', 'G230_20') -- 상품쿠폰, 장바구니쿠폰
-		AND    CP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
-		AND    CP.AVAIL_EDDT > CURRENT_TIMESTAMP
-		GROUP  BY Z.GOODS_CD
-		     , Z.CART_SQ
-		     , Z.CURR_PRICE
-			 , CP.CPN_ID
-			 , CP.CPN_NM
-			 , CP.CPN_TYPE
-			 , CP.DC_WAY
-			 , CP.DC_PVAL
-			 , CP.DC_MVAL
-			 , CP.DC_AVAL
-			 , CP.MAX_DC_AMT
-			 , CP.BUY_LIMIT_AMT
-			 , CP.APPLY_SCOPE
-		ORDER  BY Z.GOODS_CD
-		        , CP.CPN_ID
+						AND    CR.CPN_TARGET = 'G260_10' -- 상품
+						AND    CR.DEL_YN = 'N'
+						UNION
+						SELECT CR.CPN_ID
+						     , GD.GOODS_CD
+							 , GD.CART_SQ
+							 , GD.CURR_PRICE
+						FROM   (
+							SELECT C4.LEAF_CATE_NO
+							     , CASE WHEN X = 1 THEN 'CATE1_NO' 
+							            WHEN X = 2 THEN 'CATE2_NO'
+							            WHEN X = 3 THEN 'CATE3_NO'
+							            WHEN X = 4 THEN 'CATE4_NO'
+							            ELSE 'CATE5_NO'
+							            END  CATE_LVL
+							     , CASE WHEN X = 1 THEN CATE1_NO 
+							            WHEN X = 2 THEN CATE2_NO
+							            WHEN X = 3 THEN CATE3_NO
+							            WHEN X = 4 THEN CATE4_NO
+							            ELSE CATE5_NO
+							            END  CATE_NO
+							FROM   TB_CATE_4SRCH C4
+							LEFT   OUTER JOIN (
+								SELECT 1 AS X
+								UNION  ALL 
+								SELECT 2 AS X
+								UNION  ALL 
+								SELECT 3 AS X
+								UNION  ALL 
+								SELECT 4 AS X
+								UNION  ALL 
+								SELECT 5 AS X
+							) B
+							ON     1=1
+							WHERE  1=1
+							AND    C4.SITE_CD = 'G000_10'
+							AND    C4.CATE_TYPE = 'G031_10'
+							ORDER  BY LEAF_CATE_NO 
+							     , CATE_LVL
+						) C4SRCH
+						INNER  JOIN TB_COUPON_REFVAL CR
+						ON     C4SRCH.CATE_NO = CR.REF_VAL
+						INNER  JOIN TB_CATE_GOODS CG
+						ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
+						INNER  JOIN GOODS_DATA GD
+						ON     CG.GOODS_CD = GD.GOODS_CD
+						WHERE  C4SRCH.CATE_NO IS NOT NULL
+						AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
+						AND    CR.DEL_YN = 'N'
+						UNION
+						SELECT CR1.CPN_ID
+						     , GD.GOODS_CD
+							 , GD.CART_SQ
+							 , GD.CURR_PRICE
+						FROM   GOODS_DATA GD
+						INNER  JOIN TB_COUPON_REFVAL CR1 
+						ON     GD.SUPPLY_COMP_CD = CR1.REF_VAL
+						AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
+						AND    CR1.DEL_YN = 'N'
+						INNER  JOIN TB_COUPON_REFVAL CR2 
+						ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
+						AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
+						AND    CR2.DEL_YN = 'N'
+					) X
+					LEFT  OUTER JOIN TB_COUPON_REFVAL CR
+					ON    X.CPN_ID = CR.CPN_ID
+					AND   X.GOODS_CD = CR.REF_VAL 
+					AND   CR.CPN_TARGET = 'G260_14' -- 제외상품
+					AND   CR.DEL_YN = 'N'
+			) Z
+			ON     Z.CPN_ID = CP.CPN_ID
+			WHERE  1=1
+			<if test="cpnId != null and cpnId != 0">
+			AND    CP.CPN_ID = #{cpnId}
+			</if>
+			AND    CP.SITE_CD = 'G000_10'
+			AND    CP.CPN_STAT = 'G232_11'				 -- 진행쿠폰
+			AND    CP.CPN_TYPE IN ('G230_11', 'G230_20') -- 상품쿠폰, 장바구니쿠폰
+			AND    CP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
+			AND    CP.AVAIL_EDDT > CURRENT_TIMESTAMP
+			AND    CT.CUST_NO = #{custNo}
+			AND    CP.APPLY_SCOPE = 'I'
+			GROUP  BY Z.GOODS_CD
+			     , Z.CART_SQ
+			     , Z.CURR_PRICE
+				 , CP.CPN_ID
+				 , CP.CPN_NM
+				 , CP.CPN_TYPE
+				 , CP.DC_WAY
+				 , CP.DC_PVAL
+				 , CP.DC_MVAL
+				 , CP.DC_AVAL
+				 , CP.MAX_DC_AMT
+				 , CP.BUY_LIMIT_AMT
+				 , CP.APPLY_SCOPE
+			UNION  ALL
+			SELECT 'ALL'		AS GOODS_CD
+			     , 0            AS CART_SQ
+			     , 0            AS CURR_PRICE
+			     , CP.CPN_ID
+			     , CP.CPN_NM
+			     , CP.CPN_TYPE
+			     , CP.DC_WAY
+			     , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
+			            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
+			            ELSE CP.DC_AVAL END AS DC_VAL
+			     , CP.MAX_DC_AMT
+			     , CP.BUY_LIMIT_AMT
+			     , CP.APPLY_SCOPE
+			FROM   TB_COUPON CP
+			INNER  JOIN TB_COUPON_CUST_GRADE CGR
+			ON     CP.CPN_ID = CGR.CPN_ID
+			INNER  JOIN TB_CUST_COUPON CCP
+			ON     CP.CPN_ID = CCP.CPN_ID
+			INNER  JOIN TB_CUSTOMER CT
+			ON     CCP.CUST_NO = CT.CUST_NO
+			AND    CGR.USABLE_CUST_GRADE = CT.CUST_GRADE
+			INNER  JOIN TB_COUPON_CUST_GBN CGB
+			ON     CP.CPN_ID = CGB.CPN_ID
+			AND    CGB.USABLE_CUST_GB = CT.CUST_GB
+			WHERE  1=1
+			<if test="cpnId != null and cpnId != 0">
+			AND    CP.CPN_ID = #{cpnId}
+			</if>
+			AND    CP.SITE_CD = 'G000_10'
+			AND    CP.CPN_STAT = 'G232_11'				 -- 진행쿠폰
+			AND    CP.CPN_TYPE IN ('G230_11', 'G230_20') -- 상품쿠폰, 장바구니쿠폰
+			AND    CP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
+			AND    CP.AVAIL_EDDT > CURRENT_TIMESTAMP
+			AND    CT.CUST_NO = #{custNo}
+			AND    CP.APPLY_SCOPE = 'A'
+		) X
 	</select>
 	
 	<!-- 배송비쿠폰 조회 -->
@@ -2023,13 +2065,23 @@
 		     , CP.MAX_DC_AMT
 		     , CP.BUY_LIMIT_AMT
 		FROM   TB_COUPON CP
+		INNER  JOIN TB_COUPON_CUST_GRADE CGR
+		ON     CP.CPN_ID = CGR.CPN_ID
 		INNER  JOIN TB_CUST_COUPON CCP
 		ON     CP.CPN_ID = CCP.CPN_ID
+		INNER  JOIN TB_CUSTOMER CT
+		ON     CCP.CUST_NO = CT.CUST_NO
+		AND    CGR.USABLE_CUST_GRADE = CT.CUST_GRADE
+		INNER  JOIN TB_COUPON_CUST_GBN CGB
+		ON     CP.CPN_ID = CGB.CPN_ID
+		AND    CGB.USABLE_CUST_GB = CT.CUST_GB
 		WHERE  1=1
-		AND    CP.SITE_CD = '10'
-		AND    CP.CPN_TYPE = 'G230_30'
+		AND    CP.SITE_CD = 'G000_10'
+		AND    CP.CPN_STAT = 'G232_11' -- 진행쿠폰
+		AND    CP.CPN_TYPE = 'G230_30' -- 배송비쿠폰
 		AND    CCP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
 		AND    CCP.AVAIL_EDDT > CURRENT_TIMESTAMP
+		AND    CT.CUST_NO = #{custNo}
 	</select>
 	
 	<!-- 구매확정 포인트 지급 -->