Ver Fonte

이태영 - 20210306 장바구니 딜상품 여러개 추가 가능 AND 주문생성일때 cartSqArr Session 추가

xodud1202 há 5 anos atrás
pai
commit
aedf7d4000

+ 63 - 41
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -58,7 +58,7 @@ public class TsfCartService {
 	 * @param params
 	 */
 	public void saveCartInfo(Collection<Cart> params) {
-		Cart cart = new Cart();
+		String goodsType = "";
 
 		// 로그인 유무 확인 (로그인이 되어 있지 않으면 regNo 를 0으로 장바구니에 저장한다.)
 		Login login = new Login();
@@ -70,10 +70,6 @@ public class TsfCartService {
 
 		// 장바구니 상품 및 재고 가능 여부 체크
 		for (Cart param : params) {
-			cart.setJsessionId(TscSession.getSessionId());
-			cart.setRegNo(login.getCustNo());
-			cart.setUpdNo(login.getCustNo());
-			cart.setCustNo(login.getCustNo());
 
 			// 상품 마스터 정보 확인
 			Goods goods = new Goods();
@@ -102,24 +98,22 @@ public class TsfCartService {
 				throw new IllegalArgumentException(stockResult);
 			}
 
-			cart.setGoodsCd(param.getGoodsCd());
-
 			// 장바구니에 있는 같은 상품(옵션이 상이해도 같은 상품이므로 상품 전체 조회)
 			int goodsCartCnt = cartDao.getHasGoodsCartCnt(param);
 			if (param.getGoodsQty() + goodsCartCnt > goods.getDayMaxOrdQty()) {
 				throw new IllegalArgumentException("1일 구매한도 수량이 초과되었습니다.");
 			}
 
-			cart = param;
+			goodsType = param.getGoodsType();
 		}
 
 		// 장바구니 정보 수정
-		if (cart.getGoodsType().equals(TscConstants.GoodsType.SET.value())) {
+		if (goodsType.equals(TscConstants.GoodsType.SET.value())) {
 			// 세트상품일 경우
 			saveSetTypeCartInfo(params);
 		} else {
 			// 세트 상품이 아닐 경우
-			saveNormalDealCartInfo(params.iterator().next());
+			saveNormalDealCartInfo(params);
 		}
 	}
 
@@ -169,8 +163,12 @@ public class TsfCartService {
 		cart.setGoodsType(params.iterator().next().getGoodsType());
 		cart.setItemCdSql(sb.toString());
 
+		Collection<Cart> cartSqList = null;
+
 		if (!StringUtils.isEmpty(params.iterator().next().getCartGb()) && "C".equals(params.iterator().next().getCartGb())) {
 			cart.setCartGb(TscConstants.CartGb.CART.value());
+			cartSqList = cartDao.selectHasSetItemCartList(cart);
+			// 같은 장바구니 상품 확인
 		} else if (!StringUtils.isEmpty(params.iterator().next().getCartGb()) && "O".equals(params.iterator().next().getCartGb())) {
 			if ("P".equals(TsfSession.getFrontGb())) {
 				cart.setCartGb(TscConstants.CartGb.PC_ORDER.value());
@@ -181,9 +179,6 @@ public class TsfCartService {
 			cart.setCartGb(TscConstants.CartGb.CREATE_ORDER.value());
 		}
 
-		// 같은 장바구니 상품 확인
-		Collection<Cart> cartSqList = cartDao.selectHasSetItemCartList(cart);
-
 		if (cartSqList != null && cartSqList.size() > 0) {		// 장바구니 기존재
 			if (cartSqList.size() > 1) {						// 장바구니 조회 결과 이상시 insert or select 수정 필요
 				throw new IllegalArgumentException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
@@ -195,6 +190,9 @@ public class TsfCartService {
 		} else {
 			cartDao.insertCartInfo(cart);					// 장바구니 마스터 정보 저장
 			cartDao.insertCartHst(cart);                    // 장바구니 이력 정보 저장
+
+			TsfSession.setAttribute("cartSqArr", cart.getCartSq()+"");
+
 			for (Cart param : params) {
 				param.setCartSq(cart.getCartSq());
 				param.setRegNo(cart.getRegNo());
@@ -210,50 +208,74 @@ public class TsfCartService {
 	}
 
 	@Transactional("shopTxnManager")
-	public void saveNormalDealCartInfo(Cart param) {
+	public void saveNormalDealCartInfo(Collection<Cart> params) {
+		Cart cart = new Cart();
 		// 로그인 정보
 		if(TsfSession.isLogin()) {
 			Login login = TsfSession.getInfo();
-			param.setRegNo(login.getCustNo());
-			param.setCustNo(login.getCustNo());
-			param.setUpdNo(login.getCustNo());
+			cart.setCustNo(login.getCustNo());
 		} else {
-			param.setCustNo(0);
-			param.setRegNo(0);
-			param.setUpdNo(0);
+			cart.setCustNo(0);
 		}
-		param.setJsessionId(TscSession.getSessionId());
-
+		cart.setJsessionId(TscSession.getSessionId());
 
-		if ("C".equals(param.getCartGb())) {
-			param.setCartGb(TscConstants.CartGb.CART.value());
-		} else if ("O".equals(param.getCartGb())) {
+		if (!StringUtils.isEmpty(params.iterator().next().getCartGb()) && "C".equals(params.iterator().next().getCartGb())) {
+			cart.setCartGb(TscConstants.CartGb.CART.value());
+		} else if (!StringUtils.isEmpty(params.iterator().next().getCartGb()) && "O".equals(params.iterator().next().getCartGb())) {
 			if ("P".equals(TsfSession.getFrontGb())) {
-				param.setCartGb(TscConstants.CartGb.PC_ORDER.value());
+				cart.setCartGb(TscConstants.CartGb.PC_ORDER.value());
 			} else {
-				param.setCartGb(TscConstants.CartGb.MOB_ORDER.value());
+				cart.setCartGb(TscConstants.CartGb.MOB_ORDER.value());
 			}
 		} else {
-			param.setCartGb(TscConstants.CartGb.CREATE_ORDER.value());
+			cart.setCartGb(TscConstants.CartGb.CREATE_ORDER.value());
 		}
 
-		// 같은 장바구니 상품 확인
-		Collection<Integer> cartSqList = cartDao.selectHasNormalDealItemCartList(param);
+		// 세션 추가용 변수
+		List<String> sendCartSqList = new ArrayList<String>();
+		for(Cart item : params) {
+			item.setCartGb(cart.getCartGb());
+			item.setCustNo(cart.getCustNo());
+			item.setRegNo(cart.getCustNo());
+			item.setUpdNo(cart.getCustNo());
+			item.setJsessionId(cart.getJsessionId());
 
-		if (cartSqList != null && cartSqList.size() > 0) {			// 장바구니 기존재
-			if (cartSqList.size() > 1) {							// 장바구니 조회 결과 이상시 insert or select 수정 필요
-				throw new IllegalArgumentException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
+			// 같은 장바구니 상품 확인
+			Collection<Integer> cartSqList = null;
+			if(TscConstants.CartGb.CART.value().equals(cart.getCartGb())) {
+				cartSqList = cartDao.selectHasNormalDealItemCartList(item);
+			}
+
+			if (cartSqList != null && cartSqList.size() > 0) {			// 장바구니 기존재
+				if (cartSqList.size() > 1) {							// 장바구니 조회 결과 이상시 insert or select 수정 필요
+					throw new IllegalArgumentException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
+				} else {
+					item.setCartSq(cartSqList.iterator().next());
+					cartDao.updateCartInfo(item);
+					cartDao.insertCartHst(item);                // 장바구니 수정 이력 저장
+				}
 			} else {
-				param.setCartSq(cartSqList.iterator().next());
-				cartDao.updateCartInfo(param);
-				cartDao.insertCartHst(param);                // 장바구니 수정 이력 저장
+				cartDao.insertCartInfo(item);					// 장바구니 마스터 정보 저장
+				cartDao.insertCartHst(item);					// 장바구니 수정 이력 저장
+				cartDao.insertCartDetailInfo(item);				// 장바구니 상세 저장
+				cartDao.insertCartDetailHst(item);				// 장바구니 수정 이력 저장
+
+				sendCartSqList.add(item.getCartSq() + "");
 			}
-		} else {
-			cartDao.insertCartInfo(param);					// 장바구니 마스터 정보 저장
-			cartDao.insertCartHst(param);                   // 장바구니 수정 이력 저장
-			cartDao.insertCartDetailInfo(param);			// 장바구니 상세 저장
-			cartDao.insertCartDetailHst(param);             // 장바구니 수정 이력 저장
 		}
+
+		StringBuilder cartSqComma = new StringBuilder();
+
+		int i = 0;
+		for(String cartSq : sendCartSqList) {
+			if(i > 0) {
+				cartSqComma.append(",");
+			}
+			cartSqComma.append(cartSq);
+			i++;
+		}
+
+		TsfSession.setAttribute("cartSqArr", cartSqComma.toString());
 	}
 
 	// 장바구니 상품 리스트 조회 서비스

+ 3 - 0
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -78,6 +78,7 @@ public class TsfCartController extends TsfBaseController {
 	 * 장바구니 등록
 	 * @param param
 	 * goodsCd : 상품코드 (세트 : 세트상품코드, 딜상품 : 원상품코드, 일반상품 : 상품코드)
+	 * dealGoodsCd : 딜상품코드
 	 * itemCd : 구성상품코드 (세트. 세트 아닐 경우 입력X)
 	 * optCd : 옵션코드
 	 * goodsType : 상품타입 (공통코드 G026)
@@ -132,6 +133,8 @@ public class TsfCartController extends TsfBaseController {
 		model.addAttribute("delvCartList", order.getDelvCartList());
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));
 
+		log.info("CHECK SESSION CARTSQARR INFO ::: {}", TsfSession.getAttribute("cartSqArr"));
+
 		return super.getDeviceViewName("cart/cartListAjaxForm");
 	}
 

+ 31 - 4
src/main/webapp/WEB-INF/views/web/cart/cartListAjaxFormWeb.html

@@ -433,7 +433,7 @@
 		temp.optCd = "베이지110";
 		temp.goodsQty = 1;
 		temp.goodsType = "G056_S";
-		temp.cartGb = "C";
+		temp.cartGb = "O";
 		temp.afLinkCd = "afLinkCd";
 		temp.ithrCd = "G027_ZZZ";
 		temp.contentsLoc = "G028_YYY";
@@ -445,7 +445,7 @@
 		temp.optCd = "블루110";
 		temp.goodsQty = 1;
 		temp.goodsType = "G056_S";
-		temp.cartGb = "C";
+		temp.cartGb = "O";
 		temp.afLinkCd = "afLinkCd";
 		temp.ithrCd = "G027_ZZZ";
 		temp.contentsLoc = "G028_YYY";
@@ -457,14 +457,41 @@
 		temp.optCd = "아이보리110";
 		temp.goodsQty = 1;
 		temp.goodsType = "G056_S";
-		temp.cartGb = "C";
+		temp.cartGb = "O";
 		temp.afLinkCd = "afLinkCd";
 		temp.ithrCd = "G027_ZZZ";
 		temp.contentsLoc = "G028_YYY";
 		temp.planDtlSq = "123";
 		compsList.push(temp);
 
-		alert(JSON.stringify(compsList));
+		cfnAddCart(compsList);*/
+
+		/*let compsList = [];
+		let temp = new Object;
+		temp.goodsCd = "14373686";
+		temp.optCd = "챠콜그레이150";
+		temp.goodsQty = 2;
+		temp.goodsType = "G056_D";
+		temp.dealGoodsCd = "STYD000000025"
+		temp.cartGb = "O";
+		temp.afLinkCd = "afLinkCd";
+		temp.ithrCd = "G027_ZZZ";
+		temp.contentsLoc = "G028_YYY";
+		temp.planDtlSq = "123";
+		compsList.push(temp);
+
+		temp = new Object;
+		temp.goodsCd = "14373710";
+		temp.optCd = "L핑크130";
+		temp.goodsQty = 3;
+		temp.goodsType = "G056_D";
+		temp.dealGoodsCd = "STYD000000025"
+		temp.cartGb = "O";
+		temp.afLinkCd = "afLinkCd";
+		temp.ithrCd = "G027_ZZZ";
+		temp.contentsLoc = "G028_YYY";
+		temp.planDtlSq = "123";
+		compsList.push(temp);
 
 		cfnAddCart(compsList);*/
 	});

+ 9 - 1
src/main/webapp/ux/style24_link.js

@@ -210,7 +210,15 @@ function cfnAddCart(cartList) {
 		contentType: 'application/json',
 		dataType : 'text',
 		success : function(result) {
-			alert(result);
+			if(cartList[0].cartGb == "C") {
+				mcxDialog.confirm("<div class="+"dialog-title"+">"+"상품이 쇼핑백에 추가되었습니다.</div><p>쇼핑백으로 이동하시겠습니까?</p>", {
+					cancelBtnText: "계속 쇼핑하기",
+					sureBtnText: "쇼핑백 가기",
+					sureBtnClick: function(){
+						location.href='/cart/list/form'; 	//내 쇼핑백 이동url
+					}
+				});
+			}
 		}
 	});
 }