Переглянути джерело

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

card007 5 роки тому
батько
коміт
39b90152f0

+ 81 - 26
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -43,41 +43,37 @@ public class TsfOrderController extends TsfBaseController {
 	private TsfCartService cartService;
 	
 	/**
-	 * 주문페이지
+	 * 회원, 비회원 주문페이지
 	 *
 	 * @param
 	 * @return
 	 * @author jsh77b
 	 * @since 2021. 02. 02
 	 */
-	@RequestMapping(value = "/form")
-	public ModelAndView orderForm(Order order) {
+	@RequestMapping(value = "/noMember")
+	public ModelAndView orderNoMember(Order order) {
 		ModelAndView mav = new ModelAndView();
- 		
-		// 1.비회주문, 회원 주문 판단 로직,  고객정보 세션 판단
-		// 세션고객정보가 존재하면 회원주문 없으면 비회원 주문
 		
-		// TODO 임시 jsessionId
-		String jsessionId = "aaec62cc-5f91-47bb-ba65-ebc9a61385cf";
+		String rtnView = "";
+		
+		// 비회원 주문시 로직 정리
+		// @ web 인 경우에는 고객정보 입력 화면 후 주문서 이동 후 본인인중
+		// @ web 의 경우에는 입력한 고객정보와 인증받은 고객정보가 다른경우 고객정보 업데이트
+		// @ mobile 인 경우에는 본인인증 후 주문서 이동
+		// 배송완료 후 14일 자동구매확정
 		
+		// TODO 임시
+		// 1.0 회원, 비회원 여부 판단
 		if (TsfSession.getInfo() == null) {
-			order.setJsessionId(jsessionId);
+			rtnView = "order/OrderNoMember";
 		} else {
 			if (TsfSession.getInfo().getCustNo() == null) {
-				order.setJsessionId(jsessionId);
+				rtnView = "order/OrderNoMember";
 			} else {
-				order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+				rtnView = "forward:/order/form";
 			}
 		}
 		
-		// 1.1 주문고객 정보조회
-		Order custemerInfo = coreOrderService.getCustemerInfo(order);
-		
-		// 1.2 배송지 정보조회 (기본배송지)
-		Order deliveryAddrInfo = coreOrderService.getDeliveryAddrInfo(order);
-
-		
-		
 		// TODO 임시 장바구니
 		// 2. 장바구니시퀀스 배열 등록 (장바구니 상품 정보 조회)
 		int[] cartSqArr = new int[2];
@@ -85,21 +81,80 @@ public class TsfOrderController extends TsfBaseController {
 		cartSqArr[1] = 11;
 		
 		order.setCartSqArr(cartSqArr);
+		order.setShotDelvYn("Y");
 		
+		mav.addObject("order" , order);	// 주문정보
+		mav.setViewName(super.getDeviceViewName(rtnView));
 		
+		return mav;
+	}
+	
+	/**
+	 * 주문페이지
+	 *
+	 * @param
+	 * @return
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */
+	@RequestMapping(value = "/form")
+	public ModelAndView orderForm(Order order) {
+		ModelAndView mav = new ModelAndView();
 		
-		order.setCartSqArr(cartSqArr);
+		// TODO
+		// 1.비회주문, 회원 주문 판단 로직,  고객정보 세션 판단
+		// 세션고객정보가 존재하면 회원주문 없으면 비회원 주문
+		
+		// 임시 jsessionId
+		String jsessionId 	= "aaec62cc-5f91-47bb-ba65-ebc9a61385cf";
+		Boolean noMember 	= true;
+		
+		// TODO 로그인체크 로직 추가
+		// 1.0 회원, 비회원 여부 판단
+		if (TsfSession.getInfo() == null) {
+			order.setJsessionId(jsessionId);
+		} else {
+			if (TsfSession.getInfo().getCustNo() == null) {
+				order.setJsessionId(jsessionId);
+			} else {
+				noMember = false;
+				order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
+			}
+		}
 		
+		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());
+		} else {
+			// 1.1 주문고객 정보조회
+			custemerInfo = coreOrderService.getCustemerInfo(order);
+			
+			// 1.2 배송지 정보조회 (기본배송지)
+			deliveryAddrInfo = coreOrderService.getDeliveryAddrInfo(order);
+		}
+
+		// TODO 임시 장바구니
+		// 2. 장바구니시퀀스 배열 등록 (장바구니 상품 정보 조회)		
 		// 2.1 배송단위별 상품 목록 조회 (장바구니)
-		Collection<Order> cartGoodsList = coreOrderService.getCartGoodsList(order);
+		//Collection<Order> cartGoodsList = coreOrderService.getCartGoodsList(order);
+		Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
 		
 		// 2.2 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
-		Order delvOrder = (Order) coreOrderService.getCartDelvGoodsCntList(cartGoodsList);
+		Order delvOrder = (Order) coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList);
 
 		// 3. 할인구간정보조회
-		// 3.1 장바구니상품 즉시할인, 다다익선 할인 금액 적용 정보 조회 (주문상세목록)
-		Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
-		
 		// 3.2 장바구니상품 상품쿠폰, 장바구니쿠폰 정보 조회
 		Collection<Order> goodsCartCpnApplyGoodsList = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
 		
@@ -114,7 +169,7 @@ public class TsfOrderController extends TsfBaseController {
 		Collection<Order> freegfitbGoodsApplyList = coreFreegiftService.getOrderFreegift(order);
 
 		// 101. 상품정보
-		mav.addObject("cartGoodsList"					, cartGoodsList);					// 장바구니상품목록 (즉시할인쿠폰적용)
+		mav.addObject("cartGoodsList"					, tmtbGoodsApplyList);				// 장바구니상품목록 (즉시할인쿠폰적용)
 		mav.addObject("delvTotCnt" 						, delvOrder.getDelvTotCnt());		// 총상품건수
 		mav.addObject("delvFeeTotCnt"					, delvOrder.getDelvFeeTotCnt());	// 총배송타입건수
 		mav.addObject("wmsCnt" 							, delvOrder.getWmsCnt());			// 자사상품건수

+ 49 - 20
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -17,8 +17,34 @@
  *******************************************************************************
  -->
 <body>
+<!-- 
+<link rel="stylesheet" type="textcss" href="/ux/pc/css/layout_back.css?v=20210209171415">
+ -->
 
 <th:block layout:fragment="content">
+
+<style type="text/css">
+    @import url("/ux/pc/css/layout_back.css");
+    
+    .od .foldGroup .fold_cont {
+	    box-sizing: border-box;
+	}
+	
+	.od .od_cont .fold_cont {
+	    padding: 0 30px 40px;
+	    line-height: 1;
+	}
+	
+	.foldGroup .fold_cont {
+	    padding: 0;
+	    position: relative;
+	    color: #666;
+	    font-weight: 200;
+	    font-size: 16px;
+	    line-height: 1.625;
+	}
+</style>
+
 	<!--  container -->
 	<div id="container" class="container od">
 		<div class="breadcrumb">
@@ -75,9 +101,9 @@
 														<span>주문고객</span>
 													</div>
 													<div class="data">
-														<span>홍길동</span>
-														<span>abcdefg@naver.com</span>
-														<span>010-1234-5647</span>
+														<span th:text="${custemerInfo.custNm}"></span>
+														<span th:text="${custemerInfo.email}"></span>
+														<span th:text="${custemerInfo.cellPhnno}"></span>
 													</div>
 												</div>
 											</a>
@@ -88,15 +114,15 @@
 												<dl>
 													<div>
 														<dt>주문자명</dt>
-														<dd>홍길동</dd>
+														<dd th:text="${custemerInfo.custNm}"></dd>
 													</div>
 													<div>
 														<dt>이메일</dt>
-														<dd>abcdefg@naver.com</dd>
+														<dd th:text="${custemerInfo.email}"></dd>
 													</div>
 													<div>
 														<dt>휴대폰 번호</dt>
-														<dd>010-1234-5647<button type="button" class="btn_popup" id=""><span>본인인증하기</span></button></dd>
+														<dd th:text="${custemerInfo.cellPhnno}"><button type="button" class="btn_popup" id=""><span>본인인증하기</span></button></dd>
 													</div>
 												</dl>
 											</div>
@@ -111,7 +137,7 @@
 													<div class="fold_tit">
 														<span>배송지 정보</span>
 													</div>
-													<div class="data">서울시 영등포구 은행로 11,8층(여의도동,일신빌딩)</div>
+													<div class="data" th:text="${deliveryAddrInfo.recipBaseAddr} + ${deliveryAddrInfo.recipDtlAddr}"></div>
 												</div>
 											</a>
 										</div>
@@ -120,8 +146,7 @@
 												<dl>
 													<div>
 														<dt>배송지명</dt>
-														<dd>
-															홍길동
+														<dd th:text="${deliveryAddrInfo.delvAddrNm}">
 															<span class="icon_tag">
 																<em class="tag_stype1">기본 배송지</em>
 																<em class="tag_stype2">총알배송</em>
@@ -130,16 +155,13 @@
 													</div>
 													<div>
 														<dt>배송주소</dt>
-														<dd>
-															서울시 영등포구 은행로 11,8층(여의도동,일신빌딩)
+														<dd th:text="${deliveryAddrInfo.recipBaseAddr} + ${deliveryAddrInfo.recipDtlAddr}">
 															<button type="button" class="btn_popup" id=""><span>배송지 선택</span></button>
 														</dd>
 													</div>
 													<div>
 														<dt>휴대폰 번호</dt>
-														<dd>
-															010-1234-5647
-														</dd>
+														<dd th:text="${custemerInfo.cellPhnno}"></dd>
 													</div>
 													<div>
 														<dt>배송요청 사항</dt>
@@ -240,7 +262,7 @@
 													<div class="gift">
 														<input type="checkbox" name="chk-gift" id="chk-gift1" class="chk_img" value="">
 														<label for="chk-gift1">
-															<span class="thumb"><img src="../ux/images/thumb/tmp_gift1.jpg" width="" alt=""></span>
+															<span class="thumb"><img src="http://codepartners.co.kr/project/style24/pc/ux/images/thumb/tmp_gift1.jpg" width="" alt=""></span>
 															<span class="name">유니 NBA 팀로고 양말 (N215AO225P)</span>
 															<span class="deduct">무료사은품</span>
 														</label>
@@ -248,7 +270,7 @@
 													<div class="gift">
 														<input type="checkbox" name="chk-gift" id="chk-gift2" class="chk_img" value="">
 														<label for="chk-gift2">
-															<span class="thumb"><img src="../ux/images/thumb/tmp_gift1.jpg" width="" alt=""></span>
+															<span class="thumb"><img src="http://codepartners.co.kr/project/style24/pc/ux/images/thumb/tmp_gift1.jpg" width="" alt=""></span>
 															<span class="name">사은품이름</span>
 															<span class="deduct">-4,000P</span>
 														</label>
@@ -601,6 +623,7 @@
 									<h4 class="subH3 mb20" id="shotDelvTitle">STYLE24 총알배송<span>오늘 자정까지 도착</span></h4>
 									<h4 class="subH3 mb20" id="wmsDelvTitle">STYLE24 일반배송</h4>
 									<div class="gd_list">
+
 										<th:block th:each="goods, status : ${wmsCartList}">
 											<div class="item_gd">
 												<figure>
@@ -608,18 +631,24 @@
 													<figcaption>
 														<div class="brand" th:text="${goods.brandEnm}"></div>
 														<div class="name" th:text="${goods.goodsNm}"></div>
-														<div class="option">
-															<span th:text="${goods.optCd}"></span>
-															<span>수량:<em th:text="${goods.goodsQty}"></em>개</span>
+														<div class="option" th:each="opt, index : ${goods.itemNmArr}">
+															<span class="option">옵션:<em th:text="${goods.optCdArr[index.index]}"></em></span>
 														</div>
+														<br/>
+														<span>수량:<em th:text="${goods.goodsQty}"></em>개</span>
 														<div class="price">
-															<span class="selling_price" th:text="${goods.currPrice}"></span>
+															<span class="selling_price" th:text="|${#numbers.formatInteger(goods.currPrice, 1, 'COMMA')} 원|"></span>
 														</div>
 													</figcaption>
 												</figure>
 											</div>
 										</th:block>
+										
+										
+										
 									</div>
+									
+									
 								</div>
 								<!-- //총알배송, 일반배송 -->
 

+ 193 - 0
src/main/webapp/WEB-INF/views/web/order/OrderNoMemberWeb.html

@@ -0,0 +1,193 @@
+<!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  : OrderNoMemberWeb.html
+ * @desc    : 비회원 주문/결제 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.01   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+
+	<div class="wrap">
+		<div class="content nonMBorder">
+			<!-- 페이지특정 클래스 = nonMBorder -->
+			<div class="cont_head">
+				<h2 class="t_c mb60">비회원 주문하기</h2>
+			</div>
+			<div class="cont_body">
+				<form id="orderForm" name="orderForm" class="form_wrap form_col_c form_full" action="#" th:action="@{'/order/form'}" th:method="post">
+					<input type="hidden" name="shotDelvYn" th:value="${order.shotDelvYn}" /><!-- 장바구니화면 총알배송여부 -->
+					<!-- 장바구니화면 시퀀스 배열 등록 -->
+					<th:block th:each="cartSq , index : ${order.cartSqArr}">
+						<input type="hidden" name="cartSqArr" th:value="${cartSq}" />
+					</th:block>
+					
+					<div class="form_head">
+						<p>
+							비회원 주문을 위한 주문자 정보 입력 및 개인정보 수집/이용 동의에<br>체크하신 후 주문을 완료하실 수
+							있습니다.
+						</p>
+					</div>
+					
+					<div class="form_field">
+						<label class="input_label sr-only">이름(주문자명)</label>
+						<div class="ui_col_12">
+							<div class="input_wrap">
+								<input type="text" name="custNm" id="custNm" placeholder="이름(주문자명)">
+							</div>
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">휴대폰 번호</label>
+						<div class="ui_col_12">
+							<div class="input_wrap">
+								<input type="text" name="cellPhnno" id="cellPhnno" placeholder="휴대폰 번호">
+							</div>
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">이메일주소</label>
+						<div class="ui_col_12">
+							<div class="input_wrap">
+								<input type="text" name="email" id="email" placeholder="이메일주소">
+							</div>
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">배송주소 우편번호</label>
+						<div class="ui_col_12">
+							<div class="input_wrap" style="display: flex;">
+								<input type="text" name="recipZipcode" id="recipZipcode" placeholder="우편번호">
+								<button type="submit" class="btn btn_default">우편번호 찾기</button>
+							</div>
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">배송주소 기본주소</label>
+						<div class="ui_col_12">
+							<input type="text" name="recipBaseAddr" id="recipBaseAddr" placeholder="기본주소">
+						</div>
+					</div>
+					<div class="form_field">
+						<label class="input_label sr-only">배송주소 상세주소</label>
+						<div class="ui_col_12">
+							<input type="text" name="recipDtlAddr" id="recipDtlAddr" placeholder="상세주소">
+						</div>
+					</div>
+					
+					<!-- 주소 출력 
+					<div class="help_block">
+						<p><span>도로명</span>서울특별시 서초구 서운로 57번길</p>
+						<p><span>지번</span>서울특별시 서초구 서포동 60-28</p>
+					</div>
+					-->
+					
+					<!-- //주소 출력 -->
+					<div class="form_field">
+						<div>
+							<input id="chk-2" type="checkbox"><label for="chk-2">
+								<p>
+									비회원 개인정보 수집&#47;이용 동의 <span>(필수)</span>
+								</p>
+							</label>
+						</div>
+					</div>
+					
+					<div class="form_field txt_area">
+						<div
+							style="overflow: auto; max-height: 176px; border: 1px solid #ddd;">
+							<strong>제1조(목적)</strong>
+							<p>이 약관은 (유)내고향시푸드(전자거래 사업자)이 운영하는 홈페이지(이하 "쇼핑몰"이라 한다)에서
+								제공하는 인터넷 관련 서비스(이하 "서비스"라 한다)를 이용함에 있어 (유)내고향시푸드와 이용자의 권리·의무 및
+								책임사항을 규정함을 목적으로 합니다. ※ 「PC통신 등을 이용하는 전자거래에 대해서도 그 성질에 반하지 않는 한
+								이 약관을 준용합니다」 제2조(정의) ① "쇼핑몰" 이란 사업자가 재화 또는 용역을 이용자에게 제공하기 위하여
+								컴퓨터 등 정보통신설비를 이용하여 재화 또는 용역을 거래할 수 있도록 설정한 가상의 영업장을 말하며, 아울러
+								쇼핑몰을 운영하는 사업자의 의미로도 사용합니다. ② "이용자"란 "쇼핑몰"에 접속하여 이 약관에 따라 "쇼핑몰"이
+								제공하는 서비스를 받는 회원 및 비회원을 말합니다. ③ "회원"이라 함은 "쇼핑몰"에 개인정보를 제공하여
+								회원등록을 한 자로서, "쇼핑몰"의 정보를 지속적으로 제공받으며, "쇼핑몰"이 제공하는 서비스를 계속적으로 이용할
+								수 있는 자를 말합니다. ④ "비회원"이라 함은 회원에 가입하지 않고 "쇼핑몰"이 제공하는 서비스를 이용하는 자를
+								말합니다. 제3조 (약관의 명시와 개정) ① "쇼핑몰"은 이 약관의 내용과 상호, 영업소 소재지, 대표자의 성명,
+								사업자등록번호, 연락처(전화, 팩스, 전자우편 주소 등) 등을 이용자가 알 수 있도록 사이트의 초기
+								서비스화면(전면)에 게시합니다. ② "쇼핑몰"은 약관의 규제 등에 관한 법률, 전자거래기본법, 전자서명법,
+								정보통신망 이용촉진 등에 관한 법률, 방문판매 등에 관한법률, 소비자보호법 등 관련법을 위배하지 않는 범위에서 이
+								약관을 개정할 수 있습니다. ③ "쇼핑몰"이 약관을 개정할 경우에는 적용일자 및 개정사유를 명시하여 현행약관과
+								함께 홈페이지의 초기화면에 그 적용일자 7일 이전부터 적용일자 전일까지 공지합니다. ④ "쇼핑몰"이 약관을 개정할
+								경우에는 그 개정약관은 그 적용일자 이후에 체결되는 계약에만 적용되고 그 이전에 이미 체결된 계약에 대해서는 개정
+								전의 약관조항이 그대로 적용됩니다. 다만 이미 계약을 체결한 이용자가 개정약관 조항의 적용을 받기를 원하는 뜻을
+								제3항에 의한 개정약관의 공지기간 내에 "쇼핑몰"에 송신하여 "쇼핑몰"의 동의를 받은 경우에는 개정약관 조항이
+								적용됩니다. ⑤ 이 약관에서 정하지 아니한 사항과 이 약관의 해석에 관하여는 정부가 제정한 전자거래소비자보호지침
+								및 관계법령 또는 상관례에 따릅니다. 제4조(서비스의 제공 및 변경) ① "쇼핑몰"은 다음과 같은 업무를
+								수행합니다. 1. 재화 또는 용역에 대한 정보 제공 및 구매계약의 체결 2. 구매계약이 체결된 재화 또는 용역의
+								배송 3. 기타 "쇼핑몰"이 정하는 업무 ② "쇼핑몰"은 재화의 품절 또는 기술적 사양의 변경 등의 경우에는 장차
+								체결되는 계약에 의해 제공할 재화·용역의 내용을 변경할 수 있습니다. 이 경우에는 변경된 재화·용역의 내용 및
+								제공일자를 명시하여 현재의 재화·용역의 내용을 게시한 곳에 그 제공일자 이전 7일부터 공지합니다. ③ "쇼핑몰"이
+								제공하기로 이용자와 계약을 체결한 서비스의 내용을 재화의 품절 또는 기술적 사양의 변경 등의 사유로 변경할
+								경우에는 "쇼핑몰"은 이로 인하여 이용자가 입은 손해를 배상합니다. 단, "쇼핑몰"에 고의 또는 과실이 없는
+								경우에는 그러하지 아니합니다.</p>
+						</div>
+					</div>
+					<div class="form_field">
+						<div class="ui_row btn_group_md">
+							<div class="ui_col_6">
+								<button class="btn btn_default btn_block" id="btn_cancel">
+									<span>취소</span>
+								</button>
+							</div>
+							<div class="ui_col_6">
+								<button class="btn btn_dark btn_block" id="btn_order">
+									<span>주문하기</span>
+								</button>
+							</div>
+						</div>
+					</div>
+					<div class="form_info">
+						<p>STYLE24에 회원가입을 하시면 더 많은 혜택을 받으실 수 있습니다!</p>
+						<a href="#none" id="btn_join">회원가입</a>
+					</div>
+				</form>
+			</div>
+		</div>
+	</div>
+
+	<script th:inline="javascript">
+		
+	</script>
+
+	<script type="text/javascript">
+		// 컨텐츠 호출
+		$(document).ready( function() {
+			
+		});
+		
+		// 취소버튼
+		$("btn_cancel").on("click", function() {
+			
+		});
+		
+		// 주문하기버튼
+		$("btn_order").on("click", function() {
+			// TODO 유효성 체크 추가
+			$("#orderForm").submit();
+		});
+		
+		// 회원가입버튼
+		$("btn_join_member").on("click", function() {
+			
+		});
+	</script>
+</th:block>
+
+</body>
+</html>