ソースを参照

Merge branch 'style' into jmh

jmh 4 年 前
コミット
70dd05faf4

+ 11 - 2
src/main/java/com/style24/front/biz/dao/TsfCartDao.java

@@ -292,6 +292,15 @@ public interface TsfCartDao {
 	 */
 	int updateCartGoodsQty(Cart param);
 
+	/**
+	 * 최근 등록된 상품 100개를 제외한 장바구니 시퀀스 배열
+	 * @param Cart
+	 * @return Cart
+	 * @author yujung
+	 * @since 2021. 10. 06
+	 */
+	String selectOldCartArr(Cart param);
+
 	/**
 	 * 최근 등록된 상품 100개를 제외한 장바구니 제거
 	 * @param Cart
@@ -302,12 +311,12 @@ public interface TsfCartDao {
 	void deleteOldCart(Cart param);
 
 	/**
-	 * 장바구니에 없는 장바구니 상세 데이터 삭제
+	 * 최근 등록된 상품 100개를 제외한 장바구니 상세 제거
 	 * @return void
 	 * @author xodud1202
 	 * @since 2021. 04. 16
 	 */
-	void deleteCartDetailFromEmptyCart();
+	void deleteOldCartDetail(Cart param);
 
 	/**
 	 * 2021.05.10 주문완료 주문번호로 장바구니정보 삭제

+ 14 - 2
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -9,6 +9,7 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
@@ -334,8 +335,19 @@ public class TsfCartService {
 
 		deleteCart.setJsessionId(TsfSession.getSessionId());
 
-		cartDao.deleteOldCart(deleteCart);
-		cartDao.deleteCartDetailFromEmptyCart();
+		String cartSq = cartDao.selectOldCartArr(deleteCart);
+		if (!StringUtils.isEmpty(cartSq)) {
+			String[] strArr = cartSq.split(",");
+
+			if (strArr.length > 0) {
+				int[] cartSqArr = Arrays.stream(strArr).mapToInt(Integer::parseInt).toArray();
+
+				deleteCart.setCartSqArr(cartSqArr);
+
+				cartDao.deleteOldCartDetail(deleteCart);
+				cartDao.deleteOldCart(deleteCart);
+			}
+		}
 	}
 
 	@Transactional("shopTxnManager")

+ 35 - 33
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -1164,46 +1164,48 @@
 		AND   CUST_NO = #{custNo}
 	</update>
 
+	<!-- 최근 등록된 상품 100개를 제외한 장바구니 시퀀스 목록 -->
+	<select id="selectOldCartArr" parameterType="Cart" resultType="String">
+		/* TsfCart.selectOldCartArr : 최근 등록된 상품 100개를 제외한 장바구니 시퀀스 목록 */
+		SELECT GROUP_CONCAT(Z.CART_SQ ORDER BY Z.CART_SQ) AS CART_SQ_ARR
+		FROM   (
+		        SELECT ROW_NUMBER() OVER() AS CNT
+		             , A.*
+		        FROM   TB_CART A
+		        WHERE  CART_GB = 'G026_BC'
+		        <if test="custNo != null and custNo > 0">
+		        AND    A.CUST_NO = #{custNo}
+		        </if>
+		        <if test="custNo == null or custNo == 0">
+		        AND    A.CUST_NO = 0
+		        AND    A.JSESSION_ID = #{jsessionId}
+		        </if>
+		        ORDER  BY REG_DT DESC
+			   ) Z
+		WHERE  1=1
+		AND    Z.CNT > 100
+	</select>
+
 	<!-- 최근 등록된 상품 100개를 제외한 장바구니 제거 -->
 	<delete id="deleteOldCart" parameterType="Cart">
 		/* TsfCart.deleteOldCart : 최근 등록된 상품 100개를 제외한 장바구니 제거 */
 		DELETE FROM TB_CART C
-		WHERE  1=1
-		AND    C.CART_GB = 'G026_BC'
-		<if test="custNo != null and custNo > 0">
-		AND    C.CUST_NO = #{custNo}
-		</if>
-		<if test="custNo == null or custNo == 0">
-		AND    C.CUST_NO = 0
-		AND    C.JSESSION_ID = #{jsessionId}
-		</if>
-		AND    C.CART_SQ NOT IN (SELECT A.CART_SQ
-		                         FROM   (SELECT CART_SQ
-		                                      , ROW_NUMBER() OVER() AS RNUM
-										 FROM   TB_CART
-										 WHERE  CART_GB = 'G026_BC'
-										 <if test="custNo != null and custNo > 0">
-										 AND    CUST_NO = #{custNo}
-										 </if>
-										 <if test="custNo == null or custNo == 0">
-										 AND    CUST_NO = 0
-										 AND    JSESSION_ID = #{jsessionId}
-										 </if>
-										 ORDER  BY REG_DT DESC
-										 LIMIT  100 ) A
-		                         WHERE   A.RNUM BETWEEN 1 AND 100 )
+		WHERE  C.CART_SQ IN
+		<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+		</foreach>
 	</delete>
 
-	<!-- 장바구니에 없는 장바구니 상세 데이터 삭제 -->
-	<delete id="deleteCartDetailFromEmptyCart">
-		/* TsfCart.deleteCartDetailFromEmptyCart : 장바구니에 없는 장바구니 상세 데이터 삭제 */
+	<!-- 최근 등록된 상품 100개를 제외한 장바구니 상세 제거 -->
+	<delete id="deleteOldCartDetail" parameterType="Cart">
+		/* TsfCart.deleteOldCartDetail : 최근 등록된 상품 100개를 제외한 장바구니 상세 제거 */
 		DELETE FROM TB_CART_DETAIL CD
-		WHERE  CD.CART_SQ NOT IN (SELECT CA.CART_SQ
-		                          FROM   TB_CART CA
-		                          WHERE  1=1)
-		                          /* AND    CA.REG_DT > DATE_ADD(NOW(), INTERVAL -30 DAY)) */		/* DeadLock 발생으로 날짜 조건 추가(1달 이상되지 않은 장바구니 마스터에 있는 정보 제외 전체 삭제) */
+		WHERE  CD.CART_SQ IN
+		<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+		</foreach>
 	</delete>
-	
+
 	<!-- 2021.05.10 주문완료 주문번호로 장바구니정보 삭제 -->
 	<delete id="deleteCartOrdNo" parameterType="Cart">
 		/* TsfCart.deleteCartOrdNo : 주문완료 주문번호로 장바구니정보 삭제 */
@@ -1214,7 +1216,7 @@
 			WHERE  ORD_NO = #{ordNo}
 		)
 	</delete>
-	
+
 	<!-- 2021.05.10 주문완료 주문번호로 장바구니상세정보 삭제 -->
 	<delete id="deleteCartDetailOrdNo"  parameterType="Cart">
 		/* TsfCart.deleteCartDetailOrdNo : 주문완료 주문번호로 장바구니상세정보 삭제 */

+ 15 - 2
src/main/webapp/ux/style24_link.js

@@ -1576,15 +1576,28 @@ function sendSns(sns, url, txt, media, description)
 	var _description = encodeURIComponent(description);
 	
 	// _url = location.protocol + _url.replaceAll('#enp_mbris','') + '&share=Y'
+
 	_url = location.protocol + encodeURIComponent(url);
 
 	switch(sns)
 	{
 		case 'facebook':
-			window.open('http://www.facebook.com/sharer/sharer.php?u=' + _url, "_blank", 'width=600,height=400,resizable=yes,scrollbars=yes');
+			var faceUrl = 'http://www.facebook.com/sharer/sharer.php?u=';
+
+			if (_isApp != null && _isApp == 'true') {
+				location.href = 'public://?link=' + faceUrl + _url;
+			} else {
+				window.open(faceUrl + _url, "_blank", 'width=600,height=400,resizable=yes,scrollbars=yes');
+			}
 			break;
 		case 'twitter':
-			window.open('http://twitter.com/intent/tweet?text=' + _txt + '&url=' + _url, "_blank", 'width=600,height=400,resizable=yes,scrollbars=yes');
+			var twitUrl = 'http://twitter.com/intent/tweet?text=';
+
+			if (_isApp != null && _isApp == 'true') {
+				location.href = 'public://?link=' + twitUrl + _txt;
+			} else {
+				window.open(faceUrl + _txt + '&url=' + _url, "_blank", 'width=600,height=400,resizable=yes,scrollbars=yes');
+			}
 			break;
 		default:
 			mcxDialog.alert('지원하지 않는 SNS입니다.');