Просмотр исходного кода

이태영 - 20210205 임시커밋

xodud1202 5 лет назад
Родитель
Сommit
63020d7f1d

+ 21 - 3
src/main/java/com/style24/front/biz/dao/TsfCartDao.java

@@ -89,11 +89,29 @@ public interface TsfCartDao {
     void insertCartDetailHst(Cart param);
 
     /**
-     * 장바구니 상세 이력 정보 저장
+     * 다다익선 기본 상품 조회
      * @param Cart
      * @return void
      * @author xodud1202
-     * @since 2021. 02. 02
+     * @since 2021. 02. 04
+     */
+    Collection<Order> selectMoreBetterBaseCartList(Order param);
+
+   /**
+    * 다다익선 적용 상품 SUM DATA 조회
+    * @param Cart
+    * @return void
+    * @author xodud1202
+    * @since 2021. 02. 04
+    */
+   Collection<Order> selectApplyMoreBetterCartInfoList(List<Integer> param);
+
+    /**
+     * 다다익선 SECTION 적용 조건 조회
+     * @param Cart
+     * @return void
+     * @author xodud1202
+     * @since 2021. 02. 04
      */
-    Collection<Order> selectMoreBetterCartList(Order param);
+    Collection<Order> selectTmtbSectionValList(List<Integer> param);
 }

+ 49 - 18
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -91,7 +91,7 @@ public class TsfCartService {
 		}
 
 		// 장바구니 정보 수정
-		if(cart.getGoodsType().equals(TscConstants.GOODS_TYPE.SET.value())) {
+		if(cart.getGoodsType().equals(TscConstants.GoodsType.SET.value())) {
 			// 세트상품일 경우
 			saveSetTypeCartInfo(params);
 		} else {
@@ -239,6 +239,7 @@ public class TsfCartService {
 		}
 		order.setCartSqArr(cartSqArr2.stream().mapToInt(Integer::intValue).toArray());
 
+		// 즉시 할인가 조회
 		Collection<Order> cpn1ApplyGoodsList = coreOrderService.getCpn1ApplyGoodsList(order);
 
 		// 즉시 할인가 적용 금액 // pcCurrPrice
@@ -251,28 +252,58 @@ public class TsfCartService {
 			}
 		}
 
-		Collection<Order> moreBetterList = cartDao.selectMoreBetterCartList(order);
-
-		// 기본 적용 상품 적용
-		List<Order> baseQtyTmtbList = new ArrayList<Order>();
-		List<Order> baseAmtTmtbList = new ArrayList<Order>();
-		for(Order cart : cartGoodsList) {
-			for(Order more : moreBetterList) {
-				if(cart.getCartSq() == more.getCartSq() && more.getBaseQtyTmtbSq() != 0) {
-					cart.setIsBaseQtyMoreBetter("Y");
-					cart.setBaseQtyTmtbSq(more.getBaseQtyTmtbSq());
-					cart.setBaseQtyTmtbNm(more.getBaseQtyTmtbNm());
-					baseQtyTmtbList.add(cart);
+		// 장바구니 내 적용 가능 다다익선 조회 (등록된 기본 상품 정보 조회)
+		Collection<Order> tmtbBaseList = cartDao.selectMoreBetterBaseCartList(order);
+
+		// 기본 상품이 등록된 장바구니의 다다익선 정보 지정
+		List<Integer> baseSq = new ArrayList<Integer>();
+		for(Order tmtbBase : tmtbBaseList) {
+			baseSq.add(tmtbBase.getTmtbSq());
+		}
+
+		// 기본 상품이 걸려있는 다다익선별 총합 데이터 조회
+		Collection<Order> tmtbSumDataList = cartDao.selectApplyMoreBetterCartInfoList(baseSq);
+
+		// 기본상품 목록에 총합 데이터 등록
+		for(Order baseInfo : tmtbBaseList) {
+			for(Order tmtbSumInfo : tmtbSumDataList) {
+				if(baseInfo.getTmtbSq() == tmtbSumInfo.getTmtbSq()) {
+					baseInfo.setTmtbSumAmt(tmtbSumInfo.getTmtbSumAmt());
+					baseInfo.setTmtbSumQty(tmtbSumInfo.getTmtbSumQty());
 				}
-				if (cart.getCartSq() == more.getCartSq() && more.getBaseAmtTmtbSq() != 0) {
-					cart.setIsBaseAmtMoreBetter("Y");
-					cart.setBaseAmtTmtbSq(more.getBaseQtyTmtbSq());
-					cart.setBaseAmtTmtbNm(more.getBaseAmtTmtbNm());
-					baseAmtTmtbList.add(cart);
+			}
+		}
+
+		// 섹션 정보 조회 후 할인 여부 판단
+		Collection<Order> tmtbSectionList = cartDao.selectTmtbSectionValList(baseSq);
+		for(Order baseInfo : tmtbBaseList) {						// 기준 상품 및 다다익선 정보 조회
+			for(Order section : tmtbSectionList) {					// 다다익선 할인 조건 조회
+				if(baseInfo.getTmtbSq() == section.getTmtbSq()) {
+					if(TscConstants.ApplyGb.QTY.value().equals(baseInfo.getApplyGb())) {		// 수량 적용
+						if(section.getSectionVal() < baseInfo.getTmtbSumQty()) {				// 장바구니 수량 할인 기준 달성시
+							if(baseInfo.getApplyQtySectionVal() < section.getSectionVal()) {	// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+								baseInfo.setApplyQtySectionVal(section.getSectionVal());
+								baseInfo.setApplyQtySectionYn("Y");
+							}
+						} else {
+							baseInfo.setApplyQtySectionYn("N");
+						}
+					} else if (TscConstants.ApplyGb.AMT.value().equals(baseInfo.getApplyGb())) {
+						if(section.getSectionVal() < baseInfo.getTmtbSumQty()) {				// 장바구니 수량 할인 기준 달성시
+							if(baseInfo.getApplyAmtSectionVal() < section.getSectionVal()) {	// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+								baseInfo.setApplyAmtSectionVal(section.getSectionVal());
+								baseInfo.setApplyAmtSectionYn("Y");
+							}
+						} else {
+							baseInfo.setApplyAmtSectionYn("N");
+						}
+					}
 				}
 			}
 		}
 
+		// 다다익선 할인 된 상품 조회 (적용상품까지 모두 화면에 노출되어야함)
+
 
 
 		result.put("cartGoodsList", cartGoodsList);

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

@@ -69,7 +69,7 @@ public class TsfGoodsService {
 	 * @since 2021. 01. 28
 	 */
 	public String getCheckStock(GoodsStock param) {
-		if(param.getGoodsType().equals(TscConstants.GOODS_TYPE.SET.value())) {		// 세트상품이면 구성 상품코드로 조회
+		if(param.getGoodsType().equals(TscConstants.GoodsType.SET.value())) {		// 세트상품이면 구성 상품코드로 조회
 			GoodsStock stockCheck = new GoodsStock();		// 재고 조회 결과
 			stockCheck.setGoodsCd(param.getItemCd());
 			stockCheck.setOptCd(param.getOptCd());

+ 106 - 81
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -247,87 +247,112 @@
 		WHERE  CD.CART_DTL_SQ = #{cartDtlSq}
 	</insert>
 
-	<!-- 다다익선 기본/적용 상품 조회 -->
-	<select id="selectMoreBetterCartList" parameterType="Order" resultType="Order">
-		/* TsfCart.selectMoreBetterCartList : 다다익선 기본/적용 상품 조회 */
+	<!-- 다다익선 기본 상품 조회 -->
+	<select id="selectMoreBetterBaseCartList" parameterType="Order" resultType="Order">
+		/* TsfCart.selectMoreBetterBaseCartList : 다다익선 기본 상품 조회 */
 		SELECT C.CART_SQ
-			 , C.GOODS_CD
-			 , MAX(T1.QTY_TMTB_SQ) AS BASE_QTY_TMTB_SQ
-			 , MAX(T1.QTY_TMTB_NM) AS BASE_QTY_TMTB_NM
-			 , MAX(T1.AMT_TMTB_SQ) AS BASE_AMT_TMTB_SQ
-			 , MAX(T1.AMT_TMTB_NM) AS BASE_AMT_TMTB_NM
-			 , MAX(T2.QTY_TMTB_SQ) AS APPLY_QTY_TMTB_SQ
-			 , MAX(T2.QTY_TMTB_NM) AS APPLY_QTY_TMTB_NM
-			 , MAX(T2.AMT_TMTB_SQ) AS APPLY_AMT_TMTB_SQ
-			 , MAX(T2.AMT_TMTB_NM) AS APPLY_AMT_TMTB_NM
-		  FROM TB_CART C
-		  LEFT OUTER JOIN (SELECT C.CART_SQ
-								, C.GOODS_CD
-								, T.TMTB_SQ
-								, T.APPLY_GB
-								, T.TMTB_NM
-								, TAG.GOODS_GB
-								, CASE WHEN T.APPLY_GB = 'G810_10' THEN T.TMTB_SQ
-									   ELSE NULL END AS QTY_TMTB_SQ
-								, CASE WHEN T.APPLY_GB = 'G810_11' THEN T.TMTB_SQ
-									   ELSE NULL END AS AMT_TMTB_SQ
-								, CASE WHEN T.APPLY_GB = 'G810_10' THEN T.TMTB_NM
-									   ELSE NULL END AS QTY_TMTB_NM
-								, CASE WHEN T.APPLY_GB = 'G810_11' THEN T.TMTB_NM
-									   ELSE NULL END AS AMT_TMTB_NM
-							 FROM TB_CART C
-							INNER JOIN TB_TMTB_APPLY_GOODS TAG
-							   ON C.GOODS_CD = TAG.GOODS_CD
-							  AND TAG.GOODS_GB = 'G800_10'
-							  AND TAG.DEL_YN = 'N'
-							INNER JOIN TB_TMTB T
-							   ON T.TMTB_SQ = TAG.TMTB_SQ
-							  AND T.TMTB_STAT = 'G232_11' /*진행*/
-							 LEFT OUTER JOIN TB_TMTB_APPLY_GOODS NOT_APPLY
-							   ON T.TMTB_SQ = NOT_APPLY.TMTB_SQ
-							  AND C.GOODS_CD = NOT_APPLY.GOODS_CD
-							  AND NOT_APPLY.GOODS_GB = 'G800_30'   /* 제외상품 */
-							WHERE 1 = 1
-							  AND NOT_APPLY.TMTB_SQ IS NULL
-							  AND TAG.GOODS_GB = 'G800_10'
-							  AND T.TMTB_ST_DT <![CDATA[<=]]> NOW()
-							  AND T.TMTB_ED_DT >= NOW()) T1
-		    ON C.CART_SQ = T1.CART_SQ
-		  LEFT OUTER JOIN (SELECT C.CART_SQ
-								, C.GOODS_CD
-								, T.TMTB_SQ
-								, T.APPLY_GB
-								, T.TMTB_NM
-								, CASE WHEN T.APPLY_GB = 'G810_10' THEN T.TMTB_SQ
-									   ELSE NULL END AS QTY_TMTB_SQ
-								, CASE WHEN T.APPLY_GB = 'G810_11' THEN T.TMTB_SQ
-									   ELSE NULL END AS AMT_TMTB_SQ
-								, CASE WHEN T.APPLY_GB = 'G810_10' THEN T.TMTB_NM
-									   ELSE NULL END AS QTY_TMTB_NM
-								, CASE WHEN T.APPLY_GB = 'G810_11' THEN T.TMTB_NM
-									   ELSE NULL END AS AMT_TMTB_NM
-							 FROM TB_CART C
-							INNER JOIN TB_TMTB_APPLY_GOODS TAG
-							   ON C.GOODS_CD = TAG.GOODS_CD
-							  AND TAG.GOODS_GB = 'G800_20'
-							  AND TAG.DEL_YN = 'N'
-							INNER JOIN TB_TMTB T
-							   ON T.TMTB_SQ = TAG.TMTB_SQ
-							  AND T.TMTB_STAT = 'G232_11'
-							 LEFT OUTER JOIN TB_TMTB_APPLY_GOODS NOT_APPLY
-							   ON T.TMTB_SQ = NOT_APPLY.TMTB_SQ
-							  AND C.GOODS_CD = NOT_APPLY.GOODS_CD
-							  AND NOT_APPLY.GOODS_GB = 'G800_30'   /* 제외상품 */
-							WHERE 1 = 1
-							  AND NOT_APPLY.TMTB_SQ IS NULL
-							  AND C.JSESSION_ID = 'aaec62cc-5f91-47bb-ba65-ebc9a61385cf'
-							  AND T.TMTB_ST_DT <![CDATA[<=]]> NOW()
-							  AND T.TMTB_ED_DT >= NOW()) T2
-		    ON C.CART_SQ = T2.CART_SQ
-		 WHERE 1 = 1
-		   AND C.JSESSION_ID = 'aaec62cc-5f91-47bb-ba65-ebc9a61385cf'
-		   AND C.CART_GB = 'G026_BC'
-		 GROUP BY C.CART_SQ
-				, C.GOODS_CD
+			 , T.TMTB_SQ
+			 , T.APPLY_GB
+		     , TAG.GOODS_CD
+			 , T.TMTB_NM
+		FROM   TB_CART C
+		INNER  JOIN TB_TMTB_APPLY_GOODS TAG
+		ON	   C.GOODS_CD = TAG.GOODS_CD
+		AND	   TAG.DEL_YN = 'N'
+		INNER  JOIN TB_TMTB T
+		ON	   T.TMTB_SQ = TAG.TMTB_SQ
+		AND	   T.TMTB_STAT = 'G232_11' /*진행*/
+		INNER  JOIN TB_GOODS G
+		ON	   C.GOODS_CD = G.GOODS_CD
+		LEFT   OUTER JOIN TB_TMTB_APPLY_GOODS NOT_APPLY
+		ON     T.TMTB_SQ = NOT_APPLY.TMTB_SQ
+		AND    C.GOODS_CD = NOT_APPLY.GOODS_CD
+		AND    NOT_APPLY.GOODS_GB = 'G800_30'   /* 제외상품 */
+		WHERE  1=1
+		AND    NOT_APPLY.TMTB_SQ IS NULL
+		AND    T.TMTB_ST_DT <![CDATA[<=]]> NOW()
+		AND    T.TMTB_ED_DT >= NOW()
+		AND    C.JSESSION_ID = 'aaec62cc-5f91-47bb-ba65-ebc9a61385cf'
+		AND    C.CART_GB = 'G026_BC'
+		AND    G.GOODS_STAT = 'G008_90'
+		AND    G.SELF_MALL_YN = 'Y'
+	</select>
+
+	<!-- 다다익선 적용 상품 SUM DATA 조회 -->
+	<select id="selectApplyMoreBetterCartInfoList" parameterType="int" resultType="Order">
+		/* TsfCart.selectApplyMoreBetterCartInfoList : 다다익선 적용 상품 SUM DATA 조회 */
+		SELECT TAG.TMTB_SQ
+			 , SUM(G.CURR_PRICE * C.GOODS_QTY) AS TMTB_SUM_AMT
+			 , SUM(C.GOODS_QTY) AS TMTB_SUM_QTY
+		FROM   TB_TMTB_APPLY_GOODS TAG
+		INNER  JOIN TB_CART C
+		ON     TAG.GOODS_CD = C.GOODS_CD
+		INNER  JOIN TB_GOODS G
+		ON     C.GOODS_CD = G.GOODS_CD
+		LEFT   OUTER JOIN TB_TMTB_APPLY_GOODS NOT_APPLY
+		ON     TAG.GOODS_CD = NOT_APPLY.GOODS_CD
+		AND    NOT_APPLY.GOODS_GB = 'G800_30'   /* 제외상품 */
+		WHERE  1=1
+		AND    NOT_APPLY.TMTB_SQ IS NULL
+		AND    TAG.DEL_YN = 'N'
+		AND    C.JSESSION_ID = 'aaec62cc-5f91-47bb-ba65-ebc9a61385cf'
+		AND    C.CART_GB = 'G026_BC'
+		AND    G.GOODS_STAT = 'G008_90'
+		AND    G.SELF_MALL_YN = 'Y'
+		<if test="list != null and list.size() > 0">
+		AND    TAG.TMTB_SQ IN
+			<foreach collection="list" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		GROUP BY TAG.TMTB_SQ
+	</select>
+
+	<!-- 다다익선 적용 상품 조회 -->
+	<select id="selectApplyMoreBetterCartInfoList" parameterType="int" resultType="Order">
+		/* TsfCart.selectApplyMoreBetterCartInfoList : 다다익선 적용 상품 SUM DATA 조회 */
+		SELECT TAG.TMTB_SQ
+		, SUM(G.CURR_PRICE * C.GOODS_QTY) AS TMTB_SUM_AMT
+		, SUM(C.GOODS_QTY) AS TMTB_SUM_QTY
+		FROM   TB_TMTB_APPLY_GOODS TAG
+		INNER  JOIN TB_CART C
+		ON     TAG.GOODS_CD = C.GOODS_CD
+		INNER  JOIN TB_GOODS G
+		ON     C.GOODS_CD = G.GOODS_CD
+		LEFT   OUTER JOIN TB_TMTB_APPLY_GOODS NOT_APPLY
+		ON     TAG.GOODS_CD = NOT_APPLY.GOODS_CD
+		AND    NOT_APPLY.GOODS_GB = 'G800_30'   /* 제외상품 */
+		WHERE  1=1
+		AND    NOT_APPLY.TMTB_SQ IS NULL
+		AND    TAG.DEL_YN = 'N'
+		AND    C.JSESSION_ID = 'aaec62cc-5f91-47bb-ba65-ebc9a61385cf'
+		AND    C.CART_GB = 'G026_BC'
+		AND    G.GOODS_STAT = 'G008_90'
+		AND    G.SELF_MALL_YN = 'Y'
+		<if test="list != null and list.size() > 0">
+			AND    TAG.TMTB_SQ IN
+			<foreach collection="list" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		GROUP BY TAG.TMTB_SQ
+	</select>
+
+	<!-- 다다익선 SECTION 적용 조건 조회 -->
+	<select id="selectTmtbSectionValList" parameterType="int" resultType="Order">
+		/* TsfCart.selectTmtbSectionValList : 다다익선 SECTION 적용 조건 조회 */
+		SELECT TC.SECTION_GB
+			 , TC.SECTION_VAL
+			 , TC.TMTB_SQ
+		FROM   TB_TMTB_SECTION TC
+		WHERE  1=1
+		AND    TC.DEL_YN = 'N'
+		<if test="list != null and list.size() > 0">
+		AND    TC.TMTB_SQ IN
+			<foreach collection="list" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		ORDER  BY TMTB_SQ, SECTION_VAL
 	</select>
 </mapper>