jsh77b 5 лет назад
Родитель
Сommit
903df20afb

+ 433 - 80
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -1,9 +1,12 @@
 package com.style24.front.biz.web;
 
+import java.util.ArrayList;
 import java.util.Collection;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
@@ -55,8 +58,6 @@ public class TsfOrderController extends TsfBaseController {
 	public ModelAndView orderNoMember(Order order, RedirectAttributes redirectAttributes) {
 		ModelAndView mav = new ModelAndView();
 		
-		String rtnView = "";
-		
 		// 비회원 주문시 로직 정리
 		// @ web 인 경우에는 고객정보 입력 화면 후 주문서 이동 후 본인인중
 		// @ web 의 경우에는 입력한 고객정보와 인증받은 고객정보가 다른경우 고객정보 업데이트
@@ -76,6 +77,8 @@ public class TsfOrderController extends TsfBaseController {
 		return mav;
 	}
 	
+	
+	
 	/**
 	 * 주문페이지
 	 *
@@ -92,58 +95,31 @@ public class TsfOrderController extends TsfBaseController {
 		// TODO
 		// 1.비회주문, 회원 주문 판단 로직,  고객정보 세션 판단
 		// 세션고객정보가 존재하면 회원주문 없으면 비회원 주문
-		
-		// 임시 jsessionId
-		String jsessionId 	= "aaec62cc-5f91-47bb-ba65-ebc9a61385cf";
-		Boolean noMember 	= true;
 
-		// TODO 로그인체크 로직 추가
-		// 1.0 회원, 비회원 여부 판단
-		if (TsfSession.getInfo().getCustNo() == null) {
-			order.setJsessionId(jsessionId);
-		} else {
-			noMember = false;
+		// 1. 로그인체크 후 custNo 설정
+		if (TsfSession.isLogin()) {
 			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		} else {
+			order.setJsessionId(TsfSession.getSessionId());
 		}
 		
 		// TODO
-		// 1.1 카트시퀀스가 없을때 처리 장바구니로 이동 
+		// 1.1 카트시퀀스가 정보가 없을때 처리 장바구니로 이동 
 		if (order.getCartSqArr() == null) {
 			mav.setViewName("redirect:/order/noMember");		// 비회원주문서화면
 			return mav;
 		}
 		
-		Order custemerInfo = new Order();
-		Order deliveryAddrInfo = new Order();
-
-		// TODO 로그인체크 로직 추가
-		if (noMember) {
-			// 1.1 주문고객 정보조회
-			custemerInfo.setCustNm(order.getCustNm());
-			custemerInfo.setCellPhnno(order.getCellPhnno());
-			custemerInfo.setEmail(order.getEmail());
+		// 2. 로그인정보 체크 후 비회원 고객정보 설정
+		if (TsfSession.isLogin()) {
+			order.setCustNm("");
+			order.setCellPhnno("");
+			order.setEmail("");
 			
-			// 1.2 배송지 정보조회 (기본배송지)
-			deliveryAddrInfo.setDelvAddrNm(order.getCustNm());
-			deliveryAddrInfo.setRecipZipcode(order.getRecipZipcode());
-			deliveryAddrInfo.setRecipBaseAddr(order.getRecipBaseAddr());
-			deliveryAddrInfo.setRecipDtlAddr(order.getRecipDtlAddr());
-			deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
-		} else {
-			// 1.1 주문고객 정보조회
-			custemerInfo = coreOrderService.getCustemerInfo(order);
-			
-			// 1.2 배송지 정보조회 (기본배송지)
-			deliveryAddrInfo = coreOrderService.getDeliveryAddrInfo(order);
-			
-			if (deliveryAddrInfo == null) {
-				deliveryAddrInfo = new Order();
-				deliveryAddrInfo.setDelvAddrNm(custemerInfo.getCustNm());
-				deliveryAddrInfo.setRecipZipcode("");
-				deliveryAddrInfo.setRecipBaseAddr("");
-				deliveryAddrInfo.setRecipDtlAddr("");
-				deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
-			}
+			order.setDelvAddrNm("");
+			order.setRecipZipcode("");
+			order.setRecipBaseAddr("");
+			order.setRecipDtlAddr("");
 		}
 
 		// TODO 임시 장바구니
@@ -156,37 +132,12 @@ public class TsfOrderController extends TsfBaseController {
 		
 		// 2.2 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
 		GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList);
-
-		// 3. 할인구간정보조회
-		// 3.2 상품쿠폰, 장바구니쿠폰 목록 조회
-		GagaMap goodsCartCpnMap = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
-		
-		Collection<Order> goodsCpnList 	= (Collection<Order>) goodsCartCpnMap.get("goodsCpnList");
-		Collection<Order> cartCpnList 	= (Collection<Order>) goodsCartCpnMap.get("cartCpnList");
-		
-		// 3.2.1 상품기준 ---> 상품쿠폰 적용된 상품 목록
-		Collection<Order> goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
-		
-		// 3.2.2 장바구니쿠폰기준 ---> 상품목록
-		cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
-		
-		// 3.3 배송비쿠폰목록 조회
-		Collection<Order> delvCpnList = coreOrderService.getDelvCpnList(order);
-		
-		Collection<Order> delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
-		
-		// 3.3.1 배소업체기준 ---> 배송비쿠폰
-		delvCpnList = coreOrderService.getDelvCpnApplyList(delvFeeCdList, delvCpnList);
 		
 		// 3.4 고객 보유 포인트 정보 조회
 		int rmPntAmt = coreOrderService.getCustPointInfo(order);
 		
 		// 3.5 고객 보유 상품권 정보 조회
 		int rmGfcdAmt = coreOrderService.getGiftcardInfo(order);
-		
-		// 4. 사은품 정보
-		// 4.1 장바구니상품 사음품 적용 정보 조회
-		GagaMap  resultMap = coreFreegiftService.getOrderFreegift(order);
 
 		// 101. 상품정보
 		mav.addObject("cartGoodsList"					, tmtbGoodsApplyList);						// 장바구니상품목록 (즉시할인쿠폰적용)
@@ -203,17 +154,228 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("delvAllCartList" 				, delvOrderMap.get("delvAllCartList"));		// 전체배송목록
 		mav.addObject("sumDelvFee" 						, delvOrderMap.get("sumDelvFee"));			// 배송비합계
 		
-		// 102. 고객정보
-		mav.addObject("custemerInfo"					, custemerInfo);							// 고객정보
-		mav.addObject("deliveryAddrInfo"				, deliveryAddrInfo);						// 배송지정보
-		mav.addObject("shotDelvYn" 						, order.getShotDelvYn());					// 장바구니 총알배송여부
-		
+		// 102. 주문정보
+		mav.addObject("order" 							, order);									// 주문정보
+
 		// 103. 할인정보
 		mav.addObject("tmtbGoodsApplyList"				, tmtbGoodsApplyList);						// 다다익선상품 적용목록
+		mav.addObject("orgGoodsSumAmt"					, goodsDcAmtMap.get("orgGoodsSumAmt"));		// 상품금액합계
+		mav.addObject("cpn1DcSumAmt"					, goodsDcAmtMap.get("cpn1DcSumAmt"));		// 즉시할인금액합계
+		mav.addObject("tmtbDcSumAmt"					, goodsDcAmtMap.get("tmtbDcSumAmt"));		// 다다익선할인금액합계
+		mav.addObject("prePntDcAmt"						, goodsDcAmtMap.get("prePntDcAmt"));		// 선포인트사용가능금액
+
+		mav.addObject("rmPntAmt"						, rmPntAmt);								// 고객포인트정보
+		mav.addObject("rmGfcdAmt"						, rmGfcdAmt);								// 고객상품권정보
+		mav.addObject("savePntSumAmt"					, goodsDcAmtMap.get("savePntSumAmt"));		// 적립예정포인트합계
+		
+		mav.setViewName(super.getDeviceViewName("order/OrderForm"));
+		
+		return mav;
+	}
+	
+	/**
+	 * 고객정보조회
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 02. 17
+	 */
+	@ResponseBody
+	@PostMapping("/custemerInfo")
+	public ModelAndView custemerInfo(@RequestBody Order order) {
+		
+		Order custemerInfo = new Order();
+		
+		// 1. 로그인체크 후 custNo 설정
+		if (TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		} else {
+			order.setJsessionId(TsfSession.getSessionId());
+		}
+		
+		// 2. 로그인체크 후 고객정보 설정
+		if (TsfSession.isLogin()) {
+			// 2.1 주문고객 정보조회
+			custemerInfo = coreOrderService.getCustemerInfo(order);
+		} else {
+			// 2.1 주문고객 정보조회
+			custemerInfo.setCustNm(order.getCustNm());
+			custemerInfo.setCellPhnno(order.getCellPhnno());
+			custemerInfo.setEmail(order.getEmail());
+		}
+		
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("custemerInfo"	, custemerInfo); 	// 고객정보
+		mav.addObject("order"			, order);			// 파라미터
+		mav.setViewName(super.getDeviceViewName("order/OrderCustemerInfo"));
+		
+		return mav;
+	}
+	
+	/**
+	 * 배송정보조회
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 02. 17
+	 */
+	@ResponseBody
+	@PostMapping("/deliveryAddrInfo")
+	public ModelAndView deliveryAddrInfo(@RequestBody Order order) {
+
+		Order deliveryAddrInfo = new Order();
+		
+		// 1. 로그인체크 후 custNo 설정
+		if (TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		} else {
+			order.setJsessionId(TsfSession.getSessionId());
+		}
+		
+		// 2. 로그인체크 후 고객정보 설정
+		if (TsfSession.isLogin()) {
+			// 2.1 주문고객 정보조회
+			deliveryAddrInfo = coreOrderService.getDeliveryAddrInfo(order);
+			
+			if (deliveryAddrInfo == null) {
+				deliveryAddrInfo = new Order();
+				deliveryAddrInfo.setDelvAddrNm(deliveryAddrInfo.getCustNm());
+				deliveryAddrInfo.setRecipZipcode("");
+				deliveryAddrInfo.setRecipBaseAddr("");
+				deliveryAddrInfo.setRecipDtlAddr("");
+				deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
+			}
+		} else {
+			// 2.1 주문고객 정보조회			
+			deliveryAddrInfo.setDelvAddrNm(order.getCustNm());
+			deliveryAddrInfo.setRecipZipcode(order.getRecipZipcode());
+			deliveryAddrInfo.setRecipBaseAddr(order.getRecipBaseAddr());
+			deliveryAddrInfo.setRecipDtlAddr(order.getRecipDtlAddr());
+			deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
+		}
+		
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("deliveryAddrInfo", deliveryAddrInfo);						// 배송지정보
+		mav.addObject("order"			, order);									// 파라미터
+		mav.setViewName(super.getDeviceViewName("order/OrderDeliveryAddrInfo"));
+		
+		return mav;
+	}
+	
+	/**
+	 * 사은품정보조회
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 02. 17
+	 */
+	@ResponseBody
+	@PostMapping("/freegiftInfo")
+	public ModelAndView freegiftInfo(@RequestBody Order order) {
+
+		GagaMap resultMap = new GagaMap();
+		
+		// 1. 로그인체크 후 custNo 설정
+		if (TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		} else {
+			order.setJsessionId(TsfSession.getSessionId());
+		}
+		
+		// 2. 로그인체크 후 정보 설정
+		if (TsfSession.isLogin()) {
+			// 4. 사은품 정보 (장바구니상품 사음품 적용 정보 조회)
+			resultMap = coreFreegiftService.getOrderFreegift(order);
+		} 
+		
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("freegiftGoodsList"	, resultMap.get("freegiftGoodsList"));		// 사은품상품정보 목록
+		mav.addObject("freegiftList"		, resultMap.get("freegiftList"));			// 사은품정보 목록
+		mav.addObject("order"				, order);									// 파라미터
+		
+		mav.setViewName(super.getDeviceViewName("order/OrderFreegiftInfo"));
+		
+		return mav;
+	}
+	
+	/**
+	 * 할인정보조회
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 02. 17
+	 */
+	@SuppressWarnings("unchecked")
+	@ResponseBody
+	@PostMapping("/dcAmtInfo")
+	public ModelAndView dcAmtInfo(@RequestBody Order order) {
+
+		GagaMap goodsDcAmtMap = new GagaMap();
+		
+		Collection<Order> goodsApplyCpnList 	= new ArrayList<Order>();
+		Collection<Order> goodsCpnList			= new ArrayList<Order>();
+		Collection<Order> cartCpnList 			= new ArrayList<Order>();
+		Collection<Order> delvCpnList 			= new ArrayList<Order>();
+		Collection<Order> delvFeeCdList 		= new ArrayList<Order>();
+		
+		int rmPntAmt 	= 0;
+		int rmGfcdAmt 	= 0;
+		
+		// 1. 로그인체크 후 custNo 설정
+		if (TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		} else {
+			order.setJsessionId(TsfSession.getSessionId());
+		}
+		
+		// 2. 로그인체크 후 정보 설정 (할인구간정보조회)
+		if (TsfSession.isLogin()) {
+			
+			// 2.1 배송단위별 상품 목록 조회 (장바구니)
+			Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
+			
+			// 2.2 상품금액, 선포인트, 다다익선할인금액
+			goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
+			
+			// 2.3 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
+			GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList);
+			
+			// 2.4 상품쿠폰, 장바구니쿠폰 목록 조회
+			GagaMap goodsCartCpnMap = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
+			
+			goodsCpnList 	= (Collection<Order>) goodsCartCpnMap.get("goodsCpnList");
+			cartCpnList 	= (Collection<Order>) goodsCartCpnMap.get("cartCpnList");
+			
+			// 2.5 상품쿠폰 적용된 상품 목록(상품기준)
+			goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
+			
+			// 2.6 장바구니쿠폰(장바구니기준 상품목록)
+			cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
+			
+			// 2.7 배송비쿠폰목록 조회
+			delvCpnList = coreOrderService.getDelvCpnList(order);
+			
+			delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
+			
+			// 2.8 배송비쿠폰(배송업체기준)
+			delvCpnList = coreOrderService.getDelvCpnApplyList(delvFeeCdList, delvCpnList);
+			
+			// 2.9 고객 보유 포인트 정보 조회
+			rmPntAmt = coreOrderService.getCustPointInfo(order);
+			
+			// 2.10 고객 보유 상품권 정보 조회
+			rmGfcdAmt = coreOrderService.getGiftcardInfo(order);
+		} 
+
+		ModelAndView mav = new ModelAndView();
 		mav.addObject("goodsApplyCpnList"				, goodsApplyCpnList);						// 상품적용쿠폰
 		mav.addObject("cartCpnList"						, cartCpnList);								// 장바구니쿠폰목록
 		mav.addObject("delvCpnList"						, delvCpnList);								// 배송비쿠폰목록
-		
+
 		mav.addObject("orgGoodsSumAmt"					, goodsDcAmtMap.get("orgGoodsSumAmt"));		// 상품금액합계
 		mav.addObject("cpn1DcSumAmt"					, goodsDcAmtMap.get("cpn1DcSumAmt"));		// 즉시할인금액합계
 		mav.addObject("tmtbDcSumAmt"					, goodsDcAmtMap.get("tmtbDcSumAmt"));		// 다다익선할인금액합계
@@ -222,16 +384,48 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("rmPntAmt"						, rmPntAmt);								// 고객포인트정보
 		mav.addObject("rmGfcdAmt"						, rmGfcdAmt);								// 고객상품권정보
 		mav.addObject("savePntSumAmt"					, goodsDcAmtMap.get("savePntSumAmt"));		// 적립예정포인트합계
+		mav.addObject("order"							, order);									// 파라미터
 		
-		// 104. 사은품정보
-		mav.addObject("freegiftGoodsList"				, resultMap.get("freegiftGoodsList"));		// 사은품상품정보 목록
-		mav.addObject("freegiftList"					, resultMap.get("freegiftList"));			// 사은품정보 목록
+		mav.setViewName(super.getDeviceViewName("order/OrderDcAmtInfo"));
 		
-		mav.setViewName(super.getDeviceViewName("order/OrderForm"));
+		return mav;
+	}
+	
+	/**
+	 * 할인정보조회
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 02. 17
+	 */
+	@ResponseBody
+	@PostMapping("/paymentInfo")
+	public ModelAndView paymentInfo(@RequestBody Order order) {
+		
+		// 1. 로그인체크 후 custNo 설정
+		if (TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		} else {
+			order.setJsessionId(TsfSession.getSessionId());
+		}
+		
+		// 2. 로그인체크 후 정보 설정
+		if (TsfSession.isLogin()) {
+			
+		} 
+
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("order" , order);	// 파라미터
+		mav.setViewName(super.getDeviceViewName("order/OrderPaymentInfo"));
 		
 		return mav;
 	}
 	
+	
+	
+	
+	
 	/**
 	 * 총알배송 가능 지역 체크
 	 *
@@ -241,7 +435,7 @@ public class TsfOrderController extends TsfBaseController {
 	 * @since 2021. 02. 08
 	 */
 	@ResponseBody
-	@RequestMapping(value = "/getDailyDeliveryCheck")
+	@PostMapping(value = "/getDailyDeliveryCheck")
 	public int getDailyDeliveryCheck(Order order) {
 		
 		// 1. 총알배송가능 지역, 총알배송 가능 시간 체크
@@ -259,7 +453,7 @@ public class TsfOrderController extends TsfBaseController {
 	 * @since 2021. 02. 17
 	 */
 	@ResponseBody
-	@RequestMapping(value = "/delvAddrChangePop")
+	@PostMapping(value = "/delvAddrChangePop")
 	public ModelAndView delvAddrChangePop(Order order) {
 		
 		ModelAndView mav = new ModelAndView();
@@ -345,5 +539,164 @@ public class TsfOrderController extends TsfBaseController {
 	}
 	
 	
+	
+	
+	/**
+	 * 주문페이지
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */
+	@SuppressWarnings({ "unchecked", "null" })
+	@RequestMapping(value = "/form20210304")
+	public ModelAndView orderForm20210304(Order order) {
+		ModelAndView mav = new ModelAndView();
+		
+		// TODO
+		// 1.비회주문, 회원 주문 판단 로직,  고객정보 세션 판단
+		// 세션고객정보가 존재하면 회원주문 없으면 비회원 주문
+		
+		// 임시 jsessionId
+		String jsessionId 	= "aaec62cc-5f91-47bb-ba65-ebc9a61385cf";
+		Boolean noMember 	= true;
+
+		// TODO 로그인체크 로직 추가
+		// 1.0 회원, 비회원 여부 판단
+		if (TsfSession.getInfo().getCustNo() == null) {
+			order.setJsessionId(jsessionId);
+		} else {
+			noMember = false;
+			order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+		}
+		
+		// TODO
+		// 1.1 카트시퀀스가 없을때 처리 장바구니로 이동 
+		if (order.getCartSqArr() == null) {
+			mav.setViewName("redirect:/order/noMember");		// 비회원주문서화면
+			return mav;
+		}
+		
+		Order custemerInfo = new Order();
+		Order deliveryAddrInfo = new Order();
+
+		// TODO 로그인체크 로직 추가
+		if (noMember) {
+			// 1.1 주문고객 정보조회
+			custemerInfo.setCustNm(order.getCustNm());
+			custemerInfo.setCellPhnno(order.getCellPhnno());
+			custemerInfo.setEmail(order.getEmail());
+			
+			// 1.2 배송지 정보조회 (기본배송지)
+			deliveryAddrInfo.setDelvAddrNm(order.getCustNm());
+			deliveryAddrInfo.setRecipZipcode(order.getRecipZipcode());
+			deliveryAddrInfo.setRecipBaseAddr(order.getRecipBaseAddr());
+			deliveryAddrInfo.setRecipDtlAddr(order.getRecipDtlAddr());
+			deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
+		} else {
+			// 1.1 주문고객 정보조회
+			custemerInfo = coreOrderService.getCustemerInfo(order);
+			
+			// 1.2 배송지 정보조회 (기본배송지)
+			deliveryAddrInfo = coreOrderService.getDeliveryAddrInfo(order);
+			
+			if (deliveryAddrInfo == null) {
+				deliveryAddrInfo = new Order();
+				deliveryAddrInfo.setDelvAddrNm(custemerInfo.getCustNm());
+				deliveryAddrInfo.setRecipZipcode("");
+				deliveryAddrInfo.setRecipBaseAddr("");
+				deliveryAddrInfo.setRecipDtlAddr("");
+				deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
+			}
+		}
+
+		// TODO 임시 장바구니
+		// 2. 장바구니시퀀스 배열 등록 (장바구니 상품 정보 조회)		
+		// 2.1 배송단위별 상품 목록 조회 (장바구니)
+		Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
+		
+		// 2.1.0 상품금액, 선포인트, 다다익선할인금액
+		GagaMap goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
+		
+		// 2.2 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
+		GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList);
+
+		// 3. 할인구간정보조회
+		// 3.2 상품쿠폰, 장바구니쿠폰 목록 조회
+		GagaMap goodsCartCpnMap = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
+		
+		Collection<Order> goodsCpnList 	= (Collection<Order>) goodsCartCpnMap.get("goodsCpnList");
+		Collection<Order> cartCpnList 	= (Collection<Order>) goodsCartCpnMap.get("cartCpnList");
+		
+		// 3.2.1 상품기준 ---> 상품쿠폰 적용된 상품 목록
+		Collection<Order> goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
+		
+		// 3.2.2 장바구니쿠폰기준 ---> 상품목록
+		cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
+		
+		// 3.3 배송비쿠폰목록 조회
+		Collection<Order> delvCpnList = coreOrderService.getDelvCpnList(order);
+		
+		Collection<Order> delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
+		
+		// 3.3.1 배소업체기준 ---> 배송비쿠폰
+		delvCpnList = coreOrderService.getDelvCpnApplyList(delvFeeCdList, delvCpnList);
+		
+		// 3.4 고객 보유 포인트 정보 조회
+		int rmPntAmt = coreOrderService.getCustPointInfo(order);
+		
+		// 3.5 고객 보유 상품권 정보 조회
+		int rmGfcdAmt = coreOrderService.getGiftcardInfo(order);
+		
+		// 4. 사은품 정보
+		// 4.1 장바구니상품 사음품 적용 정보 조회
+		GagaMap  resultMap = coreFreegiftService.getOrderFreegift(order);
+
+		// 101. 상품정보
+		mav.addObject("cartGoodsList"					, tmtbGoodsApplyList);						// 장바구니상품목록 (즉시할인쿠폰적용)
+		mav.addObject("delvTotCnt" 						, delvOrderMap.get("delvTotCnt"));			// 총상품건수
+		mav.addObject("delvFeeTotCnt"					, delvOrderMap.get("delvFeeTotCnt"));		// 총배송타입건수
+		mav.addObject("wmsCnt" 							, delvOrderMap.get("wmsCnt"));				// 자사상품건수
+		mav.addObject("resCnt" 							, delvOrderMap.get("resCnt"));				// 자사예약상품건수
+		mav.addObject("delvCnt" 						, delvOrderMap.get("delvCnt"));				// 입점업체상품건수
+		
+		mav.addObject("shotCartList" 					, delvOrderMap.get("shotCartList"));		// 자사총알배송상품목록
+		mav.addObject("wmsCartList" 					, delvOrderMap.get("wmsCartList"));			// 자사일반배송상품목록
+		mav.addObject("delvCartList" 					, delvOrderMap.get("delvCartList"));		// 입점업체상품목록
+		mav.addObject("resCartList" 					, delvOrderMap.get("resCartList"));			// 자사예약배송상품목록
+		mav.addObject("delvAllCartList" 				, delvOrderMap.get("delvAllCartList"));		// 전체배송목록
+		mav.addObject("sumDelvFee" 						, delvOrderMap.get("sumDelvFee"));			// 배송비합계
+		
+		// 102. 고객정보
+		mav.addObject("custemerInfo"					, custemerInfo);							// 고객정보
+		mav.addObject("deliveryAddrInfo"				, deliveryAddrInfo);						// 배송지정보
+		mav.addObject("shotDelvYn" 						, order.getShotDelvYn());					// 장바구니 총알배송여부
+		
+		// 103. 할인정보
+		mav.addObject("tmtbGoodsApplyList"				, tmtbGoodsApplyList);						// 다다익선상품 적용목록
+		mav.addObject("goodsApplyCpnList"				, goodsApplyCpnList);						// 상품적용쿠폰
+		mav.addObject("cartCpnList"						, cartCpnList);								// 장바구니쿠폰목록
+		mav.addObject("delvCpnList"						, delvCpnList);								// 배송비쿠폰목록
+		
+		mav.addObject("orgGoodsSumAmt"					, goodsDcAmtMap.get("orgGoodsSumAmt"));		// 상품금액합계
+		mav.addObject("cpn1DcSumAmt"					, goodsDcAmtMap.get("cpn1DcSumAmt"));		// 즉시할인금액합계
+		mav.addObject("tmtbDcSumAmt"					, goodsDcAmtMap.get("tmtbDcSumAmt"));		// 다다익선할인금액합계
+		mav.addObject("prePntDcAmt"						, goodsDcAmtMap.get("prePntDcAmt"));		// 선포인트사용가능금액
+
+		mav.addObject("rmPntAmt"						, rmPntAmt);								// 고객포인트정보
+		mav.addObject("rmGfcdAmt"						, rmGfcdAmt);								// 고객상품권정보
+		mav.addObject("savePntSumAmt"					, goodsDcAmtMap.get("savePntSumAmt"));		// 적립예정포인트합계
+		
+		// 104. 사은품정보
+		mav.addObject("freegiftGoodsList"				, resultMap.get("freegiftGoodsList"));		// 사은품상품정보 목록
+		mav.addObject("freegiftList"					, resultMap.get("freegiftList"));			// 사은품정보 목록
+		
+		mav.setViewName(super.getDeviceViewName("order/OrderForm"));
+		
+		return mav;
+	}
+	
+	
 
 }

+ 76 - 0
src/main/webapp/WEB-INF/views/web/order/OrderCustemerInfoWeb.html

@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderCustemerInfoWeb.html
+ * @desc    : 고객정보 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.01   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<div class="fold_head">
+	<a href="javascript:void(0)">
+		<div>
+			<div class="fold_tit">
+				<span>주문고객</span>
+			</div>
+			<div class="data">
+				<span th:text="${custemerInfo.custNm}"></span>
+				<span th:text="${custemerInfo.email}"></span>
+				<span th:text="${custemerInfo.cellPhnno}"></span>
+			</div>
+		</div>
+	</a>
+</div>
+
+<div class="fold_cont" style="display: none;">
+	<div class="area_mbinfo">
+		<dl>
+			<div>
+				<dt>
+					<span class="sr-only">주문자명</span>
+				</dt>
+				<dd th:text="${custemerInfo.custNm}"></dd>
+			</div>
+			<div>
+				<dt>
+					<span class="sr-only">이메일</span>
+				</dt>
+				<dd th:text="${custemerInfo.email}">/dd>
+			</div>
+			<div>
+				<dt>
+					<span class="sr-only">휴대폰 번호</span>
+				</dt>
+				<dd>
+					<span th:text="${custemerInfo.cellPhnno}"></span>
+					<th:block th:if="${custemerInfo.ci} == null or ${custemerInfo.ci} == ''">
+						<button type="button" class="btn_popup" id="">
+							<span>본인인증하기</span>
+						</button>
+					</th:block>
+				</dd>
+			</div>
+		</dl>
+	</div>
+</div>
+
+<script th:inline="javascript">
+var dispYn = [[${order.dispYn}]]; // 노출여부
+
+//컨텐츠 호출
+$(document).ready( function() {
+	// 화면펼침
+	if (dispYn == "Y") {
+		$("#custemerInfo .fold_head").addClass("on");
+		$("#custemerInfo .fold_cont").css("display", "block");
+	}
+});
+</script>
+
+</html>

+ 275 - 0
src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html

@@ -0,0 +1,275 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderDcAmtInfoWeb.html
+ * @desc    : 할인혜택 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.01   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<!-- 할인/혜택 사용 -->
+<div class="fold_head">
+	<a href="javascript:void(0)">
+		<div>
+			<div class="fold_tit">
+				<span>할인/혜택 사용</span>
+			</div>
+			<div class="data maxdisc">
+				<div class="form_field">
+					<input id="chk-maxdisc" type="checkbox" checked="">
+					<label for="chk-maxdisc">
+						<span>최대 할인혜택을 바로 적용하세요 <em class="maxdisc_amount"></em></span>
+					</label>
+				</div>
+			</div>
+		</div>
+	</a>
+</div>
+<div class="fold_cont" style="display: none;">
+	<div class="area_seldiscount">
+		<dl>
+			<div>
+				<dt><span class="mid">할인코드</span></dt>
+				<dd>
+					<div class="form_field">
+						<div class="input_wrap">
+							<input type="text" id="serialCpnNm" class="form_control" maxlength="13" placeholder="할인코드를 입력해주세요.">
+							<button type="button" class="btn btn_dark" onclick="serialCpnApply()">적용</button>
+						</div>
+					</div>
+				</dd>
+			</div>
+			<div>
+				<dt>할인쿠폰</dt>
+				<dd>
+					<a href="javascript:void(0);" class="btn_coupon_toggle">할인쿠폰 <span id="cpnApplyCnt"></span>적용</a>
+					<div class="coupon_list">
+						<ul>
+							<!--  상품쿠폰 -->
+							<th:block th:each="goods, i : ${goodsApplyCpnList}">
+								<th:block th:if="${goods.goodsCpnList.size() > 0}">
+									<li>
+										<div class="coupon">
+											<div class="item_gd">
+												<figure>
+													<span class="thumb"><img src="/images/pc/thumb/tmp_odSide1.jpg" alt=""></span>
+													<figcaption>
+														<div class="brand" th:text="${goods.brandEnm}+' '+${goods.brandKnm}"></div>
+														<div class="name" th:text="${goods.goodsNm}"></div>
+														<div class="price">
+															<th:block th:if="${goods.tmtbDcAmt} > 0">
+																<span class="selling_price"  th:text="${#numbers.formatInteger(goods.tmtbDcAmt, 1, 'COMMA')}"></span>
+															</th:block>
+															<th:block th:if="${goods.tmtbDcAmt} < 1">
+																<span class="selling_price"  th:text="${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')}"></span>
+															</th:block>
+														</div>
+													</figcaption>
+												</figure>
+											</div>
+											 
+											<div class="form_field">
+												<div class="select_custom type1">
+													<div class="combo">
+														<input type="hidden" name="cpnType" value="goodsCpn"/>
+														<input type="hidden" name="cpnCartSq" th:value="${goods.cartSq}"/>
+														<input type="hidden" name="custCpnSq" value="0"/>
+														<input type="hidden" name="cpnDcAmt" value="0"/>
+														
+														<div class="select">선택없음</div>
+														<ul class="list">
+															<li value="0">선택없음</li>
+															<th:block th:each="goodsCpn, k : ${goods.goodsCpnList}">
+																<li th:value="${goodsCpn.custCpnSq}" th:data="${goodsCpn.cpnDcAmt}" th:text="${goodsCpn.cpnNm}"></li>
+															</th:block>
+														</ul>
+													</div>
+												</div>
+											</div>
+											<div class="cp_discount" style="display:none;">
+												<span class="cp_amount"></span>
+												<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
+											</div>
+										</div>
+									</li>
+								</th:block>
+							</th:block>
+							<!--  상품쿠폰 -->
+
+							<!--  장바구니쿠폰 -->
+							<th:block th:if="${cartCpnList.size() > 0}">
+								<li>
+									<div class="coupon">
+										<div class="form_field">
+											<div class="select_custom type1">
+												<div class="combo">
+													<input type="hidden" name="cpnType" value="cartCpn"/>
+													<input type="hidden" name="custCpnSq" value="0"/>
+													<input type="hidden" name="cpnDcAmt" value="0"/>
+													
+													<div class="select">선택없음</div>
+													<ul class="list">
+														<li value="0">선택없음</li>
+														<th:block th:each="cartCpn, k : ${cartCpnList}">
+															<li th:value="${cartCpn.custCpnSq}" th:data="${cartCpn.cpnDcAmt}">
+																<th:block th:text="${cartCpn.cpnNm}"></th:block>
+																<input type="hidden" name="dcWay" th:value="${cartCpn.dcWay}"/>
+																<input type="hidden" name="dcVal" th:value="${cartCpn.dcVal}"/>
+																<th:block th:each="cartCpnCartSq, kokok : ${cartCpn.cartCpnCartSqArr}"> 
+																	<input type="hidden" name="cartCpnCartSq" th:value="${cartCpnCartSq}" />
+																</th:block>
+															</li>
+														</th:block>
+													</ul>
+												</div>
+											</div>
+										</div>
+										<div class="cp_discount">
+											<span class="cp_amount"></span>
+											<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
+										</div>
+									</div>
+								</li>
+							</th:block>
+							<!--  장바구니쿠폰 -->
+							
+							<!--  배송비쿠폰 -->
+							<th:block th:if="${delvCpnList.size() > 0}">
+								<li>
+									<div class="coupon">
+										<div class="form_field">
+											<div class="select_custom type1">
+												<div class="combo">
+													<input type="hidden" name="cpnType" value="delvCpn"/>
+													<input type="hidden" name="custCpnSq" value="0"/>
+													<input type="hidden" name="cpnDcAmt" value="0"/>
+													<input type="hidden" name="delvFeeCd" value="0"/>
+													
+													<div class="select" value="0">선택없음</div>
+													<ul class="list">
+														<li value="0">선택없음</li>
+														<th:block th:each="delvCpn, k : ${delvCpnList}">
+															<li th:value="${delvCpn.custCpnSq}" th:data="${delvCpn.cpnDcAmt}" th:delvfeecd="${delvCpn.delvFeeCd}" th:text="${delvCpn.cpnNm}"></li>
+														</th:block>
+													</ul>
+												</div>
+											</div>
+										</div>
+										<div class="cp_discount">
+											<span class="cp_amount"></span>
+											<button type="button" class="btn_del_coupon"><span>쿠폰적용해제</span></button>
+										</div>
+									</div>
+								</li>
+							</th:block>
+							<!--  배송비쿠폰 -->
+						</ul>
+					</div>
+				</dd>
+			</div>
+		</dl>
+	</div>
+	
+	<!-- 선포인트금액, 포인트금액, 상품권금액 0보다 클때 적용 -->
+	<th:block th:if="${prePntDcAmt} > 0 or ${rmPntAmt} > 0 or ${rmGfcdAmt} > 0">
+		<div class="area_selpoint">
+			<dl>
+				<th:block th:if="${prePntDcAmt} > 0">
+					<div>
+						<dt>선 포인트 사용</dt>
+						<dd>
+							<div class="form_field">
+								<div>
+									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint1"> 
+									<label for="rdi-beforpoint1"><span>사용 안함</span></label>
+								</div>
+								<div>
+									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2"> 
+									<label for="rdi-beforpoint2"><span>사용함</span></label> 
+									<span class="remain_point" th:text="|사용가능 포인트 : ${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')} P|"></span>
+								</div>
+							</div>
+						</dd>
+					</div>
+				</th:block>
+				<th:block th:if="${rmPntAmt} > 0">
+					<div>
+						<dt>
+							<span class="mid">스타일 포인트</span>
+						</dt>
+						<dd>
+							<div class="form_field">
+								<input type="hidden" name="rmPntAmt" th:value="${rmPntAmt}"/>
+								<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
+								<th:block th:if="${orgGoodsSumAmt} >= 30000">
+									<div class="input_wrap">
+										<input type="text" name="pntDcAmtStr" class="form_control" maxlength="" placeholder="사용할 포인트를 입력해주세요.">
+										<button type="button" class="btn btn_dark" id="btn_point_apply">적용</button>
+									</div>
+									<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')} P|"></span>(결제금액의 최대 40%까지 사용가능)</p>
+								</th:block>
+								<!-- 스타일 포인트 3만원 이상 결제시 노출 -->
+								
+								<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
+								<th:block th:if="${orgGoodsSumAmt} < 30000">
+									<div class="input_wrap">
+										<input type="text" class="form_control" maxlength="" placeholder="3만원 이상 결제시에만 포인트 사용이 가능합니다." disabled>
+									</div>
+								</th:block>
+							</div>
+						</dd>
+					</div>
+				</th:block>
+				<th:block th:if="${rmGfcdAmt} > 0">
+					<div>
+						<dt>
+							<span class="mid">상품권</span>
+						</dt>
+						<dd>
+							<div class="form_field">
+								<input type="hidden" name="rmGfcdAmt" th:value="${rmGfcdAmt}"/>
+								<div class="input_wrap">
+									<input type="text" name="gfcdUseAmtStr" class="form_control" maxlength="" placeholder="사용할 금액을 입력해주세요.">
+									<button type="button" class="btn btn_dark" id="btn_gfcd_apply">적용</button>
+								</div>
+								<p><span class="remain_point" th:text="|보유 : ${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')} 원|"></span></p>
+								<div class="agree_receipt">
+									<input id="chk-receipt" type="checkbox"> 
+									<label for="chk-receipt"><span>상품권 현금영수증 신청</span></label>
+									<div class="info_box">
+										<div class="input_wrap">
+											<input type="text" class="form_control" maxlength="11" placeholder="">
+										</div>
+									</div>
+								</div>
+							</div>
+						</dd>
+					</div>
+				</th:block>
+			</dl>
+		</div>
+	</th:block>
+</div> <!-- //할인/혜택 사용 -->
+
+<script th:inline="javascript">
+var dispYn = [[${order.dispYn}]]; // 노출여부
+
+//컨텐츠 호출
+$(document).ready( function() {
+	// 화면펼침
+	if (dispYn == "Y") {
+		$("#dcAmtInfo .fold_head").addClass("on");
+		$("#dcAmtInfo .fold_cont").css("display", "block");
+
+		$("#dcAmtInfo .fold_cont .btn_coupon_toggle").addClass("on");
+		$("#dcAmtInfo .fold_cont .coupon_list").css("display", "block");
+	}
+});
+</script>
+</html>

+ 155 - 0
src/main/webapp/WEB-INF/views/web/order/OrderDeliveryAddrInfoWeb.html

@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderDeliveryAddrInfoWeb.html
+ * @desc    : 배송정보 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.01   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<!-- 배송지정보 -->
+<input type="hidden" name="delvMemo" th:value="${deliveryAddrInfo.delvMemo}">
+<div class="fold_head">
+	<a href="javascript:void(0)">
+		<div>
+			<div class="fold_tit">
+				<span>배송지 정보</span>
+			</div>
+			<div class="data" th:text="${deliveryAddrInfo.recipBaseAddr} + ${deliveryAddrInfo.recipDtlAddr}"></div>
+		</div>
+	</a>
+</div>
+
+<div class="fold_cont" style="display: none;">
+	<div class="area_mbinfo">
+		<dl>
+			<div>
+				<dt><span class="sr-only">배송지명</span></dt>
+				<dd>
+					<span th:text="${deliveryAddrInfo.delvAddrNm}"></span>
+					<span class="icon_tag">
+						<em class="tag_stype1">기본 배송지</em> 
+						<em class="tag_stype2">총알배송</em>
+					</span>
+				</dd>
+			</div>
+			<div>
+				<dt>
+					<span class="sr-only">배송주소</span>
+				</dt>
+				<dd>
+					<span th:text="${deliveryAddrInfo.recipBaseAddr} + ${deliveryAddrInfo.recipDtlAddr}"></span>
+					<button type="button" class="btn_popup" id="btn_adrsChange_pop">
+						<span>배송지 선택</span>
+					</button>
+				</dd>
+			</div>
+			<div>
+				<dt>
+					<span class="sr-only">휴대폰 번호</span>
+				</dt>
+				<dd th:text="${deliveryAddrInfo.cellPhnno}"></dd>
+			</div>
+			<div>
+				<dt>배송요청 사항</dt>
+				<dd>
+					<span th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></span>
+					<button type="button" class="btn_popup" id="btn_rqstModify_pop">
+						<span>변경하기</span>
+					</button>
+				</dd>
+			</div>
+		</dl>
+	</div>
+	<!-- /배송지정보 -->
+	
+	<!-- 해외배송상품일 경우 노출 -->
+	<div class="area_overseas">
+		<dl>
+			<div>
+				<dt>개인통관고유부호</dt>
+				<dd>
+					<div class="form_field">
+						<div>
+							<input type="radio" name="rdi-overseas" id="rdi-overs1" checked> 
+							<label for="rdi-overs1"><span>받는사람 개인통관고유부호</span></label>
+						</div>
+						<div>
+							<input type="radio" name="rdi-overseas" id="rdi-overs2">
+							<label for="rdi-overs2"><span>입력 안 함</span></label>
+						</div>
+						<div class="info_box overs1">
+							<div class="input_wrap">
+								<input type="text" class="form_control err" maxlength="13" placeholder="P로 시작하는 13자리">
+								<!-- 유효하지 않은 개인통관고유부호 일때 class명 'err' 추가 -->
+							</div>
+							<div class="t_err">개인통관고유부호가 유효하지 않습니다.</div>
+							<!-- 유효하지 않은 개인통관고유부호 일때 노출 -->
+							<div class="agree_overs">
+								<input id="chk-overs-agr" type="checkbox" checked="">
+								<label for="chk-overs-agr">
+									<span>
+										위 정보는 원활한 통관을 위해 수집 및 판매자에게 제공하며,계속 사용하도록 안전하게 STYLE24에서 저장 &#47; 관리 합니다.&nbsp;&nbsp;
+										<em class="tmark_required">(필수)</em>
+									</span>
+								</label>
+							</div>
+						</div>
+						<div class="info_box overs2" style="display: none;">
+							<p>개인통관고유부호를 입력하지 않아도 관세사무소에서 개인정보 확인을 위해 별도 연락을 드릴 예정입니다.</p>
+						</div>
+					</div>
+					<div class="info_txt">
+						<ul>
+							<li>물품가액이 $150초과할 경우 관/부과세가 발생 할 수 있습니다.</li>
+							<li>물품 종류와 해외공급자 관계없이 같은 날 입항하게 되면 합산과세 대상이 됩니다.</li>
+						</ul>
+					</div>
+				</dd>
+			</div>
+		</dl>
+	</div>
+	<!-- //해외배송상품일 경우 노출 -->
+	
+	<!-- 주문제작상품일 경우 노출 -->
+	<div class="area_customitem">
+		<div class="form_field">
+			<div class="agree_custom">
+				<input id="chk-custom-agr1" type="checkbox" checked="">
+				<label for="chk-custom-agr1">
+					<span>고객님께서 주문하신 상품에는 주문제작상품이 포함되어 있습니다.<br>주문제작상품에 대한 안내를 확인하였으며 배송에 동의합니다.&nbsp;&nbsp;
+						<em class="tmark_required">(필수)</em>
+					</span>
+				</label>
+			</div>
+		</div>
+		<div class="info_txt">
+			<ul>
+				<li>주문 제작 상품은 주문 후 제작이 진행되며, 제작 완료 후 배송이 시작됩니다.</li>
+				<li>주문 제작 상품의 특성상 주문 완료 후 취소/교환이 불가능합니다. (상품 하자에 한해 가능)</li>
+			</ul>
+		</div>
+	</div>
+	<!-- //주문제작상품일 경우 노출 -->
+</div>
+
+<script th:inline="javascript">
+var dispYn = [[${order.dispYn}]]; // 노출여부
+
+//컨텐츠 호출
+$(document).ready( function() {
+	// 화면펼침
+	if (dispYn == "Y") {
+		$("#deliveryAddrInfo .fold_head").addClass("on");
+		$("#deliveryAddrInfo .fold_cont").css("display", "block");
+	}
+});
+</script>
+
+</html>

Разница между файлами не показана из-за своего большого размера
+ 827 - 779
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html


+ 88 - 0
src/main/webapp/WEB-INF/views/web/order/OrderFreegiftInfoWeb.html

@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="web/common/layout/DefaultLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : OrderFormWeb.html
+ * @desc    : 주문/결제 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.01   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<th:block th:if="${freegiftList != null && #lists.size(freegiftList) > 0}">
+
+<div class="fold_head">
+	<a href="javascript:void(0)">
+		<div>
+			<div class="fold_tit">
+				<span>사은품 선택</span>
+			</div>
+			<div class="data">
+				<span>사은품 총 <em class="total_gift">0</em>&nbsp;개 선택</span> 
+				<span><em class="total_deduct">0</em>&nbsp;P 차감</span>
+			</div>
+		</div>
+	</a>
+</div>
+<div class="fold_cont" style="display: none;">
+	<div class="area_selgift">
+		<th:block th:each="freegift, i : ${freegiftList}">
+			<div class="gift_box">
+				<p class="txt">
+					<span th:text="'사은품선택' + ${i.count} + '' + ${freegift.freegiftNm}"></span>
+				</p>
+				<div class="form_field">
+					<th:block th:each="freegiftGoods, k : ${freegiftGoodsList}">
+						<th:block th:if="${freegift.freegiftSq} == ${freegiftGoods.freegiftSq}">
+							<div class="gift">
+								<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="'rdi-gift'+${i.count}+${k.count}" class="chk_img freegiftRdo" th:value="${freegiftGoods.freegiftValSq}" th:usepoint="${freegiftGoods.usePoint}"> 
+								<label th:for="'rdi-gift'+${i.count}+${k.count}"> 
+									<span class="thumb"><img src="http://ts5000.ipdisk.co.kr:89/images/pc/thumb/tmp_gift1.jpg" width="" alt=""></span>
+									<span class="name" th:text="${freegiftGoods.goodsNm}"></span> 
+									<span th:if="${freegiftGoods.usePoint} < 1" class="deduct" th:text="무료"></span>
+									<span th:if="${freegiftGoods.usePoint} > 0" class="deduct" th:text="|- ${freegiftGoods.usePoint} P|"></span>
+								</label>
+							</div>
+						</th:block>
+					</th:block>
+					<div class="gift">
+						<input type="radio" th:name="'rdi-gift'+${i.count}" th:id="${i.count}+'0'" class="chk_img freegiftRdo" value="noSel" usepoint="0"> 
+						<label th:for="${i.count}+'0'">
+							<span class="thumb"><img src="/images/pc/thumb/tmp_gift_empty.jpg" width=""alt=""></span> 
+							<span class="name">사은품 수령안함</span>
+							<span class="deduct">수령거부</span>
+						</label>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		<div class="form_field">
+			<div class="agree_gift">
+				<p>
+					<input id="chk-agree_gift" type="checkbox">
+					<label for="chk-agree_gift"><span>동의합니다</span></label>
+				</p>
+				<p class="txt">
+					사은품 지금에 대한 내용을 확인하였으며, 이에 동의합니다.
+					<button type="button" class="btn_link_popup" id="btn_infoGift_pop">
+						<span>보기</span>
+					</button>
+				</p>
+			</div>
+		</div>
+	</div>
+</div> 
+
+<script th:inline="javascript">
+//할인관련정보 변수선언
+var freegiftList		= [[${freegiftList}]];			// 사은품 프로모션 목록
+var freegiftGoodsList	= [[${freegiftGoodsList}]];		// 사은품 프로모션 상품 목록
+</script>
+
+</th:block>

+ 281 - 0
src/main/webapp/WEB-INF/views/web/order/OrderPaymentInfoWeb.html

@@ -0,0 +1,281 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : OrderPaymentInfoWeb.html
+ * @desc    : 결제정보 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.01   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<div class="fold_head">
+	<a href="javascript:void(0)">
+		<div>
+			<div class="fold_tit"><span>결제수단 선택</span></div>
+			<div class="data"><span>STYLE24 간편결제</span></div>
+		</div>
+	</a>
+</div>
+<div class="fold_cont" style="display: none;">
+	<div class="area_paymethod">
+		<div class="form_field">
+			<div class="radio_blk">
+				<div class="paymethod_radio">
+					<input type="radio" name="rdi-paymethod" id="rdi-paymethod-quick" value=""> 
+					<label for="rdi-paymethod-quick"><span>STYLE24 간편결제</span></label>
+					<div class="quickpay_bnr">
+						<span>3초면 결제 끝! 추가 혜택 할인과 함께 만나는 STYLE24 간편결제! 지금 바로 등록하세요!</span>
+						<button type="button" class="btn_close_bnr">
+							<span class="sr-only">닫기</span>
+						</button>
+					</div>
+				</div>
+				<div class="paymethod_box" style="display: none;">
+					<div class="card_quickpay">
+						<!-- 등록카드 없을때 -->
+						<div class="empty">
+							<button type="button" class="btn_addcard">
+								<span>결제수단 등록</span>
+							</button>
+						</div>
+						<!-- //등록카드 없을때 -->
+						
+						<!-- 등록카드 있을때 -->
+						<div class="list_card swiper-container">
+							<div class="swiper-wrapper">
+								<div class="swiper-slide">
+									<!-- 등록된 카드 -->
+									<div class="card">
+										<span class="logo_samsung">삼성카드</span>
+										<p class="number">
+											<span>9410</span> <span>09**</span> <span>****</span>
+											<span>1287</span>
+										</p>
+										<p class="name">삼성개인특별카드</p>
+										<select name="" id="" class="select_month">
+											<option value="">일시불</option>
+											<option value="">2개월 무이자</option>
+											<option value="">3개월 무이자</option>
+											<option value="">4개월 무이자</option>
+											<option value="">5개월 무이자</option>
+											<option value="">6개월 무이자</option>
+											<option value="">7개월</option>
+											<option value="">8개월</option>
+											<option value="">9개월</option>
+											<option value="">10개월</option>
+											<option value="">11개월</option>
+											<option value="">12개월</option>
+										</select>
+										<div class="etc">
+											<button type="button" class="btn_favorcard">
+												<span><i class="ico ico_star"></i><em class="sr-only">즐겨찾기</em></span>
+											</button>
+											<button type="button" class="btn_delcard">
+												<span><i class="ico ico_trash_wh"></i><em class="sr-only">카드삭제</em></span>
+											</button>
+										</div>
+									</div>
+									<!-- //등록된 카드 -->
+								</div>
+								<div class="swiper-slide">
+									<!-- 등록된 카드 -->
+									<div class="card">
+										<span class="logo_hyundai">현대카드</span>
+										<p class="number">
+											<span>9410</span> <span>09**</span> <span>****</span>
+											<span>1287</span>
+										</p>
+										<p class="name">현대 M3 카드</p>
+										<select name="" id="" class="select_month">
+											<option value="">일시불</option>
+											<option value="">2개월 무이자</option>
+											<option value="">3개월 무이자</option>
+											<option value="">4개월 무이자</option>
+											<option value="">5개월 무이자</option>
+											<option value="">6개월 무이자</option>
+											<option value="">7개월</option>
+											<option value="">8개월</option>
+											<option value="">9개월</option>
+											<option value="">10개월</option>
+											<option value="">11개월</option>
+											<option value="">12개월</option>
+										</select>
+										<div class="etc">
+											<button type="button" class="btn_favorcard active">
+												<span><i class="ico ico_star"></i><em class="sr-only">즐겨찾기</em></span>
+											</button>
+											<button type="button" class="btn_delcard">
+												<span><i class="ico ico_trash_wh"></i><em class="sr-only">카드삭제</em></span>
+											</button>
+										</div>
+									</div>
+									<!-- //등록된 카드 -->
+								</div>
+								<div class="swiper-slide">
+									<!-- 카드추가버튼 -->
+									<button type="button" class="btn_addcard">
+										<span>결제수단 등록</span>
+									</button>
+									<!-- //카드추가버튼 -->
+								</div>
+							</div>
+							<div class="swiper-button-next"></div>
+							<div class="swiper-button-prev"></div>
+						</div>
+						<!-- //등록카드 있을때 -->
+					</div>
+					<ul class="info_quick">
+						<li>결제수단 등록 한번으로 간편하게 결제하실 수 있습니다.</li>
+						<li>국내 8개 카드에 대해 이용 가능합니다. (법인카드,기프트카드,해외카드 제외)</li>
+						<li>일반 신용카드의 할인혜택은 적용되지 않습니다.</li>
+					</ul>
+				</div>
+			</div>
+			<div class="radio_blk">
+				<div class="paymethod_radio">
+					<input type="radio" name="rdi-paymethod" id="rdi-paymethod-normal" value=""> 
+					<label for="rdi-paymethod-normal"><span>일반 결제</span></label>
+				</div>
+				<div class="paymethod_box" style="display: none;">
+					<ul class="sel_method">
+						<li>
+							<input type="radio" name="rdi-paynormal" id="rdi-paynormal1" value=""> 
+							<label for="rdi-paynormal1"><span>신용카드</span></label>
+						</li>
+						<li>
+							<input type="radio" name="rdi-paynormal" id="rdi-paynormal2" value=""> 
+							<label for="rdi-paynormal2"><span>실시간계좌이체</span></label>
+						</li>
+						<li>
+							<input type="radio" name="rdi-paynormal" id="rdi-paynormal3" value=""> 
+							<label for="rdi-paynormal3"><span>무통장입금</span></label>
+						</li>
+						<li>
+							<input type="radio" name="rdi-paynormal" id="rdi-paynormal4" value=""> 
+							<label for="rdi-paynormal4"><span>휴대폰 결제</span></label>
+						</li>
+						<li>
+							<input type="radio" name="rdi-paynormal" id="rdi-paynormal5" value=""> 
+							<label for="rdi-paynormal5">
+								<span>
+									<em class="sr-only">카카오페이 결제</em>
+									<em class="payimg kakao"></em>
+								</span>
+							</label>
+						</li>
+						<li>
+							<input type="radio" name="rdi-paynormal" id="rdi-paynormal6" value=""> 
+							<label for="rdi-paynormal6">
+								<span>
+									<em class="sr-only">네이버페이 결제</em>
+									<em class="payimg naver"></em>
+								</span>
+							</label>
+						</li>
+						<li>
+							<input type="radio" name="rdi-paynormal" id="rdi-paynormal7" value=""> 
+							<label for="rdi-paynormal7">
+								<span>
+									<em class="sr-only">페이코 결제</em>
+									<em class="payimg payco"></em>
+								</span>
+							</label>
+						</li>
+					</ul>
+					<div class="agree_insurance">
+						<input id="chk-insurance" type="checkbox"> 
+						<label for="chk-insurance"> 
+							<span>소비자 피해 보상보험 신청&nbsp;&nbsp;<em class="tmark_optional">(선택)</em></span>
+							<button type="button" class="btn_link_popup" id="">
+								<span>FAQ확인</span>
+							</button>
+						</label>
+						<p>
+							‘전자상거래 등에서의 소비자보호에 관한 법률‘에 따라 현금 결제 시 서울보증보험㈜가 제공하는
+							소비자 피해보상보험을<br>신청할 수 있도록 해드리고 있습니다.
+							(2013.11.28부터 시행)
+						</p>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="form_field">
+			<div class="agree_paymethod">
+				<input id="chk-agree_paymethod" type="checkbox">
+				<label for="chk-agree_paymethod"> 
+					<span>선택한 결제수단으로 향후 결제 이용에 동의합니다.&nbsp;&nbsp;<em class="tmark_optional">(선택)</em>
+				</span>
+				</label>
+			</div>
+		</div>
+	</div>
+	<div class="area_paymentinfo">
+		<div class="paymentinfo">
+			<div class="payinfo_blk on">
+				<a href=""> 개인정보 제공에 대한 동의 <span>닫기</span>
+				</a>
+				<div class="infotxt">개인정보제공에 대한 동의 내용입니다.개인정보제공에
+					대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+					내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에
+					대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+					내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에
+					대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+					내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에
+					대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+					내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에
+					대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+					내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에
+					대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+					내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에
+					대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의
+					내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.</div>
+			</div>
+			<div class="payinfo_blk">
+				<a href=""> 결제대행 서비스 약관 동의 <span>보기</span>
+				</a>
+				<div class="infotxt">결제대행서비스 약관 동의 내용입니다.결제대행서비스
+					약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+					내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스
+					약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+					내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스
+					약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+					내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스
+					약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+					내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스
+					약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+					내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스
+					약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+					내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스
+					약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의
+					내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.</div>
+			</div>
+		</div>
+
+		<div class="agree_payment">위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다.</div>
+	</div>
+	<div class="area_paybtn">
+		<div class="form_field">
+			<button type="button" class="btn btn_primary btn_block">동의 후 123,456,789원 결제하기</button>
+		</div>
+	</div>
+</div> 
+
+<script th:inline="javascript">
+var dispYn = [[${order.dispYn}]]; // 노출여부
+
+//컨텐츠 호출
+$(document).ready( function() {
+	// 화면펼침
+	if (dispYn == "Y") {
+		$("#paymentInfo .fold_head").addClass("on");
+		$("#paymentInfo .fold_cont").css("display", "block");
+	}
+});
+</script>
+
+</html>

Некоторые файлы не были показаны из-за большого количества измененных файлов