Просмотр исходного кода

Merge branch 'develop' into bin2107

bin2107 5 лет назад
Родитель
Сommit
140d72cef0
54 измененных файлов с 768 добавлено и 128 удалено
  1. 34 0
      src/main/java/com/style24/front/biz/dao/TsfReinboundDao.java
  2. 2 3
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  3. 47 0
      src/main/java/com/style24/front/biz/service/TsfReinboundService.java
  4. 119 78
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  5. 13 9
      src/main/java/com/style24/persistence/domain/ReinboundInform.java
  6. 59 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfReinbound.xml
  7. 15 8
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubMob.html
  8. 48 0
      src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html
  9. 172 0
      src/main/webapp/WEB-INF/views/mob/mypage/RestockFormMob.html
  10. 54 27
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  11. 202 0
      src/main/webapp/WEB-INF/views/web/mypage/RestockFormWeb.html
  12. BIN
      src/main/webapp/images/mo/ico_admin2.png
  13. BIN
      src/main/webapp/images/mo/ico_btn_more_w.png
  14. BIN
      src/main/webapp/images/mo/ico_btn_search_w.png
  15. BIN
      src/main/webapp/images/mo/ico_btn_store_w.png
  16. BIN
      src/main/webapp/images/mo/ico_cate_arrow.png
  17. BIN
      src/main/webapp/images/mo/ico_like03.png
  18. BIN
      src/main/webapp/images/mo/ico_picker.png
  19. BIN
      src/main/webapp/images/mo/ico_restock_past.png
  20. BIN
      src/main/webapp/images/mo/ico_restock_ready.png
  21. BIN
      src/main/webapp/images/mo/ico_restock_remain.png
  22. BIN
      src/main/webapp/images/mo/ico_sch_del_w.png
  23. BIN
      src/main/webapp/images/mo/ico_tabbar.png
  24. BIN
      src/main/webapp/images/mo/info_size_bag.png
  25. BIN
      src/main/webapp/images/mo/info_size_pants.png
  26. BIN
      src/main/webapp/images/mo/info_size_shoe.png
  27. BIN
      src/main/webapp/images/mo/info_size_top.png
  28. BIN
      src/main/webapp/images/mo/info_size_underwear.png
  29. BIN
      src/main/webapp/images/mo/logo_STYLE24.png
  30. BIN
      src/main/webapp/images/mo/logo_STYLE24_b.png
  31. BIN
      src/main/webapp/images/mo/pd_arrow.png
  32. BIN
      src/main/webapp/images/mo/thumb/brand01.png
  33. BIN
      src/main/webapp/images/mo/thumb/brand02.png
  34. BIN
      src/main/webapp/images/mo/thumb/brand03.png
  35. BIN
      src/main/webapp/images/mo/thumb/brand04.png
  36. BIN
      src/main/webapp/images/mo/thumb/brand05.png
  37. BIN
      src/main/webapp/images/mo/thumb/brand06.png
  38. BIN
      src/main/webapp/images/mo/thumb/brand07.png
  39. BIN
      src/main/webapp/images/mo/thumb/brand08.png
  40. BIN
      src/main/webapp/images/mo/thumb/brand09.png
  41. BIN
      src/main/webapp/images/mo/thumb/brand10.png
  42. BIN
      src/main/webapp/images/mo/thumb/brand11.png
  43. BIN
      src/main/webapp/images/mo/thumb/brand12.png
  44. BIN
      src/main/webapp/images/mo/thumb/brand13.png
  45. BIN
      src/main/webapp/images/mo/thumb/brand14.png
  46. BIN
      src/main/webapp/images/mo/thumb/brand15.png
  47. BIN
      src/main/webapp/images/mo/thumb/brand16.png
  48. BIN
      src/main/webapp/images/mo/thumb/ev_list_img05.jpg
  49. BIN
      src/main/webapp/images/mo/thumb/ev_list_img06.jpg
  50. BIN
      src/main/webapp/images/mo/thumb/ev_list_img07.jpg
  51. BIN
      src/main/webapp/images/mo/thumb/ev_list_img08.jpg
  52. BIN
      src/main/webapp/images/mo/thumb/thumb_notice1.jpg
  53. 1 1
      src/main/webapp/ux/mo/css/layout_m.css
  54. 2 2
      src/main/webapp/ux/mo/js/common_m.js

+ 34 - 0
src/main/java/com/style24/front/biz/dao/TsfReinboundDao.java

@@ -0,0 +1,34 @@
+package com.style24.front.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.ReinboundInform;
+
+/**
+ * 재입고알림 Dao
+ *
+ * @author gagamel
+ * @since 2021. 4. 13
+ */
+@ShopDs
+public interface TsfReinboundDao {
+
+	/**
+	 * 재입고알림 목록
+	 * @param custNo - 고객번호
+	 * @return
+	 * @author gagamel
+	 * @date 2021. 4. 13
+	 */
+	Collection<ReinboundInform> getReinboundInformList(Integer custNo);
+
+	/**
+	 * 재입고알림 연장 처리
+	 * @param params - 재입고알림 정보
+	 * @author gagamel
+	 * @date 2021. 4. 13
+	 */
+	void updateReinboundInformContinue(ReinboundInform params);
+
+}

+ 2 - 3
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -278,10 +278,9 @@ public class TsfDisplayService {
 		Cate4Srch cate = new Cate4Srch();
 		cate.setSiteCd(TscConstants.Site.STYLE24.value()); // 사이트코드
 
-		// 카테고리구분
 		if (defaultCateYn.equals("Y")) { // 기본카테고리이면
 			cate.setCateGb(TsfConstants.CateGb.BYITEM.value());
-		} else {
+		} else { // 별도카테고리이면
 			cate.setCateGb(TsfConstants.CateGb.BYBRAND.value());
 		}
 
@@ -473,7 +472,7 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @since 2021. 4. 12
 	 */
-	public Collection<BrandGroup> getAllBrandList(BrandGroup brandGroup){
+	public Collection<BrandGroup> getAllBrandList(BrandGroup brandGroup) {
 		return displayDao.getAllBrandList(brandGroup);
 	}
 

+ 47 - 0
src/main/java/com/style24/front/biz/service/TsfReinboundService.java

@@ -0,0 +1,47 @@
+package com.style24.front.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.style24.front.biz.dao.TsfReinboundDao;
+import com.style24.persistence.domain.ReinboundInform;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 재입고알림 Service
+ *
+ * @author gagamel
+ * @since 2021. 4. 13
+ */
+@Service
+@Slf4j
+public class TsfReinboundService {
+
+	@Autowired
+	private TsfReinboundDao reinboundDao;
+
+	/**
+	 * 재입고알림 목록
+	 * @param custNo - 고객번호
+	 * @return
+	 * @author gagamel
+	 * @date 2021. 4. 13
+	 */
+	public Collection<ReinboundInform> getReinboundInformList(Integer custNo) {
+		return reinboundDao.getReinboundInformList(custNo);
+	}
+
+	/**
+	 * 재입고알림 연장 처리
+	 * @param params - 재입고알림 정보
+	 * @author gagamel
+	 * @date 2021. 4. 13
+	 */
+	public void updateReinboundInformContinue(ReinboundInform params) {
+		reinboundDao.updateReinboundInformContinue(params);
+	}
+
+}

+ 119 - 78
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -17,9 +17,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 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.GagaResponse;
-import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscKakaoPayService;
@@ -37,6 +34,7 @@ import com.style24.front.biz.service.TsfGiftcardService;
 import com.style24.front.biz.service.TsfOrderChangeService;
 import com.style24.front.biz.service.TsfOrderService;
 import com.style24.front.biz.service.TsfPointService;
+import com.style24.front.biz.service.TsfReinboundService;
 import com.style24.front.biz.service.TsfRendererService;
 import com.style24.front.biz.service.TsfReviewService;
 import com.style24.front.biz.service.TsfWishlistService;
@@ -54,11 +52,16 @@ import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 import com.style24.persistence.domain.Point;
+import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.Review;
 import com.style24.persistence.domain.WishList;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
+import com.gagaframework.web.rest.server.GagaResponseStatus;
+
 /**
  * 마이페이지 Controller
  * 
@@ -120,7 +123,7 @@ public class TsfMypageController extends TsfBaseController {
 
 	@Autowired
 	private TscCouponService coreCouponService;
-	
+
 	@Autowired
 	private TsfCartService cartService;
 
@@ -130,6 +133,9 @@ public class TsfMypageController extends TsfBaseController {
 	@Autowired
 	private TscKcpService kcpService;
 
+	@Autowired
+	private TsfReinboundService reinboundService;
+
 	/**
 	 * 마이페이지 메인 화면
 	 *
@@ -372,7 +378,7 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 교환 가능 리스트 조회
 		GagaMap map = orderChangeService.getReturnListForMypage(order);
-		Order oneData = (Order) map.get("oneData");
+		Order oneData = (Order)map.get("oneData");
 		mav.addObject("exchangeList", map);
 		mav.addObject("oneData", oneData);
 
@@ -573,7 +579,7 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 반품 가능 리스트 조회
 		GagaMap map = orderChangeService.getReturnListForMypage(order);
-		Order oneData = (Order) map.get("oneData");
+		Order oneData = (Order)map.get("oneData");
 		mav.addObject("returnList", map);
 		mav.addObject("oneData", oneData);
 
@@ -609,7 +615,7 @@ public class TsfMypageController extends TsfBaseController {
 	@PostMapping("/return")
 	@ResponseBody
 	public GagaMap rtnReq(@RequestBody OrderChange orderChange) {
-		if (orderChange== null) {
+		if (orderChange == null) {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
 
@@ -623,36 +629,36 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 2. 환불 사전 정보 조회
 		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(orderChange);
-		List<Order> returnReqList = (List<Order>) refundPreInfo.get("cnclReqList");
+		List<Order> returnReqList = (List<Order>)refundPreInfo.get("cnclReqList");
 		String allCanYn = refundPreInfo.getString("allCanYn");
 
 		// 2. 환불금액계산
 		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(returnReqList);
 
 		// 3. 주문변경 기본정보 설정
-		result.set("ordNo"			, orderChange.getOrdNo());				// 주문번호
-		result.set("ordChgSq"		, orderChange.getOrdChgSq());			// 주문변경번호
-		result.set("chgReason"		, orderChange.getChgReason());			// 변경사유
-		result.set("chgMemo"		, orderChange.getChgMemo());			// 변경메모
+		result.set("ordNo", orderChange.getOrdNo());				// 주문번호
+		result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
+		result.set("chgReason", orderChange.getChgReason());			// 변경사유
+		result.set("chgMemo", orderChange.getChgMemo());			// 변경메모
 
-		result.set("accountNo"		, orderChange.getAccountNo());			// 환불계좌번호
-		result.set("accountNm"		, orderChange.getAccountNm());			// 환불계좌예금주명
-		result.set("bankCd"			, orderChange.getBankCd());				// 환불계좌은행코드
+		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
+		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
+		result.set("bankCd", orderChange.getBankCd());				// 환불계좌은행코드
 
-		result.set("allCanYn"		, allCanYn);							// 무통장입금전 전체취소 여부 
-		result.set("isCustomer"		, orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
-		result.set("wdGb"			, orderChange.getWdGb());				// 회수방법
-		result.set("wdInvoiceNo"	, orderChange.getWdInvoiceNo());		// 회수송장번호
+		result.set("allCanYn", allCanYn);							// 무통장입금전 전체취소 여부 
+		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
+		result.set("wdGb", orderChange.getWdGb());				// 회수방법
+		result.set("wdInvoiceNo", orderChange.getWdInvoiceNo());		// 회수송장번호
 
 		// 4. 주문변경 회수지정보 추가
-		result.set("chgerNm"		, orderChange.getChgerNm());			// 변경자명
-		result.set("chgerEmail"		, orderChange.getChgerEmail());			// 변경자이메일주소
-		result.set("chgerZipcode"	, orderChange.getChgerZipcode());		// 회수지우편번호
-		result.set("chgerBaseAddr"	, orderChange.getChgerBaseAddr());		// 회수지기본주소
-		result.set("chgerDtlAddr"	, orderChange.getChgerDtlAddr());		// 회수지상세주소
-		result.set("chgerPhnno"		, orderChange.getChgerPhnno());			// 변경자핸드폰번호
-		result.set("chgerTelno"		, orderChange.getChgerTelno());			// 변경자전화번호
-		result.set("chgerRtnMemo"	, orderChange.getChgerRtnMemo());		// 반품메모
+		result.set("chgerNm", orderChange.getChgerNm());			// 변경자명
+		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
+		result.set("chgerZipcode", orderChange.getChgerZipcode());		// 회수지우편번호
+		result.set("chgerBaseAddr", orderChange.getChgerBaseAddr());		// 회수지기본주소
+		result.set("chgerDtlAddr", orderChange.getChgerDtlAddr());		// 회수지상세주소
+		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
+		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
+		result.set("chgerRtnMemo", orderChange.getChgerRtnMemo());		// 반품메모
 
 		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
 		coreOrderChangeService.rtnReq(result, custNo);
@@ -682,7 +688,7 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 취소 가능 리스트 조회
 		GagaMap map = orderChangeService.getCancelListForMypage(order);
-		Order oneData = (Order) map.get("oneData");
+		Order oneData = (Order)map.get("oneData");
 		mav.addObject("cancelList", map);
 		mav.addObject("oneData", oneData);
 
@@ -727,37 +733,35 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 2. 환불 사전 정보 조회
 		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(orderChange);
-		List<Order> cnclReqList = (List<Order>) refundPreInfo.get("cnclReqList");
+		List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
 		String allCanYn = refundPreInfo.getString("allCanYn");
-		
 
 		// 2. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
 		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
 
 		// 무통장입금전 전체취소 여부
-		
 
 		// 3. 주문변경 기본정보 설정
-		result.set("ordNo"			, orderChange.getOrdNo());				// 주문번호
-		result.set("ordChgSq"		, orderChange.getOrdChgSq());			// 주문변경번호
-		result.set("chgReason"		, orderChange.getChgReason());			// 변경사유
-		result.set("chgMemo"		, orderChange.getChgMemo());			// 변경메모
+		result.set("ordNo", orderChange.getOrdNo());				// 주문번호
+		result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
+		result.set("chgReason", orderChange.getChgReason());			// 변경사유
+		result.set("chgMemo", orderChange.getChgMemo());			// 변경메모
 
-		result.set("accountNo"		, orderChange.getAccountNo());			// 환불계좌번호
-		result.set("accountNm"		, orderChange.getAccountNm());			// 환불계좌예금주명
-		result.set("bankCd"			, orderChange.getBankCd());				// 환불계좌은행코드
+		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
+		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
+		result.set("bankCd", orderChange.getBankCd());				// 환불계좌은행코드
 
-		result.set("allCanYn"		, allCanYn);							// 무통장입금전 전체취소 여부
-		result.set("isCustomer"		, orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
+		result.set("allCanYn", allCanYn);							// 무통장입금전 전체취소 여부
+		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
 
 		// 4. 주문변경 회수지정보 추가
-		result.set("chgerNm"		, orderChange.getChgerNm());			// 변경자명
-		result.set("chgerEmail"		, orderChange.getChgerEmail());			// 변경자이메일주소
-		result.set("chgerPhnno"		, orderChange.getChgerPhnno());			// 변경자핸드폰번호
-		result.set("chgerTelno"		, orderChange.getChgerTelno());			// 변경자전화번호
+		result.set("chgerNm", orderChange.getChgerNm());			// 변경자명
+		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
+		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
+		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
 
-		result.set("reqGbn"			, orderChange.getReqGbn());				// 신청구분
+		result.set("reqGbn", orderChange.getReqGbn());				// 신청구분
 
 		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
 		coreOrderChangeService.cnclComplete(result, custNo);
@@ -801,7 +805,7 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 계좌주명 설정
 		mav.addObject("accountNm", orderChange.getAccountNm());
-		
+
 		// 주문번호 설정
 		mav.addObject("ordNo", orderChange.getOrdNo());
 
@@ -981,8 +985,8 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 2. 환불 사전 정보 조회
 		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(orderChange);
-		List<Order> cnclReqList = (List<Order>) refundPreInfo.get("cnclReqList");
-		
+		List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
+
 		return coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
 	}
 
@@ -1096,11 +1100,11 @@ public class TsfMypageController extends TsfBaseController {
 	 * @since 2021. 03. 12
 	 */
 	@GetMapping("/gift/card/form")
-	public ModelAndView mypageGiftcardForm(GiftCard giftcard,Device device) {
+	public ModelAndView mypageGiftcardForm(GiftCard giftcard, Device device) {
 		ModelAndView mav = new ModelAndView();
 		// 상품권 기본정보
 		mav.addObject("giftcardInfo", giftcardService.getGiftcardInfo(giftcard));
-		
+
 		// 최근 12개월 년,월
 		mav.addObject("date", giftcardService.getRecentlyDate());
 		mav.setViewName(super.getDeviceViewName("mypage/MypageGiftcardForm"));
@@ -1196,7 +1200,7 @@ public class TsfMypageController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("mypage/MypageCouponDetailForm"));
 		return mav;
 	}
-	
+
 	/**
 	 * 마이페이지 리뷰화면
 	 *
@@ -1207,26 +1211,26 @@ public class TsfMypageController extends TsfBaseController {
 	@GetMapping("/review/form")
 	public ModelAndView mypageReviewForm(Review review, Device device) {
 		ModelAndView mav = new ModelAndView();
-		
+
 		review.setCustNo(TsfSession.getInfo().getCustNo());
 		review.setSiteCd(TscConstants.Site.STYLE24.value());
 		// 작성가능한 리뷰 카운트
 		mav.addObject("completeReviewCount", reviewService.getCompleteReviewCount(review));
-		
+
 		// 작성한 리뷰 카운트
 		mav.addObject("alreadyReviewCount", reviewService.getAlreadyReviewCount(review));
-		
+
 		// 관리자 댓글확인 
 		mav.addObject("adminCount", reviewService.getAdminConfirmCount(review));
-		
+
 		// 리뷰 이미지/동영상
 		mav.addObject("alreadyReviewAttach", reviewService.getReviewAttach(review));
-		
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageReviewForm"));
 
 		return mav;
 	}
-	
+
 	/**
 	 * 마이페이지 작성가능한 리뷰 목록
 	 * @param review
@@ -1250,14 +1254,14 @@ public class TsfMypageController extends TsfBaseController {
 		review.setPageable(pageable);
 		log.info("pageable: {}", pageable);
 		log.info("totalCount {}", pageable.getTotalCount());
-		
+
 		result.set("paging", review);
 		result.set("completeReviewCount", reviewService.getCompleteReviewCount(review));
 		result.set("dataList1", reviewService.getCompleteReviewList(review));
 
 		return result;
 	}
-	
+
 	/**
 	 * 마이페이지 작성한 리뷰 목록
 	 * @param review
@@ -1278,21 +1282,18 @@ public class TsfMypageController extends TsfBaseController {
 
 		TscPageRequest pageable2 = new TscPageRequest((review.getPageNo2() > 0 ? review.getPageNo2() - 1 : 0), review.getPageSize2(), review.getPageUnit2());
 		pageable2.setTotalCount(reviewService.getAlreadyReviewCount(review));
-		
+
 		review.setPageable2(pageable2);
 		log.info("pageable2: {}", pageable2);
 		log.info("totalCount2 {}", pageable2.getTotalCount());
-		
 
-	
 		result.set("paging2", review);
 		result.set("alreadyReviewCount", reviewService.getAlreadyReviewCount(review));
 		result.set("dataList2", reviewService.getAlreadyReviewList(review));
-		
 
 		return result;
 	}
-	
+
 	/**
 	 * 마이페이지 리뷰작성화면
 	 *
@@ -1301,26 +1302,25 @@ public class TsfMypageController extends TsfBaseController {
 	 * @since 2021. 03. 25
 	 */
 	@GetMapping("/review/create/form/{ordNo}/{ordDtlNo}/{goodsCd}/{reviewStat}")
-	public ModelAndView mypageReviewCreateForm(@PathVariable(value = "ordNo") Integer ordNo,@PathVariable(value = "ordDtlNo") Integer ordDtlNo
-			,@PathVariable(value = "goodsCd") String goodsCd, @PathVariable(value = "reviewStat") String reviewStat, Device device) {
+	public ModelAndView mypageReviewCreateForm(@PathVariable(value = "ordNo") Integer ordNo, @PathVariable(value = "ordDtlNo") Integer ordDtlNo, @PathVariable(value = "goodsCd") String goodsCd, @PathVariable(value = "reviewStat") String reviewStat, Device device) {
 		Review review = new Review();
 		ModelAndView mav = new ModelAndView();
-		
+
 		review.setCustNo(TsfSession.getInfo().getCustNo());
 		review.setSiteCd(TscConstants.Site.STYLE24.value());
 		review.setOrdNo(ordNo);
 		review.setOrdDtlNo(ordDtlNo);
 		review.setGoodsCd(goodsCd);
 		review.setReviewStat(reviewStat);
-		
+
 		mav.addObject("reviewStat", reviewStat);
 		mav.addObject("reviewInfo", reviewService.getReviewGoodsInfo(review));
-		
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageReviewCreateForm"));
 
 		return mav;
 	}
-	
+
 	/**
 	 * 마이페이지 리뷰 저장
 	 * @param review
@@ -1334,16 +1334,16 @@ public class TsfMypageController extends TsfBaseController {
 
 		GagaMap result = new GagaMap();
 		review.setCustNo(TsfSession.getInfo().getCustNo());
-		if(reviewService.reviewDeleteConfirm(review).getCount() > 0) {
+		if (reviewService.reviewDeleteConfirm(review).getCount() > 0) {
 			review.setReviewSq(reviewService.reviewDeleteConfirm(review).getReviewSq());
 		}
-		
+
 		reviewService.saveMypageReview(review);
 		result.set("status", "200");
 
 		return result;
 	}
-	
+
 	/**
 	 * 마이페이지 리뷰 삭제처리
 	 *
@@ -1358,12 +1358,12 @@ public class TsfMypageController extends TsfBaseController {
 	public GagaMap mypageReviewDelete(@RequestBody Review review) throws Exception {
 		GagaMap result = new GagaMap();
 		reviewService.reviewDelete(review);
-		
+
 		result.set("status", "200");
 
 		return result;
 	}
-	
+
 	/**
 	 * 마이페이지 위시리스트화면
 	 *
@@ -1402,7 +1402,6 @@ public class TsfMypageController extends TsfBaseController {
 		return wishList;
 	}
 
-
 	/*신주승 시작*/
 
 	/**
@@ -1532,7 +1531,6 @@ public class TsfMypageController extends TsfBaseController {
 		return customerService.updateCustomerAuth(customer);
 	}
 
-
 	/**
 	 * 마이페이지 - 확인(수정)
 	 *
@@ -1560,7 +1558,7 @@ public class TsfMypageController extends TsfBaseController {
 		custAccount.setIpAddress(TsfSession.getIpAddress());
 		boolean isValid = false;
 		GagaMap result = kcpService.checkAccount(custAccount);
-		if("0000".equals(result.get("resCd"))) {
+		if ("0000".equals(result.get("resCd"))) {
 			isValid = true;
 		}
 		result.set("isValid", isValid);
@@ -1747,4 +1745,47 @@ public class TsfMypageController extends TsfBaseController {
 	}
 
 	/*신주승 끝*/
+
+	/**
+	 * 마이페이지 - 재입고알림
+	 * @return ModelAndView
+	 * @author gagamel
+	 * @since 2021. 4. 13
+	 */
+	@GetMapping("/restock/form")
+	public ModelAndView restockForm() {
+		ModelAndView mav = new ModelAndView();
+		mav.setViewName(super.getDeviceViewName("mypage/RestockForm"));
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 - 재입고알림 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 4. 13
+	 */
+	@GetMapping("/restock/list")
+	@ResponseBody
+	public Collection<ReinboundInform> getRestockList() {
+		return reinboundService.getReinboundInformList(TsfSession.getInfo().getCustNo());
+	}
+
+	/**
+	 * 마이페이지 - 재입고알림 목록
+	 * @param params - 재입고알림 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 4. 13
+	 */
+	@PostMapping("/restock/continue/update")
+	@ResponseBody
+	public GagaResponse updateRestockContinue(@RequestBody ReinboundInform params) {
+		params.setCustNo(TsfSession.getInfo().getCustNo());
+		params.setUpdNo(TsfSession.getInfo().getCustNo());
+		reinboundService.updateReinboundInformContinue(params);
+
+		return super.ok("알림 기한을 15일로 연장하였습니다.");
+	}
+
 }

+ 13 - 9
src/main/java/com/style24/persistence/domain/ReinboundInform.java

@@ -14,13 +14,17 @@ import lombok.Data;
 @Data
 public class ReinboundInform extends TscBaseDomain {
 
-	private Integer rinbdInfoSq;
-	private Integer custNo;
-	private String goodsCd;
-	private String optCd;
-	private String optCd1;
-	private String optCd2;
-	private String reqDt;
-	private String informDt;
-	
+	private Integer rinbdInfoSq;	// 재입고알림번호
+	private Integer custNo;			// 고객번호
+	private String goodsCd;			// 상품코드
+	private String goodsNm;			// 상품명
+	private String brandEnm;		// 브랜드영문명
+	private String optCd;			// 옵션코드
+	private String optCd1;			// 옵션코드1
+	private String optCd2;			// 옵션코드2
+	private String reqDt;			// 요청일시
+	private int pastDays;			// 경과일수
+	private String informDt;		// 알림일시
+	private String sysImgNm;		// 상품이미지명
+
 }

+ 59 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfReinbound.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.front.biz.dao.TsfReinboundDao">
+
+	<!-- 페이징을 위한 select절 상단 -->
+	<sql id="selectForPagingHeader">
+		SELECT *
+		FROM   (
+	</sql>
+
+	<!-- 페이징을 위한 select절 하단 -->
+	<sql id="selectForPagingFooter">
+		       ) ORIGINAL
+		WHERE  NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+	</sql>
+	
+	<!-- 재입고알림 목록 -->
+	<select id="getReinboundInformList" parameterType="Integer" resultType="ReinboundInform">
+		/* TsfReinbound.getReinboundInformList */
+		SELECT RI.RINBD_INFO_SQ                                   /*재입고알림번호*/
+		     , RI.GOODS_CD                                        /*상품코드*/
+		     , G.GOODS_NM                                         /*상품명*/
+		     , RI.OPT_CD                                          /*옵션코드*/
+		     , RI.OPT_CD1                                         /*옵션코드1*/
+		     , RI.OPT_CD2                                         /*옵션코드2*/
+		     , B.BRAND_ENM                                        /*브랜드영문명*/
+		     , DATE_FORMAT(RI.REQ_DT,'%Y.%m.%d')    AS REQ_DT     /*요청일자*/
+		     , DATEDIFF(CURRENT_DATE(),RI.REQ_DT)   AS PAST_DAYS  /*경과일수*/
+		     , DATE_FORMAT(RI.INFORM_DT,'%Y.%m.%d') AS INFORM_DT  /*알림일자*/
+		     , (SELECT MAX(SYS_IMG_NM)
+		        FROM   TB_GOODS_IMG
+		        WHERE  GOODS_CD = G.GOODS_CD
+		        AND    COLOR_CD = G.MAIN_COLOR_CD
+		        AND    DEFAULT_IMG_YN = 'Y' /*기본이미지만*/
+		       )                                    AS SYS_IMG_NM /*상품이미지명*/
+		FROM   TB_REINBOUND_INFORM RI
+		     , TB_GOODS G
+		     , TB_BRAND B
+		WHERE  RI.GOODS_CD = G.GOODS_CD
+		AND    G.BRAND_CD = B.BRAND_CD
+		AND    RI.CUST_NO = #{custNo}
+		AND    G.GOODS_STAT IN ('G008_70','G008_90') /*일시품절,승인완료*/
+		AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한판매기간*/
+		AND    G.SELF_MALL_YN = 'Y' /*자사몰에노출하는넘만*/
+		ORDER  BY RI.INFORM_DT DESC, PAST_DAYS, RI.RINBD_INFO_SQ
+	</select>
+	
+	<!-- 재입고알림 연장 -->
+	<update id="updateReinboundInformContinue" parameterType="ReinboundInform">
+		/* TsfReinbound.updateReinboundInformContinue */
+		UPDATE TB_REINBOUND_INFORM
+		SET    REQ_DT = NOW()
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  RINBD_INFO_SQ = #{rinbdInfoSq}
+		AND    CUST_NO = #{custNo} /*보안상추가*/
+	</update>
+	
+</mapper>

+ 15 - 8
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubMob.html

@@ -15,18 +15,25 @@
  *******************************************************************************
  -->
 <th:block th:fragment="gnb">
+	<a href="#mainCon" class="skipNav">본문바로가기</a>
 	<header class=""> <!-- 서브페이지에서는 <header>의 클래스.main 제거 -->
-		<a href="#mainCon" class="skipNav">본문바로가기</a>
-		
-		<section class="htop" id="htopSub" style="background: #fff;">
+		<section class="htop" id="htopSub">
 			<button class="btn_back" title="이전페이지로">
-				<span>
-					<i class="gl1"></i>
-					<i class="gl2"></i>
-					<i class="gl3"></i>
-				</span>
+				<span><i class="gl1"></i><i class="gl2"></i><i class="gl3"></i></span>
 			</button>
 			<h1 id="htopTitle">고객센터</h1>
+			<div class="button_wrap">
+				<button class="home" onclick="cfnGoToPage(_PAGE_MAIN);">
+					<img src="/images/mo/ico_btn_home.png" alt="홈"/>
+				</button>
+				<button class="search" onclick="cfnGoToPage(_PAGE_SEARCH);">
+					<img src="/images/mo/ico_btn_search.png" alt="검색"/>
+				</button>
+				<button class="store" onclick="cfnGoToPage(_PAGE_CART);">
+					<img src="/images/mo/ico_btn_store.png" alt="쇼핑백"/>
+					<span>99+</span>
+				</button>
+			</div>
 		</section>
 	</header>
 	

+ 48 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
+
+<head th:replace="~{mob/common/fragments/HeadMob :: head}"></head>
+
+<body>
+
+	<th:block th:replace="~{mob/common/fragments/VariablesMob :: variables}"></th:block>
+	
+	<div class="app">
+		<!-- GNB -->
+		<th:block th:replace="~{mob/common/fragments/GnbSubMob :: gnb}"></th:block>
+		<!--// GNB -->
+
+		<!-- CONTENT AREA -->
+		<th:block layout:fragment="content"></th:block>
+		<!-- // CONTENT AREA -->
+
+		<!-- Footer -->
+		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
+
+		<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	var fnSetCallcenterGnb = function(lnbLvl) {
+		let tag = '';
+		tag += '<ul>\n';
+		tag += '	<li><a href=javascript:void(0);" onclick="cfnGoToPage(_PAGE_FAQ);"' + (lnbLvl == 1 ? ' class="on"' : '') + '>FAQ</a></li>\n';
+		tag += '	<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);"' + (lnbLvl == 2 ? ' class="on"' : '') + '>1:1문의</a></li>\n';
+		tag += '	<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_GOODS_QNA);"' + (lnbLvl == 3 ? ' class="on"' : '') + '>상품문의</a></li>\n';
+		tag += '	<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_NOTICE);"' + (lnbLvl == 4 ? ' class="on"' : '') + '>공지</a></li>\n';
+		tag += '</ul>\n';
+		$('#callcenterGnb').html(tag);
+	}
+	
+	$(document).ready(function() {
+		
+	});
+/*]]>*/
+</script>
+
+	</div>
+	
+</body>
+</html>

+ 172 - 0
src/main/webapp/WEB-INF/views/mob/mypage/RestockFormMob.html

@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : RestockFormMob.html
+ * @desc    : 마이페이지 > 재입고알림내역 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.13   gagamel     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<main role="" id="" class="container my">
+		<section class="content restock">
+			<div class="inner bg_gray">
+				<div class="announce_txt">
+					<div class="announce_list">
+						<ul>
+							<li>재입고 알림 신청한 내역을 확인 하실 수 있습니다.</li>
+							<li>알림을 요청한 날로 부터 15일 안에 입고시 알림을 SMS, 알림톡으로 보내드립니다.</li>
+							<li>알림 요청이 완료 또는 경과된 알림은 완료 시점부터 15일 후 삭제됩니다.</li>
+						</ul>
+					</div>
+				</div>
+			</div>
+			
+			<div class="inner">
+				<div class="part_goods" id="restockGoods" style="display: none;">
+<!-- 					<div class="goods_section"> -->
+<!-- 						<div class="goods_detail"> -->
+<!-- 							<a href=""> -->
+<!-- 								<div class="thumb_box"> -->
+<!-- 									<img src="/images/mo/thumb/prod3.jpg" alt="prod3"/> -->
+<!-- 								</div> -->
+<!-- 								<div class="info_box"> -->
+<!-- 									<div class="od_name"> -->
+<!-- 										<span class="restock_ready"><em>2021.03.25</em> 알림</span> -->
+<!-- 										<span class="restock_remain"><em>15</em>일 남음</span> -->
+<!-- 										<span class="restock_past">알림 요청일 경과</span> -->
+<!-- 										<div class="brand"> -->
+<!-- 											<span>Mollimelli 몰리멜리</span> -->
+<!-- 										</div> -->
+<!-- 										<div class="name">몰리겨울상하복 균일가 택1 유아동/상하복/기모상하복/상하의세트 몰리겨울상하복 균일가 택1</div> -->
+<!-- 									</div> -->
+<!-- 									<div class="od_opt"> -->
+<!-- 										<div class="option"><em>Black</em><em>XXL</em></div> -->
+<!-- 										<div class="option"><em>White</em><em>L</em></div> -->
+<!-- 									</div> -->
+<!-- 								</div> -->
+<!-- 							</a> -->
+<!-- 						</div> -->
+<!-- 						<div class="btn_group_flex"> -->
+<!-- 							<div><button type="button" class="btn btn_primary"><span>바로구매</span></button></div> -->
+<!-- 							<div><button type="button" id="btn_alarm_restock" class="btn btn_default"><span>알림연장</span></button></div> -->
+<!-- 						</div> -->
+<!-- 					</div> -->
+				</div>
+				
+				<!-- 데이터 없을 시 -->
+				<div class="nodata" id="restockNodata" style="display: none;">
+					<div class="txt_box">
+						<p>재입고 알림 내역이 없습니다.</p>
+					</div>
+				</div>
+			</div>
+		</section>
+	</main>
+	
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let fnGetList = function() {
+		$.getJSON('/mypage/restock/list', function (result, status) {
+			if (status == 'success') {
+				if (result.length > 0) {
+					$('#restockGoods').html('');
+					
+					$.each(result, function (idx, item) {
+						let tag = '<div class="goods_section">\n';
+						tag += '	<div class="goods_detail">\n';
+						tag += '		<a href="">\n';
+						tag += '			<div class="thumb_box">\n';
+						tag += '				<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" alt="">\n';
+						tag += '			</div>\n';
+						tag += '			<div class="info_box">\n';
+						tag += '				<div class="od_name">\n';
+						
+						if (!gagajf.isNull(item.informDt)) {
+							tag += '					<span class="restock_ready"><em>' + item.informDt + '</em> 알림</span>\n';
+						} else {
+							if (item.pastDays > 15) {
+								tag += '					<span class="restock_past">알림 요청일 경과</span>\n';
+							} else {
+								tag += '					<span class="restock_remain"><em>' + (15 - Number(item.pastDays)) + '</em>일 남음</span>\n';
+							}
+						}
+						
+						tag += '					<div class="brand">\n';
+						tag += '						<span>' + item.brandEnm + '</span>\n';
+						tag += '					</div>\n';
+						tag += '					<div class="name">' + item.goodsNm + '</div>\n';
+						tag += '				</div>\n';
+						tag += '				<div class="od_opt">\n';
+						tag += '					<div class="option"><em>' + item.optCd1 + '</em><em>' + item.optCd2 + '</em></div>\n';
+						tag += '				</div>\n';
+						tag += '			</div>\n';
+						tag += '		</a>\n';
+						tag += '	</div>\n';
+						tag += '	<div class="btn_group_flex">\n';
+						
+						if (!gagajf.isNull(item.informDt)) {
+							tag += '		<div><button type="button" class="btn btn_primary" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\');"><span>바로구매</span></button></div>\n';
+						} else {
+							tag += '		<div><button type="button" class="btn btn_default" onclick="fnUpdateRestockContinue(' + item.rinbdInfoSq + ');"><span>알림연장</span></button></div>\n';
+						}
+						
+						tag += '	</div>\n';
+						tag += '</div>\n';
+						
+						$('#restockGoods').append(tag);
+						$('#restockGoods').show();
+						$('#restockNodata').hide();
+					});
+				} else {
+					// 데이터 없을 시
+					$('#restockGoods').hide();
+					$('#restockNodata').show();
+				}
+			}
+		});
+	}
+	
+	// 알림 연장
+	let fnUpdateRestockContinue = function(rinbdInfoSq) {
+		mcxDialog.confirm("알림을 연장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				let params = new Object();
+				params.rinbdInfoSq = rinbdInfoSq;
+				
+				var jsonData = JSON.stringify(params);
+				gagajf.ajaxJsonSubmit('/mypage/restock/continue/update'
+						, jsonData
+						, function() {
+							fnGetList();
+						});
+			}
+		});
+	}
+
+	$(document).ready(function() {
+		// 타이틀명
+		$('#htopTitle').text('재입고 알림');
+		
+		fnGetList();
+	});
+/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 54 - 27
src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html

@@ -77,34 +77,61 @@
 	let fnGetGnbCategory = function(cate1) {
 		let tag = '';
 		if (cate1 != null) {
-			tag += '<li>\n';
-			tag += '	<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate1.cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a>\n';
-			if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
-				tag += '	<ul class="box_depth2">\n';
-				$.each(cate1.cate2List, function(idx2, cate2) {
-					tag += '		<li>\n';
-					tag += '			<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
-					if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
-						tag += '			<ul class="box_depth3">\n';
-						$.each(cate2.cate3List, function(idx3, cate3) {
-							tag += '				<li>\n';
-							tag += '					<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
-							if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
-								tag += '					<ul class="box_depth3">\n';
-								$.each(cate3.cate4List, function(idx4, cate4) {
-									tag += '						<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
-								});
-								tag += '					</ul>\n';
-							}
-							tag += '				</li>\n';
-						});
-						tag += '			</ul>\n';
-					}
-					tag += '		</li>\n';
-				});
-				tag += '	</ul>\n';
+			if (cate1.cateGb == 'G032_101') { // 카테고리구분이 BYITEM 이면
+				tag += '<li>\n';
+				tag += '	<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate1.cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a>\n';
+			
+				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
+					tag += '	<ul class="box_depth2">\n';
+					$.each(cate1.cate2List, function(idx2, cate2) {
+						tag += '		<li>\n';
+						tag += '			<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
+						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
+							tag += '			<ul class="box_depth3">\n';
+							$.each(cate2.cate3List, function(idx3, cate3) {
+								tag += '				<li>\n';
+								tag += '					<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
+								if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
+									tag += '					<ul class="box_depth3">\n';
+									$.each(cate3.cate4List, function(idx4, cate4) {
+										tag += '						<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
+									});
+									tag += '					</ul>\n';
+								}
+								tag += '				</li>\n';
+							});
+							tag += '			</ul>\n';
+						}
+						tag += '		</li>\n';
+					});
+					tag += '	</ul>\n';
+				}
+				tag += '</li>\n';
+			} else { // 카테고리구분이 BYBRAND 이면
+				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
+					$.each(cate1.cate2List, function(idx2, cate2) {
+						tag += '		<li>\n';
+						tag += '			<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
+						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
+							tag += '			<ul class="box_depth2">\n';
+							$.each(cate2.cate3List, function(idx3, cate3) {
+								tag += '				<li>\n';
+								tag += '					<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
+								if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
+									tag += '					<ul class="box_depth3">\n';
+									$.each(cate3.cate4List, function(idx4, cate4) {
+										tag += '						<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
+									});
+									tag += '					</ul>\n';
+								}
+								tag += '				</li>\n';
+							});
+							tag += '			</ul>\n';
+						}
+						tag += '		</li>\n';
+					});
+				}
 			}
-			tag += '</li>\n';
 		}
 		return tag;
 	}

+ 202 - 0
src/main/webapp/WEB-INF/views/web/mypage/RestockFormWeb.html

@@ -0,0 +1,202 @@
+<!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/MypageLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : RestockForm.html
+ * @desc    : 마이페이지 > 재입고알림내역 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.13   csh9191     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<div class="content restock">
+		<div class="cont_body">
+			<!-- CONT-BODY -->
+			<div class="lnb">
+				<div class="lnb_tit">
+					<h2>마이페이지</h2>
+				</div>
+				<div class="lnb_list">
+					<ul id="mypageLnbList"></ul>
+				</div>
+			</div>
+			<div class="cont">
+				<div class="sec_head">
+					<h3 class="subH1">재입고 알림내역</h3>
+				</div>
+				<div class="sec_body">
+					<div class="com_info_txt">
+						<p class="tit">재입고 알림 안내</p>
+						<ul>
+							<li>재입고 알림을 신청한 내역을 확인 하실 수 있습니다.</li>
+							<li>알림을 요청한 날로 부터 15일 안에 입고 시 알림을 SMS, 알림톡으로 보내드립니다.</li>
+							<li>알림 요청이 완료 또는 경과된 알림은 완료 시점부터 15일후 삭제됩니다.</li>
+						</ul>
+					</div>
+					<div class="area_list">
+						<!-- 주문번호 기준 상품 내역 -->
+						<div class="part_goods" id="restockGoods" style="display: none;">
+<!-- 							<div class="goods_cont"> -->
+<!-- 								<div class="goods_info"> -->
+<!-- 									<div class="order_desc"> -->
+<!-- 										<div class="goods_box"> -->
+<!-- 											<div class="gd_item"> -->
+<!-- 												<a href=""> -->
+<!-- 													<span class="thumb"> -->
+<!-- 														<img src="/images/pc/thumb/tmp_pdClickother1.jpg" width="100%" alt=""/> -->
+<!-- 													</span> -->
+<!-- 													<p> -->
+<!-- 														<span class="brand">Mollimelli 몰리멜리</span> -->
+<!-- 													</p> -->
+<!-- 													<p> -->
+<!-- 														<span class="name">남성 세미오버핏 이중지 심플 기본 와이넥 컬러가디건</span> -->
+<!-- 													</p> -->
+<!-- 												</a> -->
+<!-- 											</div> -->
+<!-- 											<div class="gd_opt"> -->
+<!-- 												<div class="option_wrap"> -->
+<!-- 													<span class="title sr-only">주문 옵션</span> -->
+<!-- 													<span class="option">BLACK&nbsp;/&nbsp;XXL</span> -->
+<!-- 												</div> -->
+<!-- 											</div> -->
+<!-- 										</div> -->
+<!-- 										<div class="status_box"> -->
+<!-- 											<p> -->
+<!-- 												<span class="restock_ready"><em>2021.03.07</em> 알림</span> -->
+<!-- 												<span class="restock_remain"><em>15</em>일 남음</span> -->
+<!-- 												<span class="restock_past">알림요청일 경과</span> -->
+<!-- 											</p> -->
+<!-- 										</div> -->
+<!-- 										<div class="button_box"> -->
+<!-- 											<p><button type="button" class="btn btn_primary btn_sm"><span>바로구매</span></button></p> -->
+<!-- 											<p><button type="button" id="btn_restock_push" class="btn btn_default btn_sm"><span>알림 연장</span></button></p> -->
+<!-- 										</div> -->
+<!-- 									</div> -->
+<!-- 								</div> -->
+<!-- 							</div> -->
+						</div>
+						<!-- //주문번호 기준 상품 내역 -->
+						<!-- 데이터 없을 시 -->
+						<div class="nodata" id="restockNodata" style="display: none;">
+							<div class="txt_box">
+								<p>재입고 알림 내역이 없습니다.</p>
+							</div>
+						</div>
+						<!-- 데이터 없을 시 -->
+					</div>
+				</div>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+	</div>
+	
+<script th:inline="javascript">
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(3);
+		
+		// 마이페이지 location 설정
+		fnSetMypageLocation('재입고 알림 내역', '_PAGE_MYPAGE_RESTOCK');
+		
+		fnGetList();
+	});
+	
+	var fnGetList = function() {
+		$.getJSON('/mypage/restock/list', function (result, status) {
+			if (status == 'success') {
+				if (result.length > 0) {
+					$('#restockGoods').html('');
+					
+					$.each(result, function (idx, item) {
+						let tag = '<div class="goods_cont">\n';
+						tag += '	<div class="goods_info">\n';
+						tag += '		<div class="order_desc">\n';
+						tag += '			<div class="goods_box">\n';
+						tag += '				<div class="gd_item">\n';
+						tag += '					<a href="">\n';
+						tag += '						<span class="thumb">\n';
+						tag += '							<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" width="100%" alt="">\n';
+						tag += '						</span>\n';
+						tag += '						<p><span class="brand">' + item.brandEnm + '</span></p>\n';
+						tag += '						<p><span class="name">' + item.goodsNm + '</span></p>\n';
+						tag += '					</a>\n';
+						tag += '				</div>\n';
+						tag += '				<div class="gd_opt">\n';
+						tag += '					<div class="option_wrap">\n';
+						tag += '						<span class="title sr-only">주문 옵션</span>\n';
+						tag += '						<span class="option">' + item.optCd1 + '&nbsp;/&nbsp;' + item.optCd2 + '</span>\n';
+						tag += '					</div>\n';
+						tag += '				</div>\n';
+						tag += '			</div>\n';
+						tag += '			<div class="status_box">\n';
+						
+						if (!gagajf.isNull(item.informDt)) {
+							tag += '				<p><span class="restock_ready"><em>' + item.informDt + '</em> 알림</span></p>\n';
+						} else {
+							if (item.pastDays > 15) {
+								tag += '				<p><span class="restock_past">알림 요청일 경과</span></p>\n';
+							} else {
+								tag += '				<p><span class="restock_remain"><em>' + (15 - Number(item.pastDays)) + '</em>일 남음</span></p>\n';
+							}
+						}
+						
+						tag += '			</div>\n';
+						tag += '			<div class="button_box">\n';
+						
+						if (!gagajf.isNull(item.informDt)) {
+							tag += '				<p><button type="button" class="btn btn_primary btn_sm" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\');"><span>바로구매</span></button></p>\n';
+						} else {
+							tag += '				<p><button type="button" class="btn btn_default btn_sm" onclick="fnUpdateRestockContinue(' + item.rinbdInfoSq + ');"><span>알림 연장</span></button></p>\n';
+						}
+						
+						tag += '			</div>\n';
+						tag += '		</div>\n';
+						tag += '	</div>\n';
+						tag += '</div>\n';
+						
+						$('#restockGoods').append(tag);
+						$('#restockGoods').show();
+						$('#restockNodata').hide();
+					});
+				} else {
+					// 데이터 없을 시
+					$('#restockGoods').hide();
+					$('#restockNodata').show();
+				}
+			}
+		});
+	}
+	
+	// 알림 연장
+	let fnUpdateRestockContinue = function(rinbdInfoSq) {
+		mcxDialog.confirm("알림을 연장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				let params = new Object();
+				params.rinbdInfoSq = rinbdInfoSq;
+				
+				var jsonData = JSON.stringify(params);
+				gagajf.ajaxJsonSubmit('/mypage/restock/continue/update'
+						, jsonData
+						, function() {
+							fnGetList();
+						});
+			}
+		});
+	}
+</script>
+</th:block>
+
+</body>
+</html>

BIN
src/main/webapp/images/mo/ico_admin2.png


BIN
src/main/webapp/images/mo/ico_btn_more_w.png


BIN
src/main/webapp/images/mo/ico_btn_search_w.png


BIN
src/main/webapp/images/mo/ico_btn_store_w.png


BIN
src/main/webapp/images/mo/ico_cate_arrow.png


BIN
src/main/webapp/images/mo/ico_like03.png


BIN
src/main/webapp/images/mo/ico_picker.png


BIN
src/main/webapp/images/mo/ico_restock_past.png


BIN
src/main/webapp/images/mo/ico_restock_ready.png


BIN
src/main/webapp/images/mo/ico_restock_remain.png


BIN
src/main/webapp/images/mo/ico_sch_del_w.png


BIN
src/main/webapp/images/mo/ico_tabbar.png


BIN
src/main/webapp/images/mo/info_size_bag.png


BIN
src/main/webapp/images/mo/info_size_pants.png


BIN
src/main/webapp/images/mo/info_size_shoe.png


BIN
src/main/webapp/images/mo/info_size_top.png


BIN
src/main/webapp/images/mo/info_size_underwear.png


BIN
src/main/webapp/images/mo/logo_STYLE24.png


BIN
src/main/webapp/images/mo/logo_STYLE24_b.png


BIN
src/main/webapp/images/mo/pd_arrow.png


BIN
src/main/webapp/images/mo/thumb/brand01.png


BIN
src/main/webapp/images/mo/thumb/brand02.png


BIN
src/main/webapp/images/mo/thumb/brand03.png


BIN
src/main/webapp/images/mo/thumb/brand04.png


BIN
src/main/webapp/images/mo/thumb/brand05.png


BIN
src/main/webapp/images/mo/thumb/brand06.png


BIN
src/main/webapp/images/mo/thumb/brand07.png


BIN
src/main/webapp/images/mo/thumb/brand08.png


BIN
src/main/webapp/images/mo/thumb/brand09.png


BIN
src/main/webapp/images/mo/thumb/brand10.png


BIN
src/main/webapp/images/mo/thumb/brand11.png


BIN
src/main/webapp/images/mo/thumb/brand12.png


BIN
src/main/webapp/images/mo/thumb/brand13.png


BIN
src/main/webapp/images/mo/thumb/brand14.png


BIN
src/main/webapp/images/mo/thumb/brand15.png


BIN
src/main/webapp/images/mo/thumb/brand16.png


BIN
src/main/webapp/images/mo/thumb/ev_list_img05.jpg


BIN
src/main/webapp/images/mo/thumb/ev_list_img06.jpg


BIN
src/main/webapp/images/mo/thumb/ev_list_img07.jpg


BIN
src/main/webapp/images/mo/thumb/ev_list_img08.jpg


BIN
src/main/webapp/images/mo/thumb/thumb_notice1.jpg


+ 1 - 1
src/main/webapp/ux/mo/css/layout_m.css

@@ -238,7 +238,7 @@
 .mb .find_result .form_print_bar ul li span.t_span {width:7.5rem; color:#888;}	
 .mb .btn_group_block {float:none; margin-top:3rem; display:flex;}
 .mb [class^="ico_content_"]::before {margin: 0px auto 1.5rem;}
-.ico_content_find::before {width:3.6rem; height:4.6rem; background:url('/images/mo/ico_content_find.png') no-repeat 50% 50%;}
+.ico_content_find::before {width:3.6rem; height:4.6rem; background:url(../images/ico_content_find.png) no-repeat 50% 50%;}
 
 /* mb_login */
 .mb .mb_login .login_check{font-size:1.2rem; line-height:1.8rem;}

+ 2 - 2
src/main/webapp/ux/mo/js/common_m.js

@@ -79,7 +79,7 @@ $(document).ready(function() {
             lastScrollTop = st;
 
             var posiGap = $(window).scrollTop();
-            //console.log(posiGap);
+            console.log(posiGap);
 
         });
 
@@ -668,7 +668,7 @@ $(document).ready(function () {
             popOpenScroll();
             //$('.btPop_body .lap span').css('color', 'red')
             //console.log($(this)[0]);
-            //console.log();
+            console.log();
             $('.container').addClass('btPop_open');
             // autome.style.top  = autotop /10 + "vh";
             if (autotop > 251) {