Ver código fonte

Merge remote-tracking branch 'origin/order' into xodud1202

xodud1202 5 anos atrás
pai
commit
13cdddbdb4

+ 2 - 0
pom.xml

@@ -58,6 +58,7 @@
 		</dependency>
 		<!-- \\\ WEB-INF lib -->
 	</dependencies>
+	
 	<build>
 		<finalName>${project.name}</finalName>
 		<resources>
@@ -75,4 +76,5 @@
 			</resource>
 		</resources>
 	</build>
+	
 </project>

+ 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);
+	
+}

+ 0 - 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);
-	
 	/**
 	 * 상품쿠폰, 장바구니쿠폰 적용 상품 조회
 	 *

+ 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;
+	}
+	
+
+}

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

@@ -623,17 +623,6 @@ public class TscOrderService {
 		return orderDao.getGiftcardInfo(order);
 	}
 	
-	/**
-	 * 즉시할인 적용 상품 조회
-	 *
-	 * @param Order
-	 * @author jsh77b
-	 * @since 2021. 02. 02
-	 */	
-	public Collection<Order> getCpn1ApplyGoodsList(Order order) {
-		return orderDao.getCpn1ApplyGoodsList(order);
-	}
-	
 	/**
 	 * 상품쿠폰, 장바구니쿠폰 적용 상품 조회
 	 *
@@ -663,10 +652,11 @@ public class TscOrderService {
 	 * @author jsh77b
 	 * @since 2021. 02. 02
 	 */	
-	public Collection<Order> getCartDelvGoodsCntList(Collection<Order> cartGoodsList) {
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	public Order getCartDelvGoodsCntList(Collection<Order> cartGoodsList) {
 		
 		// 1. 장바구니 상품 배송단위별 건수 체크 로직 (자사:총알배송, 자사:일반배송, 입점업체, 예약배송)
-		String delvFeeCdTemp = "";
+		Order delvOrder = new Order();
 		
 		int wmsCnt 	= 0;
 		int resCnt 	= 0;
@@ -681,16 +671,26 @@ public class TscOrderService {
 			// 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++;
 			}			
 		}
 		
-		return cartGoodsList;
+		delvOrder.setWmsCnt(wmsCnt);
+		delvOrder.setResCnt(resCnt);
+		delvOrder.setDelvCnt(delvCnt);
+		delvOrder.setWmsCartList(wmsCartList);
+		delvOrder.setResCartList(resCartList);
+		delvOrder.setDelvCartList(delvCartList);
+				
+		return delvOrder;
 	}
 
 	/**

+ 107 - 48
src/main/java/com/style24/persistence/domain/Customer.java

@@ -1,6 +1,8 @@
 package com.style24.persistence.domain;
 
+
 import com.style24.core.support.session.TscSession;
+import com.style24.core.support.util.CryptoUtils;
 import com.style24.core.support.util.MaskingUtils;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
@@ -16,59 +18,105 @@ import lombok.Data;
 @Data
 public class Customer extends TscBaseDomain {
 
-	private Integer custNo;			// 고객번호
-	private String custId;			// 고객ID(탈퇴 시 "secede_cust"로 처리)
-	private String custNm;			// 고객명_암호화
-	private String passwd;			// 비밀번호_암호화
-	private String encodedPasswd;	// 암호화된 비밀번호
-	private String birthYmd;		// 생년월일(탈퇴 시 NULL로 처리)
-	private String birthSm;			// 양력/음력(S:양력,L:음력). 탈퇴 시 NULL로 처리
-	private String sexGb;			// 성별구분(공통코드G007). 탈퇴 시 NULL로 처리
-	private String cellPhnno;		// 휴대전화번호(탈퇴 시 NULL로 처리)
-	private String appAgreeYn;		// 앱푸쉬수신동의여부
-	private String appAgreeDt;		// 앱푸쉬수신동의일시
-	private String smsAgreeYn;		// SMS수신동의여부
-	private String smsAgreeDt;		// SMS수신동의일시
-	private String email;			// 이메일(탈퇴 시 NULL로 처리)
-	private String emailAgreeYn;	// 이메일수신동의여부
-	private String emailAgreeDt;	// 이메일수신동의일시
-	private String homeZipcode;		// 자택우편번호(탈퇴 시 NULL로 처리)
-	private String homeBaseAddr;	// 자택기본주소(탈퇴 시 NULL로 처리)
-	private String homeDtlAddr;		// 자택상세주소(탈퇴 시 NULL로 처리)
-	private String siteCd;			// 가입사이트코드(공통코드G000)
-	private String frontGb;			// 프론트구분(P:PC, M:모바일, A:앱)
-	private String afLinkCd;		// 제휴링크코드
-	private String custGb;			// 회원구분(공통코드G100)
-	private String custGrade;		// 회원등급(공통코드G110)
-	private String joinDt;			// 가입일시
-	private String foreignerYn;		// 외국인여부(외국인:Y)
-	private String custStat;		// 고객상태(공통코드G104)
-	private String passwdChgDt;		// 비밀번호변경일시
-	private String tempPasswdYn;	// 임시비밀번호여부
-	private String loginLdt;		// 최종로그인일시
-	private String nvJoinId;		// 네이버가입ID
-	private String nvAccessToken;	// 네이버접속토큰
-	private String nvJoinDt;		// 네이버가입일시
-	private String kkJoinId;		// 카카오가입ID
-	private String kkAccessToken;	// 카카오접속토큰
-	private String kkJoinDt;		// 카카오가입일시
-	private String ysJoinId;		// YES24가입ID
-	private String ysAccessToken;	// YES24접속토큰
-	private String ysJoinDt;		// YES24가입일시
-	private String ci;				// 인증CI
-	private String authDt;			// 인증일시
-	private String managedRsn;		// 관리대상지정사유(공통코드G120)
-	private String managedDtlRsn;	// 관리대상지정상세사유
-	private String managedDt;		// 관리대상지정일시
-	private String secedeRsn;		// 탈퇴사유(공통코드G111)
-	private String secedeDtlRsn;	// 탈퇴상세사유
-	private String secedeDt;		// 탈퇴일시
-	private String dormantDt;		// 휴면일시
+	private Integer custNo;				// 고객번호
+	private String custId;				// 고객ID(탈퇴 시 "secede_cust"로 처리)
+	private String custNm;				// 고객명_암호화
+	private String encodedCustNm;		// 암호화된 고객명
+	private String passwd;				// 비밀번호_암호화
+	private String encodedPasswd;		// 암호화된 비밀번호
+	private String birthYmd;			// 생년월일(탈퇴 시 NULL로 처리)
+	private String encodedBirthYmd; 	// 암호화된 생년월일
+	private String birthSm;				// 양력/음력(S:양력,L:음력). 탈퇴 시 NULL로 처리
+	private String sexGb;				// 성별구분(공통코드G007). 탈퇴 시 NULL로 처리
+	private String encodedSexGb;		// 암호화된 성별구분
+	private String cellPhnno;			// 휴대전화번호(탈퇴 시 NULL로 처리)
+	private String encodedCellPhnno;	// 암호화된 휴대전화번호
+	private String appAgreeYn;			// 앱푸쉬수신동의여부
+	private String appAgreeDt;			// 앱푸쉬수신동의일시
+	private String smsAgreeYn;			// SMS수신동의여부
+	private String smsAgreeDt;			// SMS수신동의일시
+	private String email;				// 이메일(탈퇴 시 NULL로 처리)
+	private String encodedEmail;		// 암호화된 이메일
+	private String emailAgreeYn;		// 이메일수신동의여부
+	private String emailAgreeDt;		// 이메일수신동의일시
+	private String homeZipcode;			// 자택우편번호(탈퇴 시 NULL로 처리)
+	private String homeBaseAddr;		// 자택기본주소(탈퇴 시 NULL로 처리)
+	private String encodedHomeBaseAddr; // 암호화된 자택기본주소
+	private String homeDtlAddr;			// 자택상세주소(탈퇴 시 NULL로 처리)
+	private String encodedHomeDtlAddr;	// 암호화된 자택상세주소(탈퇴 시 NULL로 처리)
+	private String siteCd;				// 가입사이트코드(공통코드G000)
+	private String frontGb;				// 프론트구분(P:PC, M:모바일, A:앱)
+	private String afLinkCd;			// 제휴링크코드
+	private String custGb;				// 회원구분(공통코드G100)
+	private String custGrade;			// 회원등급(공통코드G110)
+	private String joinDt;				// 가입일시
+	private String foreignerYn;			// 외국인여부(외국인:Y)
+	private String custStat;			// 고객상태(공통코드G104)
+	private String passwdChgDt;			// 비밀번호변경일시
+	private String tempPasswdYn;		// 임시비밀번호여부
+	private String loginLdt;			// 최종로그인일시
+	private String nvJoinId;			// 네이버가입ID
+	private String nvAccessToken;		// 네이버접속토큰
+	private String nvJoinDt;			// 네이버가입일시
+	private String kkJoinId;			// 카카오가입ID
+	private String kkAccessToken;		// 카카오접속토큰
+	private String kkJoinDt;			// 카카오가입일시
+	private String ysJoinId;			// YES24가입ID
+	private String ysAccessToken;		// YES24접속토큰
+	private String ysJoinDt;			// YES24가입일시
+	private String ci;					// 인증CI
+	private String authDt;				// 인증일시
+	private String managedRsn;			// 관리대상지정사유(공통코드G120)
+	private String managedDtlRsn;		// 관리대상지정상세사유
+	private String managedDt;			// 관리대상지정일시
+	private String secedeRsn;			// 탈퇴사유(공통코드G111)
+	private String secedeDtlRsn;		// 탈퇴상세사유
+	private String secedeDt;			// 탈퇴일시
+	private String dormantDt;			// 휴면일시
 
 	// LMS
 	private String content;			// 내용
 	private String certNo;			// 인증번호
 
+	// 나이스 인증
+	private String encData;
+
+	// 암호화 대상 복호화 처리
+	public String getCustNm() {
+		custNm = CryptoUtils.decryptAES(custNm);
+		return custNm;
+	}
+
+	public String getSexGb() {
+		sexGb = CryptoUtils.decryptAES(sexGb);
+		return sexGb;
+	}
+
+	public String getEmail() {
+		email = CryptoUtils.decryptAES(email);
+		return email;
+	}
+
+	public String getBirthYmd() {
+		birthYmd = CryptoUtils.decryptAES(birthYmd);
+		return birthYmd;
+	}
+
+	public String getCellPhnno() {
+		cellPhnno = CryptoUtils.decryptAES(cellPhnno);
+		return cellPhnno;
+	}
+
+	public String getHomeBaseAddr() {
+		homeBaseAddr = CryptoUtils.decryptAES(homeBaseAddr);
+		return homeBaseAddr;
+	}
+
+	public String getHomeDtlAddr() {
+		homeDtlAddr = CryptoUtils.decryptAES(homeDtlAddr);
+		return homeDtlAddr;
+	}
+
 	// Masking
 	public String getMaskingCustId() {
 		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.id(custId) : custId;
@@ -92,4 +140,15 @@ public class Customer extends TscBaseDomain {
 	private int pageSize = 50;
 	private int pageUnit = 10;
 
+	// 암호화 대상 데이터 암호화 처리
+	public void encryptData () {
+		encodedCustNm = CryptoUtils.encryptAES(custNm);
+		encodedSexGb = CryptoUtils.encryptAES(sexGb);
+		encodedEmail = CryptoUtils.encryptAES(email);
+		encodedCellPhnno = CryptoUtils.encryptAES(cellPhnno);
+		encodedBirthYmd = CryptoUtils.encryptAES(birthYmd);
+		encodedHomeBaseAddr  = CryptoUtils.encryptAES(homeBaseAddr);
+		encodedHomeDtlAddr = CryptoUtils.encryptAES(homeDtlAddr);
+	}
+
 }

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

@@ -1,5 +1,6 @@
 package com.style24.persistence.domain;
 
+import java.util.Collection;
 import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -390,6 +391,20 @@ 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)

+ 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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 8 - 288
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1642,7 +1642,8 @@
 				ON CA.GOODS_CD = G.GOODS_CD
 			 INNER JOIN TB_OPTION OP
 				ON CD.ITEM_CD = OP.GOODS_CD
-			   AND CD.OPT_CD = OP.OPT_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
@@ -1746,173 +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 + Z.ADD_PRICE) * Z.GOODS_QTY) * CP.DC_PVAL) / 100
-		            ELSE CP.DC_PVAL * Z.GOODS_QTY
-		            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 X.*
-				FROM (
-					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'
-				) 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
-		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=",">
@@ -1921,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
@@ -1931,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
@@ -1948,10 +1788,6 @@
 				FROM (
 					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
@@ -1961,10 +1797,6 @@
 					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' 
@@ -2010,10 +1842,6 @@
 					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
@@ -2036,118 +1864,10 @@
 		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
-	</select>
-	
-	<!-- 사은품 : 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 
-			     , 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' -- 승인완료
-			AND    G.SELF_GOODS_YN = 'Y' -- 자사상품
-			AND    CA.CUST_NO = 0 -- 고객번호
-		)
-		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="getFreeGiftGoodsApplyAmt2" parameterType="Order" resultType="Order">
-		/* TsfOrder.getFreeGiftGoodsApplyAmt2 */
-		SELECT FGS.FREEGIFT_SECTION_SQ
-		     , FGS.FREEGIFT_SQ
-		     , FGS.SECTION_GB
-		     , FGS.SECTION_VAL
-		FROM   TB_FREEGIFT_SECTION FGS
-		WHERE  1=1
-		AND    FGS.DEL_YN = 'N'
-		<if test="freegiftSqArr != null and freegiftSqArr ==''">
-		AND    FGS.FREEGIFT_SQ IN
-			<foreach collection="freegiftSqArr" item="item" index="index"  open="(" close=")" separator=",">
-				#{item}
-			</foreach>
-		</if>
-	</select>
-	
-	<!-- 사은품 : 3차조건 적용된 구간정보의 사은품정보조회 -->
-	<select id="getFreeGiftGoodsApplyAmt3" parameterType="Order" resultType="Order">
-		/* TsfOrder.getFreeGiftGoodsApplyAmt3 */
-		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>
+		AND    CP.AVAIL_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
+		AND    CP.AVAIL_EDDT > CURRENT_TIMESTAMP
+		ORDER  BY Z.GOODS_CD
+		        , CP.CPN_ID
 	</select>
 
 	<!-- 마이페이지 주문 목록 조회 -->