Explorar el Código

Merge branch 'develop' into order

# Conflicts:
#	pom.xml
#	src/main/java/com/style24/front/biz/web/TsfMypageController.java
card007 hace 5 años
padre
commit
a280bffde1
Se han modificado 29 ficheros con 1501 adiciones y 286 borrados
  1. 14 1
      pom.xml
  2. 2 3
      src/main/java/com/style24/front/biz/dao/TsfCommonDao.java
  3. 9 0
      src/main/java/com/style24/front/biz/dao/TsfCustomerDao.java
  4. 6 5
      src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java
  5. 20 0
      src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java
  6. 3 4
      src/main/java/com/style24/front/biz/service/TsfCommonService.java
  7. 58 31
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  8. 115 31
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  9. 73 13
      src/main/java/com/style24/front/biz/service/TsfGiftcardService.java
  10. 2 3
      src/main/java/com/style24/front/biz/thirdparty/KaKaoLogin.java
  11. 7 10
      src/main/java/com/style24/front/biz/thirdparty/NaverLogin.java
  12. 5 4
      src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java
  13. 104 0
      src/main/java/com/style24/front/biz/thirdparty/Yes24Giftcard.java
  14. 17 10
      src/main/java/com/style24/front/biz/web/TsfCustomerController.java
  15. 32 26
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  16. 146 15
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  17. 1 1
      src/main/java/com/style24/front/support/interceptor/TsfAflinkInterceptor.java
  18. 1 4
      src/main/java/com/style24/persistence/domain/GnbTab.java
  19. 3 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfCommon.xml
  20. 16 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  21. 35 10
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  22. 28 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml
  23. 96 98
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  24. 9 1
      src/main/webapp/WEB-INF/views/web/customer/JoinFormWeb.html
  25. 132 0
      src/main/webapp/WEB-INF/views/web/mypage/MypageCustConfirmFormWeb.html
  26. 290 0
      src/main/webapp/WEB-INF/views/web/mypage/MypageCustModifyFormWeb.html
  27. 180 0
      src/main/webapp/WEB-INF/views/web/mypage/MypageCustSecedeFormWeb.html
  28. 93 12
      src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html
  29. 4 1
      src/main/webapp/ux/style24_link.js

+ 14 - 1
pom.xml

@@ -137,6 +137,19 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/CtCli-1.0.6.jar</systemPath>
 		</dependency>
+		<!-- 상품권 인증  -->
+		<dependency>
+			<groupId>org.apache.cxf</groupId>
+			<artifactId>cxf-rt-frontend-jaxws</artifactId>
+			<version>2.7.11</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.cxf</groupId>
+			<artifactId>cxf-rt-transports-http</artifactId>
+			<version>2.7.11</version>
+		</dependency>
+
+		<!--//NICE 본인인증-->
 		<!-- \\\ WEB-INF lib -->
 	</dependencies>
 	
@@ -157,4 +170,4 @@
 			</resource>
 		</resources>
 	</build>
-</project>
+</project>

+ 2 - 3
src/main/java/com/style24/front/biz/dao/TsfCommonDao.java

@@ -26,13 +26,12 @@ public interface TsfCommonDao {
 //	String getSiteName(String siteCd);
 
 	/**
-	 * 제휴링크 이력 생성
-	 *
+	 * 웹제휴채널이력 생성
 	 * @param inflow - 유입경로 정보
 	 * @author eskim
 	 * @date 2021. 02. 09
 	 */
-	void createInflowHst(InflowHst inflow);
+	void createInflowHistory(InflowHst inflow);
 
 //	/**
 //	 * 기본답변문구내용 조회

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfCustomerDao.java

@@ -124,4 +124,13 @@ public interface TsfCustomerDao {
 	 * @since 2021. 03. 11
 	 */
 	int updatePasswordDate(Customer customer);
+
+	/**
+	 * 본인인증을 통한 정보수정
+	 * @param customer - 고객정보
+	 * @return int - 결과
+	 * @author jsshin
+	 * @since 2021. 03. 15
+	 */
+	int updateCustomerAuth(Customer customer);
 }

+ 6 - 5
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -1,6 +1,7 @@
 package com.style24.front.biz.dao;
 
 import java.util.Collection;
+import java.util.List;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.BrandGroup;
@@ -56,7 +57,7 @@ public interface TsfDisplayDao {
 	 * @author gagamel
 	 * @since 2021. 3. 11
 	 */
-	Collection<Cate1> getCategory1List(Cate4Srch cate);
+	List<Cate1> getCategory1List(Cate4Srch cate);
 
 	/**
 	 * 카테고리2 목록
@@ -65,7 +66,7 @@ public interface TsfDisplayDao {
 	 * @author gagamel
 	 * @since 2021. 3. 11
 	 */
-	Collection<Cate2> getCategory2List(Cate4Srch cate);
+	List<Cate2> getCategory2List(Cate4Srch cate);
 
 	/**
 	 * 카테고리3 목록
@@ -74,7 +75,7 @@ public interface TsfDisplayDao {
 	 * @author gagamel
 	 * @since 2021. 3. 11
 	 */
-	Collection<Cate3> getCategory3List(Cate4Srch cate);
+	List<Cate3> getCategory3List(Cate4Srch cate);
 
 	/**
 	 * 카테고리4 목록
@@ -83,7 +84,7 @@ public interface TsfDisplayDao {
 	 * @author gagamel
 	 * @since 2021. 3. 11
 	 */
-	Collection<Cate4> getCategory4List(Cate4Srch cate);
+	List<Cate4> getCategory4List(Cate4Srch cate);
 
 	/**
 	 * 카테고리5 목록
@@ -92,6 +93,6 @@ public interface TsfDisplayDao {
 	 * @author gagamel
 	 * @since 2021. 3. 11
 	 */
-	Collection<Cate5> getCategory5List(Cate4Srch cate);
+	List<Cate5> getCategory5List(Cate4Srch cate);
 
 }

+ 20 - 0
src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java

@@ -40,4 +40,24 @@ public interface TsfGiftcardDao {
 	 * @since 2021. 3. 12
 	 */	
 	Collection<GiftCard> getGiftcardOwnList(GiftCard giftcard);
+	
+	/**
+	 * 상품권정보 저장
+	 *
+	 * @param GiftCard
+	 * @author sowon
+	 * @since 2021. 3. 15
+	 */	
+	 void getGiftcardUseConfirm(GiftCard giftcard);
+	 
+	 /**
+	 * 상품권 api 저장
+	 *
+	 * @param GiftCard
+	 * @author sowon
+	 * @since 2021. 3. 15
+	 */
+	 void saveGiftcardApi(GiftCard giftcard);
+	 
+	 
 }

+ 3 - 4
src/main/java/com/style24/front/biz/service/TsfCommonService.java

@@ -42,14 +42,13 @@ public class TsfCommonService {
 //	}
 
 	/**
-	 * 유입경로 이력 생성
-	 *
+	 * 유입경로이력(웹제휴채널) 생성
 	 * @param afLinkCd - 제휴링크코드
 	 * @author eskim
 	 * @date 2021. 02. 09
 	 */
 	@Transactional("shopTxnManager")
-	public void createInflowHst(InflowHst inflow) {
+	public void createInflowHistory(InflowHst inflow) {
 		inflow.setSiteCd(TscConstants.Site.STYLE24.value());
 		inflow.setInflowRefer(TsfSession.getHttpServletRequest().getHeader("referer"));
 		inflow.setIpAddr(TsfSession.getIpAddress());
@@ -70,7 +69,7 @@ public class TsfCommonService {
 			}
 		}
 
-		commonDao.createInflowHst(inflow);
+		commonDao.createInflowHistory(inflow);
 	}
 
 //	/**

+ 58 - 31
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -1,20 +1,8 @@
 package com.style24.front.biz.service;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import com.style24.core.biz.service.TscEnvsetService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.security.GagaPasswordEncoder;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.session.TscSession;
@@ -27,11 +15,18 @@ import com.style24.persistence.domain.CustSnsInfo;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.WishList;
-
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.security.GagaPasswordEncoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 고객(회원) Service
@@ -283,8 +278,6 @@ public class TsfCustomerService {
 		boolean isJoin = true;
 		customer.setEncodedPasswd(" ");
 		customer.setCustId(customer.getSnsType()+"_"+customer.getSnsId());
-		String gender = "G007_"+customer.getSexGb();
-		customer.setSexGb(gender);
 		customer.encryptData();
 
 		customer.setSiteCd(TscConstants.Site.STYLE24.value());
@@ -654,6 +647,7 @@ public class TsfCustomerService {
 	 * @author jsshin
 	 * @since 2021. 03. 08
 	 */
+	@Transactional("shopTxnManager")
 	public GagaMap releaseDormantCustomer(Customer customer) {
 		GagaMap result = new GagaMap();
 
@@ -680,6 +674,7 @@ public class TsfCustomerService {
 	 * @author jsshin
 	 * @since 2021. 03. 11
 	 */
+	@Transactional("shopTxnManager")
 	public GagaMap saveCertification(Customer customer) {
 		GagaMap resultMap = new GagaMap();
 		customer.setRegNo(customer.getCustNo());
@@ -713,6 +708,7 @@ public class TsfCustomerService {
 	 * @author jsshin
 	 * @since 2021. 03. 11
 	 */
+	@Transactional("shopTxnManager")
 	public GagaMap updatePasswordDate(Customer customer) {
 		GagaMap resultMap = new GagaMap();
 		boolean isSuccess = false;
@@ -733,20 +729,51 @@ public class TsfCustomerService {
 
 		return resultMap;
 	}
-	
+
 	/**
-	 * 해당 고객번호로 가입된 정보 확인
-	 * @param custNo - 연계정보
-	 * @return Customer
-	 * @author eskim
-	 * @since 2021. 03. 12
+	 * 비밀번호 맞는지 확인
+	 * @param customer - 고객정보
+	 * @return boolean
+	 * @author jsshin
+	 * @since 2021. 03. 15
 	 */
-	public Customer getCustomerFindByCustNo(int custNo) {
-		TscSession.setAttribute("maskingYn","Y");
-		Customer customer = new Customer();
-		customer.setCustNo(custNo);
-		customer.setSiteCd(TscConstants.Site.STYLE24.value());
+	public boolean customerPasswordConfirm(Customer customer) {
+		boolean isMatch = false;
+		Login login = new Login();
+		login.setCustNo(TsfSession.getInfo().getCustNo());
+		Login loginCheckInfo = loginService.getLoginCheckInfo(login);
+
+		if (loginCheckInfo != null) {
+			isMatch = passwordEncoder.matchesSha256(customer.getPasswd(), loginCheckInfo.getPasswd());
+		}
+
+		return isMatch;
+	}
+
+	/**
+	 * 본인인증을 통한 이름, 휴대전화번호 수정
+	 * @param customer - 고객정보
+	 * @return GagaMap
+	 * @author jsshin
+	 * @since 2021. 03. 15
+	 */
+	@Transactional("shopTxnManager")
+	public GagaMap updateCustomerAuth(Customer customer) {
+		GagaMap result = new GagaMap();
+		customer.setRegNo(customer.getCustNo());
+		customer.setUpdNo(customer.getCustNo());
+		customer.setHypenCellPhone();
 		customer.encryptData();
-		return customerDao.getCustomerInfo(customer);
+		// 1. 이력쌓고
+		coreCustomerService.createCustomerHistory(customer);
+
+		// 2. 이름, 휴대전화 번호 저장
+		int updateCnt = customerDao.updateCustomerAuth(customer);
+
+		boolean iSsuccess = updateCnt > 0; // 변경 성공시 true
+
+		result.setBoolean("iSsuccess", iSsuccess);
+
+		return result;
 	}
 }

+ 115 - 31
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -1,16 +1,25 @@
 package com.style24.front.biz.service;
 
-import com.style24.core.support.env.TscConstants;
-import com.style24.front.biz.dao.TsfDisplayDao;
-import com.style24.front.support.env.TsfConstants;
-import com.style24.persistence.domain.*;
-import lombok.extern.slf4j.Slf4j;
+import java.util.Collection;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Collection;
+import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.front.biz.dao.TsfDisplayDao;
+import com.style24.front.support.env.TsfConstants;
+import com.style24.persistence.domain.BrandGroup;
+import com.style24.persistence.domain.Cate1;
+import com.style24.persistence.domain.Cate2;
+import com.style24.persistence.domain.Cate3;
+import com.style24.persistence.domain.Cate4;
+import com.style24.persistence.domain.Cate4Srch;
+import com.style24.persistence.domain.Contents;
+import com.style24.persistence.domain.GnbTab;
+
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * 전시 Service
@@ -25,6 +34,9 @@ public class TsfDisplayService {
 	@Autowired
 	private TsfDisplayDao displayDao;
 
+	@Autowired
+	private TscEnvsetService envsetService;
+
 	/**
 	 * GNB 브랜드그룹 목록
 	 * @param contents - 컨텐츠 정보
@@ -32,6 +44,7 @@ public class TsfDisplayService {
 	 * @author gagamel
 	 * @since 2021. 3. 11
 	 */
+	@Cacheable(value = "commonGnb", key = "'brandGroup'")
 	public Collection<BrandGroup> getGnbBrandGroupList(Contents contents) {
 		return displayDao.getGnbBrandGroupList(contents);
 	}
@@ -43,19 +56,9 @@ public class TsfDisplayService {
 	 * @author gagamel
 	 * @date 2021. 3. 11
 	 */
-	public Collection<GnbTab> getGnbTapList(GnbTab gnbTab) {
-		// GNB 탭 목록
-		Collection<GnbTab> tapList = displayDao.getGnbTabList(gnbTab);
-
-		if (tapList != null && !tapList.isEmpty()) {
-			for (GnbTab tab : tapList) {
-				if (tab.getContentsType().equals("C") || tab.getContentsType().equals("O")) { // 컨텐츠유형:카테고리, 아울렛
-					gnbTab.setCateList(this.getCategoryList(TsfConstants.CateGb.BYITEM.value(), tab.getCate1No()));
-				}
-			}
-		}
-
-		return tapList;
+	@Cacheable(value = "commonGnb", key = "'gnbTab-'.concat(#gnbTab.gtabGb)")
+	public Collection<GnbTab> getGnbTabList(GnbTab gnbTab) {
+		return displayDao.getGnbTabList(gnbTab);
 	}
 
 	/**
@@ -69,22 +72,105 @@ public class TsfDisplayService {
 		return displayDao.getContentsList(contents);
 	}
 
+//	/**
+//	 * FULL 카테고리1 정보
+//	 * @param cateGb - 카테고리구분
+//	 * @param cate1No - 카테고리1번호
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2021. 3. 11
+//	 */
+//	@Cacheable(value = "cate", key = "'cateList-'.concat(#cateGb).concat(#cate1No)")
+//	public Cate1 getFullCategory1(String cateGb, Integer cate1No) {
+//		Cate4Srch cate = new Cate4Srch();
+//		cate.setSiteCd(TscConstants.Site.STYLE24.value()); // 사이트코드
+//		cate.setCateGb(cateGb); // 카테고리구분
+//		cate.setCateType(TsfConstants.CateType.GOODS.value()); // 상품분류카테고리
+//		cate.setCate1No(cate1No);
+//		return this.getFullCategory1(cate);
+//	}
+//
+//	/**
+//	 * FULL 카테고리1 정보
+//	 * @param cate - 카테고리 정보
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2021. 3. 11
+//	 */
+//	public Cate1 getFullCategory1(Cate4Srch cate) {
+//		// 카테고리1 정보
+//		Cate1 cate1 = displayDao.getCategory1List(cate).get(0);
+//
+//		if (cate1 != null) {
+//			if (cate1.getLeafYn().equals("N")) {
+//				cate.setCate1No(cate1.getCate1No());
+//
+//				// 카테고리2 목록
+//				Collection<Cate2> cate2List = displayDao.getCategory2List(cate);
+//
+//				if (cate2List != null && !cate2List.isEmpty()) {
+//					for (Cate2 cate2 : cate2List) {
+//						if (cate2.getLeafYn().equals("N")) {
+//							cate.setCate2No(cate2.getCate2No());
+//
+//							// 카테고리3 목록
+//							Collection<Cate3> cate3List = displayDao.getCategory3List(cate);
+//
+//							if (cate3List != null && !cate3List.isEmpty()) {
+//								for (Cate3 cate3 : cate3List) {
+//									if (cate3.getLeafYn().equals("N")) {
+//										cate.setCate3No(cate3.getCate3No());
+//
+//										// 카테고리4 목록
+//										Collection<Cate4> cate4List = displayDao.getCategory4List(cate);
+//
+//										if (cate4List != null && !cate4List.isEmpty()) {
+//											for (Cate4 cate4 : cate4List) {
+//												if (cate4.getLeafYn().equals("N")) {
+//													cate.setCate4No(cate4.getCate4No());
+//
+//													// 카테고리5 목록 담기
+//													cate4.setCate5List(displayDao.getCategory5List(cate));
+//												}
+//											}
+//
+//											log.info("cate4List: {}", cate4List);
+//
+//											// 카테고리4 목록 담기
+//											cate3.setCate4List(cate4List);
+//										}
+//									}
+//								}
+//
+//								// 카테고리3 목록 담기
+//								cate2.setCate3List(cate3List);
+//							}
+//						}
+//					}
+//
+//					// 카테고리2 목록 담기
+//					cate1.setCate2List(cate2List);
+//				}
+//			}
+//		}
+//
+//		return cate1;
+//	}
+
 	/**
-	 * 카테고리 목록
+	 * 전체 카테고리 목록
 	 * @param cateGb - 카테고리구분
-	 * @param cate1No - 카테고리1번호
 	 * @return
 	 * @author gagamel
 	 * @since 2021. 3. 11
 	 */
-	@Cacheable(value = "cate", key = "'cateList-'.concat(#cateGb).concat(#cate1No)")
-	public Collection<Cate1> getCategoryList(String cateGb, Integer cate1No) {
+	@Cacheable(value = "cate", key = "'allCate-'.concat(#cateGb)")
+	public Collection<Cate1> getAllCategoryList(String cateGb) {
 		Cate4Srch cate = new Cate4Srch();
 		cate.setSiteCd(TscConstants.Site.STYLE24.value()); // 사이트코드
 		cate.setCateGb(cateGb); // 카테고리구분
 		cate.setCateType(TsfConstants.CateType.GOODS.value()); // 상품분류카테고리
-		cate.setCate1No(cate1No);
-
+		cate.setSoldoutGoodsDispYn(envsetService.getSoldoutGoodsDisplayYn(TscConstants.Site.STYLE24.value()));
 		return this.getAllCategoryList(cate);
 	}
 
@@ -96,8 +182,6 @@ public class TsfDisplayService {
 	 * @since 2021. 3. 11
 	 */
 	public Collection<Cate1> getAllCategoryList(Cate4Srch cate) {
-		Collection<Cate1> fullCateList = new ArrayList<>();
-
 		// 카테고리1 목록
 		Collection<Cate1> cate1List = displayDao.getCategory1List(cate);
 
@@ -135,6 +219,8 @@ public class TsfDisplayService {
 													}
 												}
 
+												log.info("cate4List: {}", cate4List);
+
 												// 카테고리4 목록 담기
 												cate3.setCate4List(cate4List);
 											}
@@ -151,12 +237,10 @@ public class TsfDisplayService {
 						cate1.setCate2List(cate2List);
 					}
 				}
-
-				fullCateList.add(cate1);
 			}
 		}
 
-		return fullCateList;
+		return cate1List;
 	}
 
 }

+ 73 - 13
src/main/java/com/style24/front/biz/service/TsfGiftcardService.java

@@ -1,11 +1,13 @@
 package com.style24.front.biz.service;
 
 import java.util.Collection;
+import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.front.biz.dao.TsfGiftcardDao;
+import com.style24.front.biz.thirdparty.Yes24Giftcard;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.GiftCard;
 
@@ -23,51 +25,109 @@ public class TsfGiftcardService {
 
 	@Autowired
 	private TsfGiftcardDao giftcardDao;
-	
+
+	@Autowired
+	private Yes24Giftcard yes24Gift;
+
 	/**
 	 * 상품권정보 조회
 	 *
 	 * @param GiftCard
 	 * @author sowon
 	 * @since 2021. 3. 12
-	 */	
+	 */
 	public GiftCard getGiftcardInfo(GiftCard giftcard) {
-		
+
 		// 고객번호 설정
 		int custNo = TsfSession.getInfo().getCustNo();
 		giftcard.setCustNo(custNo);
-		
-		return giftcardDao.getGiftcardInfo(giftcard);		
+
+		return giftcardDao.getGiftcardInfo(giftcard);
 	}
-	
+
 	/**
 	 * 상품권 사용 정보 조회
 	 *
 	 * @param GiftCard
 	 * @author sowon
 	 * @since 2021. 3. 12
-	 */	
-	public Collection<GiftCard> getGiftcardUseList(GiftCard giftcard){
+	 */
+	public Collection<GiftCard> getGiftcardUseList(GiftCard giftcard) {
 		// 고객번호 설정
 		int custNo = TsfSession.getInfo().getCustNo();
 		giftcard.setCustNo(custNo);
-		
+		giftcard.setMonthLength(giftcard.getMonth().length());
+
 		return giftcardDao.getGiftcardUseList(giftcard);
 	}
-	
+
 	/**
 	 * 상품권 보유 조회
 	 *
 	 * @param GiftCard
 	 * @author sowon
 	 * @since 2021. 3. 12
-	 */	
-	public Collection<GiftCard> getGiftcardOwnList(GiftCard giftcard){
+	 */
+	public Collection<GiftCard> getGiftcardOwnList(GiftCard giftcard) {
 		// 고객번호 설정
 		int custNo = TsfSession.getInfo().getCustNo();
 		giftcard.setCustNo(custNo);
-		
+
 		return giftcardDao.getGiftcardOwnList(giftcard);
 	}
 
+	/**
+	 * 상품권 저장
+	 * 
+	 * @param GiftCard
+	 * @author sowon
+	 * @throws Exception
+	 * @since 2021. 3. 15
+	 */
+	public void getGiftcardUseConfirm(GiftCard giftcard) throws Exception {
+		// 고객번호 설정
+		int custNo = TsfSession.getInfo().getCustNo();
+		String ip = TsfSession.getIpAddress();
+		giftcard.setCustNo(custNo);
+		giftcard.setIpAddr(ip);  // 아이피주소
+		
+		
+		String pubNo = giftcard.getGfcdNo();
+		String result =yes24Gift.soapDataTransfer(pubNo,ip,custNo);
+
+		if (result.equals("01")) {
+			giftcard.setResultVal(result);  //승인금액
+			giftcardDao.saveGiftcardApi(giftcard);
+			throw new IllegalArgumentException("존재하지 않는 상품권입니다.");
+		} else if (result.equals("02")) {
+			giftcard.setResultVal(result);  //승인금액
+			giftcardDao.saveGiftcardApi(giftcard);
+			throw new IllegalArgumentException("이미 등록된 상품권입니다.");
+		} else if (result.equals("03")) {
+			giftcard.setResultVal(result);  //승인금액
+			giftcardDao.saveGiftcardApi(giftcard);
+			throw new IllegalArgumentException("삭제된 상품권입니다.");
+		} else if (result.equals("04")) {
+			giftcard.setResultVal(result);  //승인금액
+			giftcardDao.saveGiftcardApi(giftcard);
+			throw new IllegalArgumentException("기간이 만료된 상품권입니다.");
+		} else if (result.equals("99")) {
+			giftcard.setResultVal(result);  //승인금액
+			giftcardDao.saveGiftcardApi(giftcard);
+			throw new IllegalArgumentException("시스템 오류입니다.");
+		} else {
+			String[] param = result.split("[|]");
+			//System.out.println(param[0]); -- 승인번호 00
+			giftcard.setResultVal(result);  //승인금액
+			giftcardDao.saveGiftcardApi(giftcard);
+			
+			// tb_cust_giftcard에 등록
+			giftcard.setChgGfcdAmt(Integer.parseInt(param[1])); // 승인금액
+			
+			giftcard.setUseStDate(param[2]);
+			giftcard.setUseExpDate(param[3]);
+		}
+
+	}
+
 }

+ 2 - 3
src/main/java/com/style24/front/biz/thirdparty/KaKaoLogin.java

@@ -5,9 +5,9 @@ import com.gagaframework.web.util.GagaFileUtil;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonObject;
-import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.Phonenumber;
+import com.style24.core.support.env.TscConstants;
 import com.style24.front.support.security.session.TsfSession;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -25,7 +25,6 @@ import org.springframework.web.client.RestTemplate;
 import javax.annotation.PostConstruct;
 import java.net.URI;
 import java.util.Locale;
-import java.util.UUID;
 
 
 /**
@@ -190,7 +189,7 @@ public class KaKaoLogin {
 
 			String sexGb = "";
 			if (StringUtils.isNotBlank(kakaoAccount.getString("gender"))) {
-				sexGb = kakaoAccount.getString("gender").equals("male") ? "M" : "F";
+				sexGb = kakaoAccount.getString("gender").equals("male") ? TscConstants.Gender.MALE.value() : TscConstants.Gender.FEMALE.value();
 			}
 
 			String birthSm = "";

+ 7 - 10
src/main/java/com/style24/front/biz/thirdparty/NaverLogin.java

@@ -1,14 +1,13 @@
 package com.style24.front.biz.thirdparty;
 
-import java.net.URI;
-
-import javax.annotation.PostConstruct;
-
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaFileUtil;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
+import com.style24.core.support.env.TscConstants;
 import com.style24.front.support.security.session.TsfSession;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -21,10 +20,8 @@ import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
-import lombok.extern.slf4j.Slf4j;
-
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.util.GagaFileUtil;
+import javax.annotation.PostConstruct;
+import java.net.URI;
 
 
 /**
@@ -162,7 +159,7 @@ public class NaverLogin {
 			String email = response.getString("email");
 			String cellphnno = response.getString("mobile");
 			String birthYmd = response.getString("birthyear") + response.getString("birthday").replaceAll("-","");
-			String sexGb = response.getString("gender");
+			String sexGb = response.getString("gender").equals("M")? TscConstants.Gender.MALE.value() : TscConstants.Gender.FEMALE.value();
 			String ci = this.requestReplace(response.getString("ci"),"encodeData");
 
 			resultMap.setString("snsId", snsId);

+ 5 - 4
src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java

@@ -5,6 +5,7 @@ import NiceID.Check.CPClient;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.util.GagaDateUtil;
 import com.gagaframework.web.util.GagaFileUtil;
+import com.style24.core.support.env.TscConstants;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Customer;
 import lombok.extern.slf4j.Slf4j;
@@ -194,9 +195,9 @@ public class NiceCertify {
 		String sforeignerYn = ""; // 외국인여부(외국인:Y)
 
 		if ("0".equals(sGender)) {
-			sGender = "F";
+			sGender = TscConstants.Gender.FEMALE.value();
 		} else if ("1".equals(sGender)) {
-			sGender = "M";
+			sGender = TscConstants.Gender.MALE.value();
 		}
 
 		if (StringUtils.isNotBlank(sBirthDate)) {
@@ -330,9 +331,9 @@ public class NiceCertify {
 			sAdult = "Y";//성인
 		}
 		if ("0".equals(sGenderCode)) {
-			sGender = "F";
+			sGender = TscConstants.Gender.FEMALE.value();
 		} else if ("1".equals(sGenderCode)) {
-			sGender = "M";
+			sGender = TscConstants.Gender.MALE.value();
 		}
 
 		if ("0".equals(sForeigner)) {

+ 104 - 0
src/main/java/com/style24/front/biz/thirdparty/Yes24Giftcard.java

@@ -0,0 +1,104 @@
+package com.style24.front.biz.thirdparty;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.StringReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.Node;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPConnection;
+import javax.xml.soap.SOAPConnectionFactory;
+
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathFactory;
+
+import org.springframework.stereotype.Component;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class Yes24Giftcard {
+
+	public String soapDataTransfer(String pubNo, String ip, Integer userId) throws Exception {
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		Document doc = null;
+
+		// request SOAP message DOMSource create
+		String message = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+				+ "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+				+ "<soap:Body>" + "<Approval xmlns=\"http://tempuri.org/\">" + "<ticPubNo>" + pubNo + "</ticPubNo>"
+				+ "<ipAddress>" + ip + "</ipAddress>" + "<iStyle24UserID>" + userId + "</iStyle24UserID>"
+				+ "</Approval>" + "</soap:Body>" + "</soap:Envelope>";
+
+		OutputStreamWriter wr = null;
+		BufferedReader in = null;
+
+		String strURL = "http://api.yes24.com/Yes24GiftTicketAPI/Yes24GiftTicketService.asmx";
+
+		URL url = new URL(strURL); // 보낼 주소
+		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+		conn.setDoOutput(true);
+		conn.setRequestMethod("POST");
+		conn.addRequestProperty("Content-Type", "text/xml");
+		wr = new OutputStreamWriter(conn.getOutputStream());
+		wr.write(message);
+		wr.flush();
+		int code = conn.getResponseCode();
+
+		String inputLine = null;
+		StringBuffer buffer = new StringBuffer();
+		in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+		while ((inputLine = in.readLine()) != null) {
+			buffer.append(inputLine);
+		}
+		System.out.println(buffer.toString()); // 결과 값
+
+		// xml 파싱하기
+		InputSource is = new InputSource(new StringReader(buffer.toString()));
+
+		Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
+
+		NodeList nodeList = null;
+		ArrayList<Map<String, String>> xmlList = new ArrayList<Map<String, String>>();
+		String getNodeName = "";
+		String childnodevalue = "";
+		if (document.getFirstChild().getChildNodes().getLength() > 0) {
+			getNodeName = document.getFirstChild().getFirstChild().getNodeName();
+
+			nodeList = document.getElementsByTagName(getNodeName);
+			
+			for (int i = 0; i < nodeList.getLength(); i++) {
+				NodeList childList = nodeList.item(i).getChildNodes();
+
+				for (int j = 0; j < childList.getLength(); j++) {
+					String childnodename = childList.item(j).getNodeName();
+					childnodevalue = childList.item(j).getTextContent();
+				}
+			}
+		} 
+
+		return childnodevalue;
+	}
+
+}

+ 17 - 10
src/main/java/com/style24/front/biz/web/TsfCustomerController.java

@@ -3,28 +3,24 @@ package com.style24.front.biz.web;
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.service.TscClauseService;
 import com.style24.core.support.env.TscConstants;
+import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.core.support.session.TscSession;
+import com.style24.front.biz.service.TsfCustomerService;
 import com.style24.front.biz.service.TsfKakaoService;
 import com.style24.front.biz.thirdparty.NiceCertify;
+import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Customer;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.ibatis.mapping.ResultMap;
 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.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.front.biz.service.TsfCustomerService;
-import com.style24.front.support.controller.TsfBaseController;
-
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.support.SessionStatus;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
@@ -568,6 +564,8 @@ public class TsfCustomerController extends TsfBaseController {
 		custInfo = customerService.getCustomerFindByCi(customer.getCi());	// CI 중복체크
 		if (custInfo != null) {
 			result.setString("maskingCustId", custInfo.getMaskingCustId());
+			result.setString("custStat", custInfo.getCustStat());
+			result.setString("cellPhnno", customer.getCellPhnno());
 			result.setBoolean("isFind", true);
 			return result;
 		}
@@ -575,6 +573,8 @@ public class TsfCustomerController extends TsfBaseController {
 		custInfo = customerService.getCustomerFindByCellPhnno(customer.getCellPhnno());	// 휴대전화 중복체크
 		if (custInfo != null) {
 			result.setString("maskingCustId", custInfo.getMaskingCustId());
+			result.setString("custStat", custInfo.getCustStat());
+			result.setString("cellPhnno", customer.getCellPhnno());
 			result.setBoolean("isFind", true);
 			return result;
 		}
@@ -610,8 +610,7 @@ public class TsfCustomerController extends TsfBaseController {
 		GagaMap authInfo = niceCertify.getCertifyCellPhoneResultInfo(customer);
 
 		// 2.인증통해 받은 데이터 매핑
-		String gender = "G007_"+authInfo.getString("sGender");
-		customer.setSexGb(gender);
+		customer.setSexGb(authInfo.getString("sGender"));
 		customer.setCustNm(authInfo.getString("sName"));
 		customer.setBirthYmd(authInfo.getString("sBirthDate"));
 		customer.setForeignerYn(authInfo.getString("sforeignerYn"));
@@ -790,6 +789,14 @@ public class TsfCustomerController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 비밀번호 변경 일시 변경
+	 *
+	 * @return GagaMap - 결과
+	 * @param customer - 고객정보
+	 * @author jsshin
+	 * @since 2021. 03. 11
+	 */
 	@PostMapping("/password/date/update")
 	@ResponseBody
 	public GagaMap updatePasswordDate(@RequestBody Customer customer) {

+ 32 - 26
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -1,12 +1,8 @@
 package com.style24.front.biz.web;
 
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.front.biz.service.TsfDisplayService;
-import com.style24.front.support.controller.TsfBaseController;
-import com.style24.persistence.domain.BrandGroup;
-import com.style24.persistence.domain.Contents;
-import com.style24.persistence.domain.GnbTab;
-import lombok.extern.slf4j.Slf4j;
+import java.util.Collection;
+import java.util.HashMap;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
@@ -16,8 +12,17 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
-import java.util.Collection;
-import java.util.HashMap;
+import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.front.biz.service.TsfDisplayService;
+import com.style24.front.support.controller.TsfBaseController;
+import com.style24.front.support.env.TsfConstants;
+import com.style24.persistence.domain.BrandGroup;
+import com.style24.persistence.domain.Cate1;
+import com.style24.persistence.domain.Contents;
+import com.style24.persistence.domain.GnbTab;
+
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * 전시 Controller
@@ -36,6 +41,9 @@ public class TsfDisplayController extends TsfBaseController {
 	@Autowired
 	private TsfDisplayService displayService;
 
+	@Autowired
+	private TscEnvsetService envsetService;
+
 	/**
 	 * 몰 메인
 	 * @return
@@ -66,6 +74,18 @@ public class TsfDisplayController extends TsfBaseController {
 		return displayService.getGnbBrandGroupList(contents);
 	}
 
+	/**
+	 * 전체 카테고리 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 15
+	 */
+	@GetMapping("/all/cate/list")
+	@ResponseBody
+	public Collection<Cate1> getAllCategoryList() {
+		return displayService.getAllCategoryList(TsfConstants.CateGb.BYITEM.value());
+	}
+
 	/**
 	 * GNB 탭 목록
 	 * @param gnbTab - GNB탭 정보
@@ -74,25 +94,11 @@ public class TsfDisplayController extends TsfBaseController {
 	 * @author gagamel
 	 * @since 2020. 3. 11
 	 */
-	@GetMapping("/gnb/tap/list")
+	@GetMapping("/gnb/tab/list")
 	@ResponseBody
-	public Collection<GnbTab> getGnbTapList(GnbTab gnbTab) {
+	public Collection<GnbTab> getGnbTabList(GnbTab gnbTab) {
 		gnbTab.setGtabGb("C"); // 공통GNB
-		return displayService.getGnbTapList(gnbTab);
+		return displayService.getGnbTabList(gnbTab);
 	}
 
-//	/**
-//	 * 전체 카테고리 목록
-//	 * @return
-//	 * @throws Exception
-//	 * @author gagamel
-//	 * @since 2020. 2. 7
-//	 */
-//	@GetMapping("/all/cate/list")
-//	@ResponseBody
-//	public Collection<Cate4Srch> getAllCategoryList() {
-//		String soldoutGoodsDisplayYn = policyService.getSoldoutGoodsDisplayYn(WfoConstants.SITE_CD);
-//		return displayService.getAllCategoryList(WfoConstants.CATE_GB.BYITEM.value(), soldoutGoodsDisplayYn);
-//	}
-
 }

+ 146 - 15
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1,20 +1,7 @@
 package com.style24.front.biz.web;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-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.GagaResponse;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.biz.service.TscKakaoPayService;
@@ -32,6 +19,7 @@ import com.style24.front.biz.service.TsfPointService;
 import com.style24.front.biz.service.TsfRendererService;
 import com.style24.front.biz.service.TsfReviewService;
 import com.style24.front.biz.service.TsfWishlistService;
+import com.style24.front.biz.thirdparty.NiceCertify;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.TscPageRequest;
@@ -41,8 +29,22 @@ import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Point;
 import com.style24.persistence.domain.WishList;
-
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+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.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 마이페이지 Controller
@@ -100,6 +102,9 @@ public class TsfMypageController extends TsfBaseController {
 	@Autowired
 	private TscKakaoPayService kakaoPayService;
 
+	@Autowired
+	private NiceCertify niceCertify;
+
 	/**
 	 * 마이페이지 메인 화면
 	 *
@@ -686,4 +691,130 @@ public class TsfMypageController extends TsfBaseController {
 		result.set("giftcardOwnList",giftcardService.getGiftcardOwnList(giftcard));
 		return result;
 	}
+
+	/**
+	 * 마이페이지 상품권 저장
+	 *
+	 * @return
+	 * @author sowon
+	 * @throws Exception
+	 * @since 2021. 03. 15
+	 */
+	@PostMapping("/gift/use/confirm")
+	@ResponseBody
+	public GagaResponse getGiftcardUseConfirm(@RequestBody GiftCard giftcard) throws Exception {
+
+
+		giftcardService.getGiftcardUseConfirm(giftcard);
+
+		return super.ok(message.getMessage("SUCC_0001"));
+
+
+	}
+
+
+
+
+	/*신주승 시작*/
+
+	/**
+	 * 마이페이지 - 회원정보확인 화면
+	 *
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2021. 03. 15
+	*/
+	@GetMapping("/customer/confirm/form")
+	public ModelAndView getCustomerConfirmForm() {
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("custId", TsfSession.getInfo().getCustId());
+		mav.setViewName(super.getDeviceViewName("mypage/MypageCustConfirmForm"));
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 - 회원정보확인처리
+	 *
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2021. 03. 15
+	 */
+	@PostMapping("/customer/password/confirm")
+	@ResponseBody
+	public GagaMap customerPasswordConfirm(@RequestBody Customer customer) {
+		GagaMap result = new GagaMap();
+		boolean isMatch = customerService.customerPasswordConfirm(customer);
+		result.setBoolean("isMatch", isMatch);
+		return result;
+	}
+
+
+	/**
+	 * 마이페이지 - 회원정보수정 화면
+	 *
+	 * @param confirmYn - 정보확인여부
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2021. 03. 15
+	 */
+	@GetMapping("/customer/modify/form")
+	public ModelAndView getCustomerModifyForm(@RequestParam(required = false)String confirmYn) {
+		ModelAndView mav = new ModelAndView();
+		String referer = StringUtils.defaultIfBlank(TsfSession.getHttpServletRequest().getHeader("referer"),"");
+		boolean redirect = false;
+
+		if(StringUtils.isBlank(referer)) {
+			redirect = true;
+		} else if(!referer.contains("/mypage/customer/confirm/form")) {
+			redirect = true;
+		} else if(!"Y".equals(confirmYn)) {
+			redirect = true;
+		}
+
+		if (redirect) {
+			mav.setViewName("redirect:/mypage/customer/confirm/form");
+			return mav;
+		}
+
+		mav.addObject("bankList", rendererService.getCommonCodeList("G050", "Y"));
+		mav.addObject("genderGbList", rendererService.getCommonCodeList("G007", "Y"));
+
+		mav.setViewName(super.getDeviceViewName("/mypage/MypageCustModifyForm"));
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 - 회원정보조회
+	 *
+	 * @return Customer - 고객정보
+	 * @author jsshin
+	 * @since 2021. 03. 15
+	 */
+	@PostMapping("/customer/info")
+	@ResponseBody
+	public Customer getCustomerInfo() {
+		Integer custNo = TsfSession.getInfo().getCustNo();
+		return customerService.getCustomerFindByCustNo(custNo);
+	}
+
+	/**
+	 * 마이페이지 - 개명본인인증, 휴대폰 변경
+	 *
+	 * @return GagaMap - 결과
+	 * @param customer - 본인인증 값
+	 * @author jsshin
+	 * @since 2021. 03. 15
+	 */
+	@PostMapping("/customer/auth/update")
+	@ResponseBody
+	public GagaMap updateCustomerAuth(@RequestBody Customer customer) {
+		GagaMap authInfo = niceCertify.getCertifyCellPhoneResultInfo(customer);
+		customer.setSexGb(authInfo.getString("sGender"));
+		customer.setCustNo(TsfSession.getInfo().getCustNo());
+		customer.setCellPhnno(authInfo.getString("sMobileNo"));
+		customer.setCustNm(authInfo.getString("sName"));
+		customer.setBirthYmd(authInfo.getString("sBirthDate"));
+		return customerService.updateCustomerAuth(customer);
+	}
+	/*신주승 끝*/
 }

+ 1 - 1
src/main/java/com/style24/front/support/interceptor/TsfAflinkInterceptor.java

@@ -57,7 +57,7 @@ public class TsfAflinkInterceptor extends HandlerInterceptorAdapter {
 		InflowHst inflow = new InflowHst();
 		inflow.setAfLinkCd(afLinkCd);
 		inflow.setPageUrl(request.getRequestURL() + queryString);
-		commonService.createInflowHst(inflow);
+		commonService.createInflowHistory(inflow);
 
 		return super.preHandle(request, response, handler);
 	}

+ 1 - 4
src/main/java/com/style24/persistence/domain/GnbTab.java

@@ -1,9 +1,8 @@
 package com.style24.persistence.domain;
 
 import com.style24.persistence.TscBaseDomain;
-import lombok.Data;
 
-import java.util.Collection;
+import lombok.Data;
 
 /**
  * 컨텐츠 Domain
@@ -30,6 +29,4 @@ public class GnbTab extends TscBaseDomain {
 	private String viewDt;			// 미리보기일시
 	private String preview;			// 미리보기여부
 
-	private Collection<Cate1> cateList;	// 카테고리목록
-
 }

+ 3 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfCommon.xml

@@ -14,9 +14,9 @@
 		WHERE  NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
 	</sql>
 	
-	<!-- 제휴링크 이력 추가 -->
-	<insert id="createInflowHst" parameterType="InflowHst">
-		/* TsfCommon.createInflowHst */
+	<!-- 웹제휴채널이력 생성 -->
+	<insert id="createInflowHistory" parameterType="InflowHst">
+		/* TsfCommon.createInflowHistory */
 		INSERT INTO TB_INFLOW_HST (
 		       INFLOW_DT
 		     , SITE_CD

+ 16 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml

@@ -197,6 +197,7 @@
 		     , LOGIN_LDT
 		     , CI
 		     , AUTH_DT
+		     , SNS_TYPE
 		     , MANAGED_RSN
 		     , MANAGED_DTL_RSN
 		     , MANAGED_DT
@@ -249,6 +250,7 @@
 		            NOW()
 		       ELSE NULL
 		       END                                 AS AUTH_DT
+		     , #{snsType}                          AS SNS_TYPE
 		     , #{managedRsn}                       AS MANAGED_RSN
 		     , #{managedDtlRsn}                    AS MANAGED_DTL_RSN
 		     , #{managedDt}                        AS MANAGED_DT
@@ -522,6 +524,7 @@
 
 	<!--비밀번호 변경 날짜 업데이트-->
 	<update id="updatePasswordDate" parameterType="Customer">
+		/* TsfCustomer.updatePasswordDate */
 		UPDATE TB_CUSTOMER
 		SET    PASSWD_CHG_DT = DATE_ADD(NOW(), INTERVAL -#{pwdChangeDay} DAY )
 		     , UPD_NO = #{updNo}
@@ -529,4 +532,17 @@
 		WHERE  CUST_NO = #{custNo}
 	</update>
 
+	<!--이름 휴대전화 번호 변경-->
+	<update id="updateCustomerAuth" parameterType="Customer">
+		/* TsfCustomer.updateCustomerAuth */
+		UPDATE TB_CUSTOMER
+		SET    CUST_NM = #{encodedCustNm}
+		     , CELL_PHNNO = #{encodedCellPhnno}
+		     , SEX_GB = #{encodedSexGb}
+		     , BIRTH_YMD = #{encodedBirthYmd}
+		     , UPD_DT = NOW()
+		     , UPD_NO = #{updNo}
+		WHERE  CUST_NO = #{custNo}
+	</update>
+
 </mapper>

+ 35 - 10
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -251,9 +251,14 @@
 		AND    USE_YN = 'Y'
 		AND    EXISTS (SELECT 1
 		               FROM   TB_CATE_STOCK
-		               WHERE  CATE_GB = A.CATE_GB
-		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               WHERE  SITE_CD = A.SITE_CD
 		               AND    CATE_NO = A.CATE1_NO
+		               <if test='brandGroupNo != null'>
+		               AND    BRAND_GROUP_NO = #{brandGroupNo}
+		               </if>
+		               <if test='formalGb != null'>
+		               AND    FORMAL_GB = #{formalGb}
+		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
 		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
 		               </if>
@@ -279,9 +284,14 @@
 		AND    USE_YN = 'Y'
 		AND    EXISTS (SELECT 1
 		               FROM   TB_CATE_STOCK
-		               WHERE  CATE_GB = A.CATE_GB
-		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               WHERE  SITE_CD = A.SITE_CD
 		               AND    CATE_NO = A.CATE2_NO
+		               <if test='brandGroupNo != null'>
+		               AND    BRAND_GROUP_NO = #{brandGroupNo}
+		               </if>
+		               <if test='formalGb != null'>
+		               AND    FORMAL_GB = #{formalGb}
+		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
 		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
 		               </if>
@@ -309,9 +319,14 @@
 		AND    USE_YN = 'Y'
 		AND    EXISTS (SELECT 1
 		               FROM   TB_CATE_STOCK
-		               WHERE  CATE_GB = A.CATE_GB
-		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               WHERE  SITE_CD = A.SITE_CD
 		               AND    CATE_NO = A.CATE3_NO
+		               <if test='brandGroupNo != null'>
+		               AND    BRAND_GROUP_NO = #{brandGroupNo}
+		               </if>
+		               <if test='formalGb != null'>
+		               AND    FORMAL_GB = #{formalGb}
+		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
 		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
 		               </if>
@@ -341,9 +356,14 @@
 		AND    USE_YN = 'Y'
 		AND    EXISTS (SELECT 1
 		               FROM   TB_CATE_STOCK
-		               WHERE  CATE_GB = A.CATE_GB
-		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               WHERE  SITE_CD = A.SITE_CD
 		               AND    CATE_NO = A.CATE4_NO
+		               <if test='brandGroupNo != null'>
+		               AND    BRAND_GROUP_NO = #{brandGroupNo}
+		               </if>
+		               <if test='formalGb != null'>
+		               AND    FORMAL_GB = #{formalGb}
+		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
 		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
 		               </if>
@@ -375,9 +395,14 @@
 		AND    USE_YN = 'Y'
 		AND    EXISTS (SELECT 1
 		               FROM   TB_CATE_STOCK
-		               WHERE  CATE_GB = A.CATE_GB
-		               AND    BRAND_GROUP_NO = CASE WHEN A.CATE_GB = 'G032_102' THEN #{brandGroupNo} ELSE 0 END
+		               WHERE  SITE_CD = A.SITE_CD
 		               AND    CATE_NO = A.CATE5_NO
+		               <if test='brandGroupNo != null'>
+		               AND    BRAND_GROUP_NO = #{brandGroupNo}
+		               </if>
+		               <if test='formalGb != null'>
+		               AND    FORMAL_GB = #{formalGb}
+		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
 		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
 		               </if>

+ 28 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml

@@ -51,6 +51,14 @@
 									LEFT JOIN TB_GOODS D ON B.GOODS_CD = D.GOODS_CD 
 		WHERE 1=1
 		 AND A.CUST_NO = #{custNo}
+		 <choose>
+		 	<when test="monthLength > 1">
+		 		AND DATE_FORMAT(A.REG_DT,'%Y%m') = #{searchDt}
+		 	</when>
+		 	<otherwise>
+		 		 AND DATE_FORMAT(A.REG_DT,'%Y%c') = #{searchDt}
+		 	</otherwise>
+		 </choose> 
 		ORDER BY A.REG_DT DESC
 	</select>
 	
@@ -74,6 +82,26 @@
 		  AND CUST_NO = #{custNo}
 	</select>
 	
+	<insert id="saveGiftcardApi" parameterType="GiftCard">
+		INSERT INTO TB_GIFTCARD_API_HST
+		(
+		   GFCD_NO
+		 , IP_ADDR
+		 , CUST_NO
+		 , RESULT_VAL
+		 , REG_NO
+		 , REG_DT
+		)
+	VALUES(
+			#{gfcdNo}
+	      , #{ipAddr}
+	      , #{custNo}
+	      , #{resultVal}
+	      , 0
+	      , CURRENT_TIMESTAMP
+	     )
+	</insert>
+	
 	
 	<!-- 페이징을 위한 select절 상단 -->
 	<sql id="selectForPagingHeader">

+ 96 - 98
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -168,113 +168,116 @@
 
 	<script th:inline="javascript">
 		/*<![CDATA[*/
+		// 전체카테고리 조회
+		let allCate;
+		let fnGetAllCategory = function() {
+			$.getJSON('/display/all/cate/list'
+				, function(result, status) {
+					if (status == 'success') {
+						allCate = result;
+						
+						// GNB탭 > 브랜드 생성
+						fnCreateGnbBrandGroup();
+					}
+			});
+		}
+		
 		// GNB탭 > 카테고리
-		let fnGetGnbCategory = function(cateList) {
+		let fnGetGnbCategory = function(cate1) {
 			let tag = '';
-
-			if (cateList.length > 0) {
-				$.each(cateList, function(idx1, cate1) {
-					tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
-					tag += '	<a href="javascript:void(0);" onclick="cfnGoToCategory(' + cate1.cate1Nm + ');">' + cate1.cate1Nm + '</a>\n';
-					tag += '	<div class="depth_menu category">\n';
-					tag += '		<div class="head_category">\n';
-					tag += '			<div class="tit">\n';
-					tag += '				<p>' + cate1.cate1Nm + '</p>\n';
-					tag += '				<a href="javascript:void(0);" onclick="cfnGoToCategory(' + cate1.cate1No + ');" class="more">전체보기</a>\n';
+			if (cate1 != null) {
+				tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
+				tag += '	<a href="javascript:void(0);" onclick="cfnGoToCategory(' + cate1.cate1Nm + ');">' + cate1.cate1Nm + '</a>\n';
+				tag += '	<div class="depth_menu category">\n';
+				tag += '		<div class="head_category">\n';
+				tag += '			<div class="tit">\n';
+				tag += '				<p>' + cate1.cate1Nm + '</p>\n';
+				tag += '				<a href="javascript:void(0);" onclick="cfnGoToCategory(' + cate1.cate1No + ');" class="more">전체보기</a>\n';
+				tag += '			</div>\n';
+				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
+					tag += '			<div class="menu">\n';
+					tag += '				<ul class="maintabs">\n';
+					$.each(cate1.cate2List, function(idx2, cate2) {
+						tag += '					<li>\n';
+						tag += '						<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate2.cateGb + '\',\'' + cate2.cate1No + '\',\'' + cate2.cate2No + '\');">' + cate2.cate2Nm + '</a>\n';
+						if (cate2.leafYn == 'N' && 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="cfnGoToCategoryMain(\'' + cate3.cateGb + '\',\'' + cate3.cate1No + '\',\'' + cate3.cate2No + '\',\'' + cate3.cate3No + '\');">' + cate3.cate3Nm + '</a>\n';
+								if (cate3.leafYn == 'N' && cate3.cate4List.length > 0) {
+									tag += '								<ul class="box_depth3">\n';
+									$.each(cate3.cate4List, function(idx4, cate4) {
+										tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + 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 += '			</div>\n';
+					tag += '		</div>\n';
+					tag += '	</div>\n';
+				}
 
-					if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
-						tag += '			<div class="menu">\n';
-						tag += '				<ul class="maintabs">\n';
-
-						$.each(cate1.cate2List, function(idx2, cate2) {
-							tag += '					<li>\n';
-							tag += '						<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate2.cateGb + '\',\'' + cate2.cate1No + '\',\'' + cate2.cate2No + '\');">' + cate2.cate2Nm + '</a>\n';
-
-							if (cate2.leafYn == 'N' && 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="cfnGoToCategoryMain(\'' + cate3.cateGb + '\',\'' + cate3.cate1No + '\',\'' + cate3.cate2No + '\',\'' + cate3.cate3No + '\');">' + cate3.cate3Nm + '</a>\n';
-
-									if (cate3.leafYn == 'N' && cate3.cate4List.length > 0) {
-										tag += '								<ul class="box_depth3">\n';
-
-										$.each(cate3.cate4List, function(idx4, cate4) {
-											tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + 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 += '			</div>\n';
-						tag += '		</div>\n';
-						tag += '	</div>\n';
-					}
-
-					// if (cate1.bannerList.length > 0) {
-					// 	tag += '	<div class="head_banner">\n';
-					// 	tag += '		<div class="tit">\n';
-					// 	tag += '			<p>가을의 신상 만나기</p>\n';
-					// 	tag += '		</div>\n';
-					// 	tag += '		<div class="list">\n';
-					// 	tag += '			<ul class="clear event_con">\n';
-					// 	tag += '				<li>\n';
-					// 	tag += '					<a href="">\n';
-					// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션"></div>\n';
-					// 	tag += '						<div class="txt">\n';
-					// 	tag += '							<p class="tit">2020 FALL COLLECTION 가을에는 이 컬러 2020 FALL COLLECTION 가을에는 이 컬러</p>\n';
-					// 	tag += '						</div>\n';
-					// 	tag += '					</a>\n';
-					// 	tag += '				</li>\n';
-					// 	tag += '				<li>\n';
-					// 	tag += '					<a href="">\n';
-					// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img02.jpg" alt="단 48시간, 퓨어캐시미어 최대 80%세일 PURE CASHMERE 48H POP-UP"></div>\n';
-					// 	tag += '						<div class="txt">\n';
-					// 	tag += '							<p class="tit">FALL NEW ARRIVAL</p>\n';
-					// 	tag += '						</div>\n';
-					// 	tag += '					</a>\n';
-					// 	tag += '				</li>\n';
-					// 	tag += '			</ul>\n';
-					// 	tag += '		</div>\n';
-					// 	tag += '	</div>\n';
-					// }
-
-					tag += '</li>\n';
-				});
+				// if (cate1.bannerList.length > 0) {
+				// 	tag += '	<div class="head_banner">\n';
+				// 	tag += '		<div class="tit">\n';
+				// 	tag += '			<p>가을의 신상 만나기</p>\n';
+				// 	tag += '		</div>\n';
+				// 	tag += '		<div class="list">\n';
+				// 	tag += '			<ul class="clear event_con">\n';
+				// 	tag += '				<li>\n';
+				// 	tag += '					<a href="">\n';
+				// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션"></div>\n';
+				// 	tag += '						<div class="txt">\n';
+				// 	tag += '							<p class="tit">2020 FALL COLLECTION 가을에는 이 컬러 2020 FALL COLLECTION 가을에는 이 컬러</p>\n';
+				// 	tag += '						</div>\n';
+				// 	tag += '					</a>\n';
+				// 	tag += '				</li>\n';
+				// 	tag += '				<li>\n';
+				// 	tag += '					<a href="">\n';
+				// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img02.jpg" alt="단 48시간, 퓨어캐시미어 최대 80%세일 PURE CASHMERE 48H POP-UP"></div>\n';
+				// 	tag += '						<div class="txt">\n';
+				// 	tag += '							<p class="tit">FALL NEW ARRIVAL</p>\n';
+				// 	tag += '						</div>\n';
+				// 	tag += '					</a>\n';
+				// 	tag += '				</li>\n';
+				// 	tag += '			</ul>\n';
+				// 	tag += '		</div>\n';
+				// 	tag += '	</div>\n';
+				// }
+				tag += '</li>\n';
 			}
-
 			return tag;
 		}
 
 		// GNB탭 생성
-		let fnCreateGnbTap = function() {
-			$.getJSON('/display/gnb/tap/list'
+		let fnCreateGnbTab = function() {
+			$.getJSON('/display/gnb/tab/list'
 				, function(result, status) {
 					if (status == 'success') {
 						if (result.length > 0) {
 							$('#divGnbTab').html('');
 							$('#ulGnbTab').html('');
-
 							$.each(result, function(idx, item) {
+								console.log(item);
+								
 								if (item.contentsType == 'C' || item.contentsType == 'O') { // 컨텐츠유형:카테고리, 아울렛
-									let gnbCate = fnGetGnbCategory(item.cateList);
-									$('#divGnbTab').append(gnbCate);
-									$('#ulGnbTab').append(gnbCate);
+									$.each(allCate, function(allCateIdx, allCateItem) {
+										if (item.cate1No == allCateItem.cate1No) {
+											let gnbCate = fnGetGnbCategory(allCateItem);
+											$('#divGnbTab').append(gnbCate);
+											$('#ulGnbTab').append(gnbCate);
+										}
+									});
 								} else if (item.contentsType == 'L') { // 컨텐츠유형:링크
-									$('#divGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.title + '</a></li>');
-									$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.title + '</a></li>');
+									$('#divGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
+									$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
 								}
 							});
 						}
@@ -291,7 +294,6 @@
 							$('#divGnbBrandGrp').html('');
 							let tag = '';
 							let prevTitle = '';
-
 							$.each(result, function (idx, item) {
 								if (prevTitle != item.title) {
 									if (idx > 0) {
@@ -299,7 +301,6 @@
 										tag += '	</div>\n';
 										tag += '</div>\n';
 									}
-
 									tag += '<div class="row">\n';
 									tag += '	<p>' + item.title + '</p>\n';
 									tag += '	<div class="brand_list swiper-container">\n';
@@ -312,18 +313,14 @@
 									tag += '				</a>\n';
 									tag += '			</li>\n';
 								}
-
 								prevTitle = item.title;
 							});
-
 							tag += '		</ul>\n';
 							tag += '	</div>\n';
 							tag += '</div>\n';
-
 							$('#divGnbBrandGrp').html(tag);
 						}
-
-						fnCreateGnbTap();
+						fnCreateGnbTab();
 					}
 			});
 		}
@@ -393,7 +390,8 @@
 				},
 			});
 
-			fnCreateGnbBrandGroup();
+			// 전체 카테고리 조회
+			fnGetAllCategory();
 		});
 		/*]]>*/
 	</script>

+ 9 - 1
src/main/webapp/WEB-INF/views/web/customer/JoinFormWeb.html

@@ -396,9 +396,17 @@
 		$cellPhnno.val(result.cellPhnno);
 
 		if (result.isFind) { // 가입된 고객 정보가 있으면
-			$dupPhnno.text(result.maskingCustId+'로 가입된 이력이 있습니다.');
+			let msg = result.maskingCustId+"로 가입된 이력이 있습니다.";
+			if (result.custStat === 'G104_30') {
+				msg += "<br/> 탈퇴한 회원입니다. 탈퇴 후 60일 동안 재가입이 불가능합니다.";
+			}
+			if (result.custStat === 'G104_20') {
+				msg += "<br/> 휴면회원입니다. 해당 아이디로 휴면해제하시면 되겠습니다.";
+			}
+			$dupPhnno.html(msg);
 			$dupPhnno.show();
 			$dupPhnnoDiv.show();
+			$btnCellPhoneCertify.hide();
 			$btnCellPhoneCertify.text('휴대폰 인증');
 			$btnCellPhoneCertify.attr('disabled', false);
 			authCheck = false;

+ 132 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCustConfirmFormWeb.html

@@ -0,0 +1,132 @@
+<!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  : MypageCustConfirmFormWeb.html
+ * @desc    : 마이페이지 > 회원정보 확인 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.15   jsshin      최초 작성
+ *******************************************************************************
+ -->
+
+<body>
+<th:block layout:fragment="content">
+	<div class="my_cont">
+		<div class="sec_head">
+			<h3>내정보 관리</h3>
+			<p class="sec_desc">
+				정보를 안전하게 보호하기 위하여 비밀번호를 다시 확인 합니다.
+			</p>
+		</div>
+		<div class="sec_body mypage_body">
+			<form id="confirmForm" class="form_wrap" role="form" method="post">
+				<div class="order_list">
+					<section class="order_row">
+						<div class="order_tit">
+							<h3 class="subH3">회원정보 확인</h3>
+						</div>
+						<div class="tbl type1 info_tbl">
+							<table>
+								<colgroup>
+									<col width="200">
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th>아이디</th>
+										<td>
+											<input type="text" id="custId" name="custId" class="form_control" th:value="${custId}" readonly="readonly"/>
+										</td>
+									</tr>
+									<tr>
+										<th>비밀번호</th>
+										<td>
+											<input type="password" id="passwd" name="passwd" class="form_control" placeholder="비밀번호를 입력해주세요."/>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+					</section>
+					<div class="btn_wrap half mt60">
+						<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MAIN);">
+							<span>취소</span>
+						</button>
+						<button type="button" id="btnConfirm" class="btn btn_dark submit_btn">
+							<span>확인</span>
+						</button>
+					</div>
+				</div>
+			</form>
+		</div>
+	</div>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(10);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('내정보 관리');
+
+	});
+
+	//엔터키 확인
+	$('#confirmForm input[name=passwd]').keypress(function (event) {
+		if (event.which === 13) {
+			event.preventDefault();
+			fnValidConfirm();
+		}
+	});
+
+	// 확인버튼
+	$('#btnConfirm').on('click', function () {
+		fnValidConfirm();
+	});
+
+	// 확인
+	var fnValidConfirm = function () {
+		var $passwd = $('#confirmForm input[name=passwd]');
+		if (gagajf.isNull($passwd.val())) {
+			$passwd.blur();
+			mcxDialog.alertC("비밀번호를 입력해 주세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function () {
+					$passwd.focus();
+				}
+			});
+			return;
+		}
+		gagajf.ajaxFormSubmit("/mypage/customer/password/confirm", '#confirmForm', fnConfirmCallback);
+	};
+
+	var fnConfirmCallback = function (result) {
+		let confirmYn = 'Y';
+		let $passwd = $('#confirmForm input[name=passwd]');
+		if (result.isMatch) {
+			confirmYn = 'Y';
+			cfnGoToPage(_PAGE_MYPAGE_CUSTOMER_MODIFY+'?confirmYn='+ confirmYn);
+		} else {
+			mcxDialog.alert('비밀번호가 일치하지 않습니다.');
+			$passwd.val('');
+			$passwd.focus();
+			return;
+		}
+	};
+	/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>
+
+

+ 290 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCustModifyFormWeb.html

@@ -0,0 +1,290 @@
+<!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  : MypageCustModifyForm.html
+ * @desc    : 마이페이지 > 회원정보 수정 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.15   jsshin      최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+	<div class="my_cont">
+		<div class="sec_head">
+			<h3>회원정보 수정</h3>
+		</div>
+		<div class="sec_body mypage_body">
+			<form id="custModiFyForm" class="form_wrap" role="form" method="post">
+				<div class="order_list">
+					<section class="order_row">
+						<div class="order_tit">
+							<h3 class="subH3">회원정보</h3>
+							<button type="button" class="btn_popup" onclick="cfnOpenCellphoneCertify();">개명 본인인증</button>
+						</div>
+						<div class="tbl type1 info_tbl">
+							<!-- 인증회원 -->
+							<table>
+								<colgroup>
+									<col width="200">
+									<col width="*">
+								</colgroup>
+								<tr>
+									<th>이름(성별)</th>
+									<td id="custNm" name="custNm"></td>
+								</tr>
+								<tr>
+									<th>생년월일</th>
+									<td id="birthYmd" name="birthYmd"></td>
+								</tr>
+							</table>
+							<!-- //인증회원 -->
+						</div>
+						<p class="alert_t">본인인증을 통해 자동으로 수집되는 정보 입니다.</p>
+					</section>
+					<section class="order_row">
+						<div class="tbl type1 info_tbl ">
+							<table>
+								<colgroup>
+									<col width="200">
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th>아이디</th>
+										<td>
+											<input type="text" id="custId" name="custId" class="form_control" placeholder="" readonly="readonly"/>
+										</td>
+									</tr>
+									<tr>
+										<th>비밀번호</th>
+										<td>
+											<div class="password_btn">
+												<button type="button" class="btn btn_dark"><span>변경하기</span></button>
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<th>이메일</th>
+										<td>
+											<input type="text" id="email" name="email" class="form_control" placeholder="" readonly="readonly"/>
+										</td>
+									</tr>
+									<tr>
+										<th>휴대폰 번호</th>
+										<td>
+											<input type="text" id="cellPhnno" name="cellPhnno" class="form_control" placeholder="" readonly="readonly"/>
+											<button type="button" class="btn btn_default btn_sm" onclick="cfnOpenCellphoneCertify();">
+												<span>휴대폰 인증</span>
+											</button>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+					</section>
+					<section class="order_row">
+						<div class="order_tit">
+							<h3 class="subH3">환불계좌 정보</h3>
+						</div>
+						<div class="tbl type1 info_tbl ">
+							<table>
+								<colgroup>
+									<col width="200">
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th class="ver_top">예금주</th>
+										<td>
+											<input type="text" id="accountHolder" name="accountHolder" class="form_control" placeholder="" readonly="readonly"/>
+											<p class="alert_t02">회원명 본인이 예금주인 통장으로만 환불이 가능합니다.</p>
+										</td>
+									</tr>
+									<tr>
+										<th>은행명</th>
+										<td>
+											<div class="form_field">
+												<select id="bankList">
+													<option value="">선택</option>
+													<option th:if="${bankList}" th:each="oneData, status : ${bankList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
+												</select>
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<th>계좌번호</th>
+										<td>
+											<input type="text" id="accountNumber" name="accountNumber" class="form_control" value="" placeholder=""/>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+					</section>
+					<section class="order_row">
+						<div class="order_tit">
+							<h3 class="subH3">마케팅 정보 수신설정</h3>
+							<span class="desc">특가상품, 할인쿠폰, 이벤트 소식 수신 동의</span>
+						</div>
+						<div class="tbl type1 info_tbl">
+							<table>
+								<colgroup>
+									<col width="200">
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th>수신설정</th>
+										<td>
+											<div class="form_field review_radio">
+												<div class="radio_li">
+													<input type="checkbox" id="emailAgreeYn" name="emailAgreeYn" value="Y"/><label for="emailAgreeYn"><span>이메일</span></label>
+												</div>
+												<div class="radio_li">
+													<input type="checkbox" id="smsAgreeYn" name="smsAgreeYn" value="Y"/><label for="smsAgreeYn"><span>SMS</span></label>
+												</div>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						<p class="alert_t"> 회원정보, 구매정보 및 서비스 주요 정책 관련 내용은 수신동의 여부와 관계없이 발송됩니다.</p>
+					</section>
+					<div class="btn_wrap half mt60">
+						<button type="button" id="btnConfirm" class="btn btn_dark submit_btn">
+							<span>확인</span>
+						</button>
+					</div>
+				</div>
+			</form>
+		</div>
+	</div>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+
+	var fnConvertToArray = function(data, isCodeDisplay) {
+		if (data.length == 0)
+			return [];
+
+		if (typeof(isCodeDisplay) == 'undefined')
+			isCodeDisplay = false;
+
+		var arrValue = {};
+
+		$.each(data, function(idx, item) {
+			arrValue[item.cd] = (isCodeDisplay ? '[' + item.cd + '] ' : '') + item.cdNm;
+		});
+
+		return arrValue;
+	};
+
+	var fnLookupValue = function(mappings, key) {
+		return mappings[key];
+	};
+
+	const genderGbList = fnConvertToArray([[${genderGbList}]]);				//성별
+
+
+	// 고객정보
+	var fnGetCustInfo = function () {
+		let jsonData = JSON.stringify({});
+		gagajf.ajaxJsonSubmit("/mypage/customer/info", jsonData , fnGetCustInfoCallback);
+	}
+
+	// 고객정보 데이터
+	var fnGetCustInfoCallback = function (custInfo) {
+		let genderGb = fnLookupValue(genderGbList, custInfo.sexGb);
+		let gender = '';
+		if (!gagajf.isNull(genderGb)) {
+			gender = custInfo.custNm + '('+ genderGb +')';
+		} else {
+			gender = genderGb;
+		}
+		$('#custModiFyForm td[name=custNm]').text(gender);
+		$('#custModiFyForm td[name=birthYmd]').text(custInfo.birthYmd);
+		$('#custModiFyForm input[name=custId]').val(custInfo.custId);
+		$('#custModiFyForm input[name=email]').val(custInfo.email);
+		$('#custModiFyForm input[name=cellPhnno]').val(custInfo.cellPhnno);
+		$('#custModiFyForm input[name=accountHolder]').val(custInfo.custNm);
+
+		fnDisplayEmailAgree(custInfo.emailAgreeYn);
+		fnDisplaySmsAgree(custInfo.smsAgreeYn);
+	}
+
+	// 이메일 수신동의
+	var fnDisplayEmailAgree = function (emailAgreeYn) {
+		const $emailAgreeYn = $('#custModiFyForm input[name=emailAgreeYn]');
+		if (emailAgreeYn === 'Y') {
+			$emailAgreeYn.prop('checked', true);
+		} else {
+			$emailAgreeYn.prop('checked', false);
+		}
+
+	};
+
+	// SMS 수신동의
+	var fnDisplaySmsAgree = function (smsAgreeYn) {
+		const $smsAgreeYn = $('#custModiFyForm input[name=smsAgreeYn]');
+		if (smsAgreeYn === 'Y') {
+			$smsAgreeYn.prop('checked', true);
+		} else {
+			$smsAgreeYn.prop('checked', false);
+		}
+
+	};
+
+	// 나이스 본인인증 후 콜백
+	var fnNiceCallBack = function(encData) {
+		if (!gagajf.isNull(encData)) {
+			let custInfo = {};
+			custInfo.encData = encData;
+			let jsonData = JSON.stringify(custInfo);
+			gagajf.ajaxJsonSubmit('/mypage/customer/auth/update', jsonData, fnInfoConfirmCallBack);
+		}
+	};
+
+	var fnInfoConfirmCallBack = function (result) {
+		if (result.iSsuccess) {
+			fnGetCustInfo();
+			mcxDialog.alert("본인인증을 통해 정보가 변경 되었습니다.");
+			return;
+		} else {
+			mcxDialog.alert("실패하였습니다.<br/>고객센터에 문의하시 바랍니다.");
+			return;
+		}
+
+	}
+
+	$('#btnConfirm').on('click', function () {
+		let jsonData = JSON.stringify($('#custModiFyForm').serializeObject());
+		console.log('jsonData', jsonData);
+	});
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(10);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('회원정보 수정');
+
+		// 회원정보 조회
+		fnGetCustInfo();
+
+	});
+	/*]]>*/
+</script>
+</th:block>
+</body>
+</html>
+
+

+ 180 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCustSecedeFormWeb.html

@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html lang="ko">
+<head>
+<title>STYLE24 | 회원탈퇴 | Publishing</title>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
+<meta name="Title" th:content="" content=""/>
+<meta name="description" th:content="" content=""/>
+<meta name="keywords" th:content="" content=""/>
+<meta property="og:type" content="website"/>
+<meta property="og:image" th:content="" content=""/>
+<meta property="og:url" th:content="" content=""/>
+<meta property="og:title" th:content="" content=""/>
+<meta property="og:description" th:content="" content=""/>
+<meta property="og:locale" content="ko_KR"/>
+<meta property="og:site_name" th:content="" content=""/>
+
+<link rel="icon" href="favicon.ico" type="image/x-icon">
+<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+<link rel="apple-touch-icon" href="/images/pc/apple-touch-icon.png" sizes="180x180">
+<link rel="icon" href="/images/pc/favicon-32x32.png" sizes="32x32" type="image/png">
+<link rel="icon" href="/images/pc/favicon-16x16.png" sizes="16x16" type="image/png">
+
+<!-- <link rel="stylesheet" type="text/css" href="css/test-common.css" /> -->
+<link rel="stylesheet" type="text/css" href="css/common.css" />
+<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
+<script src="js/jquery.ellipsis.js"></script>
+<script src="js/jquery-ui.js"></script>
+<script src="js/common-ui.js"></script>
+</head>
+
+<body>
+
+	
+	<div class="skipComment">
+		<a href="#content">본문 바로가기</a>
+		<a href="#gnb">주메뉴 바로가기</a>
+		<a href="#footer">하단메뉴 바로가기</a>
+	</div>
+
+	<header id="header"></header>
+	<!--  container -->
+	<div id="container" class="container my">
+		<div class="breadcrumb">
+			<ul>
+				<li class="bread_home"><a href="index.html">홈</a></li>
+				<li class="bread_2depth">마이페이지</li>
+				<li class="bread_3depth">회원탈퇴</li>
+			</ul>
+		</div>
+		<div class="wrap">
+			<div class="content">
+				<div class="cont_head" style="display: none;">
+					CONT-HEAD
+					<div class="tit">my_center</div>
+					<div class="tit my_tit">my_tit</div>
+				</div>
+				<div class="cont_body mypage">
+					<!-- CONT-BODY -->
+					<div class="my_lnb">
+						<div class="lnb_tit">
+							<h2>마이페이지</h2>
+						</div>
+						<div class="lnb_list">
+							<ul>
+								<li><a href="/ux/pc/my_order_1.html">주문확인/배송조회</a></li>
+								<li><a href="/ux/pc/my_return_1.html">취소/반품/환불내역</a></li>
+								<li><a href="/ux/pc/my_restock_1.html">재입고 알림 내역</a></li>
+								<li><a href="/ux/pc/my_coupon_1.html">쿠폰</a></li>
+								<li><a href="/ux/pc/my_point_1.html">STYLE24 포인트</a></li>
+								<li><a href="/ux/pc/my_gift_1.html">상품권</a></li>
+								<li><a href="/ux/pc/my_review_1.html">리뷰</a></li>
+								<li><a href="/ux/pc/my_delivery_1.html">배송지 관리</a></li>
+								<li><a href="/ux/pc/my_wishlist_1.html">위시리스트</a></li>
+								<li><a href="/ux/pc/my_mypage_1.html">내정보 관리</a></li>
+								<li><a href="/ux/pc/my_leave_1.html" class="on">회원 탈퇴</a></li>
+							</ul>
+						</div>
+					</div>
+					<div class="my_cont">
+						<div class="sec_head">
+							<h3>회원탈퇴</h3>
+						</div>
+						<div class="sec_body mypage_body">
+							<div class="com_info_txt">
+								<p class="tit">회원 탈퇴 안내</p>
+								<ul>
+									<li>탈퇴시 소유하고 있는 포인트, 쿠폰등은 모두 소멸 됩니다.</li>
+									<li>거래정보가 있는 경우, 전자상거래 등에서의 소비자 보호에 관한 법류에 따라 계약 또는 청약철회에 관한 기록,<br>대금결제 및 재화 등의 공급에 관한 기록은 5년동안 보존됩니다.</li>
+									<li>보유하셨던 상품권 금액은 탈퇴와 함께 삭제되며 환불되지 않습니다.</li>
+									<li>회원 탈퇴 후 STYLE24에 입력하신 상품문의 및 후기,댓글은 삭제되지 않으며,회원정보 삭제로 인해 작성자 본인을 확인 할 수 없어<br>편집 및 삭제처리가 원천적으로 불가능 합니다.</li>
+									<li>상품권은 현금성 결제 수단에 포함되어 주문시 포인트 적립이 가능합니다.</li>
+								</ul>
+								<div class="chk_box">
+									<div class="form_field">
+										<div class="">
+											<input id="chk-1" type="checkbox"><label for="chk-1"><span>상기 STYLE24 회원탈퇴 시 처리사항 안내를 확인하였음에 동의합니다.</span></label>
+										</div>
+									</div>
+								</div>
+							</div>
+							<form class="form_wrap" role="form">
+								<div class="order_list">
+									<section class="order_row">
+										<div class="tbl track_tbl type2">
+											<table>
+												<colgroup>
+													<col width="25%">
+													<col width="25%">
+													<col width="25%">
+													<col width="25%">
+												</colgroup>   
+												<thead>
+													<tr>
+														<th>진행중(주문/취소/반품/교환)</th>
+														<th>마일리지(보유/적립예정)</th>
+														<th>상품권 잔여금액</th>
+														<th>쿠폰</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<td>0 / 0 / 0 / 0</td>
+														<td class="c_primary">500P / 60P</td>
+														<td class="c_primary">20,000원</td>
+														<td class="c_primary">20장</td>
+													</tr>
+												</tbody>
+											</table>
+										</div>
+									</section>
+									<section class="order_row">
+										<div class="order_tit"> 
+											<h3 class="subH3">보안을 위해 회원님의 아이디 및 비밀번호를 다시 확인합니다.</h3>
+										</div>
+										<div class="tbl type1 info_tbl">
+											<table>
+												<colgroup>
+													<col width="200">
+													<col width="*">
+												</colgroup>   
+												<tbody>
+													<tr>
+														<th>아이디</th>
+														<td><input type="text" class="form_control" value="gunuid" placeholder="" readonly></td>
+													</tr>
+													<tr>
+														<th>비밀번호</th>
+														<td><input type="password" class="form_control" placeholder="비밀번호를 입력해주세요."></td>
+													</tr>
+												</tbody>
+											</table>
+										</div>
+									</section>
+									<div class="btn_wrap half mt60">
+										<button tyep="submit" class="btn btn_dark submit_btn"><span>회원탈퇴</span></button>
+									</div>
+								</div>
+							</form>
+						</div>
+					</div>
+					<!-- // CONT-BODY -->					
+				</div>
+			</div>
+		</div>
+	</div>
+	<!-- // container -->	
+	<footer id="footer"></footer>
+
+	<script type="text/javascript">
+	// 컨텐츠 호출
+	$(document).ready( function() {
+		$("#header").load("head.html");
+		$("#footer").load("foot.html");
+	});
+	</script>
+</body>
+</html>
+
+

+ 93 - 12
src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html

@@ -36,7 +36,7 @@
 				<div class="gift_sea_wrap clear">
 					<label for="gift_input">상품권 등록</label>
 					<input type="text" id="gift_input" placeholder="상품권 번호를 입력해주세요.">
-					<button type="button" class="btn btn_dark">등록</button>
+					<button type="button" class="btn btn_dark" onclick="giftcardSave()">등록</button>
 				</div>
 			</div>
 			<div class="com_info_txt">
@@ -55,10 +55,20 @@
 					<li><a href="javascript:void(0);" id="SearchUseGiftcard">사용내역</a></li>
 					<li><a href="javascript:void(0);" id="SearchOwnGiftcard">보유 상품권</a></li>
 				</ul>
-				<div class="form_field" id="dateField">
-					<select id="searchDt">
+				<!-- <div class="form_field" id="dateField">
+					<select id="searchDt" onchange="fnChangeDate(this)">
 						
 					</select> 
+				</div> -->
+					<div class="form_field" id="dateField">
+						<div class="select_custom type1">
+							<div class="combo">
+								<div class="select"></div> <!-- 셀렉박스 -->
+									<ul id="searchDt" class="list" style="width:200px; margin:0 auto">
+									</ul>
+							</div>
+						</div>
+					</div>
 				</div>
 			</div>
 			<div id="giftcardList">
@@ -67,19 +77,19 @@
 	</div>
 <!-- // CONT-BODY -->					
 <script th:inline="javascript">
+var date = new Date();
+var year = date.getFullYear();
+var month = date.getMonth()+1;
+
 //동적으로 날짜 년도 append
 function appendYear(){
  
-    var date = new Date();
-    var year = date.getFullYear();
-    var month = date.getMonth()+1;
-  
     for(var i=year; i<=year; i++){
        	for (var j= 1; j <=month; j++) {
-       		$("#searchDt").prepend("<option value='"+year+"-"+j+"'>"+i+"년"+ j +"월 </option>");
+       		$("#searchDt").prepend("<li onclick='fnChangeDate(this.value)' value='"+year+""+j+"'>"+i+"년"+j +"월 </li>");
 		}
     }
-	$("#searchDt").find("option:eq(0)").prop("selected", true); // 현재년도 선택
+    $(".select").append("<li class='selected' value='"+year+""+month+"'>"+year+"년"+ month +"월 </li>"); // 현재년도 선택 */
 }
  
 appendYear($("#searchDt"));
@@ -94,8 +104,9 @@ $("#SearchUseGiftcard").click(function(){
 	// 날짜 필드 
 	$("#dateField").css("display","block");
 	
-	let data = {};
-	
+	let data = {searchDt : year+""+month,
+				month : month};
+
 	var jsonData = JSON.stringify(data);
 	
 	$.ajax(
@@ -221,7 +232,73 @@ function ownGiftcard(result) {
 }
 
 function fnChangeDate(obj) {
-	console.log(obj);
+
+	var seletedDate = obj.toString();
+	var splitMonth = seletedDate.substr(4);
+	
+	data = {month : splitMonth,
+			searchDt : seletedDate};
+
+ 	var jsonData = JSON.stringify(data);
+	
+	$.ajax(
+			{
+				type 	 : "POST",
+				data	 : jsonData,
+				url 	 : '/mypage/gift/use/list',
+				contentType: 'application/json',
+					dataType : 'json',
+				success  : function(result){
+					useGiftcard(result);
+				}
+			}
+		)  
+}
+
+// 상품권 등록 버튼 누를 시 
+function giftcardSave() {
+	if($("#gift_input").val() == "" || $("#gift_input").val() == null){
+		mcxDialog.alert("상품권 번호를 입력해주세요.");
+		return;
+	}
+	
+ 	data = {gfcdNo : $("#gift_input").val()};
+
+ 	var jsonData = JSON.stringify(data);
+ 	
+/*  	mcxDialog.confirm('저장 하시겠습니까?', {
+		cancelBtnText: "취소",
+		sureBtnText: "확인",
+		sureBtnClick: function() {
+			var jsonData = JSON.stringify(changeData);
+			gagajf.ajaxJsonSubmit('/mypage/gift/use/confirm', jsonData, fnCornerSearch);
+		}
+	}); */
+	
+	/* $.ajax(
+			{
+				type 	 : "POST",
+				data	 : jsonData,
+				url 	 : '/mypage/gift/use/confirm',
+				contentType: 'application/json',
+					dataType : 'json',
+				success  : function(result){
+					alert(result.message);
+				}
+			}
+		)    */
+		
+ 	mcxDialog.confirm("상품권을 등록 하시겠습니까?", {
+		cancelBtnText: "취소",
+		sureBtnText: "확인",
+		sureBtnClick: function() {
+			
+			gagajf.ajaxJsonSubmit('/mypage/gift/use/confirm', jsonData, function() {
+				cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
+			});
+		}
+	});
+	
 }
 
 $(document).ready(function() {
@@ -235,6 +312,10 @@ $(document).ready(function() {
 	// 전체내역 표시
 	$("#SearchUseGiftcard").trigger('click');
 
+	// 셀렉트박스 활성화
+	$('.select_custom.type1').each(function(index) {
+		var selecter01 = new sCombo($(this));
+	});
 });
 </script>
 </th:block>

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

@@ -21,6 +21,7 @@ const _PAGE_CUSTOMER_DORMANT = _frontUrl + "/customer/dormant/certify/form";
 const _PAGE_CUSTOMER_DORMANT_COMPLETE = _frontUrl + "/customer/dormant/certify/complete/form";		// 고객 > 휴면회원 > 완료페이지
 const _PAGE_CUSTOMER_CERTIFICATION = "/customer/certification/form"									// 고객 > 본인인증화면
 
+
 //== 상품상세 ==/
 const _PAGE_GOODS_DETAIL = _frontUrl + "/goods/detail/form?goodsCd=";								// 상품 상세
 const _PAGE_GOODS_COUPON_LAYER = _frontUrl + "/goods/coupon/layer/";								// 쿠폰레이어
@@ -53,12 +54,14 @@ const _PAGE_MYPAGE_GIFTCARD = _frontUrl + "/mypage/gift/card/form";				// 마이
 const _PAGE_MYPAGE_REVIEW = _frontUrl + "/mypage/review/form";					// 마이페이지 > 리뷰
 const _PAGE_MYPAGE_DELIVERY_ADDR = _frontUrl + "/mypage/delivery/addr/form";	// 마이페이지 > 배송지 관리
 const _PAGE_MYPAGE_WISHLIST = _frontUrl + "/mypage/wish/list/form";				// 마이페이지 > 위시리스트
-const _PAGE_MYPAGE_CUSTOMER = _frontUrl + "/mypage/customer/form";				// 마이페이지 > 내정보 관리
+const _PAGE_MYPAGE_CUSTOMER = _frontUrl + "/mypage/customer/confirm/form";		// 마이페이지 > 내정보 관리 > 회원정보 확인
+const _PAGE_MYPAGE_CUSTOMER_MODIFY = _frontUrl + "/mypage/customer/modify/form";// 마이페이지 > 내정보 관리 > 회원정보 수정
 const _PAGE_MYPAGE_SECEDE = _frontUrl + "/mypage/customer/secede/form";			// 마이페이지 > 회원탈퇴
 const _PAGE_WISHLIST = _frontUrl + "/mypage/wish/list/form";					// 마이페이지 > 위시리스트
 const _PAGE_WISHLIST_PUT = _frontUrl + "/mypage/wish/list/put";					// 위시리스트 담기
 const _PAGE_WISHLIST_DEL = _frontUrl + "/mypage/wish/list/delete";				// 위시리스트 삭제
 
+
 //== 검색 ==/
 
 //== 기획전 ==/