Procházet zdrojové kódy

Merge branch 'card007' into order

card007 před 5 roky
rodič
revize
59e5a619b4

+ 73 - 0
src/main/java/com/style24/front/biz/dao/TsfOrderDao.java

@@ -1,6 +1,9 @@
 package com.style24.front.biz.dao;
 
+import java.util.Collection;
+
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Order;
 
 /**
  * 주문 Dao
@@ -11,4 +14,74 @@ import com.style24.core.support.annotation.ShopDs;
 @ShopDs
 public interface TsfOrderDao {
 
+	/**
+	 * 마이페이지 주문 정보 조회
+	 *
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 02. 04
+	 */
+	Collection<Order> getOrderListForMypage(Order order);
+
+	/**
+	 * 마이페이지 주문상태 별 주문수량 조회
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 02. 08
+	 */
+	int getOrderStatCount(Order order);
+
+	/**
+	 * 마이페이지 주문변경상태 별 주문수량 조회
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 02. 08
+	 */
+	int getOrderChangeStatCount(Order order);
+
+	/**
+	 * 마이페이지 주문상세 금액정보 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 02. 15
+	 */
+	Order getOrderAmtForMypage(Order order);
+
+	/**
+	 * 마이페이지 주문상세 결제정보 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 02. 15
+	 */
+	Order getPaymentInfoForMypage(Order order);
+
+	/**
+	 * 마이페이지 주문상세 배송지 정보 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 02. 15
+	 */
+	Order getOrderDeliveryAddrInfo(Order order);
+
+	/**
+	 * 마이페이지 주문상세 주문내역삭제 처리
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 02. 17
+	 */
+	int updateOrderDisplayYn(Order order);
+
 }

+ 188 - 0
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -2,12 +2,16 @@ package com.style24.front.biz.service;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Collection;
 import java.util.Date;
+import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.front.biz.dao.TsfOrderDao;
 import com.style24.persistence.domain.Order;
 
@@ -48,4 +52,188 @@ public class TsfOrderService {
 		return period; 
 	}
 
+	/**
+	 * 마이페이지 주문 정보 조회
+	 *
+	 * @param Order
+	 * @author card007
+	 * @since 2021. 02. 04
+	 */
+	public Collection<GagaMap> getOrderListForMypage(Order order) {
+		Collection<GagaMap> mapList = new ArrayList<>();
+		List<Order> orderList = new ArrayList<>();
+		int ordNo = 0;
+		String ordDt = "";
+		String delvFeeCd = "";
+		String ordDtlStat = "";
+		String shotDelvYn = "";
+		String selfGoodsYn = "";
+		String shipCompNm = "";
+		String invoiceNo = "";
+		String giftPackYn = "";
+		int reviewSq = 0;
+		int index = 0;
+		int ordDtlStatCnt = 0;
+		int rowspan = 0;
+
+		for (Order tmpOrder : orderDao.getOrderListForMypage(order)) {
+			// 주문번호, 배송구분(총알배송, 일반배송, 업체직배송), 배송정책 변경
+			if (ordNo != tmpOrder.getOrdNo() || !selfGoodsYn.equals(tmpOrder.getSelfGoodsYn()) || ("N".equals(tmpOrder.getSelfGoodsYn()) && !delvFeeCd.equals(tmpOrder.getDelvFeeCd())) || !shotDelvYn.equals(tmpOrder.getShotDelvYn())) {
+				// 데이터 설정
+				if (index > 0) {
+					GagaMap map = new GagaMap();
+					map.set("ordNo", ordNo);					// 주문번호
+					map.set("ordDt", ordDt);					// 주문일시
+					map.set("shotDelvYn", shotDelvYn);			// 총알배송여부
+					map.set("selfGoodsYn", selfGoodsYn);		// 자사여부
+					map.set("ordDtlStat", ordDtlStat);			// 주문상태코드
+					map.set("shipCompNm", shipCompNm);			// 배송업체명
+					map.set("invoiceNo", invoiceNo);			// 송장번호
+					map.set("giftPackYn", giftPackYn);			// 선물하기여부
+					map.set("reviewSq", reviewSq);				// 리뷰일련번호
+					map.set("orderList", setOrderListParameter(orderList, rowspan, ordDtlStatCnt, "Y"));			// 주문내역
+					mapList.add(map);
+				}
+
+				// 데이터 설정 후 초기화 진행
+				ordNo = tmpOrder.getOrdNo();
+				ordDt = tmpOrder.getOrdDt();
+				delvFeeCd = tmpOrder.getDelvFeeCd();
+				ordDtlStat = tmpOrder.getOrdDtlStat();
+				shotDelvYn = tmpOrder.getShotDelvYn();
+				selfGoodsYn = tmpOrder.getSelfGoodsYn();
+				shipCompNm = tmpOrder.getShipCompNm();
+				invoiceNo = tmpOrder.getInvoiceNo();
+				reviewSq = tmpOrder.getReviewSq();
+				giftPackYn = tmpOrder.getGiftPackYn();
+				orderList = new ArrayList<>();
+				ordDtlStatCnt = 0;
+				rowspan = 0;
+			} else if (index > 0 && !ordDtlStat.equals(tmpOrder.getOrdDtlStat())) {
+				// 주문내역 데이터 추가
+				orderList = setOrderListParameter(orderList, rowspan, ordDtlStatCnt, "N");
+
+				// 상태 별 배너 설정 후 초기화 진행
+				ordDtlStat = tmpOrder.getOrdDtlStat();
+				rowspan = 0;
+			}
+
+			// 주문내역 설정
+			orderList.add(tmpOrder);
+
+			// 인덱스 처리
+			index++;
+			ordDtlStatCnt++;
+			rowspan++;
+		}
+
+		// 마지막 데이터 설정
+		if (ordNo > 0) {
+			GagaMap map = new GagaMap();
+			map.set("ordNo", ordNo);
+			map.set("ordDt", ordDt);
+			map.set("shotDelvYn", shotDelvYn);
+			map.set("selfGoodsYn", selfGoodsYn);
+			map.set("ordDtlStat", ordDtlStat);
+			map.set("shipCompNm", shipCompNm);
+			map.set("invoiceNo", invoiceNo);
+			map.set("giftPackYn", giftPackYn);
+			map.set("reviewSq", reviewSq);
+			map.set("orderList", setOrderListParameter(orderList, rowspan, ordDtlStatCnt, "Y"));
+			mapList.add(map);
+		}
+
+		return mapList;
+	}
+
+	/**
+	 * 마이페이지 주문내역 데이터 추가
+	 *
+	 * @param List<Order>
+	 * @return List<Order>
+	 * @author card007
+	 * @since 2021. 02. 08
+	 */
+	private List<Order> setOrderListParameter(List<Order> orderList, int rowspan, int ordDtlStatCnt, String setLastBanner) {
+		// rowspan 설정
+		for (int i = 0;i <= rowspan;i++) {
+			if (i == rowspan) {
+				orderList.get(ordDtlStatCnt - rowspan).setRowspan(rowspan);
+			} else if (rowspan == 1){
+				orderList.get(ordDtlStatCnt - rowspan).setRowspan(1);
+			} else {
+				orderList.get(ordDtlStatCnt - rowspan).setRowspan(0);
+			}
+		}
+
+		// 주문상세상태값 별 배너 설정
+		if ("Y".equals(setLastBanner)) {
+			orderList.get(orderList.size() - 1).setOrdDtlStatBanner("Y");
+		} else {
+			orderList.get(ordDtlStatCnt - 1).setOrdDtlStatBanner("Y");
+		}
+
+		return orderList;
+	}
+
+	/**
+	 * 마이페이지 주문상태 별 주문수량 조회
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 02. 08
+	 */
+	public int getOrderStatCount(Order order) { return orderDao.getOrderStatCount(order); }
+
+	/**
+	 * 마이페이지 주문변경상태 별 주문수량 조회
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 02. 08
+	 */
+	public int getOrderChangeStatCount(Order order) { return orderDao.getOrderChangeStatCount(order); }
+
+	/**
+	 * 마이페이지 주문상세 금액정보 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 02. 16
+	 */
+	public Order getOrderAmtForMypage(Order order) { return orderDao.getOrderAmtForMypage(order); }
+
+	/**
+	 * 마이페이지 주문상세 결제정보 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 02. 16
+	 */
+	public Order getPaymentInfoForMypage(Order order) { return orderDao.getPaymentInfoForMypage(order); }
+
+	/**
+	 * 마이페이지 주문상세 배송지 정보 조회
+	 *
+	 * @param Order
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 02. 16
+	 */
+	public Order getOrderDeliveryAddrInfo(Order order) { return orderDao.getOrderDeliveryAddrInfo(order); }
+
+	/**
+	 * 마이페이지 주문상세 주문내역삭제 처리
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 02. 17
+	 */
+	public int updateOrderDisplayYn(Order order) { return orderDao.updateOrderDisplayYn(order); }
+
 }

+ 89 - 18
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -6,9 +6,14 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
+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;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.env.TscConstants;
@@ -87,14 +92,12 @@ public class TsfMypageController extends TsfBaseController {
 		customer.setSiteCd(TscConstants.Site.STYLE24.value());
 		customer.setCustNo(custNo);
 		customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
-		customer = coreCustomerService.getCustomerInfo(customer);
-
-		mav.addObject("customerInfo", customer);
+		mav.addObject("customerInfo", coreCustomerService.getCustomerInfo(customer));
 
 		// 주문정보 조회
 		Order order = new Order();
 		order.setCustNo(custNo);
-		mav.addObject("orderInfo", coreOrderService.getOrderListForMypage(order));
+		mav.addObject("orderInfo", orderService.getOrderListForMypage(order));
 
 		// 쿠폰정보 조회
 		mav.addObject("couponCnt", coreOrderService.getCouponInfo(order));
@@ -107,40 +110,42 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 상품권 정보 조회
 		mav.addObject("rmGfcdAmt", coreOrderService.getGiftcardInfo(order));
-		
-		// 바꿈
 
 		// 주문접수
 		order.setOrdDtlStat(TscConstants.OrderDetailStat.ORDER_RECEIPT.value());
-		mav.addObject("orderReceiptCount", coreOrderService.getOrderStatCount(order));
+		mav.addObject("orderReceiptCount", orderService.getOrderStatCount(order));
 
 		// 결제완료
 		order.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value());
-		mav.addObject("paymentCompleteCount", coreOrderService.getOrderStatCount(order));
+		mav.addObject("paymentCompleteCount", orderService.getOrderStatCount(order));
 
 		// 상품준비중
 		order.setOrdDtlStat(TscConstants.OrderDetailStat.GOODS_PREPARE.value());
-		mav.addObject("goodsPrepareCount", coreOrderService.getOrderStatCount(order));
+		mav.addObject("goodsPrepareCount", orderService.getOrderStatCount(order));
+
+		// 배송중
+		order.setOrdDtlStat(TscConstants.OrderDetailStat.DELIVERY_PREPARE.value());
+		mav.addObject("shipPrepareCount", orderService.getOrderStatCount(order));
 
 		// 배송중
 		order.setOrdDtlStat(TscConstants.OrderDetailStat.SHIPPING.value());
-		mav.addObject("shippingCount", coreOrderService.getOrderStatCount(order));
+		mav.addObject("shippingCount", orderService.getOrderStatCount(order));
 
 		// 배송완료
 		order.setOrdDtlStat(TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value());
-		mav.addObject("shipCompleteCount", coreOrderService.getOrderStatCount(order));
+		mav.addObject("shipCompleteCount", orderService.getOrderStatCount(order));
 
 		// 취소내역
 		order.setChgStat(TscConstants.OrderChangeStat.CANCEL.value());
-		mav.addObject("cancelCount", coreOrderService.getOrderChangeStatCount(order));
+		mav.addObject("cancelCount", orderService.getOrderChangeStatCount(order));
 
 		// 반품내역
 		order.setChgStat(TscConstants.OrderChangeStat.RETURN.value());
-		mav.addObject("returnCount", coreOrderService.getOrderChangeStatCount(order));
+		mav.addObject("returnCount", orderService.getOrderChangeStatCount(order));
 
 		// 교환내역
 		order.setChgStat(TscConstants.OrderChangeStat.EXCHANGE.value());
-		mav.addObject("exchangeCount", coreOrderService.getOrderChangeStatCount(order));
+		mav.addObject("exchangeCount", orderService.getOrderChangeStatCount(order));
 		
 		// 검색기간 설정
 		mav.addObject("searchPeriod", orderService.getSearchPeriod());
@@ -182,23 +187,89 @@ public class TsfMypageController extends TsfBaseController {
 		order.setOrdNo(ordNo);
 		
 		// 주문목록 조회
-		mav.addObject("orderList", coreOrderService.getOrderListForMypage(order));
+		Collection<GagaMap> orderList = orderService.getOrderListForMypage(order);
+
+		if (orderList.size() == 0) {
+			throw new IllegalStateException(message.getMessage("ORDER_0001"));
+		}
+
+		mav.addObject("orderList", orderList);
 
 		// 주문정보 조회
 		mav.addObject("orderInfo", coreOrderService.getOrderInfoList(order).iterator().next());
 
 		// 주문 금액정보 조회
-		mav.addObject("orderAmtInfo", coreOrderService.getOrderAmtForMypage(order));
+		mav.addObject("orderAmtInfo", orderService.getOrderAmtForMypage(order));
 
 		// 주문 결제정보 조회
-		mav.addObject("paymentInfo", coreOrderService.getPaymentInfoForMypage(order));
+		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 		
 		// 주문 배송지 정보 조회
-		mav.addObject("deliveryAddrInfo", coreOrderService.getOrderDeliveryAddrInfo(order));
+		mav.addObject("deliveryAddrInfo", orderService.getOrderDeliveryAddrInfo(order));
 
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderDetailForm"));
 
 		return mav;
 	}
 
+	/**
+	 * 마이페이지 주문상세 주문내역 삭제
+	 *
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 15
+	 */
+	@PostMapping("/order/delete")
+	@ResponseBody
+	public GagaMap deleteOrder(@RequestBody Order order) {
+		GagaMap result = new GagaMap();
+
+		// int custNo = TsfSession.getInfo().getCustNo();
+		int custNo = 1000007;
+		
+		order.setUpdNo(custNo);
+		
+		int chk = orderService.updateOrderDisplayYn(order);
+
+		if (chk > 0) {
+			result.set("message", message.getMessage("SUCC_0003"));
+			result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		} else {
+			result.set("message", message.getMessage("FAIL_0003"));
+			result.set("status", GagaResponseStatus.FAIL.getCode());
+		}
+
+		return result;
+	}
+
+	/**
+	 * 마이페이지 구매확정 처리
+	 *
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 17
+	 */
+	@PostMapping("/order/decision")
+	@ResponseBody
+	public GagaMap decideOrder(@RequestBody Order order) {
+		GagaMap result = new GagaMap();
+
+		if (order.getOrdDtlNoArr().length == 0) {
+			result.set("message", message.getMessage("FAIL_1003"));
+			result.set("status", GagaResponseStatus.FAIL.getCode());
+			return result;
+		}
+
+		// int custNo = TsfSession.getInfo().getCustNo();
+		int custNo = 1000007;
+
+		order.setCustNo(custNo);
+		order.setRegNo(custNo);
+		order.setUpdNo(custNo);
+		
+		result = coreOrderService.decideOrder(order);
+		
+		return result;
+	}
+
 }

+ 290 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -15,4 +15,294 @@
 	</sql>
 	<!--// Paging -->
 
+	<!-- 마이페이지 주문 목록 조회 -->
+	<select id="getOrderListForMypage" parameterType="Order" resultType="Order">
+		/* TscOrder.getOrderListForMypage */
+		SELECT O.ORD_NO
+		     , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
+		     , CASE OD.GIFT_PACK_YN WHEN 'Y' THEN DATE_FORMAT(O.ORD_DT + INTERVAL 3 DAY, '%Y.%m.%d')
+				END															AS GIFT_LIMIT_DT
+		     , CASE OD.GIFT_PACK_YN WHEN 'Y' THEN TIMESTAMPDIFF(DAY, NOW(), O.ORD_DT + INTERVAL 3 DAY)
+				END															AS GIFT_LIMIT_DAY
+		     , CASE OD.GIFT_PACK_YN WHEN 'Y' THEN DATE_FORMAT(DA.UPD_DT, '%Y.%m.%d')
+				END															AS GIFT_COMPLETE_DT
+		     , DATE_FORMAT(OD.DELV_EDDT, '%m/%d')							AS DELV_EDDT
+		     , OD.ORD_DTL_NO
+		     , OD.ORD_EXCH_GB
+		     , OD.GOODS_CD
+		     , G.GOODS_NM
+		     , ODI.OPT_CD
+		     , ODI.OPT_CD1
+		     , ODI.OPT_CD2
+		     , GI.SYS_IMG_NM
+		     , OD.ORD_DTL_STAT
+		     , OD.ORD_QTY
+		     , OD.ORD_AMT
+		     , OD.SAVE_PNT_AMT
+		     , OD.SHIP_COMP_CD
+		     , OD.GIFT_PACK_YN
+		     , (SELECT SHIP_COMP_NM
+				  FROM TB_SHIP_COMPANY Z
+				 WHERE Z.SHIP_COMP_CD = OD.SHIP_COMP_CD)					AS SHIP_COMP_NM
+		     , OD.INVOICE_NO
+		     , OD.SUPPLY_COMP_CD
+		     , OD.DELV_FEE_CD
+		     , OD.SHOT_DELV_YN
+		     , G.SELF_GOODS_YN
+		     , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)						AS BRAND_NM
+		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)						AS ORD_DTL_STAT_NM
+		     , R.REVIEW_SQ
+		     , TIMESTAMPDIFF(DAY, NOW(), OD.DELV_EDDT + INTERVAL 2 WEEK)	AS PURCHASE_CONFIRM_DAY
+		     , DA.RECIP_NM
+		     , DA.RECIP_TELNO
+		     , DA.RECIP_PHNNO
+		     , DA.RECIP_ZIPCODE
+		     , DA.RECIP_BASE_ADDR
+		     , DA.RECIP_DTL_ADDR
+		  FROM TB_ORDER O
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON O.ORD_NO = OD.ORD_NO
+		   AND OD.ORD_DTL_STAT NOT IN ('G013_11', 'G013_25', 'G013_97')
+		 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		    ON OD.ORD_NO = ODI.ORD_NO
+		   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		 INNER JOIN TB_GOODS G
+		    ON OD.GOODS_CD = G.GOODS_CD
+		 INNER JOIN TB_BRAND B
+		    ON B.BRAND_CD = G.BRAND_CD
+		  LEFT OUTER JOIN TB_REVIEW R
+		    ON R.ORD_NO = OD.ORD_NO
+		   AND R.ORD_DTL_NO = OD.ORD_DTL_NO
+		  LEFT OUTER JOIN TB_DELIVERY_ADDR DA
+		    ON DA.DELV_ADDR_SQ = OD.DELV_ADDR_SQ
+		  LEFT OUTER JOIN TB_GOODS_IMG GI
+		    ON OD.GOODS_CD = GI.GOODS_CD
+		   AND ODI.OPT_CD1 = GI.COLOR_CD
+		   AND GI.DEFAULT_IMG_YN = 'Y'
+		<where>
+			<choose>
+				<when test='custNo != null and custNo != ""'>
+		   AND O.CUST_NO = #{custNo}
+				</when>
+				<otherwise>
+		   AND O.ORD_NO = #{ordNo}
+		   AND O.ORD_NM = #{orderNm}
+				</otherwise>
+			</choose>
+			<if test="ordNo != null and ordNo != ''">
+		   AND O.ORD_NO = #{ordNo}
+			</if>
+			<choose>
+				<when test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		   AND O.ORD_DT BETWEEN DATE_FORMAT(CONCAT(#{stDate}, ' 000000'), '%Y-%m-%d %H%i%S') AND DATE_FORMAT(CONCAT(#{edDate}, ' 235959'), '%Y-%m-%d %H%i%S')
+				</when>
+				<otherwise>
+		   AND O.ORD_DT >= DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 3 MONTH) + INTERVAL 1 DAY, '%Y-%m-%d')
+				</otherwise>
+			</choose>
+			<if test="ordDtlNoArr != null">
+		   AND OD.ORD_DTL_NO IN
+				<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
+					#{item}
+				</foreach>
+			</if>
+		   AND O.DISP_YN = 'Y'
+		</where>
+		 ORDER BY OD.SUPPLY_COMP_CD
+				, OD.DELV_FEE_CD
+				, OD.ORD_NO DESC
+				, G.SELF_GOODS_YN DESC
+				, OD.SHOT_DELV_YN DESC
+				, OD.ORD_DTL_STAT
+	</select>
+
+	<!-- 마이페이지 주문상태 별 주문수량 조회 -->
+	<select id="getOrderStatCount" parameterType="Order" resultType="int">
+		/* TscOrder.getOrderStatCount */
+		SELECT COUNT(*) CNT
+		  FROM TB_ORDER O
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON O.ORD_NO = OD.ORD_NO
+		<where>
+			<choose>
+				<when test='custNo != null and custNo != ""'>
+		   AND O.CUST_NO  =  #{custNo}
+				</when>
+				<otherwise>
+		   AND O.ORD_NO = #{ordNo}
+		   AND O.ORD_NM = #{orderNm}
+				</otherwise>
+			</choose>
+		</where>
+		<if test="ordDtlStat == 'G013_60'">
+		   AND O.ORD_DT >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 WEEK, '%Y-%m-%d')
+		</if>
+		   AND OD.ORD_DTL_STAT = #{ordDtlStat}
+		   AND O.DISP_YN = 'Y'
+	</select>
+
+	<!-- 마이페이지 주문변경상태 별 주문수량 조회 -->
+	<select id="getOrderChangeStatCount" parameterType="Order" resultType="int">
+		/* TscOrder.getOrderChangeStatCount */
+		SELECT COUNT(*) CNT
+		  FROM TB_ORDER_CHANGE_DETAIL OCD
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		 INNER JOIN TB_ORDER O
+		    ON O.ORD_NO = OD.ORD_NO
+		<where>
+			<choose>
+				<when test='custNo != null and custNo != ""'>
+		   AND O.CUST_NO  =  #{custNo}
+				</when>
+				<otherwise>
+		   AND O.ORD_NO = #{ordNo}
+		   AND O.ORD_NM = #{orderNm}
+				</otherwise>
+			</choose>
+		</where>
+		<choose>
+			<when test="chgStat == 'G685_30'">
+		   AND OCD.CHG_STAT IN (#{chgStat}, 'G685_33')
+			</when>
+			<otherwise>
+		   AND OCD.CHG_STAT = #{chgStat}
+			</otherwise>
+		</choose>
+		   AND O.DISP_YN = 'Y'
+	</select>
+
+	<!-- 마이페이지 주문목록 페이징 처리 주문번호 조회 -->
+	<select id="getPagingOrdNoList" parameterType="Order" resultType="Order">
+		/* TscOrder.getPagingOrdNoList */
+		<include refid="selectForPagingHeader"/>
+		SELECT ORD_NO
+		     , RANK() OVER(ORDER BY ORD_DT DESC) AS NUMB
+		  FROM TB_ORDER
+		 WHERE CUST_NO = #{custNo}
+		   AND DISP_YN = 'Y'
+		<include refid="selectForPagingFooter"/>
+	</select>
+
+	<!-- 마이페이지 주문상세 금액정보 조회 -->
+	<select id="getOrderAmtForMypage" parameterType="Order" resultType="Order">
+		/* TscOrder.getOrderAmtForMypage */
+		SELECT SUM(OD.ORD_AMT)          AS ORD_AMT
+			 , SUM(OD.CPN1_DC_AMT)      AS CPN1_DC_AMT
+			 , SUM(OD.TMTB1_DC_AMT)     AS TMTB1_DC_AMT
+			 , SUM(OD.TMTB2_DC_AMT)     AS TMTB2_DC_AMT
+			 , SUM(OD.CART_CPN_DC_AMT)  AS CART_CPN_DC_AMT
+			 , SUM(OD.GOODS_CPN_DC_AMT) AS GOODS_CPN_DC_AMT
+			 , SUM(OD.PRE_PNT_DC_AMT)   AS PRE_PNT_DC_AMT
+			 , SUM(OD.PNT_DC_AMT)       AS PNT_DC_AMT
+			 , SUM(OD.GFCD_USE_AMT)     AS GFCD_USE_AMT
+			 , SUM(OD.CPN1_DC_AMT + OD.TMTB1_DC_AMT + OD.TMTB2_DC_AMT + OD.CART_CPN_DC_AMT + OD.GOODS_CPN_DC_AMT + OD.PRE_PNT_DC_AMT + OD.PNT_DC_AMT + OD.GFCD_USE_AMT) AS TOTAL_DC_AMT
+			 , SUM(OD.REAL_ORD_AMT)     AS REAL_ORD_AMT
+			 , SUM(OD.SAVE_PNT_AMT)     AS SAVE_PNT_AMT
+			 , SUM(DF.DELV_FEE)         AS DELV_FEE
+		  FROM TB_ORDER_DETAIL OD
+		  LEFT OUTER JOIN (
+			  SELECT ORD_NO
+				   , SUM(DELV_FEE) AS DELV_FEE
+				FROM TB_DELIVERY_FEE
+			   WHERE ORD_NO = #{ordNo}
+				 AND DELV_FEE_GB = 'G018_10'
+			   GROUP BY ORD_NO
+		  ) DF
+		  ON OD.ORD_NO = DF.ORD_NO
+		 WHERE OD.ORD_NO = #{ordNo}
+	</select>
+
+	<!-- 마이페이지 주문상세 결제정보 조회 -->
+	<select id="getPaymentInfoForMypage" parameterType="Order" resultType="Order">
+		/* TscOrder.getPaymentInfoForMypage */
+		SELECT PAY_SQ
+		     , ORD_NO
+		     , PAY_DT
+		     , PAY_MEANS
+		     , PAY_AMT
+		     , PG_CPN_AMT
+		     , NPAY_PNT_AMT
+		     , PAY_GB
+		     , PAY_STAT
+		     , PG_GB
+		     , PG_TID
+		     , PG_TRADE_NO
+		     , PG_SHOP_ID
+		     , CARD_TYPE
+		     , CARD_KIND
+		     , CARD_BANK
+		     , CARD_NM
+		     , CARD_MIPS
+		     , CARD_PCABLE_YN
+		     , VA_NO
+		     , VA_NM
+		     , VA_BANK
+		     , VA_DEADLINE
+		     , DATE_FORMAT(VA_DEADLINE, '%Y.%m.%d') AS VA_DEADLINE_YMD
+		     , DATE_FORMAT(VA_DEADLINE, '%H:%i:%S') AS VA_DEADLINE_HMS
+		     , TELECOM
+		     , ESCROW_YN
+		     , ORD_CHG_SQ
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		  FROM TB_PAYMENT
+		<where>
+			<if test="ordNo != null and ordNo != ''">
+		   AND ORD_NO = #{ordNo}
+			</if>
+			<if test="paySq != null and paySq != ''">
+		   AND PAY_SQ = #{paySq}
+			</if>
+			<if test="ordChgSq != null and ordChgSq != ''">
+		   AND ORD_CHG_SQ = #{ordChgSq}
+			</if>
+			<if test="pgTid != null and pgTid != ''">
+		   AND PG_TID = #{pgTid}
+			</if>
+			<if test="payGb != null and payGb != ''">
+		   AND PAY_GB = #{payGb}
+			</if>
+			<if test="payStat != null and payStat != ''">
+		   AND PAY_STAT = #{payStat}
+			</if>
+			<if test="pgGb != null and pgGb != ''">
+		   AND PG_GB = #{pgGb}
+			</if>
+		</where>
+	</select>
+
+	<!-- 마이페이지 주문상세 배송지 정보 조회 -->
+	<select id="getOrderDeliveryAddrInfo" parameterType="Order" resultType="Order">
+		/* TscOrder.getOrderDeliveryAddrInfo */
+		SELECT DA.DELV_ADDR_SQ
+			 , DA.RECIP_NM
+			 , DA.RECIP_PHNNO
+			 , DA.RECIP_TELNO
+			 , DA.RECIP_ZIPCODE
+			 , DA.RECIP_BASE_ADDR
+			 , DA.RECIP_DTL_ADDR
+			 , DA.DELV_MEMO
+			 , DA.REG_NO
+			 , DA.REG_DT
+			 , DA.UPD_NO
+			 , DA.UPD_DT
+		  FROM TB_DELIVERY_ADDR DA
+		  INNER JOIN TB_ORDER_DETAIL OD
+		  ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
+			  AND OD.ORD_NO = #{ordNo}
+		 LIMIT 1
+	</select>
+
+	<!-- 마이페이지 주문상세 주문내역삭제 처리 -->
+	<update id="updateOrderDisplayYn" parameterType="Order">
+		/* TsfOrder.updateOrderDisplayYn */
+		UPDATE TB_ORDER
+		   SET DISP_YN = 'N'
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		 WHERE ORD_NO = #{ordNo}
+	</update>
 </mapper>

+ 1 - 0
src/main/resources/i18n/messages/message_ko_KR.properties

@@ -22,6 +22,7 @@ FAIL_0007=\uC624\uB958\uB85C \uC778\uD574 \uC5C5\uB85C\uB4DC \uB418\uC9C0 \uC54A
 FAIL_0009=\uC624\uB958\uB85C \uC778\uD574 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
 FAIL_1001=\uC800\uC7A5\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
 FAIL_1002=\uC804\uC1A1\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+FAIL_1003=\uCC98\uB9AC\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
 
 LOGN_0001=\uC785\uB825\uD558\uC2E0 \uC815\uBCF4\uB85C \uAC00\uC785\uB41C \uB0B4\uC5ED\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
 LOGN_0002=\uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.

+ 2 - 0
src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html

@@ -26,12 +26,14 @@
 	<link rel="icon" href="/images/favicon-16x16.png" sizes="16x16" type="image/png"/>
 	
 	<link rel="stylesheet" type="text/css" th:href="@{'/ux/pc/css/common.css?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" href="/ux/pc/css/common.css"/>
+	<link rel="stylesheet" type="text/css" href="/ux/pc/css/jquery-ui.css">
 	<link rel="stylesheet" type="text/css" href="/ux/pc/css/slick.css" />
 	
 	<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
 	<script src="/ux/pc/js/slick.min.js"></script>
 	<script src="/ux/pc/js/jquery-ui.js"></script>
 	<script src="/ux/pc/js/jquery.modal.min.js"></script>
+	<script src="/ux/pc/js/jquery.ui.datepicker.monthyearpicker.js"></script>
 	<script src="/ux/plugins/jquery.serializeObject.min.js"></script>
 	<script src="/ux/plugins/mcxdialog/mcxdialog_ui.js"></script>
 

+ 69 - 6
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html

@@ -25,13 +25,14 @@
 			<div class="od_detail">
 				(주문번호 : <span class="num" th:text="${ordNo}"></span>)
 			</div>
-			<button type="button" class="btn btn_default od_del_btn"><span>주문 내역 삭제</span></button>
+			<button type="button" class="btn btn_default od_del_btn" onclick="fnDeleteOrder()"><span>주문 내역 삭제</span></button>
 		</div>
 		<div class="sec_body">
 			<div class="order_list">
 				<section class="order_row">
 					<th:block th:if="${orderList}" th:each="oneData, status : ${orderList}">
 						<div class="part_deliver">
+							
 							<div class="tbl_tit">
 								<!-- 주문일/선물일 설정 -->
 								<span class="start_t" th:unless="${oneData.giftPackYn == 'Y'}">주문일</span>
@@ -44,6 +45,8 @@
 								<a href="" class="detail_btn">주문상세보기</a>
 							</div>
 							<th:block th:if="${oneData.orderList}" th:each="order, status : ${oneData.orderList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<input type="hidden" name="ordDtlNo" th:value="${order.ordDtlNo}"/>
+								<input type="hidden" name="ordDtlStat" th:value="${order.ordDtlStat}"/>
 								<div class="tbl type2">
 									<table>
 										<colgroup>
@@ -95,14 +98,14 @@
 										</tbody>
 									</table>
 								</div>
-								<div class="order_confirm">
+								<div class="order_confirm" th:if="${order.ordDtlStatBanner == 'Y'}">
 									<p class="cf_txt cf_desc c_primary" th:if="${order.ordDtlStat == 'G013_00' or order.ordDtlStat == 'G013_10' or order.ordDtlStat == 'G013_11'}">주문 완료 / 결제를 기다리고 있습니다.</p> <!-- button 없이 텍스트만 있을 경우 cf_desc c_primary class 추가 -->
 									<p class="cf_txt cf_desc c_primary" th:if="${order.ordDtlStat == 'G013_20' or order.ordDtlStat == 'G013_30' or order.ordDtlStat == 'G013_35'}">배송할 상품을 준비 중입니다.</p>
 									<p class="cf_txt cf_desc c_primary" th:if="${order.ordDtlStat == 'G013_40'}">상품준비가 완료되어 곧 배송될 예정입니다.</p>
 									<p class="cf_txt cf_desc c_primary" th:if="${order.ordDtlStat == 'G013_50' or order.ordDtlStat == 'G013_55'}" th:text="|${order.shipCompNm} / ${order.invoiceNo}|"></p>
 									<button type="button" class="btn btn_primary" th:if="${order.ordDtlStat == 'G013_50' or order.ordDtlStat == 'G013_55'}">배송조회</button>
 									<p class="cf_txt cf_desc c_primary" th:if="${order.ordDtlStat == 'G013_60'}" th:text="|${order.purchaseConfirmDay}일 후 자동으로 구매확정|"></p>
-									<button type="button" class="btn btn_primary" th:if="${order.ordDtlStat == 'G013_60'}">구매확정 하기</button>
+									<button type="button" class="btn btn_primary" th:if="${order.ordDtlStat == 'G013_60'}" onclick="fnDecideOrder(this);">구매확정 하기</button>
 									<p class="cf_txt cf_desc c_primary" th:if="${order.ordDtlStat == 'G013_70' and order.reviewSq == 0}">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다.</p>
 									<button type="button" class="btn btn_primary" th:if="${order.ordDtlStat == 'G013_70' and order.reviewSq == 0}">리뷰작성</button>
 									<p class="cf_txt cf_desc c_primary" th:if="${order.ordDtlStat == 'G013_70' and order.reviewSq > 0}">주문내역 다시 구매하기 위해</p>
@@ -318,15 +321,75 @@
 	</div>
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
-/*<![CDATA[*/
+	let ordNo = [[${ordNo}]];
+	
+	// 주문 내역 삭제 처리
+	var fnDeleteOrder = function() {
+		mcxDialog.confirm('주문 내역을 삭제하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				let data = {};
+				
+				data.ordNo = ordNo;
+				
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/mypage/order/delete'
+					, jsonData
+					, function() {
+						cfnGoToPage(_PAGE_MYPAGE);
+					});
+			}
+		});
+	};
+	
+	// 구매확정 처리
+	var fnDecideOrder = function(param) {
+		let ordDtlNoArr = $(param).parent().parent().find('input[name=ordDtlNo]');
+		let ordDtlStatArr = $(param).parent().parent().find('input[name=ordDtlStat]');
+		
+		console.log(ordDtlNoArr);
+		let orderDecisionArr = [];
+		$.each(ordDtlNoArr, function(idx, item) {
+			console.log(item.value);
+			if (ordDtlStatArr[idx].value == 'G013_60') {
+				orderDecisionArr.push(item.value);
+			}
+		});
+
+		console.log(orderDecisionArr);
+		if (orderDecisionArr.length == 0) {
+			mcxDialog.alert('구매확정 가능한 상품이 없습니다.');
+			return false;
+		}
+
+		mcxDialog.confirm('구매확정 처리를 하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				let data = {};
+				
+				data.ordNo = ordNo;
+				data.ordDtlNoArr = orderDecisionArr;
+				
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/mypage/order/decision'
+					, jsonData
+					, function() {
+						cfnGoToPage(_PAGE_ORDER_DETAIL + ordNo);
+					});
+			}
+		});
+	}
+
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
 		fnSetMypageLnbList(1);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('주문확인/배송조회', _PAGE_ORDER_LIST, '주문상세');
+		fnSetMypageLocation('주문확인/배송조회', '_PAGE_ORDER_LIST', '주문상세');
 	});
-/*]]>*/
+	
 </script>
 
 </th:block>

+ 38 - 23
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -51,33 +51,34 @@
 			<!-- 주문 경로 -->
 			<div class="order_info clear">
 				<ul class="clear">
-					<li class="orl01">
+					<li>
 						<p class="or_p">주문접수</p>
 						<p class="count"><span th:text="${orderReceiptCount}">0</span></p>
 					</li>
-					<li class="orl02">
+					<li>
 						<p class="or_p">결제완료</p>
 						<p class="count"><span th:text="${paymentCompleteCount}">0</span></p>
 					</li>
-					<li class="orl03">
+					<li>
 						<p class="or_p">상품 준비 중</p>
 						<p class="count"><span th:text="${goodsPrepareCount}">0</span></p>
 					</li>
-					<li class="orl04">
+					<li>
+						<p class="or_p">배송 준비 중</p>
+						<p class="count"><span th:text="${shipPrepareCount}">0</span></p>
+					</li>
+					<li>
 						<p class="or_p">배송 중</p>
 						<p class="count"><span th:text="${shippingCount}">0</span></p>
 					</li>
-					<li class="orl05">
+					<li>
 						<p class="or_p">배송 완료</p>
 						<p class="count"><span th:text="${shipCompleteCount}">0</span></p>
 					</li>
 				</ul>
 				<div class="order_right">
-					<ul>
-						<li>취소 내역<span th:text="${cancelCount}">0</span></li>
-						<li>교환 내역<span th:text="${returnCount}">0</span></li>
-						<li>반품 내역<span th:text="${exchangeCount}">0</span></li>
-					</ul>
+					<p class="or_p">취소/교환/반품</p>
+					<p class="count"><span th:text="${cancelCount + returnCount + exchangeCount}">0</span></p>
 				</div>
 			</div>
 			<!-- //주문 경로 -->
@@ -85,14 +86,19 @@
 			<!-- 주문조회 검색 -->
 			<div class="order_sch_filter clear">
 				<div class="sch_radio_tab">
-					<button type="button" class="btn btn_default" th:if="${searchPeriod}" th:each="oneData, status : ${searchPeriod}" th:text="${oneData}"></button>
+					<input type="checkbox" name="month" value="최근 1개월" id="chk01" onclick="fnSetSearchPeriod(1);">
+					<label for="chk01">최근 1개월</label>
+					<input type="checkbox" name="month" value="최근 3개월" id="chk02" onclick="fnSetSearchPeriod(3);">
+					<label for="chk02">최근 2개월</label>
+					<input type="checkbox" name="month" value="최근 6개월" id="chk03" onclick="fnSetSearchPeriod(6);">
+					<label for="chk03">최근 3개월</label>
 				</div>
 				<div class="sch_right">
 					<div class="sch_datepicker sb">
-						<input type="text" class="n_input hasDatepicker" name="dt_fr_input" value="" placeholder="20.10.05" id="">
+						<input type="text" class="n_input my_datepicker" name="stDate" value="" th:placeholder="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}" id="stDate">
 					</div>
 					<div class="sch_datepicker">
-						<input type="text" class="n_input hasDatepicker" name="dt_to_input" value="" placeholder="20.10.05" id="">
+						<input type="text" class="n_input my_datepicker" name="edDate" value="" th:placeholder="${#calendars.format(#calendars.createNow(), 'yyyy-MM-dd')}" id="edDate">
 					</div>
 					<button type="button" class="btn btn_dark">조회</button>
 				</div>
@@ -110,9 +116,9 @@
 							<span class="order_date" th:text="${oneData.ordDt}"></span>
 
 							<!-- 배송구분 설정 -->
-							<span class="order_method" th:if="${oneData.shotDelvYn == 'Y'}" th:text="총알배송"></span>
-							<span class="order_method" th:if="${oneData.shotDelvYn == 'N' and oneData.selfGoodsYn == 'Y'}" th:text="일반배송"></span>
-							<span class="order_method" th:if="${oneData.selfGoodsYn == 'N'}" th:text="업체직배송"></span>
+							<span class="order_method" th:if="${oneData.shotDelvYn == 'Y'}">총알배송</span>
+							<span class="order_method" th:if="${oneData.shotDelvYn == 'N' and oneData.selfGoodsYn == 'Y'}">일반배송</span>
+							<span class="order_method" th:if="${oneData.selfGoodsYn == 'N'}">업체직배송</span>
 							<!-- //배송구분 설정 -->
 							<a href="javascript:void(0)" class="detail_btn" th:attr="ordNo=${oneData.ordNo}" onclick="fnGoToOrderDetail(this)">주문상세보기</a>
 						</div>
@@ -166,13 +172,13 @@
 													<th:block th:if="${oneData.giftPackYn == 'Y'}">
 														<!-- 주소 입력 전 -->
 														<th:block th:if="${#strings.isEmpty(order.recipBaseAddr)}">
-															<p class="dlvr_staus c_primary" th:text="|주소 입력 대기|"></p>
+															<p class="dlvr_staus c_primary">주소 입력 대기</p>
 															<p class="dlvr_desc" th:text="|남은 기간 ${order.giftLimitDay}일|"></p>
 															<p class="dlvr_desc" th:text="|(${order.giftLimitDt}까지)|"></p>
 														</th:block>
 														<!-- 주소 입력 후 -->
 														<th:block th:unless="${#strings.isEmpty(order.recipBaseAddr)}">
-															<p class="dlvr_staus c_primary" th:text="|선물 완료|"></p>
+															<p class="dlvr_staus c_primary">선물 완료</p>
 															<p class="dlvr_desc" th:text="|(${order.giftCompleteDt})|"></p>
 														</th:block>
 													</th:block>
@@ -222,11 +228,11 @@
 															<button type="button" class="btn btn_primary">구매확정 하기</button>
 														</div>
 														<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_70' and order.reviewSq == 0}">
-															<span class="cf_txt" th:text="리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다."></span>
+															<span class="cf_txt">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다.</span>
 															<button type="button" class="btn btn_primary">리뷰작성</button>
 														</div>
 														<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_70' and order.reviewSq > 0}">
-															<span class="cf_txt" th:text="주문내역 다시 구매하기 위해"></span>
+															<span class="cf_txt">주문내역 다시 구매하기 위해</span>
 															<button type="button" class="btn btn_primary">장바구니 담기</button>
 														</div>
 													</td>
@@ -244,7 +250,7 @@
 															<span class="cf_txt" th:text="|${order.recipNm}님께 선물이 발송되었습니다.|"></span>
 														</div>
 														<div class="order_confirm" th:if="${#strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay < 0}">
-															<span class="cf_txt" th:text="|주소입력 기한이 경과되어 선물이 취소 되었습니다.|"></span>
+															<span class="cf_txt">주소입력 기한이 경과되어 선물이 취소 되었습니다.</span>
 														</div>
 													</td>
 												</tr>
@@ -273,12 +279,21 @@
 		
 		// 마이페이지 location 설정
 		fnSetMypageLocation('주문확인/배송조회');
+		
+		// datepicker 설정
+		$(".my_datepicker").datepicker();
 	});
 	
 	var fnGoToOrderDetail = function(param) {
 		let ordNo = $(param).attr('ordNo');
-		console.log(_PAGE_ORDER_DETAIL + '/' + ordNo);
-		cfnGoToPage(_PAGE_ORDER_DETAIL + '/' + ordNo);
+		cfnGoToPage(_PAGE_ORDER_DETAIL + ordNo);
+	}
+	
+	var fnSetSearchPeriod = function(period) {
+		let date = new Date();
+		$('#edDate').val(date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2));
+		date.setMonth(date.getMonth() - period);
+		$('#stDate').val(date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2));
 	}
 	
 /*]]>*/

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

@@ -24,7 +24,7 @@ const _PAGE_CUSTOMER_DORMANT = _frontUrl + "/customer/dormant/certify/form";		//
 //== 마이페이지 ==/
 const _PAGE_MYPAGE = _frontUrl + "/mypage/main/form";							// 마이페이지 > 메인
 const _PAGE_ORDER_LIST = _frontUrl + "/mypage/order/list/form";					// 마이페이지 > 주문확인/배송조회
-const _PAGE_ORDER_DETAIL = _frontUrl + "/mypage/order/detail/form";				// 마이페이지 > 주문/배송 상세
+const _PAGE_ORDER_DETAIL = _frontUrl + "/mypage/order/detail/form/";			// 마이페이지 > 주문/배송 상세
 const _PAGE_CRS_LIST = _frontUrl + "/mypage/crs/list/form";						// 마이페이지 > 취소/교환/반품 목록
 const _PAGE_RESTOCK = _frontUrl + "/mypage/restock/form";						// 마이페이지 > 재입고 알림 내역
 const _PAGE_REVIEW = _frontUrl + "/mypage/review/form";							// 마이페이지 > 리뷰