Преглед на файлове

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.core into develop

jsshin преди 5 години
родител
ревизия
6440bb101b

+ 44 - 0
src/main/java/com/style24/core/biz/dao/TscFreegiftDao.java

@@ -0,0 +1,44 @@
+package com.style24.core.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Order;
+
+/**
+ * 사은품관리 Dao
+ *
+ * @author card007
+ * @since 2021. 01. 25
+ */
+@ShopDs
+public interface TscFreegiftDao {
+	
+	/**
+	 * 사은품 : 1차조건 적용된 사음품 정보, 상품 금액 조회
+	 *
+	 * @param Order
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */	
+	Collection<Order> getFreeGiftGoodsApplyAmt(Order order);
+	
+	/**
+	 * 사은품 : 2차조건 적용된 사은품상품금액 구간정보조회
+	 *
+	 * @param Order
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */	
+	Collection<Order> getFreeGiftGoodsApplySection(Order order);
+	
+	/**
+	 * 사은품 : 3차조건 적용된 구간정보의 사은품정보조회
+	 *
+	 * @param Order
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */	
+	Collection<Order> getFreeGiftGoodsApplyVal(Order order);
+	
+}

+ 9 - 9
src/main/java/com/style24/core/biz/dao/TscOrderDao.java

@@ -396,15 +396,6 @@ public interface TscOrderDao {
 	 */	
 	int getGiftcardInfo(Order order);
 	
-	/**
-	 * 즉시할인 적용 상품 조회
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2021. 02. 02
-	 */	
-	Collection<Order> getCpn1ApplyGoodsList(Order order);
-	
 	/**
 	 * 상품쿠폰, 장바구니쿠폰 적용 상품 조회
 	 *
@@ -422,4 +413,13 @@ public interface TscOrderDao {
 	 * @since 2021. 02. 02
 	 */	
 	int getDailyDeliveryZoneInfo(Order order);
+
+	/**
+	 * 마이페이지 주문 정보 조회
+	 *
+	 * @param Order
+	 * @author card007
+	 * @since 2021. 02. 04
+	 */
+	Collection<Order> getOrderListForMypage(Order order);
 }

+ 91 - 0
src/main/java/com/style24/core/biz/service/TscFreegiftService.java

@@ -0,0 +1,91 @@
+package com.style24.core.biz.service;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+
+import com.style24.core.biz.dao.TscFreegiftDao;
+import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.Order;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 사은품관리 Service
+ *
+ * @author jsh77b
+ * @since 2020. 11. 16
+ */
+@Service
+@Slf4j
+public class TscFreegiftService {
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private Environment env;
+
+	@Autowired
+	private TscFreegiftDao freegiftDao;
+	
+	/**
+	 * 사은품정보 조회
+	 * @param Order
+	 * @return Order
+	 * @author jsh77b
+	 * @since 2020. 12. 16
+	 */
+	public Collection<Order> getOrderFreegift(Order order) {
+		
+		Collection<Order> freegiftList = new ArrayList<Order>();
+		
+		// 1. 장바구니 담긴 상품으로 적용된 사은품 프로모션 정보 조회 (with 상품금액)
+		Collection<Order> fregiftGoodsApplyAmtList = freegiftDao.getFreeGiftGoodsApplyAmt(order);
+		
+		int[] freegiftSqArr = new int[fregiftGoodsApplyAmtList.size()];
+		
+		int i= 0;
+		
+		// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
+		for (Order fregiftGoodsApplyAmt : fregiftGoodsApplyAmtList) {
+			freegiftSqArr[i] = fregiftGoodsApplyAmt.getFreegiftSq();
+		}
+		
+		order.setFreegiftSqArr(freegiftSqArr);
+		
+		// 2. 사은품 적용구간 정보 조회
+		Collection<Order> freegiftGoodsApplySectionList = freegiftDao.getFreeGiftGoodsApplySection(order);
+		
+		int[] freegiftSectionSqArr = new int[fregiftGoodsApplyAmtList.size()];
+		
+		// 사은품시퀀스(FREEGIFT_SQ), 사은품시퀀스합계금액(FREEGIFT_AMT)
+		for (Order fregiftGoodsApplyAmt : fregiftGoodsApplyAmtList) {
+			
+			int freegiftAmt = fregiftGoodsApplyAmt.getFreegiftAmt();
+			int freegiftSq = fregiftGoodsApplyAmt.getFreegiftSq();
+			
+			// 사은풐구간시퀀스(FREEGIFT_SECTION_SQ, 사은품시퀀스(FREEGIFT_SQ), 사은풐구간금액(SECTION_VAL)
+			for (Order freegiftGoodsApplySection : freegiftGoodsApplySectionList) {
+				int freegiftSectionSq = freegiftGoodsApplySection.getFreegiftSectionSq();
+				int sectionVal = freegiftGoodsApplySection.getSectionVal();
+				
+				
+				
+			}
+		}
+		
+		
+		
+		
+		
+		
+		
+		return freegiftList;
+	}
+	
+
+}

+ 56 - 9
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -1,5 +1,6 @@
 package com.style24.core.biz.service;
 
+import java.util.ArrayList;
 import java.util.Collection;
 
 import org.apache.commons.lang3.StringUtils;
@@ -623,36 +624,82 @@ public class TscOrderService {
 	}
 	
 	/**
-	 * 즉시할인 적용 상품 조회
+	 * 상품쿠폰, 장바구니쿠폰 적용 상품 조회
 	 *
 	 * @param Order
 	 * @author jsh77b
 	 * @since 2021. 02. 02
 	 */	
-	public Collection<Order> getCpn1ApplyGoodsList(Order order) {
-		return orderDao.getCpn1ApplyGoodsList(order);
+	public Collection<Order> getGoodsCartCpnApplyGoodsList(Order order) {
+		return orderDao.getGoodsCartCpnApplyGoodsList(order);
 	}
 	
 	/**
-	 * 상품쿠폰, 장바구니쿠폰 적용 상품 조회
+	 * 총알배송 가능 지역 체크
 	 *
 	 * @param Order
 	 * @author jsh77b
 	 * @since 2021. 02. 02
 	 */	
-	public Collection<Order> getGoodsCartCpnApplyGoodsList(Order order) {
-		return orderDao.getGoodsCartCpnApplyGoodsList(order);
+	public int getDailyDeliveryZoneInfo(Order order) {
+		return orderDao.getDailyDeliveryZoneInfo(order);
 	}
 	
 	/**
-	 * 총알배송 가능 지역 체크
+	 * 배송단위별 장바구니 상품 건수 조회
 	 *
 	 * @param Order
 	 * @author jsh77b
 	 * @since 2021. 02. 02
 	 */	
-	public int getDailyDeliveryZoneInfo(Order order) {
-		return orderDao.getDailyDeliveryZoneInfo(order);
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	public Order getCartDelvGoodsCntList(Collection<Order> cartGoodsList) {
+		
+		// 1. 장바구니 상품 배송단위별 건수 체크 로직 (자사:총알배송, 자사:일반배송, 입점업체, 예약배송)
+		Order delvOrder = new Order();
+		
+		int wmsCnt 	= 0;
+		int resCnt 	= 0;
+		int delvCnt = 0;
+		
+		Collection<Order> wmsCartList = (Collection<Order>)new ArrayList();
+		Collection<Order> resCartList = (Collection<Order>)new ArrayList();
+		Collection<Order> delvCartList = (Collection<Order>)new ArrayList();
+		
+		for (Order order : cartGoodsList) {			
+			
+			// 1.1 배송정책별 상품 구분
+			if (order.getDelvFeeCd().equals("WMS")) {
+				wmsCartList.add(order);
+				wmsCnt++;
+			} 
+			else if (order.getDelvFeeCd().equals("RES")) {
+				resCartList.add(order);
+				resCnt++;
+			} 
+			else {
+				delvCartList.add(order);
+				delvCnt++;
+			}			
+		}
+		
+		delvOrder.setWmsCnt(wmsCnt);
+		delvOrder.setResCnt(resCnt);
+		delvOrder.setDelvCnt(delvCnt);
+		delvOrder.setWmsCartList(wmsCartList);
+		delvOrder.setResCartList(resCartList);
+		delvOrder.setDelvCartList(delvCartList);
+				
+		return delvOrder;
 	}
 
+	/**
+	 * 마이페이지 주문 정보 조회
+	 * 
+	 * @param Order
+	 * @author card007
+	 * @since 2021. 02. 04
+	 */
+	public Collection<Order> getOrderListForMypage(Order order) { return orderDao.getOrderListForMypage(order); }
+
 }

+ 64 - 2
src/main/java/com/style24/core/support/env/TscConstants.java

@@ -548,11 +548,73 @@ public class TscConstants {
 //	}
 //
 	// 상품 타입
-	public enum GOODS_TYPE {
+	public enum GoodsType {
 		NORMAL("G056_N"), DEAL("G056_D"), SET("G056_S");
 
 		private String value;
-		private GOODS_TYPE(String value) {
+		private GoodsType(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+	// 상품 상태
+	public enum GoodsStat {
+		SOLDOUT("G008_70"),	// 일시 품절
+		APPR("G008_90");		// 승인완료
+
+		private String value;
+		private GoodsStat(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+	// 상품 구분
+	public enum GoodsGb {
+		BASE("G800_10"),		// 기본상품
+		APPLY("G800_20"),		// 적용상품
+		NONE("G800_30"),		// 제외상품
+		ALL("G800_40");			// ALL
+
+		private String value;
+		private GoodsGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+	// 할인 적용 구분
+	public enum ApplyGb {
+		QTY("G810_10"),				// 수량
+		AMT("G810_20");				// 금액
+
+		private String value;
+		private ApplyGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+	// 할인 방식 구분
+	public enum DcWay {
+		AMT("G240_10"),				// 할인금액
+		RATE("G240_11");				// 할인율
+
+		private String value;
+		private DcWay(String value) {
 			this.value = value;
 		}
 

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

@@ -1,5 +1,8 @@
 package com.style24.persistence.domain;
 
+import java.util.Collection;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
@@ -128,6 +131,7 @@ public class Order extends TscBaseDomain {
 	private String imgPath1;
 	private String sysImgNm;
 	private String brandCd;
+	private String optCd;
 	private String optCd1;
 	private String optCd2;
 	private String goodsTypeNm;
@@ -387,4 +391,43 @@ public class Order extends TscBaseDomain {
 	private int exchangeOrdDtlItemSq;
 	private String wdGb;
 	private int addPayCost;
+	
+	// 주문서
+	private int wmsCnt;
+	private int resCnt;
+	private int delvCnt;
+	
+	Collection<Order> wmsCartList;
+	Collection<Order> resCartList;
+	Collection<Order> delvCartList;
+	
+	private int[] freegiftSqArr;
+	private int[] freegiftSectionSqArr;
+	int freegiftAmt;
+	int freegiftSectionSq;
+
+	// 장바구니
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] cartSqArr;		// 장바구니 일련번호 배열 (일시품절제외 조회)
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] cartSqs;			// 장바구니 일련번호 배열 (일시품절포함 조회)
+	private int cartSq;				// 장바구니 일련번호
+	private int pcCurrPrice;		// PC 즉시할인 적용가
+	private int goodsQty;			// 장바구니 등록 수량
+	private String jsessionId;		// SessionId
+	private List<Integer> applyMoreBetterAmtList;	// 다다익선 금액 적용상품 리스트
+	private List<Integer> applyMoreBetterQtyList;	// 다다익선 수량 적용상품 리스트
+
+	// 다다익선
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] tmtbSqs;			// 다다익선 일련번호
+	private int applyAmtSectionVal;					// 적용 조건
+	private int applyQtySectionVal;					// 적용 조건
+	private int sectionVal;							// 다다익선 조건
+	private int tmtbSumQty;							// 장바구니 수량 다다익선 총계
+	private int tmtbSumAmt;							// 장바구니 금액 다다익선 총계
+	private String goodsGb;
+	private String applyGb;							// 다다익선 할인 기준
+	private String applyQtySectionYn;				// 다다익선 적용 여부
+	private String applyAmtSectionYn;				// 다다익선 적용 여부
 }

+ 136 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscFreegift.xml

@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.core.biz.dao.TsfFreegiftDao">
+
+	<!-- 사은품 : 1차조건 적용된 사음품 정보, 상품 금액 조회 -->
+	<select id="getFreeGiftGoodsApplyAmt" parameterType="Order" resultType="Order">
+		/* TsfOrder.getFreeGiftGoodsApplyAmt */
+		WITH GOODS_DATA AS (
+			SELECT CA.GOODS_CD
+			     , G.SUPPLY_COMP_CD
+			     , G.BRAND_CD
+			     , CA.GOODS_QTY 
+			     , FN_GET_APPLY_CPN1_PRICE(CA.GOODS_CD, 'P') AS CURR_PRICE -- 즉시할인 쿠폰 적용가
+			     , OP.ADD_PRICE -- 옵션가
+			     , G.GOODS_TYPE
+			FROM   TB_CART CA
+			INNER  JOIN TB_CART_DETAIL CD
+			ON     CA.CART_SQ = CD.CART_SQ
+			INNER  JOIN TB_GOODS G
+			ON     CA.GOODS_CD = G.GOODS_CD
+			LEFT   OUTER JOIN TB_OPTION OP
+			ON     G.GOODS_CD = OP.GOODS_CD
+			AND    CD.OPT_CD = OP.OPT_CD
+			WHERE  1=1
+			<if test="cartSqArr != null and cartSqArr ==''">
+			AND    CA.CART_SQ IN 
+				<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+					#{item}
+				</foreach>
+			</if>
+		)
+		SELECT FGG.FREEGIFT_SQ
+		     , SUM(IFNULL((FGG.CURR_PRICE + FGG.ADD_PRICE) * FGG.GOODS_QTY, 0)) FREEGIFT_AMT
+		FROM   TB_FREEGIFT FG
+		INNER  JOIN (
+			SELECT FGG.FREEGIFT_SQ
+			     , GD.GOODS_CD
+			     , GD.CURR_PRICE
+			     , GD.ADD_PRICE
+			     , GD.GOODS_QTY
+			FROM   TB_FREEGIFT_GOODS FGG
+			INNER  JOIN GOODS_DATA GD
+			ON     FGG.TARGET_VAL = GD.BRAND_CD
+			WHERE  1=1
+			AND    FGG.GOODS_GB = 'G800_20' -- 적용상품
+			AND    FGG.TARGET_GB= 'G260_10' -- 상품
+			AND    FGG.DEL_YN = 'N'
+			UNION
+			SELECT FGG1.FREEGIFT_SQ
+			     , GD.GOODS_CD
+			     , GD.CURR_PRICE
+			     , GD.ADD_PRICE
+			     , GD.GOODS_QTY
+			FROM   GOODS_DATA GD
+			INNER  JOIN TB_FREEGIFT_GOODS FGG1
+			ON     GD.SUPPLY_COMP_CD = FGG1.TARGET_VAL
+			AND    FGG1.GOODS_GB = 'G800_20' -- 적용상품
+			AND    FGG1.TARGET_GB= 'G260_12' -- 공급처
+			AND    FGG1.DEL_YN = 'N'
+			INNER  JOIN TB_FREEGIFT_GOODS FGG2
+			ON     GD.BRAND_CD = FGG2.TARGET_VAL
+			AND    FGG2.GOODS_GB = 'G800_20' -- 적용상품
+			AND    FGG2.TARGET_GB= 'G260_11' -- 브랜드
+			AND    FGG2.DEL_YN = 'N'
+		) FGG
+		ON     FG.FREEGIFT_SQ = FGG.FREEGIFT_SQ 
+		LEFT   OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY_GOODS
+		ON     FGG.FREEGIFT_SQ = NOT_APPLY_GOODS.FREEGIFT_SQ
+		AND    FGG.GOODS_CD = NOT_APPLY_GOODS.TARGET_VAL 
+		AND    NOT_APPLY_GOODS.TARGET_GB = 'G800_30'
+		WHERE  1=1
+		AND    NOT_APPLY_GOODS.FREEGIFT_SQ IS NULL
+		AND    FG.DEL_YN = 'N'
+		AND    FG.SELF_YN = 'Y'
+		AND    FG.FREEGIFT_STAT = 'G232_11' -- 진행
+		AND    FG.FREEGIFT_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
+		AND    FG.FREEGIFT_EDDT > CURRENT_TIMESTAMP
+		GROUP  BY FGG.FREEGIFT_SQ
+	</select>
+	
+	<!-- 사은품 : 2차조건 적용된 사은품상품금액 구간정보조회 -->
+	<select id="getFreeGiftGoodsApplySection" parameterType="Order" resultType="Order">
+		/* TsfOrder.getFreeGiftGoodsApplySection */
+		SELECT FGS.FREEGIFT_SECTION_SQ
+		     , FGS.FREEGIFT_SQ
+		     , FGS.SECTION_VAL
+		FROM   TB_FREEGIFT_SECTION FGS
+		WHERE  1=1
+		AND    FGS.DEL_YN = 'N'
+		AND    FGS.SECTION_GB = 'G810_10' -- 금액만 처리
+		<if test="freegiftSqArr != null and freegiftSqArr ==''">
+		AND    FGS.FREEGIFT_SQ IN
+			<foreach collection="freegiftSqArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		ORDER  BY FGS.FREEGIFT_SQ
+		     , FGS.SECTION_VAL
+	</select>
+	
+	<!-- 사은품 : 3차조건 적용된 구간정보의 사은품정보조회 -->
+	<select id="getFreeGiftGoodsApplyVal" parameterType="Order" resultType="Order">
+		/* TsfOrder.getFreeGiftGoodsApplyVal */
+		SELECT FGV.FREEGIFT_SECTION_SQ 
+		     , FGV.FREEGIFT_SQ 
+		     , FGV.USE_POINT
+		     , FGV.ITEM_QTY
+		     , FGV.ITEM_CD
+		FROM   TB_FREEGIFT_VAL FGV
+		WHERE  1=1
+		AND    FGV.DEL_YN = 'N'
+		<if test="freegiftSectionSqArr != null and freegiftSectionSqArr ==''">
+		AND    FGV.FREEGIFT_SECTION_SQ IN (
+			<foreach collection="freegiftSectionSqArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+	</select>
+	
+	
+</mapper>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 194 - 296
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1601,67 +1601,90 @@
 	<!-- 장바구니 상품 목록 조회 (업체별 배송단위) -->
 	<select id="getCartGoodsList" parameterType="Order" resultType="Order">
 		/* TsfOrder.getCartGoodsList */
-		SELECT CA.CART_SQ
-			 , CD.CART_DTL_SQ
-			 , BR.BRAND_ENM
-			 , G.GOODS_NM
-			 , CA.GOODS_CD
-			 , CD.ITEM_CD
-			 , OP.OPT_CD
-			 , OP.OPT_CD1
-			 , OP.OPT_CD2
-			 , CA.GOODS_QTY
-			 , G.GOODS_TYPE
-			 , G.LIST_PRICE
-			 , G.CURR_PRICE
-			 , G.GOODS_GB
-			 , G.PRE_PPNT_USABLE_YN
-			 , G.PRE_MPNT_USABLE_YN
-			 , G.MIN_ORD_AMT
-			 , G.MAX_ORD_QTY
-			 , G.DAY_MAX_ORD_QTY
-			 , G.GIFT_PACK_YN
-			 , G.NEW_CUST_ORD_YN
-			 , DFP.SUPPLY_COMP_CD
-			 , CASE WHEN G.SELF_GOODS_YN = 'Y' THEN 'WMS'
-					ELSE DFP.DELV_FEE_CD END AS DELV_FEE_CD
-			 , GRS.DELV_RES_DT
-			 , DFP.MIN_ORD_AMT
-			 , DFP.DELV_FEE
-		  FROM TB_CART CA
-		 INNER JOIN TB_CART_DETAIL CD
-			ON CA.CART_SQ = CD.CART_SQ
-		 INNER JOIN TB_GOODS G
-			ON CA.GOODS_CD = G.GOODS_CD
-		 INNER JOIN TB_OPTION OP
-			ON CD.ITEM_CD = OP.GOODS_CD
-		   AND CD.OPT_CD1 = OP.OPT_CD1
-		   AND CD.OPT_CD2 = OP.OPT_CD2
-		 INNER JOIN TB_DELV_FEE_POLICY DFP
-			ON G.DELV_FEE_CD = DFP.DELV_FEE_CD
-		 INNER JOIN TB_BRAND BR
-			ON G.BRAND_CD = BR.BRAND_CD
-		  LEFT OUTER JOIN TB_GOODS_RES_SELL GRS
-			ON CA.GOODS_CD = GRS.GOODS_CD
-		 WHERE 1 = 1
-		   AND G.GOODS_STAT = 'G008_90'
-		<if test="custNo == 0">
-		   AND CA.CUST_NO = 0
-		   AND CA.JSESSION_ID = #{jsessionId}
-		</if>
-		<if test="custNo != 0">
-		   AND CA.CUST_NO = #{custNo}
-		</if>
-		<if test="cartSqArr != null and cartSqArr ==''">
-		   AND    CA.CART_SQ IN
-			<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
-				#{item}
-			</foreach>
-		</if>
-		 ORDER BY DFP.SUPPLY_COMP_CD
-				, DFP.DELV_FEE_CD
-				, CD.CART_SQ
-				, CD.CART_DTL_SQ
+		SELECT Z.*
+		  FROM (
+			SELECT CA.CART_SQ
+				 , CD.CART_DTL_SQ
+				 , BR.BRAND_ENM
+				 , G.GOODS_NM
+				 , CA.GOODS_CD
+				 , CD.ITEM_CD
+				 , OP.OPT_CD
+				 , OP.OPT_CD1
+				 , OP.OPT_CD2
+				 , CA.GOODS_QTY
+				 , G.GOODS_TYPE
+				 , G.LIST_PRICE
+				 , G.GOODS_GB
+			     , G.GOODS_STAT
+				 , G.PRE_PPNT_USABLE_YN
+				 , G.PRE_MPNT_USABLE_YN
+				 , G.MAX_ORD_QTY
+				 , G.DAY_MAX_ORD_QTY
+				 , G.GIFT_PACK_YN
+				 , G.NEW_CUST_ORD_YN
+				 , DFP.SUPPLY_COMP_CD
+				 , CASE WHEN G.SELF_GOODS_YN = 'Y' THEN 'WMS'
+						ELSE DFP.DELV_FEE_CD END AS DELV_FEE_CD
+	  			 , CASE WHEN GRS.DELV_RES_DT IS NOT NULL THEN 'RES'
+		                WHEN G.SELF_GOODS_YN = 'Y' THEN 'WMS'
+	  			        ELSE DFP.DELV_FEE_CD END AS RES_DELV_FEE_CD
+				 , GRS.DELV_RES_DT
+				 , DFP.MIN_ORD_AMT
+				 , DFP.DELV_FEE
+				 , VS.CURR_STOCK_QTY
+				 , FN_GET_APPLY_CPN1_PRICE(CA.GOODS_CD, #{frontGb}) AS CURR_PRICE
+				 , IFNULL(OP.ADD_PRICE, 0) AS OPT_ADD_PRICE
+			  FROM TB_CART CA
+			 INNER JOIN TB_CART_DETAIL CD
+				ON CA.CART_SQ = CD.CART_SQ
+			 INNER JOIN TB_GOODS G
+				ON CA.GOODS_CD = G.GOODS_CD
+			 INNER JOIN TB_OPTION OP
+				ON CD.ITEM_CD = OP.GOODS_CD
+			   AND CD.OPT_CD1 = OP.OPT_CD1
+			   AND CD.OPT_CD2 = OP.OPT_CD2
+			 INNER JOIN TB_DELV_FEE_POLICY DFP
+				ON G.DELV_FEE_CD = DFP.DELV_FEE_CD
+			 INNER JOIN TB_BRAND BR
+				ON G.BRAND_CD = BR.BRAND_CD
+			  LEFT OUTER JOIN VW_STOCK VS
+				ON CD.ITEM_CD = VS.GOODS_CD
+			   AND CD.OPT_CD = VS.OPT_CD
+			  LEFT OUTER JOIN TB_GOODS_RES_SELL GRS
+				ON CA.GOODS_CD = GRS.GOODS_CD
+			 WHERE 1 = 1
+			<if test="custNo == 0">
+			   AND CA.CUST_NO = 0
+			   AND CA.JSESSION_ID = #{jsessionId}
+			</if>
+			<if test="custNo != 0">
+			   AND CA.CUST_NO = #{custNo}
+			</if>
+			<choose>
+				<when test="cartSqArr != null and cartSqArr.length > 0">		<!-- 주문서 -->
+			   AND G.GOODS_STAT = 'G008_90'
+			   AND CA.CART_SQ IN
+					<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+						#{item}
+					</foreach>
+				</when>
+				<when test="cartSqs != null and cartSqs.length > 0">			<!-- 장바구니 cartSq 존재할 경우 -->
+			   AND G.GOODS_STAT IN ('G008_90', 'G008_70')
+			   AND CA.CART_SQ IN
+					<foreach collection="cartSqs" item="item" index="index"  open="(" close=")" separator=",">
+						#{item}
+					</foreach>
+				</when>
+				<otherwise>														<!-- 장바구니 cartSq 없는 경우 -->
+			   AND G.GOODS_STAT IN ('G008_90', 'G008_70')
+				</otherwise>
+			</choose>
+		) Z
+		 ORDER BY Z.SUPPLY_COMP_CD
+				, Z.DELV_FEE_CD
+				, Z.CART_SQ
+				, Z.CART_DTL_SQ
 	</select>
 	
 	<!-- 고객정보 조회 -->
@@ -1673,6 +1696,7 @@
 		  FROM TB_CUSTOMER CU
 		 WHERE 1=1
 		   AND CU.CUST_NO = #{custNo}
+		 LIMIT 1
 	</select>
 	
 	<!-- 배송지정보 조회 -->
@@ -1706,7 +1730,7 @@
 	<!-- 상품권정보 조회 -->
 	<select id="getGiftcardInfo" parameterType="Order" resultType="int">
 		/* TsfOrder.getGiftcardInfo */
-		SELECT IFNULL(SUM(CG.RM_GFCD_AMT)) AS RM_GFCD_AMT
+		SELECT IFNULL(SUM(CG.RM_GFCD_AMT), 0) AS RM_GFCD_AMT
 		  FROM TB_CUST_GIFTCARD CG
 		 WHERE 1=1
 		   AND CG.CUST_NO = #{custNo}
@@ -1723,165 +1747,19 @@
 		   AND ZIP_NO = #{zipNo}
 	</select>
 	
-	<!-- 즉시할인 적용 상품 조회 -->
-	<select id="getCpn1ApplyGoodsList" parameterType="Order" resultType="Order">
-		/* TsfOrder.getCpn1ApplyGoodsList */
-		WITH GOODS_DATA AS (
-			SELECT CA.GOODS_CD
-			     , G.SUPPLY_COMP_CD
-			     , G.BRAND_CD
-			     , CA.GOODS_QTY 
-			     , G.CURR_PRICE
-			     , OP.ADD_PRICE 
-			     , G.GOODS_TYPE
-			FROM   TB_CART CA
-			INNER  JOIN TB_CART_DETAIL CD
-			ON     CA.CART_SQ = CD.CART_SQ
-			INNER  JOIN TB_GOODS G
-			ON     CA.GOODS_CD = G.GOODS_CD
-			LEFT   OUTER JOIN TB_OPTION OP
-			ON     G.GOODS_CD = OP.GOODS_CD
-			AND    CD.OPT_CD = OP.OPT_CD
-			WHERE  1=1
-			AND    G.GOODS_STAT = 'G008_90' -- 승인완료
-			<if test="cartSqArr != null and cartSqArr ==''">
-			AND    CA.CART_SQ IN 
-				<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
-					#{item}
-				</foreach>
-			</if>
-		)
-		SELECT Z.GOODS_CD
-		     , Z.CURR_PRICE
-		     , Z.ADD_PRICE
-		     , Z.GOODS_QTY
-		     , CP.CPN_ID
-		     , CP.CPN_NM
-		     , CP.DC_WAY
-		     , CP.DC_PVAL
-		     , CP.DC_MVAL
-		     , CP.DC_AVAL
-		     , CP.MAX_DC_AMT
-		     , CP.BUY_LIMIT_AMT 
-		     , CASE WHEN CP.DC_WAY = 'G240_11' 
-		            THEN (Z.CURR_PRICE * CP.DC_PVAL) / 100 
-		            ELSE CP.DC_PVAL
-		            END  PC_CURR_PRICE
-		FROM   TB_COUPON CP
-		INNER  JOIN TB_COUPON_CUST_GBN CGB
-		ON     CP.CPN_ID = CGB.CPN_ID
-		AND    CGB.USABLE_CUST_GB IN ('G100_10')
-		INNER  JOIN TB_COUPON_CUST_GRADE CGR
-		ON     CP.CPN_ID = CGR.CPN_ID
-		AND    CGR.USABLE_CUST_GRADE IN ('G110_40', 'G110_50')
-		INNER  JOIN (
-			SELECT CR.CPN_ID
-			     , GD.GOODS_CD
-			     , GD.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			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.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			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.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			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'
-		) Z
-		ON     Z.CPN_ID = CP.CPN_ID
-		WHERE  1=1
-		AND    CP.SITE_CD = '10'
-		AND    CP.CPN_TYPE = 'G230_10' -- 즉시할인
-		AND    CP.DOWN_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
-		AND    CP.DOWN_EDDT > CURRENT_TIMESTAMP
-	</select>
-	
 	<!-- 상품쿠폰, 장바구니쿠폰 적용 상품 조회 -->
 	<select id="getGoodsCartCpnApplyGoodsList" parameterType="Order" resultType="Order">
 		/* TsfOrder.getGoodsCartCpnApplyGoodsList */
 		WITH GOODS_DATA AS (
 			SELECT CA.GOODS_CD
 			     , G.SUPPLY_COMP_CD
-			     , G.BRAND_CD
-			     , CA.GOODS_QTY 
-			     , G.CURR_PRICE
-			     , OP.ADD_PRICE 
-			     , G.GOODS_TYPE
+			     , G.BRAND_CD 
 			FROM   TB_CART CA
 			INNER  JOIN TB_CART_DETAIL CD
 			ON     CA.CART_SQ = CD.CART_SQ
 			INNER  JOIN TB_GOODS G
 			ON     CA.GOODS_CD = G.GOODS_CD
-			LEFT   OUTER JOIN TB_OPTION OP
-			ON     G.GOODS_CD = OP.GOODS_CD
-			AND    CD.OPT_CD = OP.OPT_CD
 			WHERE  1=1
-			AND    G.GOODS_STAT = 'G008_90' -- 승인완료
 			<if test="cartSqArr != null and cartSqArr ==''">
 			AND    CA.CART_SQ IN 
 				<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
@@ -1890,9 +1768,6 @@
 			</if>
 		)
 		SELECT Z.GOODS_CD
-		     , Z.CURR_PRICE
-		     , Z.ADD_PRICE
-		     , Z.GOODS_QTY
 		     , CP.CPN_ID
 		     , CP.CPN_NM
 		     , CP.DC_WAY
@@ -1900,11 +1775,7 @@
 		     , CP.DC_MVAL
 		     , CP.DC_AVAL
 		     , CP.MAX_DC_AMT
-		     , CP.BUY_LIMIT_AMT 
-		     , CASE WHEN CP.DC_WAY = 'G240_11' 
-		            THEN (Z.CURR_PRICE * CP.DC_PVAL) / 100 
-		            ELSE CP.DC_PVAL
-		            END  PC_CURR_PRICE
+		     , CP.BUY_LIMIT_AMT
 		FROM   TB_COUPON CP
 		INNER  JOIN TB_COUPON_CUST_GBN CGB
 		ON     CP.CPN_ID = CGB.CPN_ID
@@ -1913,83 +1784,79 @@
 		ON     CP.CPN_ID = CGR.CPN_ID
 		AND    CGR.USABLE_CUST_GRADE IN ('G110_40', 'G110_50')
 		INNER  JOIN (
-			SELECT CR.CPN_ID
-			     , GD.GOODS_CD
-			     , GD.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			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.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			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.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			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'
+				SELECT X.*
+				FROM (
+					SELECT CR.CPN_ID
+					     , GD.GOODS_CD
+					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
+					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
+					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
 		INNER  JOIN TB_CUST_COUPON CCP
@@ -1997,10 +1864,41 @@
 		WHERE  1=1
 		AND    CP.SITE_CD = '10'
 		AND    CP.CPN_TYPE IN ('G230_11', 'G230_20') -- 상품쿠폰, 장바구니쿠폰
-		AND    CP.DOWN_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
-		AND    CP.DOWN_EDDT > CURRENT_TIMESTAMP
+		AND    CP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
+		AND    CP.AVAIL_EDDT > CURRENT_TIMESTAMP
+		ORDER  BY Z.GOODS_CD
+		        , CP.CPN_ID
 	</select>
 
+	<!-- 마이페이지 주문 목록 조회 -->
+	<select id="getOrderListForMypage" parameterType="Order" resultType="Order">
+		SELECT O.ORD_NO
+			 , OD.ORD_DTL_NO
+			 , OD.ORD_EXCH_GB
+			 , OD.GOODS_CD
+			 , ODI.OPT_CD
+			 , ODI.OPT_CD1
+			 , ODI.OPT_CD2
+			 , OD.ORD_DTL_STAT
+			 , OD.ORD_QTY
+			 , OD.ORD_AMT
+			 , OD.SAVE_PNT_AMT
+			 , OD.SHIP_COMP_CD
+			 , OD.INVOICE_NO
+			 , OD.SUPPLY_COMP_CD
+			 , OD.DELV_FEE_CD
+		  FROM TB_ORDER O
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON O.ORD_NO = OD.ORD_NO
+		   AND OD.ORD_DTL_STAT <![CDATA[<>]]> 'G013_97'
+		 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		    ON OD.ORD_NO = ODI.ORD_NO
+		   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		 WHERE O.CUST_NO = #{custNo}
+		 ORDER BY OD.SUPPLY_COMP_CD
+				, OD.DELV_FEE_CD
+				, OD.ORD_NO DESC
+	</select>
 </mapper>