Ver Fonte

이태영 - 20210223 장바구니 생성 중

xodud1202 há 5 anos atrás
pai
commit
ad595a2632

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

@@ -131,4 +131,6 @@ public interface TsfCartDao {
      * @since 2021. 02. 08
      * @since 2021. 02. 08
      */
      */
     Collection<Order> getCartListDelvFeeInfoList(Order param);
     Collection<Order> getCartListDelvFeeInfoList(Order param);
+
+    void deleteCart(Cart param);
 }
 }

+ 117 - 93
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -2,6 +2,8 @@ package com.style24.front.biz.service;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -21,6 +23,7 @@ import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsStock;
+import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Order;
 
 
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -56,13 +59,17 @@ public class TsfCartService {
 
 
 
 
 		// 로그인 유무 확인 (로그인이 되어 있지 않으면 regNo 를 0으로 장바구니에 저장한다.)
 		// 로그인 유무 확인 (로그인이 되어 있지 않으면 regNo 를 0으로 장바구니에 저장한다.)
-		// TODO 로그인여부체크
+		Login login = new Login();
+		if(TsfSession.isLogin()) {
+			login = TsfSession.getInfo();
+		}
 
 
 		// 장바구니 상품 및 재고 가능 여부 체크
 		// 장바구니 상품 및 재고 가능 여부 체크
 		for(Cart param : params) {
 		for(Cart param : params) {
 			cart.setJsessionId(TscSession.getSessionId());
 			cart.setJsessionId(TscSession.getSessionId());
-			cart.setRegNo(0);
-			cart.setUpdNo(0);
+			cart.setRegNo(login.getCustNo());
+			cart.setUpdNo(login.getCustNo());
+			cart.setCustNo(login.getCustNo());
 
 
 			// 상품 마스터 정보 확인
 			// 상품 마스터 정보 확인
 			Goods goods = new Goods();
 			Goods goods = new Goods();
@@ -114,10 +121,14 @@ public class TsfCartService {
 		Cart cart = new Cart();
 		Cart cart = new Cart();
 		StringBuilder sb = new StringBuilder();
 		StringBuilder sb = new StringBuilder();
 
 
-		// TODO 로그인 정보 세팅
-		cart.setRegNo(1000006);
-		cart.setCustNo(1000006);
-		cart.setUpdNo(1000006);
+		// 로그인 정보
+		if(TsfSession.isLogin()) {
+			Login login = TsfSession.getInfo();
+			cart.setRegNo(login.getCustNo());
+			cart.setCustNo(login.getCustNo());
+			cart.setUpdNo(login.getCustNo());
+		}
+
 		cart.setJsessionId(TscSession.getSessionId());
 		cart.setJsessionId(TscSession.getSessionId());
 
 
 		// 장바구니 보유 CART_SQ 쿼리
 		// 장바구니 보유 CART_SQ 쿼리
@@ -187,11 +198,15 @@ public class TsfCartService {
 
 
 	@Transactional("shopTxnManager")
 	@Transactional("shopTxnManager")
 	public void saveNormalDealCartInfo(Cart param) {
 	public void saveNormalDealCartInfo(Cart param) {
-		// TODO 로그인 정보 세팅
+		// 로그인 정보
+		if(TsfSession.isLogin()) {
+			Login login = TsfSession.getInfo();
+			param.setRegNo(login.getCustNo());
+			param.setCustNo(login.getCustNo());
+			param.setUpdNo(login.getCustNo());
+		}
 		param.setJsessionId(TscSession.getSessionId());
 		param.setJsessionId(TscSession.getSessionId());
-		param.setRegNo(1000006);
-		param.setCustNo(1000006);
-		param.setUpdNo(1000006);
+
 
 
 		if("C".equals(param.getCartGb())) {
 		if("C".equals(param.getCartGb())) {
 			param.setCartGb(TscConstants.CartGb.CART.value());
 			param.setCartGb(TscConstants.CartGb.CART.value());
@@ -229,17 +244,14 @@ public class TsfCartService {
 	public Order getCartGoodsList(Order order) {
 	public Order getCartGoodsList(Order order) {
 		//ModelAndView result = new ModelAndView();
 		//ModelAndView result = new ModelAndView();
 		GagaMap result = new GagaMap();							// return
 		GagaMap result = new GagaMap();							// return
-		List<Integer> cartSqs = new ArrayList<Integer>();		// 품절 제외 장바구니 리스트
+		List<Integer> cartSqs = new ArrayList<Integer>();				// 품절 제외 장바구니 리스트
 
 
-		// Device check
+		// 로그인 체크
+		if(TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo());
+		}
 		order.setFrontGb(TsfSession.getFrontGb());
 		order.setFrontGb(TsfSession.getFrontGb());
-
-		// TODO 로그인 체크
 		order.setJsessionId(TscSession.getSessionId());
 		order.setJsessionId(TscSession.getSessionId());
-		order.setJsessionId("aaec62cc-5f91-47bb-ba65-ebc9a61385cf");
-		order.setCustNo(1000006);
-		order.setRegNo(1000006);
-		order.setUpdNo(1000006);
 
 
 		// 장바구니 상품 조회
 		// 장바구니 상품 조회
 		Collection<Order> cartGoodsList = cartDao.getCartGoodsList(order);
 		Collection<Order> cartGoodsList = cartDao.getCartGoodsList(order);
@@ -253,39 +265,38 @@ public class TsfCartService {
 
 
 		order.setCartSqArr(cartSqs.stream().mapToInt(Integer::intValue).toArray());
 		order.setCartSqArr(cartSqs.stream().mapToInt(Integer::intValue).toArray());
 
 
-		// 다다익선 할인 상품 조회 (품절 상품 제외)
-		Collection<Order> moreBetterAmtList = getMoreBetterAmtList(order);
-
-		// 다다익선 할인 정보 및 상품 정보 장바구니에 등록
-		for(Order cart : cartGoodsList) {
-			for(Order info : moreBetterAmtList) {
-				if(cart.getCartSq() == info.getCartSq()) {
-					cart.setTmtbDcAmt(info.getTmtbDcAmt());
-					cart.setApplyAmtSectionYn(info.getApplyAmtSectionYn());
-					cart.setApplyQtySectionYn(info.getApplyQtySectionYn());
-					cart.setQtyTmtbNm(info.getQtyTmtbNm());
-					cart.setAmtTmtbNm(info.getAmtTmtbNm());
-					cart.setQtyTmtbSq(info.getQtyTmtbSq());
-					cart.setAmtTmtbSq(info.getAmtTmtbSq());
+		if(cartSqs.size() > 0) {
+			// 다다익선 할인 상품 조회 (품절 상품 제외)
+			Collection<Order> moreBetterAmtList = getMoreBetterAmtList(order);
+
+			// 다다익선 할인 정보 및 상품 정보 장바구니에 등록
+			for (Order cart : cartGoodsList) {
+				for (Order info : moreBetterAmtList) {
+					if (cart.getCartSq() == info.getCartSq()) {
+						cart.setTmtbDcAmt(info.getTmtbDcAmt());
+						cart.setApplyAmtSectionYn(info.getApplyAmtSectionYn());
+						cart.setApplyQtySectionYn(info.getApplyQtySectionYn());
+						cart.setQtyTmtbNm(info.getQtyTmtbNm());
+						cart.setAmtTmtbNm(info.getAmtTmtbNm());
+						cart.setQtyTmtbSq(info.getQtyTmtbSq());
+						cart.setAmtTmtbSq(info.getAmtTmtbSq());
+					}
 				}
 				}
-			}
-			if(cart.getCartSq() == 8) {
-				log.info("CHECK CART >> {}, {}, {}",cart.getCurrPrice(),cart.getGoodsQty(), cart.getTmtbDcAmt());
-			}
 
 
-			if(cart.getTmtbDcAmt() == 0) {
-				cart.setTmtbDcAmt(cart.getCurrPrice() * cart.getGoodsQty());
+				if (cart.getTmtbDcAmt() == 0) {
+					cart.setTmtbDcAmt(cart.getCurrPrice());
+				}
 			}
 			}
-		}
 
 
-		// 장바구니 업체별 배송비 계산
-		setCartListDelvFeeInfo(cartGoodsList);
+			// 장바구니 업체별 배송비 계산
+			setCartListDelvFeeInfo(cartGoodsList);
 
 
-		// 자사 / 입점업체 리스트 분리
-		order = getCartDelvGoodsCntList(cartGoodsList);
+			// 자사 / 입점업체 리스트 분리
+			order = getCartDelvGoodsCntList(cartGoodsList);
 
 
-		// 총계 금액 계산
-		setCartListTotAmtInfo(cartGoodsList, order);
+			// 총계 금액 계산
+			setCartListTotAmtInfo(cartGoodsList, order);
+		}
 
 
 		return order;
 		return order;
 	}
 	}
@@ -312,10 +323,10 @@ public class TsfCartService {
 		List<Integer> amtApplySq = new ArrayList<Integer>();
 		List<Integer> amtApplySq = new ArrayList<Integer>();
 		for(Order tmtbApply : tmtbApplyList) {
 		for(Order tmtbApply : tmtbApplyList) {
 			if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
 			if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
-				if(tmtbApply.getQtyTmtbSq() > 0) {
+				if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb())) {
 					applySq.add(tmtbApply.getQtyTmtbSq());
 					applySq.add(tmtbApply.getQtyTmtbSq());
 				}
 				}
-				if(tmtbApply.getAmtTmtbSq() > 0) {
+				if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
 					applySq.add(tmtbApply.getAmtTmtbSq());
 					applySq.add(tmtbApply.getAmtTmtbSq());
 				}
 				}
 			}
 			}
@@ -323,22 +334,21 @@ public class TsfCartService {
 		param.setTmtbSqs(applySq.stream().mapToInt(Integer::intValue).toArray());
 		param.setTmtbSqs(applySq.stream().mapToInt(Integer::intValue).toArray());
 
 
 		// 섹션 정보 조회 후 할인 여부 판단
 		// 섹션 정보 조회 후 할인 여부 판단
-		Collection<Order> tmtbQtySectionList = cartDao.selectTmtbSectionValList(applySq);
-		for(Order applyInfo : tmtbApplyList) {								// 기준 상품 및 다다익선 정보 조회
+		Collection<Order> tmtbSectionList = cartDao.selectTmtbSectionValList(applySq);
+		for(Order applyInfo : tmtbApplyList) {													// 기준 상품 및 다다익선 정보 조회
 			// 다다익선 할인 조건 조회
 			// 다다익선 할인 조건 조회
-			for(Order section : tmtbQtySectionList) {
+			for(Order section : tmtbSectionList) {
 				if(applyInfo.getQtyTmtbSq() == section.getTmtbSq()) {
 				if(applyInfo.getQtyTmtbSq() == section.getTmtbSq()) {
-
 					// 수량 적용 다다익선
 					// 수량 적용 다다익선
-					if (section.getSectionVal() <= applyInfo.getQtyTmtbSumQty()) {                // 장바구니 수량 할인 기준 달성시
-						if (applyInfo.getSectionVal() <= section.getSectionVal()) {            // 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
-							applyInfo.setSectionVal(section.getSectionVal());
+					if (section.getSectionVal() <= applyInfo.getQtyTmtbSumQty()) {             // 장바구니 수량 할인 기준 달성시
+						if (applyInfo.getQtySectionVal() <= section.getSectionVal()) {            // 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+							applyInfo.setQtySectionVal(section.getSectionVal());
 							applyInfo.setApplyQtySectionYn("Y");
 							applyInfo.setApplyQtySectionYn("Y");
-							applyInfo.setDcWay(section.getDcWay());
-							applyInfo.setDcVal(section.getDcVal());
+							applyInfo.setQtyDcWay(section.getDcWay());
+							applyInfo.setQtyDcVal(section.getDcVal());
 						}
 						}
 					} else {
 					} else {
-						if (applyInfo.getSectionVal() < 1 && applyInfo.getQtyGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
+						if (applyInfo.getQtySectionVal() < 1 && applyInfo.getQtyGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
 							applyInfo.setApplyQtySectionYn("N");
 							applyInfo.setApplyQtySectionYn("N");
 						}
 						}
 					}
 					}
@@ -346,15 +356,15 @@ public class TsfCartService {
 
 
 				if(applyInfo.getAmtTmtbSq() == section.getTmtbSq()) {
 				if(applyInfo.getAmtTmtbSq() == section.getTmtbSq()) {
 					// 금액 적용 다다익선
 					// 금액 적용 다다익선
-					if(section.getSectionVal() <= applyInfo.getAmtTmtbSumAmt()) {				// 장바구니 수량 할인 기준 달성시
-						if(applyInfo.getSectionVal() <= section.getSectionVal()) {			// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
-							applyInfo.setSectionVal(section.getSectionVal());
+					if(section.getSectionVal() <= applyInfo.getAmtTmtbSumAmt()) {			// 장바구니 수량 할인 기준 달성시
+						if(applyInfo.getAmtSectionVal() <= section.getSectionVal()) {			// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+							applyInfo.setAmtSectionVal(section.getSectionVal());
 							applyInfo.setApplyAmtSectionYn("Y");
 							applyInfo.setApplyAmtSectionYn("Y");
-							applyInfo.setDcWay(section.getDcWay());
-							applyInfo.setDcVal(section.getDcVal());
+							applyInfo.setAmtDcWay(section.getDcWay());
+							applyInfo.setAmtDcVal(section.getDcVal());
 						}
 						}
 					} else {
 					} else {
-						if(applyInfo.getSectionVal() < 1 && applyInfo.getAmtGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
+						if(applyInfo.getAmtSectionVal() < 1 && applyInfo.getAmtGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
 							applyInfo.setApplyAmtSectionYn("N");
 							applyInfo.setApplyAmtSectionYn("N");
 						}
 						}
 					}
 					}
@@ -362,65 +372,83 @@ public class TsfCartService {
 			}
 			}
 		}
 		}
 
 
+		// 수량 다다익선에 맞춰 정렬
+		Collections.sort((ArrayList<Order>) tmtbApplyList, new Comparator<Order>() {
+			@Override
+			public int compare(Order c1, Order c2) {
+				return c1.getQtyTmtbSq() - c2.getQtyTmtbSq();
+			}
+		});
+
+
+
 		// 수량 다다익선 적용 상품 할인 금액 계산
 		// 수량 다다익선 적용 상품 할인 금액 계산
 		int leftAmt = 0;
 		int leftAmt = 0;
 		int i = 0;
 		int i = 0;
+
 		for(Order resultAmt : tmtbApplyList) {
 		for(Order resultAmt : tmtbApplyList) {
-			if("Y".equals(resultAmt.getApplyQtySectionYn())) {
-				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getDcWay())) {        // 할인 방식 금액일경우
+			if("Y".equals(resultAmt.getApplyQtySectionYn()) && resultAmt.getQtyTmtbSq() > 0) {
+				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getQtyDcWay())) {        // 할인 방식 금액일경우
 					i++;
 					i++;
 					int tempAmt = resultAmt.getCurrPrice();
 					int tempAmt = resultAmt.getCurrPrice();
+
 					if (i == 1) {
 					if (i == 1) {
-						leftAmt = resultAmt.getDcVal();
+						leftAmt = resultAmt.getQtyDcVal();
 					}
 					}
 
 
-					if (i == resultAmt.getTmtbCnt()) {
+					if (i == resultAmt.getQtyTmtbCnt()) {
 						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
 						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
 						leftAmt = 0;
 						leftAmt = 0;
 						i = 0;
 						i = 0;
 					} else {
 					} else {
-						double tempDcAmt = resultAmt.getDcVal() * ((tempAmt) / (double)resultAmt.getTmtbSumAmt());
+						double tempDcAmt = resultAmt.getQtyDcVal() * ((tempAmt) / (double)resultAmt.getQtyTmtbSumAmt());
 						leftAmt -= (int)tempDcAmt;
 						leftAmt -= (int)tempDcAmt;
 						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
 						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
 					}
 					}
 				} else {                                                                // 할인 방식 할인율일 경우
 				} else {                                                                // 할인 방식 할인율일 경우
 					int tempAmt = resultAmt.getCurrPrice();
 					int tempAmt = resultAmt.getCurrPrice();
-					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getDcVal() / 100.0)));
+					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
 					resultAmt.setTmtbDcAmt(tempAmt);
 					resultAmt.setTmtbDcAmt(tempAmt);
 				}
 				}
 			}
 			}
 
 
 			if(resultAmt.getTmtbDcAmt() > 0) {
 			if(resultAmt.getTmtbDcAmt() > 0) {
 				resultAmt.setCurrPrice(resultAmt.getTmtbDcAmt());
 				resultAmt.setCurrPrice(resultAmt.getTmtbDcAmt());
-			} else {
-				resultAmt.setCurrPrice(resultAmt.getCurrPrice());
 			}
 			}
 		}
 		}
 
 
+		// 금액 다다익선에 맞춰 정렬
+		Collections.sort((ArrayList<Order>) tmtbApplyList, new Comparator<Order>() {
+			@Override
+			public int compare(Order c1, Order c2) {
+				return c1.getAmtTmtbSq() - c2.getAmtTmtbSq();
+			}
+		});
+
 		// 금액 다다익선 할인 계산
 		// 금액 다다익선 할인 계산
 		leftAmt = 0;
 		leftAmt = 0;
 		i = 0;
 		i = 0;
 		for(Order resultAmt : tmtbApplyList) {
 		for(Order resultAmt : tmtbApplyList) {
-			if("Y".equals(resultAmt.getApplyAmtSectionYn())) {
-				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getDcWay())) {        // 할인 방식 금액일경우
+			if("Y".equals(resultAmt.getApplyAmtSectionYn()) && resultAmt.getAmtTmtbSq() > 0) {
+				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getAmtDcWay())) {        // 할인 방식 금액일경우
 					i++;
 					i++;
 					int tempAmt = resultAmt.getCurrPrice();
 					int tempAmt = resultAmt.getCurrPrice();
 					if (i == 1) {
 					if (i == 1) {
-						leftAmt = resultAmt.getDcVal();
+						leftAmt = resultAmt.getAmtDcVal();
 					}
 					}
 
 
-					if (i == resultAmt.getTmtbCnt()) {
+					if (i == resultAmt.getAmtTmtbCnt()) {
 						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
 						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
 						leftAmt = 0;
 						leftAmt = 0;
 						i = 0;
 						i = 0;
 					} else {
 					} else {
-						double tempDcAmt = resultAmt.getDcVal() * ((tempAmt) / (double)resultAmt.getTmtbSumAmt());
+						double tempDcAmt = resultAmt.getAmtDcVal() * ((tempAmt) / (double)resultAmt.getAmtTmtbSumAmt());
 						leftAmt -= (int)tempDcAmt;
 						leftAmt -= (int)tempDcAmt;
 						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
 						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
 					}
 					}
 				} else {                                                                // 할인 방식 할인율일 경우
 				} else {                                                                // 할인 방식 할인율일 경우
 					int tempAmt = resultAmt.getCurrPrice();
 					int tempAmt = resultAmt.getCurrPrice();
-					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getDcVal() / 100.0)));
+					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
 					resultAmt.setTmtbDcAmt(tempAmt);
 					resultAmt.setTmtbDcAmt(tempAmt);
 				}
 				}
 			}
 			}
@@ -435,8 +463,8 @@ public class TsfCartService {
 					cart.setQtyTmtbNm(apply.getQtyTmtbNm());
 					cart.setQtyTmtbNm(apply.getQtyTmtbNm());
 					cart.setQtyTmtbSq(apply.getQtyTmtbSq());
 					cart.setQtyTmtbSq(apply.getQtyTmtbSq());
 					cart.setApplyAmtSectionYn(apply.getApplyAmtSectionYn());
 					cart.setApplyAmtSectionYn(apply.getApplyAmtSectionYn());
-					cart.setAmtTmtbNm(apply.getTmtbNm());
-					cart.setAmtTmtbSq(apply.getTmtbSq());
+					cart.setAmtTmtbNm(apply.getAmtTmtbNm());
+					cart.setAmtTmtbSq(apply.getAmtTmtbSq());
 				}
 				}
 			}
 			}
 		}
 		}
@@ -473,9 +501,6 @@ public class TsfCartService {
 				order.setItemQtyArr(arr3);
 				order.setItemQtyArr(arr3);
 			}
 			}
 
 
-			// 1.2 즉시할인 적용가 * 주문수량(장바구니수량)
-			order.setCurrPrice(order.getCurrPrice() * order.getGoodsQty());
-
 			// 1.3 배송정책별 상품 구분
 			// 1.3 배송정책별 상품 구분
 			if (order.getDelvFeeCd().equals("WMS")) {
 			if (order.getDelvFeeCd().equals("WMS")) {
 				wmsCartList.add(order);
 				wmsCartList.add(order);
@@ -511,7 +536,7 @@ public class TsfCartService {
 				if(param.getDelvFeeCd().equals(delv.getDelvFeeCd())) {
 				if(param.getDelvFeeCd().equals(delv.getDelvFeeCd())) {
 					compCnt++;
 					compCnt++;
 					if("N".equals(param.getSoldoutYn())) {
 					if("N".equals(param.getSoldoutYn())) {
-						delv.setCompSumPrice(delv.getCompSumPrice() + (param.getCurrPrice() * param.getGoodsQty()));
+						delv.setCompSumPrice(delv.getCompSumPrice() + param.getCurrPrice());
 					}
 					}
 
 
 					if(compCnt == 1) {
 					if(compCnt == 1) {
@@ -544,9 +569,9 @@ public class TsfCartService {
 		int wmsSumPrice = 0;
 		int wmsSumPrice = 0;
 		compCnt = 0;
 		compCnt = 0;
 		for(Order param : params) {
 		for(Order param : params) {
-			compCnt++;
 			if("WMS".equals(param.getDelvFeeCd())) {
 			if("WMS".equals(param.getDelvFeeCd())) {
-				wmsSumPrice = wmsSumPrice + (param.getCurrPrice() * param.getGoodsQty());
+				compCnt++;
+				wmsSumPrice = wmsSumPrice + param.getCurrPrice();
 				if(compCnt == 1) {
 				if(compCnt == 1) {
 					param.setFirstCompYn("Y");
 					param.setFirstCompYn("Y");
 				}
 				}
@@ -568,18 +593,13 @@ public class TsfCartService {
 	public void setCartListTotAmtInfo(Collection<Order> cartGoodsList, Order order) {
 	public void setCartListTotAmtInfo(Collection<Order> cartGoodsList, Order order) {
 		// 장바구니 합계 금액 계산
 		// 장바구니 합계 금액 계산
 		int notSoldoutCnt = 0;
 		int notSoldoutCnt = 0;
+
 		for(Order cart : cartGoodsList) {
 		for(Order cart : cartGoodsList) {
 			if("N".equals(cart.getSoldoutYn())) {
 			if("N".equals(cart.getSoldoutYn())) {
 				notSoldoutCnt++;
 				notSoldoutCnt++;
 				// 상품 금액 합계
 				// 상품 금액 합계
 				order.setSumOrdAmt(order.getSumOrdAmt() + cart.getCurrPrice());
 				order.setSumOrdAmt(order.getSumOrdAmt() + cart.getCurrPrice());
-
-				// 할인 제외 금액 총계
-				if(cart.getTmtbDcAmt() == 0) {
-					order.setSumRealPayAmt(order.getSumRealPayAmt() + cart.getCurrPrice());
-				} else {
-					order.setSumRealPayAmt(order.getSumRealPayAmt() + cart.getTmtbDcAmt());
-				}
+				order.setSumRealPayAmt(order.getSumRealPayAmt() + cart.getTmtbDcAmt());
 
 
 				// 배송비 합계
 				// 배송비 합계
 				if("Y".equals(cart.getFirstCompYn())) {
 				if("Y".equals(cart.getFirstCompYn())) {
@@ -594,4 +614,8 @@ public class TsfCartService {
 		// 장바구니 총액 계산 상품 총 수량
 		// 장바구니 총액 계산 상품 총 수량
 		order.setTotCartCnt(notSoldoutCnt);
 		order.setTotCartCnt(notSoldoutCnt);
 	}
 	}
+
+	public void deleteCart(Cart param) {
+		cartDao.deleteCart(param);
+	}
 }
 }

+ 34 - 28
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -15,6 +15,7 @@ import com.style24.front.biz.dao.TsfCouponDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustCoupon;
 import com.style24.persistence.domain.CustCoupon;
+import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Order;
 
 
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -58,9 +59,13 @@ public class TsfCouponService {
 	 */
 	 */
 	public Coupon serialCpnApplyInfo(Coupon param) {
 	public Coupon serialCpnApplyInfo(Coupon param) {
 		// TODO 로그인 정보 입력
 		// TODO 로그인 정보 입력
-		param.setCustNo(1000006);
-		param.setRegNo(1000006);
-		param.setUpdNo(1000006);
+		if(TsfSession.isLogin()) {
+			Login login = TsfSession.getInfo();
+			param.setCustNo(login.getCustNo());
+			param.setRegNo(login.getCustNo());
+			param.setUpdNo(login.getCustNo());
+		}
+
 		param.setFrontGb(TsfSession.getFrontGb());
 		param.setFrontGb(TsfSession.getFrontGb());
 
 
 		// 시리얼키의 쿠폰이 다운로드 가능한지 확인
 		// 시리얼키의 쿠폰이 다운로드 가능한지 확인
@@ -121,37 +126,38 @@ public class TsfCouponService {
 		int totCurrPrice = 0;
 		int totCurrPrice = 0;
 		int maxDcAmt = 0;
 		int maxDcAmt = 0;
 		int buyLimitAmt = 0;
 		int buyLimitAmt = 0;
-
-		Collection<Order> serialGoodsList = coreOrderService.getSerialCpnApplyGoodsList(order);
-		for(int i = 0 ; i < param.getCartSqArr().length ; i++) {
-			for(Order cpnInfo : serialGoodsList) {
-				if(param.getCartSqArr()[i] == cpnInfo.getCartSq()) {
-					cpnInfo.setCurrPrice(param.getCurrPrices()[i]);
+		if(param != null && param.getCartSqArr().length > 0) {
+			Collection<Order> serialGoodsList = coreOrderService.getSerialCpnApplyGoodsList(order);
+			for (int i = 0; i < param.getCartSqArr().length; i++) {
+				for (Order cpnInfo : serialGoodsList) {
+					if (param.getCartSqArr()[i] == cpnInfo.getCartSq()) {
+						cpnInfo.setCurrPrice(param.getCurrPrices()[i]);
+					}
 				}
 				}
 			}
 			}
-		}
 
 
-		// 각 필요 데이터 세팅
-		for(Order info : serialGoodsList) {
-			totCurrPrice = totCurrPrice + info.getCurrPrice();				// 적용 상품 구매 금액 합계((즉시할인쿠폰 + 옵션추가) * 수량)
-			maxDcAmt = info.getMaxDcAmt();									// 최대할인율과 최소주문금액은 한 쿠폰에 값이 동일
-			buyLimitAmt = info.getBuyLimitAmt();							// 최대할인율과 최소주문금액은 한 쿠폰에 값이 동일
-			if(TscConstants.DcWay.RATE.value().equals(info.getDcWay())) {	// 할인방식이 할인율이면 각 상품별 할인금액을 따로 계산해야함
-				int dcAmt = (int) (info.getCurrPrice() * (info.getDcVal() / 100.0));		// 해당상품 할인금
-				totDcAmt = totDcAmt + dcAmt;								// 적용 상품 총 할인금액
-			} else {														// 할인 방식이 금액일 경우
-				totDcAmt = info.getDcVal();
+			// 각 필요 데이터 세팅
+			for (Order info : serialGoodsList) {
+				totCurrPrice = totCurrPrice + info.getCurrPrice();                // 적용 상품 구매 금액 합계((즉시할인쿠폰 + 옵션추가) * 수량)
+				maxDcAmt = info.getMaxDcAmt();                                    // 최대할인율과 최소주문금액은 한 쿠폰에 값이 동일
+				buyLimitAmt = info.getBuyLimitAmt();                            // 최대할인율과 최소주문금액은 한 쿠폰에 값이 동일
+				if (TscConstants.DcWay.RATE.value().equals(info.getDcWay())) {    // 할인방식이 할인율이면 각 상품별 할인금액을 따로 계산해야함
+					int dcAmt = (int)(info.getCurrPrice() * (info.getDcVal() / 100.0));        // 해당상품 할인금
+					totDcAmt = totDcAmt + dcAmt;                                // 적용 상품 총 할인금액
+				} else {                                                        // 할인 방식이 금액일 경우
+					totDcAmt = info.getDcVal();
+				}
 			}
 			}
-		}
 
 
-		// 최대 할인 금액 요건 확인 (0은 제한 없음. 최대 할인 금액보다 할인금액이 크다면 최대할인금액만큼만 할인)
-		if(maxDcAmt > 0 && maxDcAmt < totDcAmt) {
-			totDcAmt = maxDcAmt;
-		}
+			// 최대 할인 금액 요건 확인 (0은 제한 없음. 최대 할인 금액보다 할인금액이 크다면 최대할인금액만큼만 할인)
+			if (maxDcAmt > 0 && maxDcAmt < totDcAmt) {
+				totDcAmt = maxDcAmt;
+			}
 
 
-		// 주문 최소 금액 요건 확인 (최소 주문 금액보다 총 상품 금액이 적으면 0원으로 세팅)
-		if(buyLimitAmt > totCurrPrice) {
-			totDcAmt = 0;
+			// 주문 최소 금액 요건 확인 (최소 주문 금액보다 총 상품 금액이 적으면 0원으로 세팅)
+			if (buyLimitAmt > totCurrPrice) {
+				totDcAmt = 0;
+			}
 		}
 		}
 
 
 		return totDcAmt;
 		return totDcAmt;

+ 22 - 4
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -1,10 +1,8 @@
 package com.style24.front.biz.web;
 package com.style24.front.biz.web;
 
 
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collection;
 import java.util.Date;
 import java.util.Date;
-import java.util.List;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.env.Environment;
@@ -16,7 +14,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.ModelAndView;
-import org.thymeleaf.util.StringUtils;
 
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.biz.service.TscOrderService;
@@ -24,6 +21,7 @@ import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfCouponService;
 import com.style24.front.biz.service.TsfCouponService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.controller.TsfBaseController;
+import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Order;
@@ -103,6 +101,10 @@ public class TsfCartController extends TsfBaseController {
 	// @ResponseBody
 	// @ResponseBody
 	@PostMapping("/goods/list")
 	@PostMapping("/goods/list")
 	public String selectCartGoodsList(Order param, Model model) {
 	public String selectCartGoodsList(Order param, Model model) {
+
+
+		log.info("CHECK LOGIN CUST_NO >> {}", param.getCustNo());
+
 		// 장바구니 정보 조회
 		// 장바구니 정보 조회
 		Order order = cartService.getCartGoodsList(param);
 		Order order = cartService.getCartGoodsList(param);
 
 
@@ -121,7 +123,7 @@ public class TsfCartController extends TsfBaseController {
 			order.setShotDelvYn("N");
 			order.setShotDelvYn("N");
 		}
 		}
 
 
-		model.addAttribute("param", param);
+		model.addAttribute("loginInfo", TsfSession.getInfo());
 		model.addAttribute("order", order);
 		model.addAttribute("order", order);
 		model.addAttribute("wmsCartList", order.getWmsCartList());
 		model.addAttribute("wmsCartList", order.getWmsCartList());
 		model.addAttribute("delvCartList", order.getDelvCartList());
 		model.addAttribute("delvCartList", order.getDelvCartList());
@@ -151,4 +153,20 @@ public class TsfCartController extends TsfBaseController {
 
 
 		return result;
 		return result;
 	}
 	}
+
+	/**
+	 * 장바구니 삭제
+	 * @param param
+	 * rdCpnNm : 시리얼쿠폰명
+	 * cartSqArr[] : 장바구니 번호 배열
+	 * @return GagaMap
+	 * @author xodud1202
+	 * @since 2021. 02. 23
+	 */
+	@ResponseBody
+	@PostMapping("/deleteCart")
+	public GagaMap deleteCart(@RequestBody Cart param) {
+		cartService.deleteCart(param);
+		return new GagaMap();
+	}
 }
 }

+ 13 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -465,7 +465,7 @@
 			 , Z.GOODS_TYPE
 			 , Z.GOODS_TYPE
 			 , Z.SUPPLY_COMP_CD
 			 , Z.SUPPLY_COMP_CD
 			 , Z.DELV_FEE_CD
 			 , Z.DELV_FEE_CD
-		     , Z.CURR_PRICE
+		     , (Z.CURR_PRICE + Z.OPT_ADD_PRICE) * Z.GOODS_QTY AS CURR_PRICE
 		     , Z.SOLDOUT_YN
 		     , Z.SOLDOUT_YN
 			 , CASE WHEN #{frontGb} = 'P' THEN (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_PRATE/100)
 			 , CASE WHEN #{frontGb} = 'P' THEN (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_PRATE/100)
 					ELSE (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_MRATE/100) END AS SAVE_PNT_AMT
 					ELSE (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_MRATE/100) END AS SAVE_PNT_AMT
@@ -487,6 +487,7 @@
 					 , G.PNT_MRATE
 					 , G.PNT_MRATE
 		             , STOCK.SOLDOUT_YN
 		             , STOCK.SOLDOUT_YN
 		             , FN_GET_APPLY_CPN1_PRICE(C.GOODS_CD, #{frontGb}) AS CURR_PRICE
 		             , FN_GET_APPLY_CPN1_PRICE(C.GOODS_CD, #{frontGb}) AS CURR_PRICE
+		             , IFNULL(O.ADD_PRICE, 0) AS OPT_ADD_PRICE
 		             , (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = G.BRAND_CD) AS BRAND_NM
 		             , (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = G.BRAND_CD) AS BRAND_NM
 		             , (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = G.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM
 		             , (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = G.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM
 					 , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CD.ITEM_CD) AS ITEM_NM
 					 , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CD.ITEM_CD) AS ITEM_NM
@@ -588,6 +589,7 @@
 		     , Z.CURR_PRICE
 		     , Z.CURR_PRICE
 		     , Z.PNT_PRATE
 		     , Z.PNT_PRATE
 			 , Z.PNT_MRATE
 			 , Z.PNT_MRATE
+		     , Z.OPT_ADD_PRICE
 			 , GI.SYS_IMG_NM
 			 , GI.SYS_IMG_NM
 		ORDER  BY Z.DELV_FEE_CD
 		ORDER  BY Z.DELV_FEE_CD
 			 , Z.CART_SQ
 			 , Z.CART_SQ
@@ -618,4 +620,14 @@
 			 , DFP.DELV_FEE_CD
 			 , DFP.DELV_FEE_CD
 			 , DFP.DELV_FEE
 			 , DFP.DELV_FEE
 	</select>
 	</select>
+
+	<!-- 장바구니 삭제 -->
+	<delete id="deleteCart" parameterType="Cart">
+		<!-- TsfCart.deleteCart : 장바구니 삭제 -->
+		DELETE FROM TB_CART
+		WHERE  CART_SQ IN
+		<foreach collection="cartSqArr" item="item" index="index"  open="(" close=")" separator=",">
+			#{item}
+		</foreach>
+	</delete>
 </mapper>
 </mapper>

+ 122 - 55
src/main/webapp/WEB-INF/views/web/cart/cartListAjaxFormWeb.html

@@ -36,7 +36,7 @@
     </div>
     </div>
     <div class="sec_body">
     <div class="sec_body">
         <!-- 총알배송 -->
         <!-- 총알배송 -->
-        <div class="part_deliver" th:if="${wmsCartList.size() > 0}">
+        <div class="part_deliver wmsList" th:if="${wmsCartList != null and wmsCartList.size() > 0}">
             <h3 class="subH2 mb20" th:if="${order.shotCanYn.equals('Y')}">
             <h3 class="subH2 mb20" th:if="${order.shotCanYn.equals('Y')}">
                 STYLE24 총알배송
                 STYLE24 총알배송
                 <span class="ml10">오늘 자정까지 도착</span>
                 <span class="ml10">오늘 자정까지 도착</span>
@@ -64,7 +64,7 @@
                         <input type="hidden" neme="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
                         <input type="hidden" neme="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
                         <input type="hidden" neme="cartSq" th:value="${cart.cartSq}" />
                         <input type="hidden" neme="cartSq" th:value="${cart.cartSq}" />
 
 
-                        <td style="border-left:none;">
+                        <td>
                             <!-- 주문가능 상품 -->
                             <!-- 주문가능 상품 -->
                             <div class="info_item" th:classappend="${cart.soldoutYn.equals('Y')} ? unable"> <!-- 주문불가시 class="unable" 추가 / 인풋, 버튼 disable 처리 -->
                             <div class="info_item" th:classappend="${cart.soldoutYn.equals('Y')} ? unable"> <!-- 주문불가시 class="unable" 추가 / 인풋, 버튼 disable 처리 -->
                                 <div class="form_box">
                                 <div class="form_box">
@@ -99,26 +99,26 @@
                                         <button type="button" class="btn_opt_pop"><span>옵션/수량변경</span></button>
                                         <button type="button" class="btn_opt_pop"><span>옵션/수량변경</span></button>
                                     </p>
                                     </p>
                                     <!-- 다다익선 적용 -->
                                     <!-- 다다익선 적용 -->
-                                    <div class="od_moresale" th:if="${cart.applyQtySectionYn == 'Y' or cart.applyAmtSectionYn == 'Y'}">
+                                    <div class="od_moresale" th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}">
                                         <a href="" class="btn_moresale">
                                         <a href="" class="btn_moresale">
                                             <i class="ico ico_saletag"></i><span>다다익선 할인적용!</span>
                                             <i class="ico ico_saletag"></i><span>다다익선 할인적용!</span>
                                         </a>
                                         </a>
                                         <div class="li_moresale">
                                         <div class="li_moresale">
                                             <ul>
                                             <ul>
-                                                <li th:if="${cart.applyQtySectionYn == 'Y'}" th:text="${cart.qtyTmtbNm}"></li>
-                                                <li th:if="${cart.applyAmtSectionYn == 'Y'}" th:text="${cart.amtTmtbNm}"></li>
+                                                <li th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" th:text="${cart.qtyTmtbNm}"></li>
+                                                <li th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" th:text="${cart.amtTmtbNm}"></li>
                                             </ul>
                                             </ul>
                                         </div>
                                         </div>
                                     </div>
                                     </div>
                                     <!-- 다다익선 미적용 -->
                                     <!-- 다다익선 미적용 -->
-                                    <div class="od_moresale" th:if="${cart.applyQtySectionYn == 'N' or cart.applyAmtSectionYn == 'N'}">
+                                    <div class="od_moresale" th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}">
                                         <a href="" class="btn_moresale">
                                         <a href="" class="btn_moresale">
                                             <i class="ico ico_saletag"></i><span>다다익선 상품보기</span>
                                             <i class="ico ico_saletag"></i><span>다다익선 상품보기</span>
                                         </a>
                                         </a>
                                         <div class="li_moresale">
                                         <div class="li_moresale">
                                             <ul>
                                             <ul>
-                                                <li th:if="${cart.applyQtySectionYn == 'N'}" th:inline="text">[[${cart.qtyTmtbNm}]]<a href=''>대상 상품 보기</a></li>
-                                                <li th:if="${cart.applyAmtSectionYn == 'N'}" th:inline="text">[[${cart.amtTmtbNm}]]<a href=''>대상 상품 보기</a></li>
+                                                <li th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" th:inline="text">[[${cart.qtyTmtbNm}]]<a href=''>대상 상품 보기</a></li>
+                                                <li th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" th:inline="text">[[${cart.amtTmtbNm}]]<a href=''>대상 상품 보기</a></li>
                                             </ul>
                                             </ul>
                                         </div>
                                         </div>
                                     </div>
                                     </div>
@@ -146,7 +146,7 @@
                                             <button type="button" class="btn_favorite" th:classappend="${cart.wishCnt > 0} ? active"><span><i class="ico ico_like2"></i><em class="sr-only">관심상품 추가</em></span></button>
                                             <button type="button" class="btn_favorite" th:classappend="${cart.wishCnt > 0} ? active"><span><i class="ico ico_like2"></i><em class="sr-only">관심상품 추가</em></span></button>
                                         </span>
                                         </span>
                                         <span>
                                         <span>
-                                            <button type="button" class="btn_delete"><span><i class="ico ico_trash"></i><em class="sr-only">상품삭제</em></span></button>
+                                            <button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq})|"><span><i class="ico ico_trash"></i><em class="sr-only">상품삭제</em></span></button>
                                         </span>
                                         </span>
                                     </p>
                                     </p>
                                 </div>
                                 </div>
@@ -166,14 +166,14 @@
                 </table>
                 </table>
             </div>
             </div>
             <div class="btn_area">
             <div class="btn_area">
-                <button type="button" class="btn btn_default"><span>선택 삭제</span></button>
-                <button type="button" class="btn btn_default"><span>전체 삭제</span></button>
+                <button type="button" class="btn btn_default" onclick="deleteCart('WMS_SELECT')"><span>선택 삭제</span></button>
+                <button type="button" class="btn btn_default" onclick="deleteCart('WMS_ALL')"><span>전체 삭제</span></button>
             </div>
             </div>
         </div>
         </div>
         <!-- //총알배송 -->
         <!-- //총알배송 -->
 
 
         <!-- 업체직배송 -->
         <!-- 업체직배송 -->
-        <div class="part_deliver" th:if="${delvCartList.size() > 0}">
+        <div class="part_deliver delvList" th:if="${delvCartList != null and delvCartList.size() > 0}">
             <h3 class="subH2 mb20">
             <h3 class="subH2 mb20">
                 업체직배송
                 업체직배송
             </h3>
             </h3>
@@ -197,7 +197,7 @@
                         <input type="hidden" neme="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
                         <input type="hidden" neme="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
                         <input type="hidden" neme="cartSq" th:value="${cart.cartSq}" />
                         <input type="hidden" neme="cartSq" th:value="${cart.cartSq}" />
 
 
-                        <td style="border-left:none;">
+                        <td>
                             <div class="info_item" th:classappend="${cart.soldoutYn.equals('Y')} ? unable">
                             <div class="info_item" th:classappend="${cart.soldoutYn.equals('Y')} ? unable">
                                 <div class="form_box">
                                 <div class="form_box">
                                     <p class="form_field">
                                     <p class="form_field">
@@ -229,26 +229,26 @@
                                         <button type="button" class="btn_opt_pop"><span>옵션/수량변경</span></button>
                                         <button type="button" class="btn_opt_pop"><span>옵션/수량변경</span></button>
                                     </p>
                                     </p>
                                     <!-- 다다익선 적용 -->
                                     <!-- 다다익선 적용 -->
-                                    <div class="od_moresale" th:if="${cart.applyQtySectionYn == 'Y' or cart.applyAmtSectionYn == 'Y'}">
+                                    <div class="od_moresale" th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y')}">
                                         <a href="" class="btn_moresale">
                                         <a href="" class="btn_moresale">
                                             <i class="ico ico_saletag"></i><span>다다익선 할인적용!</span>
                                             <i class="ico ico_saletag"></i><span>다다익선 할인적용!</span>
                                         </a>
                                         </a>
                                         <div class="li_moresale">
                                         <div class="li_moresale">
                                             <ul>
                                             <ul>
-                                                <li th:if="${cart.applyQtySectionYn == 'Y'}" th:text="${cart.qtyTmtbNm}"></li>
-                                                <li th:if="${cart.applyAmtSectionYn == 'Y'}" th:text="${cart.amtTmtbNm}"></li>
+                                                <li th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" th:text="${cart.qtyTmtbNm}"></li>
+                                                <li th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" th:text="${cart.amtTmtbNm}"></li>
                                             </ul>
                                             </ul>
                                         </div>
                                         </div>
                                     </div>
                                     </div>
                                     <!-- 다다익선 미적용 -->
                                     <!-- 다다익선 미적용 -->
-                                    <div class="od_moresale" th:if="${cart.applyQtySectionYn == 'N' or cart.applyAmtSectionYn == 'N'}">
+                                    <div class="od_moresale" th:if="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N')}">
                                         <a href="" class="btn_moresale">
                                         <a href="" class="btn_moresale">
                                             <i class="ico ico_saletag"></i><span>다다익선 상품보기</span>
                                             <i class="ico ico_saletag"></i><span>다다익선 상품보기</span>
                                         </a>
                                         </a>
                                         <div class="li_moresale">
                                         <div class="li_moresale">
                                             <ul>
                                             <ul>
-                                                <li th:if="${cart.applyQtySectionYn == 'N'}" th:text="${cart.qtyTmtbNm}"><a href="">대상 상품 보기</a></li>
-                                                <li th:if="${cart.applyAmtSectionYn == 'N'}" th:text="${cart.amtTmtbNm}"><a href="">대상 상품 보기</a></li>
+                                                <li th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" th:text="${cart.qtyTmtbNm}"><a href="">대상 상품 보기</a></li>
+                                                <li th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" th:text="${cart.amtTmtbNm}"><a href="">대상 상품 보기</a></li>
                                             </ul>
                                             </ul>
                                         </div>
                                         </div>
                                     </div>
                                     </div>
@@ -276,7 +276,7 @@
                                             <button type="button" class="btn_favorite"><span><i class="ico ico_like2"></i><em class="sr-only">관심상품 추가</em></span></button>
                                             <button type="button" class="btn_favorite"><span><i class="ico ico_like2"></i><em class="sr-only">관심상품 추가</em></span></button>
                                         </span>
                                         </span>
                                         <span>
                                         <span>
-                                            <button type="button" class="btn_delete"><span><i class="ico ico_trash"></i><em class="sr-only">상품삭제</em></span></button>
+                                            <button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq})|"><span><i class="ico ico_trash"></i><em class="sr-only">상품삭제</em></span></button>
                                         </span>
                                         </span>
                                     </p>
                                     </p>
                                 </div>
                                 </div>
@@ -296,8 +296,8 @@
                 </table>
                 </table>
             </div>
             </div>
             <div class="btn_area">
             <div class="btn_area">
-                <button type="button" class="btn btn_default"><span>선택 삭제</span></button>
-                <button type="button" class="btn btn_default"><span>전체 삭제</span></button>
+                <button type="button" class="btn btn_default" onclick="deleteCart('DELV_SELECT')"><span>선택 삭제</span></button>
+                <button type="button" class="btn btn_default" onclick="deleteCart('DELV_ALL')"><span>전체 삭제</span></button>
             </div>
             </div>
         </div>
         </div>
         <!-- //업체직배송 -->
         <!-- //업체직배송 -->
@@ -401,15 +401,15 @@
     }
     }
 
 
     $(document).ready(function() {
     $(document).ready(function() {
-        $(".area_salecoupon .coupon_box").hide();
+        $("#cartListForm .area_salecoupon .coupon_box").hide();
         /* TODO 로그인 안했으면 .area_salecoupon (할인코드 입력 부 및 쿠폰정보영역) hide 시킬것 */
         /* TODO 로그인 안했으면 .area_salecoupon (할인코드 입력 부 및 쿠폰정보영역) hide 시킬것 */
+        let loginInfo = [[${loginInfo}]];
+        if(!loginInfo || loginInfo.custNo == null || loginInfo.custNo == 0) {
+            $("#cartListForm .area_salecoupon").hide();
+        }
 
 
         // 다다익선 할인 대상(미적용) 리스트
         // 다다익선 할인 대상(미적용) 리스트
         notApplyTmtbAreaList();
         notApplyTmtbAreaList();
-
-        /*$("#sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
-        $("#totDcAmt").text(Number(totDcAmt).toLocaleString());*/
-
     });
     });
 
 
     function notApplyTmtbAreaList() {
     function notApplyTmtbAreaList() {
@@ -486,7 +486,7 @@
         }
         }
 
 
         // 수량 다다익선 HTML 작성
         // 수량 다다익선 HTML 작성
-        let tmtbHtml = "<h4>다다익선 할인 대상이 있습니다.</h4>";
+        let tmtbHtml = "";
         for(let i = 0 ; i < tmtbQtyList.length ; i++) {
         for(let i = 0 ; i < tmtbQtyList.length ; i++) {
             let tmtb = tmtbQtyList[i];
             let tmtb = tmtbQtyList[i];
             tmtbHtml += '<div class="more_sale qtyNotApplyTmtbList">';
             tmtbHtml += '<div class="more_sale qtyNotApplyTmtbList">';
@@ -532,18 +532,24 @@
 
 
         // 금액 다다익선 정보 HTML 작성
         // 금액 다다익선 정보 HTML 작성
         for(let i = 0 ; i < notApplyAmtTmtbList.length ; i++) {
         for(let i = 0 ; i < notApplyAmtTmtbList.length ; i++) {
-            let tmtb = notApplyAmtTmtbList[i];
-            tmtbHtml += '<div class="more_sale amtNotApplyTmtbList">\n' +
-                    '            <div class="txt">\n' +
-                    '                <a href="">\n' +
-                    '                    <i class="ico ico_saletag"></i>\n' +
-                    '                    <input type="hidden" name="tmtbSq" value="' + tmtb.tmtbSq + '" />' +
-                    '                    <span>';
-            tmtbHtml += tmtb.tmtbNm;
-            tmtbHtml += '</span>\n' +
-                    '                </a>\n' +
-                    '            </div>\n' +
-                    '        </div>';
+            if (notApplyAmtTmtbList[i].tmtbSq != 0) {
+                let tmtb = notApplyAmtTmtbList[i];
+                tmtbHtml += '<div class="more_sale amtNotApplyTmtbList">\n' +
+                        '            <div class="txt">\n' +
+                        '                <a href="">\n' +
+                        '                    <i class="ico ico_saletag"></i>\n' +
+                        '                    <input type="hidden" name="tmtbSq" value="' + tmtb.tmtbSq + '" />' +
+                        '                    <span>';
+                tmtbHtml += tmtb.tmtbNm;
+                tmtbHtml += '</span>\n' +
+                        '                </a>\n' +
+                        '            </div>\n' +
+                        '        </div>';
+            }
+        }
+
+        if(tmtbHtml != "") {
+            tmtbHtml = "<h4>다다익선 할인 대상이 있습니다.</h4>" + tmtbHtml;
         }
         }
 
 
         $(".area_saleitem").html(tmtbHtml);
         $(".area_saleitem").html(tmtbHtml);
@@ -551,9 +557,9 @@
     }
     }
 
 
     function cancelCartCpn() {
     function cancelCartCpn() {
-        $("#sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
-        $("#totDcAmt").text(Number(totDcAmt).toLocaleString());
-        $(".area_salecoupon .coupon_box").hide();
+        $("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+        $("#cartListForm #totDcAmt").text(Number(totDcAmt).toLocaleString());
+        $("#cartListForm .area_salecoupon .coupon_box").hide();
     }
     }
 
 
     function serialCpnApply() {
     function serialCpnApply() {
@@ -565,7 +571,7 @@
         });
         });
 
 
         let data = {
         let data = {
-            rdCpnNm : $("#serialCpnNm").val(),
+            rdCpnNm : $("#cartListForm #serialCpnNm").val(),
             cartSqArr : cartArr,
             cartSqArr : cartArr,
             currPrices : currPrices
             currPrices : currPrices
         }
         }
@@ -579,21 +585,21 @@
             dataType : 'json',
             dataType : 'json',
             data : jsonData,
             data : jsonData,
             success : function(result) {
             success : function(result) {
-                $(".area_salecoupon .coupon_box").show();
+                $("#cartListForm .area_salecoupon .coupon_box").show();
 
 
                 // 합계 금액
                 // 합계 금액
-                $("#sumRealPayAmt").text(Number(sumRealPayAmt - result.serialCpnInfo.dcAmt).toLocaleString());
-                $("#totDcAmt").text(Number(totDcAmt - result.serialCpnInfo.dcAmt).toLocaleString());
+                $("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt - result.serialCpnInfo.dcAmt).toLocaleString());
+                $("#cartListForm #totDcAmt").text(Number(totDcAmt - result.serialCpnInfo.dcAmt).toLocaleString());
 
 
                 // 쿠폰 정보
                 // 쿠폰 정보
-                $(".area_salecoupon .cp_name").text(result.serialCpnInfo.cpnNm);
-                $(".area_salecoupon .cp_condition").html(result.serialCpnInfo.cpnDesc + "<span><em class='tag'>1장 보유</em></span>");
-                $(".area_salecoupon .availStdt").text(result.serialCpnInfo.availStdt);
-                $(".area_salecoupon .availEddt").text(result.serialCpnInfo.availEddt);
+                $("#cartListForm .area_salecoupon .cp_name").text(result.serialCpnInfo.cpnNm);
+                $("#cartListForm .area_salecoupon .cp_condition").html(result.serialCpnInfo.cpnDesc + "<span><em class='tag'>1장 보유</em></span>");
+                $("#cartListForm .area_salecoupon .availStdt").text(result.serialCpnInfo.availStdt);
+                $("#cartListForm .area_salecoupon .availEddt").text(result.serialCpnInfo.availEddt);
                 if(result.serialCpnInfo.dcWay == "G240_10") {
                 if(result.serialCpnInfo.dcWay == "G240_10") {
-                    $(".area_salecoupon .cp_dc_val").html( "<em>" + Number(result.serialCpnInfo.dcVal).toLocaleString() + "</em> 원");
+                    $("#cartListForm .area_salecoupon .cp_dc_val").html( "<em>" + Number(result.serialCpnInfo.dcVal).toLocaleString() + "</em> 원");
                 } else if (result.serialCpnInfo.dcWay == "G240_11") {
                 } else if (result.serialCpnInfo.dcWay == "G240_11") {
-                    $(".area_salecoupon .cp_dc_val").html( "<em>" + result.serialCpnInfo.dcVal + "%</em>");
+                    $("#cartListForm .area_salecoupon .cp_dc_val").html( "<em>" + result.serialCpnInfo.dcVal + "%</em>");
                 }
                 }
             }
             }
         });
         });
@@ -612,6 +618,68 @@
         return false;
         return false;
     });
     });
 
 
+    function deleteCart(gbn) {
+        let cartArr = [];
+        if(gbn == "WMS_SELECT") {
+            $("#cartListForm .wmsList input[name=cartSqArr]:checked").each(function () {
+                cartArr.push($(this).val());
+            });
+
+            if(!confirm("총 " + cartArr.length + "개의 상품을 삭제합니다.")) {
+                return false;
+            }
+        } else if(gbn == "DELV_SELECT") {
+            $("#cartListForm .delvList input[name=cartSqArr]:checked").each(function () {
+                cartArr.push($(this).val());
+            });
+
+            if(!confirm("총 " + cartArr.length + "개의 상품을 삭제합니다.")) {
+                return false;
+            }
+        } else if(gbn == "WMS_ALL") {
+            $("#cartListForm .wmsList input[name=cartSqArr]").each(function() {
+                cartArr.push($(this).val());
+            });
+
+            if(!confirm("총알배송상품을 전부 삭제하시겠습니까?")) {
+                return false;
+            }
+        } else if(gbn == "DELV_ALL") {
+            $("#cartListForm .delvList input[name=cartSqArr]").each(function() {
+                cartArr.push($(this).val());
+            });
+
+            if(!confirm("업체직배송 상품을 전부 삭제하시겠습니까?")) {
+                return false;
+            }
+        } else {
+            cartArr.push(gbn);
+        }
+
+        if(cartArr.length < 1) {
+            alert("삭제하실 상품을 선택해 주세요.");
+            return false;
+        }
+
+        let data = {
+            cartSqArr : cartArr
+        }
+
+        let jsonData = JSON.stringify(data);
+
+        $.ajax( {
+            type: "POST",
+            url : '/cart/deleteCart',
+            contentType: 'application/json',
+            dataType : 'json',
+            data : jsonData,
+            success : function(result) {
+                alert("삭제 되었습니다.");
+                getCartList();
+            }
+        });
+    }
+
     //쿠폰사용안내 팝업열기
     //쿠폰사용안내 팝업열기
     $(document).on('click','#btn_cpinfo_pop',function(e){
     $(document).on('click','#btn_cpinfo_pop',function(e){
         $("#cpinfoPop").modal("show");
         $("#cpinfoPop").modal("show");
@@ -619,8 +687,7 @@
     });
     });
 
 
     $("input[name=cartSqArr]").on("change", function(e) {
     $("input[name=cartSqArr]").on("change", function(e) {
-       /*alert($("input[name=cartSqArr]").length + " / " + $("input[name=cartSqArr]:checked").length);
-       alert($("#od_item_15").prop("checked"));*/
+
     });
     });
 
 
     //옵션변경 팝업열기
     //옵션변경 팝업열기