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

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.front.git into develop

eskim 5 лет назад
Родитель
Сommit
c024dc0f34
46 измененных файлов с 1084 добавлено и 162 удалено
  1. 25 7
      pom.xml
  2. 1 0
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  3. 9 0
      src/main/java/com/style24/front/biz/dao/TsfReviewDao.java
  4. 4 4
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  5. 23 0
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  6. 43 6
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  7. 11 1
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  8. 41 14
      src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java
  9. 18 8
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  10. 12 15
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  11. 41 15
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  12. 15 3
      src/main/java/com/style24/persistence/domain/searchengine/SearchEngine.java
  13. 198 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  14. 11 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  15. 8 1
      src/main/resources/config/application-locd.yml
  16. 27 0
      src/main/resources/config/application-run.yml
  17. 14 1
      src/main/resources/config/application-style.yml
  18. 5 0
      src/main/resources/config/application-tsit.yml
  19. BIN
      src/main/webapp/WEB-INF/lib/AutoSearch.jar
  20. BIN
      src/main/webapp/WEB-INF/lib/diquest.jar
  21. BIN
      src/main/webapp/WEB-INF/lib/json_simple-1.1.jar
  22. BIN
      src/main/webapp/WEB-INF/lib/m4_client.jar
  23. BIN
      src/main/webapp/WEB-INF/lib/m4_common.jar
  24. BIN
      src/main/webapp/WEB-INF/lib/m4_util.jar
  25. 16 0
      src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html
  26. 4 4
      src/main/webapp/WEB-INF/views/mob/display/BestMainFormMob.html
  27. 1 1
      src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html
  28. 1 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  29. 75 0
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentCompleteMob.html
  30. 280 0
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html
  31. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  32. 3 2
      src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html
  33. 4 4
      src/main/webapp/WEB-INF/views/web/display/BestMainFormWeb.html
  34. 1 1
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  35. 74 35
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  36. 4 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html
  37. 3 3
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentCompleteWeb.html
  38. 78 10
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html
  39. 1 1
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  40. 1 0
      src/main/webapp/WEB-INF/views/web/pg/kcpOrderWeb.html
  41. 5 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  42. 3 3
      src/main/webapp/biz/mypage.js
  43. 8 1
      src/main/webapp/ux/mo/css/style24_m.css
  44. 5 5
      src/main/webapp/ux/mo/js/common_m.js
  45. 8 5
      src/main/webapp/ux/pc/css/layout.css
  46. 2 0
      src/main/webapp/ux/style24_link.js

+ 25 - 7
pom.xml

@@ -64,6 +64,7 @@
 			<artifactId>libphonenumber</artifactId>
 			<version>8.12.16</version>
 		</dependency>
+		
 		<!-- /// WEB-INF lib -->
 		<dependency>
 			<groupId>com.gagaframework</groupId>
@@ -100,7 +101,9 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gagaframework-web-util-1.7-RELEASE.jar</systemPath>
 		</dependency>
-		<!--NICE-->
+		<!-- \\\ WEB-INF lib -->
+		
+		<!-- /// NICE -->
 		<dependency>
 			<groupId>com.NiceID</groupId>
 			<artifactId>NiceID</artifactId>
@@ -115,7 +118,9 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/IPIN2Client.jar</systemPath>
 		</dependency>
-		<!--KCP-->
+		<!-- \\\ NICE -->
+		
+		<!-- /// KCP -->
 		<dependency>
 			<groupId>com.kcp</groupId>
 			<artifactId>kcp</artifactId>
@@ -137,7 +142,9 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/CtCli-1.0.6.jar</systemPath>
 		</dependency>
-		<!-- 상품권 인증  -->
+		<!-- \\\ KCP -->
+		
+		<!-- /// 상품권 인증 -->
 		<dependency>
 			<groupId>org.apache.cxf</groupId>
 			<artifactId>cxf-rt-frontend-jaxws</artifactId>
@@ -148,7 +155,9 @@
 			<artifactId>cxf-rt-transports-http</artifactId>
 			<version>2.7.11</version>
 		</dependency>
-		<!--USAFE 보증보험-->
+		<!-- \\\ 상품권 인증 -->
+		
+		<!-- /// USAFE 보증보험 -->
 		<dependency>
 			<groupId>com.usafe.guarantee</groupId>
 			<artifactId>usafe-guarantee</artifactId>
@@ -163,9 +172,18 @@
 			<scope>system</scope>
 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/usafe.jar</systemPath>
 		</dependency>
-
-		<!--//NICE 본인인증-->
-		<!-- \\\ WEB-INF lib -->
+		<!-- \\\ USAFE 보증보험 -->
+		
+		<!-- /// 검색엔진(DIQUEST) -->
+<!-- 		<dependency> -->
+<!-- 			<groupId>com.diquest</groupId> -->
+<!-- 			<artifactId>diquest</artifactId> -->
+<!-- 			<version>0.1</version> -->
+<!-- 			<scope>system</scope> -->
+<!-- 			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/diquest.jar</systemPath> -->
+<!-- 		</dependency> -->
+		<!-- \\\ 검색엔진(DIQUEST) -->
+		
 	</dependencies>
 	
 	<build>

+ 1 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -401,4 +401,5 @@ public interface TsfGoodsDao {
 	 */
 	Collection<SearchEngine> getSearchGoodsList(SearchEngine params);
 
+	int getContentsCategoryGoodsCount(Cate4Srch cate4Srch);
 }

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

@@ -225,6 +225,15 @@ public interface TsfReviewDao {
 	 */
 	void createReviewPointHst(Point point);
 	
+	/**
+	 * 마이페이지 CONFIRM_YN 업데이트
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 5. 10
+	 */
+	void updateMypageReviewConfimYn(Review review);
+	
 
 
 	

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

@@ -142,7 +142,7 @@ public class TsfCartService {
 					}
 
 					// 금일 주문 수량 체크
-					if (!StringUtils.isEmpty(param.getCartGb()) && ("O".equals(param.getCartGb()) || "G".equals(param.getCartGb()))) {
+					if (!StringUtils.isEmpty(param.getCartGb()) && ("N".equals(param.getCartGb()) || "O".equals(param.getCartGb()) || "G".equals(param.getCartGb()))) {
 						int goodsCartCnt = 0;
 						if(param.getCustNo() != 0) {
 							goodsCartCnt = cartDao.getGoodsTodayOrderCnt(param);
@@ -203,7 +203,7 @@ public class TsfCartService {
 				}
 
 				// 금일 주문 수량 체크
-				if (!StringUtils.isEmpty(param.getCartGb()) && ("O".equals(param.getCartGb()) || "G".equals(param.getCartGb()))) {
+				if (!StringUtils.isEmpty(param.getCartGb()) && ("N".equals(param.getCartGb()) || "O".equals(param.getCartGb()) || "G".equals(param.getCartGb()))) {
 					int goodsCartCnt = 0;
 					if(param.getCustNo() != 0) {
 						goodsCartCnt = cartDao.getGoodsTodayOrderCnt(param);
@@ -307,7 +307,7 @@ public class TsfCartService {
 				cart.setCartGb(TscConstants.CartGb.CART.value());
 				// 같은 장바구니 상품 확인
 				cartSqList = cartDao.selectHasSetItemCartList(cart);
-			} else if (!StringUtils.isEmpty(cartInfos.iterator().next().getCartGb()) && "O".equals(cartInfos.iterator().next().getCartGb())) {
+			} else if (!StringUtils.isEmpty(cartInfos.iterator().next().getCartGb()) && ("N".equals(cartInfos.iterator().next().getCartGb()) || "O".equals(cartInfos.iterator().next().getCartGb()))) {
 				if ("P".equals(TsfSession.getFrontGb())) {
 					cart.setCartGb(TscConstants.CartGb.PC_ORDER.value());
 				} else {
@@ -376,7 +376,7 @@ public class TsfCartService {
 
 		if (!StringUtils.isEmpty(params.iterator().next().getCartGb()) && "C".equals(params.iterator().next().getCartGb())) {
 			cart.setCartGb(TscConstants.CartGb.CART.value());
-		} else if (!StringUtils.isEmpty(params.iterator().next().getCartGb()) && "O".equals(params.iterator().next().getCartGb())) {
+		} else if (!StringUtils.isEmpty(params.iterator().next().getCartGb()) && ("N".equals(params.iterator().next().getCartGb()) || "O".equals(params.iterator().next().getCartGb()))) {
 			if ("P".equals(TsfSession.getFrontGb())) {
 				cart.setCartGb(TscConstants.CartGb.PC_ORDER.value());
 			} else {

+ 23 - 0
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -462,6 +462,8 @@ public class TsfDisplayService {
 		cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
 		cate4Srch.setCateGb("G032_101");
 
+		log.info("getBestItemCategoryGoodsList cate4Srch:::::::::{}",cate4Srch);
+
 		Collection<Goods> goodsList = goodsDao.getContentsCategoryGoodsList(cate4Srch);
 
 		if (goodsList.size() < 100) {
@@ -651,4 +653,25 @@ public class TsfDisplayService {
 		return cate1List;
 	}
 
+	public int getContentsCategoryGoodsCount(Contents contents) {
+		Cate4Srch cate4Srch = new Cate4Srch();
+		// 로그인 유무 확인 (로그인이 되어 있지 않으면 regNo 를 0으로 장바구니에 저장한다.)
+		Login login = new Login();
+		if (TsfSession.isLogin()) {
+			login = TsfSession.getInfo();
+		} else {
+			login.setCustNo(0);
+		}
+
+		cate4Srch.setCustNo(login.getCustNo());
+		cate4Srch.setPageGb(contents.getPageGb());
+		cate4Srch.setContentsLoc(contents.getContentsLoc());
+		cate4Srch.setMaxRow(100);
+		cate4Srch.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
+		cate4Srch.setCate1No(contents.getCateNo());
+		cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
+		cate4Srch.setCateGb("G032_101");
+		return goodsDao.getContentsCategoryGoodsCount(cate4Srch);
+	}
+
 }

+ 43 - 6
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -138,8 +138,7 @@ public class TsfOrderService {
 
 			// 전체 구매확정 가능 여부 설정
 			if ("Y".equals(allDecideYn)
-				&& !TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value().equals(tmpOrder.getOrdDtlStat())
-				&& ordReqChgQty > 0) {
+				&& (!TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value().equals(tmpOrder.getOrdDtlStat()) || ordReqChgQty > 0)) {
 				allDecideYn = "N";
 			}
 
@@ -354,6 +353,17 @@ public class TsfOrderService {
 					result.setOrdNo(Integer.parseInt(request.getParameter("ordr_idxx")));
 					result.setPayMeans(param.getPayMeans());
 				} else {
+					if(TscConstants.FrontGb.MOB.value().equals(TsfSession.getFrontGb()) && StringUtils.isNotEmpty(request.getParameter("param_opt_3"))) {
+						param.setPgOrdNo(request.getParameter("ordr_idxx"));
+						param.setOrdNo(Integer.parseInt(request.getParameter("param_opt_3")));
+					} else if(TscConstants.FrontGb.PC.value().equals(TsfSession.getFrontGb())) {
+						param.setPgOrdNo(request.getParameter("ordr_idxx"));
+						param.setOrdNo(param.getOrgOrdNo());
+					}
+
+					log.info("CHECK INFO :::: {}", param.getPgOrdNo());
+					log.info("CHECK INFO :::: {}", param.getOrdNo());
+
 					// 일반 KCP 결제
 					result = coreKcpService.kcpPayRequest(param, request, response);
 				}
@@ -826,7 +836,7 @@ public class TsfOrderService {
 			param.setIfYn("N");				// 인터페이스 송부 완료X (입금확인시 Y로 UPDATE 예정)
 		}
 
-		if(StringUtils.isEmpty(param.getOrdTelno())) {	param.setOrdTelno(param.getOrdPhnno());	}
+		if(StringUtils.isEmpty(param.getOrdTelno())) {		param.setOrdTelno(param.getOrdPhnno());	}
 		if(StringUtils.isEmpty(param.getRecipTelno())) {	param.setRecipTelno(param.getRecipPhnno());	}
 
 		param.setRecipZipcode(param.getRecipZipcode().replaceAll("-", ""));
@@ -874,7 +884,7 @@ public class TsfOrderService {
 			param.setIfYn("F");			// 인터페이스 송부 실패
 		}
 
-		//coreOrderDao.createInsurance(param);
+		coreOrderDao.updateInsurance(param);
 
 		return "SUCCESS";
 	}
@@ -914,6 +924,35 @@ public class TsfOrderService {
 		return "SUCCESS";
 	}
 	
+	public GagaMap nPayReq50(Order param) {
+		GagaMap result = new GagaMap();
+
+		try {
+			param.setFrontGb(TsfSession.getFrontGb());
+			param.setSiteCd(TscConstants.Site.STYLE24.value());
+			if(TsfSession.isLogin()) {
+				param.setCustNo(TsfSession.getInfo().getCustNo());
+			} else {
+				param.setCustNo(0);
+				param.setJsessionId(TsfSession.getSessionId());
+			}
+
+			// 장바구니 정보 조회
+			Collection<Order> cartList = coreOrderService.getCartGoodsList(param);
+
+
+
+			result.put("state", "sucess");
+		} catch(Exception e) {
+			result.put("state", "fail");
+			result.put("message", "주문실패");
+
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+	
 	/**
 	 * 장바구니정보 주문번호 이력 등록
 	 * @param param
@@ -1022,6 +1061,4 @@ public class TsfOrderService {
 
 		return "SUCCESS";
 	}
-	
-	
 }

+ 11 - 1
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -172,6 +172,7 @@ public class TsfReviewService {
 	public void saveMypageReview(Review review) {
 		review.setDispYn("Y");
 		review.setDelYn("N");
+		review.setConfirmYn("Y");
 		review.setRegNo(TsfSession.getInfo().getCustNo());
 		review.setUpdNo(TsfSession.getInfo().getCustNo());
 		if (review.getKufKeyArr() == null && review.getOrgFileNmArr() == null) {
@@ -181,10 +182,12 @@ public class TsfReviewService {
 		}else {
 			review.setPntGiveStat("G043_10");
 		}
+		
 		reviewDao.saveMypageReview(review);
 		
 		//이미지등록
 		if(review.getOrgFileNmArr() != null) {
+			review.setConfirmYn("Y");
 			ReviewAttach fileReview = new ReviewAttach();
 			fileReview.setRegNo(TsfSession.getInfo().getCustNo());
 			fileReview.setUpdNo(TsfSession.getInfo().getCustNo());
@@ -220,6 +223,7 @@ public class TsfReviewService {
 		}
 		
 		if(review.getKufKeyArr() != null) {
+			review.setConfirmYn("N");
 			ReviewAttach fileReview = new ReviewAttach();
 			fileReview.setRegNo(TsfSession.getInfo().getCustNo());
 			fileReview.setUpdNo(TsfSession.getInfo().getCustNo());
@@ -255,6 +259,7 @@ public class TsfReviewService {
 				point.setReviewSq(review.getReviewSq());
 				reviewDao.createReviewPointHst(point);
 			}else if(review.getKufKeyArr() == null && review.getOrgFileNmArr() != null) {
+				
 				// 상품평 + 사진
 				point.setCustNo(TsfSession.getInfo().getCustNo());
 				point.setGvPntAmt(photoReviewPnt);
@@ -264,9 +269,14 @@ public class TsfReviewService {
 				point.setReviewSq(review.getReviewSq());
 				reviewDao.createReviewPointHst(point);
 			}
-			
 		}
+		
+		if (review.getConfirmYn()=="Y") {
+			reviewDao.updateMypageReviewConfimYn(review);
+		}
+		
 	}
+		
 	
 	/**
 	 * 마이페이지 리뷰 업데이트

+ 41 - 14
src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java

@@ -1,9 +1,12 @@
 package com.style24.front.biz.thirdparty;
 
+import javax.annotation.PostConstruct;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+
+import com.style24.persistence.domain.searchengine.SearchEngine;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -20,21 +23,45 @@ public class SearchEngineDiquest {
 	@Autowired
 	private Environment env;
 
-	@Autowired
-	private RestTemplate restTemplate;
+	private String ipAddr;	// 검색엔진 IP
+	private String port;	// 검색엔진 포트
+
+	@PostConstruct
+	public void init() {
+		ipAddr = env.getProperty("search.engine.diquest.ip");
+		port = env.getProperty("search.engine.diquest.port");
 
-	private String ipAddr;
-	private String port;
+		log.debug("\n\n---- NHN Diquest initialization started ----");
+		log.debug("ipAddr: [{}]", ipAddr);
+		log.debug("port: [{}]", port);
+		log.debug("\n--- NHN Diquest initialization completed ----\n");
+	}
 
-//	@PostConstruct
-//	public void init() {
-//		ipAddr = env.getProperty("search.engine.diquest.ip");
-//		port = env.getProperty("search.engine.diquest.port");
+	/**
+	 * 인기검색어 조회
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	public SearchEngine getTrendKeywordList() {
+		SearchEngine result = new SearchEngine();
+
+//		// 인기검색어
+//		Map<String, Object> map = new HashMap<String, Object>();
+//		map.put("adminIp", ipAddr);
+//		map.put("adminPort", port);
+//
+//		try {
+//			JSONObject jsonObj = AutoSearch.trendKeyword(map);
+//			log.info("jsonObj.toJSONString(): {}", jsonObj.toJSONString());
 //
-//		log.debug("\n\n---- NHN Diquest initialization started ----");
-//		log.debug("ipAddr: [{}]", ipAddr);
-//		log.debug("port: [{}]", port);
-//		log.debug("\n--- NHN Diquest initialization completed ----\n");
-//	}
+//			Gson gson = new Gson();
+//			result = gson.fromJson(jsonObj.toJSONString(), SearchEngine.class);
+//		} catch (IRException e) {
+//			e.printStackTrace();
+//		}
+
+		return result;
+	}
 
 }

+ 18 - 8
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -27,6 +27,7 @@ import com.style24.front.biz.service.TsfDisplayService;
 import com.style24.front.biz.service.TsfGoodsService;
 import com.style24.front.biz.service.TsfPlanningService;
 import com.style24.front.biz.service.TsfSocialService;
+import com.style24.front.biz.thirdparty.SearchEngineDiquest;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.TscPageRequest;
@@ -81,6 +82,9 @@ public class TsfDisplayController extends TsfBaseController {
 	@Autowired
 	private TsfSocialService socialService;
 
+	@Autowired
+	private SearchEngineDiquest diquest;
+
 	/**
 	 * 몰 메인
 	 * @return
@@ -747,20 +751,14 @@ public class TsfDisplayController extends TsfBaseController {
 
 		contents.setContentsLoc("SCM003");
 		contents.setPageGb("BEST");
-		MainLayout mainLayout = new MainLayout();
-		mainLayout.setGoodsList(displayService.getBestItemCategoryGoodsList(contents));
-		int totalCnt = mainLayout.getGoodsList().size();
-		if (totalCnt > 100) {
-			totalCnt = 100;
-		}
+
+		int totalCnt = displayService.getContentsCategoryGoodsCount(contents);
 		pageable.setTotalCount(totalCnt);
 		contents.setPageable(pageable);
 
 		result.set("paging", contents);
 		result.set("totalCnt", totalCnt);
 		result.set("endRow", pageable.getEndRow());
-		contents.setContentsLoc("SCM003");
-		contents.setPageGb("BEST");
 		result.set("dataList", displayService.getBestItemCategoryGoodsList(contents));
 		return result;
 	}
@@ -911,4 +909,16 @@ public class TsfDisplayController extends TsfBaseController {
 		return result;
 	}
 
+	/**
+	 * 인기검색어 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	@GetMapping("/search/trend/keyword/list")
+	@ResponseBody
+	public SearchEngine getSearchTrendKeywordList() {
+		return diquest.getTrendKeywordList();
+	}
+
 }

+ 12 - 15
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -777,6 +777,10 @@ public class TsfOrderController extends TsfBaseController {
 		*/
 
 		Payment payment = orderService.setPgDataInfo(order);
+		// 2021.05.10 추가
+		payment.setPayUrl("/create/preOrder");
+		payment.setRetUrl("/pay/result/response");
+				
 		mav.addObject("payment"				, payment);
 		mav.addObject("orderDetailList"		, order.getOrderDetailList());
 		mav.addObject("message"				, resultStr);
@@ -1238,19 +1242,6 @@ public class TsfOrderController extends TsfBaseController {
 			order.setJsessionId(TsfSession.getSessionId());
 			order.setCustNo(0);
 		}
-
-		log.info("order.getOrdNo()             ::: {}", order.getOrdNo());
-		log.info("order.getPgGb()              ::: {}", order.getPgGb());
-		log.info("order.getPayMeans()          ::: {}", order.getPayMeans());
-		log.info("order.getOrdChgSq()          ::: {}", order.getOrdChgSq());
-		log.info("order.getGoodsNm()           ::: {}", order.getGoodsNm());
-		log.info("order.getAddPayCost()        ::: {}", order.getAddPayCost());
-		log.info("order.getChgerNm()           ::: {}", order.getChgerNm());
-		log.info("order.getChgerPhnno()        ::: {}", order.getChgerPhnno());
-
-		// int ordNo = order.getOrdNo();
-
-		// order.setOrdNo(order.getOrdChgSq());
 		
 		order.setPayAmt(order.getAddPayCost());
 		order.setOrdNm(order.getChgerNm());
@@ -1273,6 +1264,10 @@ public class TsfOrderController extends TsfBaseController {
 
 		Payment payment = orderService.setPgDataInfo(order);
 		payment.setOrdChgSq(order.getOrdChgSq());
+		
+		// 2021.05.10 추가
+		payment.setPayUrl("/addPayment");
+		payment.setRetUrl("/addPay/result/response");
 		mav.addObject("payment", payment);
 		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
 
@@ -1309,10 +1304,12 @@ public class TsfOrderController extends TsfBaseController {
 		}
 		param.setPayGb(TscConstants.PaymentGb.DELIVERY.value());
 		param.setUpdNo(param.getCustNo());
-
+		
+		log.info("CHECK CHG_SQ ::: {}", param.getOrdChgSq());
+		
 		// 2. 결재정보등록(TB_PAYMENT)
 		param = orderService.orderPgPayResult(param, request, response);
-		order.setOrdNo(param.getOrdNo());
+		order.setOrdNo(param.getOrdNo());		
 		order.setOrdChgSq(param.getOrdChgSq());
 		
 		// 3. 추가결제 상품목록

+ 41 - 15
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -1,31 +1,31 @@
 package com.style24.front.biz.web;
 
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.util.StringUtils;
-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.style24.core.biz.service.TscOrderService;
 import com.style24.front.biz.service.TsfOrderService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Payment;
-
 import kr.co.kcp.net.connection.ConnectionKCP;
 import kr.co.kcp.net.connection.dto.ParamData;
 import kr.co.kcp.net.connection.util.HttpJsonXml;
 import kr.co.kcp.net.connection.util.OpenHash;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+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 javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.Collection;
 
 @Controller
 @RequestMapping("/pg")
@@ -169,4 +169,30 @@ public class TsfPgController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
 		return mav;
 	}
+
+	/**
+	 * 네이버 페이 결제 모듈
+	 * @param request
+	 * @param response
+	 * @param cart
+	 * @param model
+	 * @return
+	 * @throws Exception
+	 */
+	@ResponseBody
+	@PostMapping("/nPayReq")
+	public GagaMap nPayReq(@RequestBody Order param) {
+		GagaMap map = new GagaMap();
+		//for(Order param : params) {
+		//	log.info("CHECK NPAY INPUT >>>> {} / {} / {}", param.getGoodsCd(), param.getOptCd(), param.getGoodsQty());
+		//}
+
+		for(int cartSq : param.getCartSqArr()) {
+			log.info("CHECK NPAY INPUT >>>> {}", param.getCartSqArr());
+		}
+
+		map = orderService.nPayReq50(param);
+
+		return map;
+	}
 }

+ 15 - 3
src/main/java/com/style24/persistence/domain/searchengine/SearchEngine.java

@@ -1,6 +1,7 @@
 package com.style24.persistence.domain.searchengine;
 
 import java.io.Serializable;
+import java.util.Collection;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscPageRequest;
@@ -17,6 +18,9 @@ import lombok.Data;
 @Data
 public class SearchEngine implements Serializable {
 
+	// 인기검색어 목록
+	Collection<Trend> trendList;
+
 	// 파라미터
 	private String siteCd;			// 사이트코드
 	private String cateGb;			// 카테고리구분
@@ -28,7 +32,7 @@ public class SearchEngine implements Serializable {
 	private Integer cate3No;		// 카테고리3번호
 	private Integer cate4No;		// 카테고리4번호
 	private Integer cate5No;		// 카테고리5번호
-	private String keyword;			// 검색어
+	private String keyword;			// 키워드
 	private Integer brandGroupNo;	// 브랜드그룹번호
 	private String formalGb;		// 정상이월구분
 	private String defaultCateYn;	// 기본카테고리사용여부
@@ -73,8 +77,16 @@ public class SearchEngine implements Serializable {
 	private String benefits;		// 혜택들(,로 연결된 문자열. 혜택구분:혜택명, ...)
 	private String likeIt;			// 좋아요(위시리스트에담긴상품)
 
-	private String adminIp;			// 검색엔진IP
-	private String adminPort;		// 검색엔진포트
+//	private String adminIp;			// 검색엔진IP
+//	private String adminPort;		// 검색엔진포트
 	private String returnCode;		// 검색오류코드(양수: 정상, 음수: 오류)
 
+	@Data
+	public class Trend {
+		// 인기검색어
+		private String keyword;	// 키워드
+		private int prevRank;	// 이전랭킹
+		private int ranking;	// 랭킹
+	}
+
 }

+ 198 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1344,9 +1344,16 @@
 	                        AND    C4.SITE_CD = #{siteCd}
 	                        AND    C4.CATE_GB = #{cateGb}
 	                        AND    C4.CATE_TYPE = 'G031_20' /*컨텐츠카테고리*/
-	                        <if test="pageGb == null or pageGb != 'BEST'">
-		                    AND    C4.CATE1_NO = #{cate1No}
-		                    </if>
+		                    <choose>
+		                        <when test="pageGb != null and pageGb == 'BEST'">
+		                            <if test="cate1No != null and cate1No != ''">
+		                            AND    C4.CATE1_NO = #{cate1No}
+		                            </if>
+		                        </when>
+		                        <otherwise>
+		                        AND    C4.CATE1_NO = #{cate1No}
+		                        </otherwise>
+		                    </choose>
 		                    AND    C4.CONTENTS_LOC = #{contentsLoc}
 		              </otherwise>
 		           </choose>
@@ -1362,7 +1369,14 @@
 		           ) G
 		    WHERE  1=1
 		<if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
-			AND  G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		    <choose>
+		        <when test="pageGb == 'BEST' and pageable.endRow >= 100">
+		    AND  G.NUMB BETWEEN #{pageable.startRow} AND 100
+		        </when>
+		        <otherwise>
+		    AND  G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		        </otherwise>
+		    </choose>
 		</if>
 		<if test="maxRow != null and maxRow !=''">
 			AND  G.NUMB <![CDATA[<=]]> #{maxRow}
@@ -1460,6 +1474,186 @@
 		                             AND W.CUST_NO = #{custNo}
 		</if>
 	</select>
+
+	<!-- 컨텐츠카테고리상품 건수 -->
+	<select id="getContentsCategoryGoodsCount"  parameterType="Cate4Srch" resultType="int">
+		/* TsfGoods.getContentsCategoryGoodsCount */
+		WITH TAB_GOODS AS (
+		           SELECT G.BRAND_GROUP_NM     /*브랜드그룹명*/
+		           , G.GOODS_CD           /*상품코드*/
+		           , G.GOODS_NM           /*상품명*/
+		           , G.GOODS_GB           /*상품구분*/
+		           , G.FOREIGN_BUY_YN     /*해외구매대행여부*/
+		           , G.PARALLEL_IMPORT_YN /*병행수입여부*/
+		           , G.ORDER_MADE_YN      /*주문제작여부*/
+		           , G.GOODS_TNM          /*상품타이틀명*/
+		           , G.MAIN_COLOR_CD      /*대표색상코드*/
+		           , G.LIST_PRICE         /*정상가(최초판매가)*/
+		           , G.CURR_PRICE         /*현재판매가*/
+		           , G.REG_DT             /*등록일시*/
+		           , G.NUMB
+		           FROM   (
+		                    SELECT CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                    BG.BRAND_GROUP_ENM
+		                    ELSE
+		                    BG.BRAND_GROUP_KNM
+		                    END                                    AS BRAND_GROUP_NM /*브랜드그룹명*/
+		                    , G.GOODS_CD                                               /*상품코드*/
+		                    , G.GOODS_NM                                               /*상품명*/
+		                    , G.GOODS_GB                                               /*상품구분*/
+		                    , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		                    , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		                    , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		                    , G.GOODS_TNM                                              /*상품타이틀명*/
+		                    , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		                    , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		                    , G.CURR_PRICE                                             /*현재판매가*/
+		                    , G.REG_DT                                                 /*등록일시*/
+		             <choose>
+		             	<when test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		             		, ROW_NUMBER() OVER(ORDER BY GS.SELL_WEEK_QTY DESC
+		             		, G.GOODS_CD) AS NUMB
+		             	</when>
+		             	<when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007' or contentsLoc == 'SMM012'"> <!-- md추천 -->
+		             		, ROW_NUMBER() OVER(ORDER BY CTG.DISP_ORD
+		             		, G.REG_DT DESC
+		             		, G.GOODS_CD) AS NUMB
+		             	</when>
+		             	<when test="contentsLoc == 'SCM002' or (contentsLoc == 'SCM003' and pageGb == null)"> <!-- md추천 -->
+		             		, ROW_NUMBER() OVER(ORDER BY CG.DISP_ORD ,G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC) AS NUMB
+		             	</when>
+		             	<when test="contentsLoc == 'SCM003' and pageGb != null and pageGb == 'BEST'">
+		             		, ROW_NUMBER() OVER(ORDER BY C4.CATE1_NO, CG.DISP_ORD ,G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC) AS NUMB
+		             	</when>
+		             	<otherwise>
+		             		, ROW_NUMBER() OVER(ORDER BY CG.DISP_ORD
+		             		, G.REG_DT DESC
+		             		, G.GOODS_CD) AS NUMB
+		             	</otherwise>
+		             </choose>
+		<choose>
+		        	<when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007' or contentsLoc == 'SMM012'"> <!-- md추천 -->
+		        		FROM	TB_CONTENTS CT
+		        		, TMP_CONTENTS_GOODS CTG
+		        		, TB_GOODS G
+		        		, TB_GOODS_STOCK S
+		        		, TB_BRAND B
+		        		, TB_BRAND_GROUP BG
+		        		WHERE	CT.CONTENTS_LOC = CTG.CONTENTS_LOC
+		        		AND 	CT.DISP_ORD = CTG.CONTENTS_SQ
+		        		AND		CTG.GOODS_CD = G.GOODS_CD
+		        		AND		CTG.GOODS_CD = S.GOODS_CD
+		        		AND		G.BRAND_CD = B.BRAND_CD
+		        		AND     B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		        		AND		CT.CONTENTS_LOC = #{contentsLoc}
+		        		AND 	CTG.CONTENTS_SQ = #{dispOrd}
+		        		AND		NOW() BETWEEN CT.DISP_STDT AND CT.DISP_EDDT
+		        	</when>
+		        	<otherwise>
+		        		FROM   TB_CATE_4SRCH C4
+		        		, TB_CATE_GOODS CG
+		        		, TB_GOODS G
+		        		, TB_GOODS_STOCK S
+		        		, TB_BRAND B
+		        		, TB_BRAND_GROUP BG
+		        		<if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		        			, TB_GOODS_SUMMARY GS
+		        		</if>
+		        		WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		        		<choose>
+		        			<when test="brandGroupNo != null and brandGroupNo != ''">
+		        				AND    CG.BRAND_GROUP_NO = #{brandGroupNo}</when>
+		        			<otherwise>
+		        				AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+		        			</otherwise>
+		        		</choose>
+		        		AND    CG.GOODS_CD = G.GOODS_CD
+		        		AND    CG.GOODS_CD = S.GOODS_CD
+		        		AND    G.BRAND_CD = B.BRAND_CD
+		        		AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		        		<if test="contentsLoc == 'SCM002'"> <!-- 베스트 -->
+		        			AND    CG.GOODS_CD = GS.GOODS_CD
+		        		</if>
+		        		AND    C4.SITE_CD = #{siteCd}
+		        		AND    C4.CATE_GB = #{cateGb}
+		        		AND    C4.CATE_TYPE = 'G031_20' /*컨텐츠카테고리*/
+		        		<choose>
+		        			<when test="pageGb != null and pageGb == 'BEST'">
+		        				<if test="cate1No != null and cate1No != ''">
+		        					AND    C4.CATE1_NO = #{cate1No}
+		        				</if>
+		        			</when>
+		        			<otherwise>
+		        				AND    C4.CATE1_NO = #{cate1No}
+		        			</otherwise>
+		        		</choose>
+		        		AND    C4.CONTENTS_LOC = #{contentsLoc}
+		        	</otherwise>
+		        </choose>
+		        AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		        AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		        AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+		        AND    S.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		        AND    B.USE_YN = 'Y'
+		        AND    BG.USE_YN = 'Y'
+		        <if test="pageGb != null and pageGb == 'BEST'">
+		        	ORDER BY C4.CATE1_NO
+		        </if>
+		        ) G
+		    WHERE  1=1
+		    <if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
+		    	AND  G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		    </if>
+		    <if test="maxRow != null and maxRow !=''">
+		    	AND  G.NUMB <![CDATA[<=]]> #{maxRow}
+		    </if>
+		    )
+		    , TAB_GOODS_IMG AS (
+		         /* 상품의 이미지 */
+		         SELECT GOODS_CD
+		               ,MAX(SYS_IMG_NM) AS SYS_IMG_NM
+		               ,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
+		         FROM (
+		                SELECT G.GOODS_CD
+		                , CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END   AS SYS_IMG_NM
+		                , CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
+		                FROM   TAB_GOODS G
+		                , TB_GOODS_IMG GI
+		                WHERE  G.GOODS_CD = GI.GOODS_CD
+		                AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		         ) Z
+		         GROUP BY GOODS_CD
+		    )
+		, TAB_GOODS_VIDEO AS (
+		        /* 상품의 동영상 목록 */
+		        SELECT GOODS_CD
+		        , MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END)  AS VIDEO_GB_M
+		        , MAX(CASE WHEN RNUM = 1 THEN KMC_KEY END) AS VIDEO_VAL_M
+		        , MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END)  AS VIDEO_GB_S
+		        , MAX(CASE WHEN RNUM = 2 THEN KMC_KEY END) AS VIDEO_VAL_S
+		        FROM   (
+		             SELECT G.GOODS_CD
+		             , VD.VIDEO_GB
+		             , VD.KMC_KEY
+		             , VD.REG_DT
+		             , RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY VD.REG_DT) AS RNUM
+		             FROM   TAB_GOODS G
+		             , TB_GOODS_VIDEO VD
+		             WHERE  G.GOODS_CD = VD.GOODS_CD
+		             AND    VD.DISP_YN = 'Y'
+		             AND    VD.KMC_KEY IS NOT NULL
+		        ) Z
+		    GROUP  BY GOODS_CD
+		)
+		SELECT COUNT(1) AS CNT
+		FROM TAB_GOODS G
+		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+			LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
+			AND W.CUST_NO = #{custNo}
+		</if>
+	</select>
 	
 	<!-- 컨텐츠카테고리 신규상품 목록 -->
 	<select id="getContentsCategoryNewGoodsList"  parameterType="Cate4Srch" resultType="Goods">

+ 11 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -840,6 +840,14 @@
 		AND   GOODS_CD   = #{goodsCd}
 	</update>
 	
+	<update id="updateMypageReviewConfimYn" parameterType="Review">
+		/* TsfReivew.updateMypageReviewConfimYn */
+		UPDATE TB_REVIEW
+		SET CONFIRM_YN = 'N'
+		   ,CONFIRM_DT = NOW()
+		WHERE REVIEW_SQ  = #{reviewSq}
+	</update>
+	
 	
 	
 	
@@ -884,6 +892,7 @@
 				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S')
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
+				AND R.CONFIRM_YN = 'Y'
  				AND O.SITE_CD = #{siteCd}
 			GROUP BY O.ORD_NO 
 			      ,O.ORD_NM 
@@ -1112,6 +1121,7 @@
 		   AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
 		   AND O.CUST_NO =  #{custNo}
 		   AND O.DISP_YN = 'Y'
+		   AND R.CONFIRM_YN = 'Y'
 		   AND O.SITE_CD =  #{siteCd}
 		   	) Z
 		 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.DELV_EDDT, Z.ORD_DTL_NO, Z.ORD_EXCH_GB
@@ -1176,7 +1186,7 @@
 		 AND RA.DEL_YN = 'N'
 		 AND (RA.FILE_GB  = 'I'
 		      OR
-		      RA.FILE_GB = 'M' AND R.CONFIRM_YN = 'Y'  AND  RA.KMC_KEY IS NOT NULL
+		      RA.FILE_GB = 'M' AND R.CONFIRM_YN = 'Y'  AND  NULLIF(RA.KMC_KEY,'') IS NOT NULL
 		     )
 	</select>
 	

+ 8 - 1
src/main/resources/config/application-locd.yml

@@ -87,9 +87,16 @@ naverPay:
     button.key : 5DF64042-EF37-45F1-878E-67C7098135E6
     common.certification.key : s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
+    order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
 
 # ERP (한세드림)
 erp:
    api:
        stock.url: http://erp.hansaemk.com:96/api/hsdr/Shop/GoodsInfo
-       goods.url: http://erp.hansaemk.com:96/api/hsdr/Shop
+       goods.url: http://erp.hansaemk.com:96/api/hsdr/Shop
+
+# 검색엔진(NHN다이퀘스트)
+search:
+    engine:
+        diquest.ip: 133.186.171.33
+        diquest.port: 44555

+ 27 - 0
src/main/resources/config/application-run.yml

@@ -51,6 +51,16 @@ upload:
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
         view: //image.istyle24.com/Upload
+    excel:
+        target.path: /files/data/style24/excel
+        max.size: 10
+        allow.extension: xls|xlsx
+        view: //image.istyle24.com/Upload/excel
+    sample:
+        target.path: /files/data/style24/sample
+        max.size: 10
+        allow.extension: txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
+        view: //image.style24.com/Upload/sample
 
 download.path: /files/data/style24
 
@@ -98,3 +108,20 @@ naverPay:
     payUrl:
         web : pay.naver.com
         mob : m.pay.naver.com
+    shop.id: istyle2401
+    button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
+    common.certification.key: s_3799db3bf4af-
+    certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
+    order.api.url: https://api.pay.naver.com/o/customer/api/order/v20/register
+
+# ERP (한세드림)
+erp:
+   api:
+       stock.url: http://erp.hansaemk.com:96/api/hsdr/Shop/GoodsInfo
+       goods.url: http://erp.hansaemk.com:96/api/hsdr/Shop
+
+# 검색엔진(NHN다이퀘스트)
+search:
+    engine:
+        diquest.ip: 133.186.171.33
+        diquest.port: 44555

+ 14 - 1
src/main/resources/config/application-style.yml

@@ -21,7 +21,7 @@ logging:
 domain:
     admin: //bos.style24.com
     front: //www.style24.com
-    image: //image.istyle24.com
+    image: //image.istyle24.com/Upload
     uximage: //www.style24.com
 
 
@@ -87,3 +87,16 @@ naverPay:
     button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
     common.certification.key: s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
+    order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
+
+# ERP (한세드림)
+erp:
+   api:
+       stock.url: http://erp.hansaemk.com:96/api/hsdr/Shop/GoodsInfo
+       goods.url: http://erp.hansaemk.com:96/api/hsdr/Shop
+
+# 검색엔진(NHN다이퀘스트)
+search:
+    engine:
+        diquest.ip: 133.186.171.33
+        diquest.port: 44555

+ 5 - 0
src/main/resources/config/application-tsit.yml

@@ -84,3 +84,8 @@ naverPay:
     payUrl:
         web : test-pay.naver.com
         mob : test-m.pay.naver.com
+    shop.id: istyle2401
+    button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
+    common.certification.key: s_3799db3bf4af-
+    certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
+    order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register

BIN
src/main/webapp/WEB-INF/lib/AutoSearch.jar


BIN
src/main/webapp/WEB-INF/lib/diquest.jar


BIN
src/main/webapp/WEB-INF/lib/json_simple-1.1.jar


BIN
src/main/webapp/WEB-INF/lib/m4_client.jar


BIN
src/main/webapp/WEB-INF/lib/m4_common.jar


BIN
src/main/webapp/WEB-INF/lib/m4_util.jar


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

@@ -16,6 +16,22 @@
 
 	<!-- CONTENT AREA -->
 	<th:block layout:fragment="content"></th:block>
+	<form id="createReview" name="createReview" th:action="@{'/mypage/review/create/form'}" th:method="post">
+		<input type="hidden" name="ordNo"/>
+		<input type="hidden" name="ordDtlNo"/>
+		<input type="hidden" name="goodsCd"/>
+		<input type="hidden" name="reviewStat"/>
+	</form>
+	<form id="addPaymentForm" name="addPaymentForm" th:action="@{'/order/addPaymentForm'}" th:method="post">
+		<input type="hidden" name="ordNo"/>
+		<input type="hidden" name="ordChgSq"/>
+	</form>
+	<form id="deliveryInfoForm" name="deliveryInfoForm" th:action="@{'/mypage/delivery/info/form'}" th:method="post">
+		<input type="hidden" name="ordNo"/>
+		<input type="hidden" name="ordDtlNo"/>
+		<input type="hidden" name="shipCompCd"/>
+		<input type="hidden" name="invoiceNo"/>
+	</form>
 	<!-- // CONTENT AREA -->
 
 	<!-- Footer -->

+ 4 - 4
src/main/webapp/WEB-INF/views/mob/display/BestMainFormMob.html

@@ -25,7 +25,7 @@
 			<div class="inner wide">
 				<div class="category_nav">
 					<ul id="cateListArea">
-						<li><button type="button" class="active" id="li0" onclick="fnBestListSearch(this,0);">전체</button></li>
+						<li><button type="button" class="active" id="li0" onclick="fnBestListSearch(this,'');">전체</button></li>
 						<th:block th:each="item, stat : ${bestCateList}">
 							<li class="" th:id="${'li'+item.cateNo}"><button type="button" th:onclick="fnBestListSearch(this,[[${item.cateNo}]]);" th:text="${item.cateNm}">여성</button></li>
 						</th:block>
@@ -309,9 +309,9 @@
 		});
 
 		var fnBestListSearch = function (obj, cateNo){
-			if(gagajf.isNull(cateNo)){
-				cateNo = 0;
-			}
+			// if(gagajf.isNull(cateNo)){
+			// 	cateNo = 0;
+			// }
 
 			$.each($("#cateListArea").find('li'), function() {
 				$(this).removeClass();

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html

@@ -118,7 +118,7 @@
 					</div>
 				</th:block>
 
-				<th:block th:if="${contentsLoc=='006'}">
+				<th:block th:if="${contentsLoc=='006' || contentsLoc=='014'||contentsLoc=='015'||contentsLoc=='016'}">
 					<!-- 배너 슬라이드 -->
 					<div class="inner wide" th:if="${brandMainLayoutData.ContentsList!=null}">
 						<div class="swiper-container br_second_slide">

+ 1 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html

@@ -297,6 +297,7 @@
 				<!-- 교환 배송비결제 필요할 경우 -->
 				<div class="required_group" id="addDeliveryFee" style="display:none">
 					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
+					<input type="hidden" name="addPayCost"/>
 				</div>
 				<!-- //교환 배송비결제 필요할 경우 -->
 				<div class="btn_group btn_group_flex">

+ 75 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentCompleteMob.html

@@ -0,0 +1,75 @@
+<!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/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : OrderAddPaymentCompleteMob.html
+ * @desc    : 추가결제완료화면 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.10   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+
+<main class="container od">
+	<section class="content completed">
+		<div class="inner wide">
+			<div class="info_complete">
+				<img src="/images/mo/ico_complete_check.png" alt="결제완료">
+				<p class="txt_box">결제가 완료되었습니다.</p>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="tbl_wrap pay_wrap">
+				<div class="tbl_tit"> 
+					<h3>결제 정보</h3>
+					<strong class="pay"><span th:text="|${#numbers.formatInteger(addPayCost, 1, 'COMMA')}|"></span>원</strong>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="227">
+							<col width="*">
+						</colgroup>   
+						<tr>
+							<td>
+								<dl>
+									<div>
+										<dt>반품/교환 배송비</dt>
+										<dd>
+											<div>
+												<span th:text="|${#numbers.formatInteger(addPayCost, 1, 'COMMA')}|"></span>원
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>결제방법</dt>
+										<dd>
+											<div>
+												신용카드
+											</div>
+										</dd>
+									</div>
+								</dl>
+							</td>
+						</tr>
+					</table>
+				</div>
+			</div>
+			<div class="btn_group btn_group_flex">
+				<div><button type="button" class="btn btn_dark" onclick="location.href='/'"><span>쇼핑 계속하기</span></button></div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<script th:inline="javascript">
+</script>
+</th:block>
+</body>
+</html>

+ 280 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html

@@ -0,0 +1,280 @@
+<!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/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : OrderAddPaymentMob.html
+ * @desc    : 추가결제화면 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.10   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+
+<!-- payment.js -->
+<script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
+<script type="text/javascript" src="/biz/payment.js"></script>
+
+<!-- 주문정보form -->
+<form id="order_info" name="order_info" method="post" action="/order/addPay/result/response" style="display:none"></form>
+<!-- //주문정보form -->
+
+<form class="form_wrap" name="addPayForm" id="addPayForm">
+	<input type="hidden" name="refundAmt" 		th:value="${refundAmt}">
+	<input type="hidden" name="ordNo" 			th:value="${ordNo}">
+	<input type="hidden" name="addPayCost" 		th:value="${addPayCost}">
+	<input type="hidden" name="ordChgSq" 		th:value="${ordChgSq}">
+	
+	<input type="hidden" name="chgGb" 			th:value="${chgGb}">
+	<input type="hidden" name="chgerPhnno" 		th:value="${chgerPhnno}">
+	<input type="hidden" name="chgerNm" 		th:value="${chgerNm}">
+	<input type="hidden" name="goodsNm" 		th:value="${goodsNm}">
+
+	<main class="container od">
+		<section class="content od_extra">
+			<form action="" class="form_wrap">
+				<!-- 주문내역 -->
+				<div class="inner wide">
+					<div class="foldGroup">
+						<ul>
+							<li class="fold_order">
+								<div class="fold_head">
+									<a href="javascript:void(0)">
+										<div>
+											<div class="fold_tit">
+												<th:block th:if="${chGb} == 'G680_20'">
+													<span pan>취소상품</span>
+												</th:block>
+												<th:block th:if="${chGb} == 'G680_30'">
+													<span pan>반품상품</span>
+												</th:block>
+												<th:block th:if="${chGb} == 'G680_40'">
+													<span pan>교환상품</span>
+												</th:block>
+											</div>
+										</div>
+									</a>
+								</div>
+								<div class="fold_cont" style="display: none;">
+									<div class="od_item_box">
+										<div class="part_goods">
+											<th:block th:each="goods, i : ${orderAddPayGoodsList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+												<div class="goods_section">
+													<div class="goods_detail">
+														<a href="">
+															<div class="thumb_box">
+																<img th:src="${imageUrl + '/' + goods.sysImgNm}" src="/" width="100%" alt="">
+															</div>
+															<div class="info_box">
+																<div class="od_name">
+																	<div class="brand">
+																		<span th:text="${goods.brandEnm} + ' ' + ${goods.brandKnm}"></span>
+																	</div>
+																	<div class="name" th:text="${goods.goodsNm}"></div>
+																</div>
+																<div class="od_opt">
+																	<div class="option" th:each="colorNm, index : ${goods.colorNmArr}">
+																		<em th:text="${colorNm}"></em><em th:text="${goods.optCd2Arr[index.index]}"></em>
+																	</div>
+																</div>
+															</div>
+														</a>
+													</div>
+													<div class="od_calc">
+														<p class="count">수량 <em th:text="${goods.chgQty}"></em>개</p>
+														<p class="price">
+															<span class="selling_price"><em th:text="${#numbers.formatInteger((goods.currPrice + goods.optAddPrice) * goods.chgQty, 1, 'COMMA')}"></em>원</span>
+														</p>
+													</div>
+												</div>
+											</th:block>
+										</div>
+									</div>
+									<div class="od_amount_box">
+										<dl>
+											<div>
+												<dt>환불상품금액</dt>
+												<dd th:text="|${#numbers.formatInteger(refundAmt, 1, 'COMMA')}원|"></dd>
+											</div>
+											<div>
+												<dt>반품/교환배송비</dt>
+												<dd th:text="|${#numbers.formatInteger(addPayCost, 1, 'COMMA')}원|"></dd>
+											</div>
+										</dl>
+									</div>
+									<div class="totalprice_box">
+										<dl>
+											<dt>총 결제 예정 금액</dt>
+											<dd data-weight="price" data-font="lato"><span th:text="|${#numbers.formatInteger(addPayCost, 1, 'COMMA')}|"></span>원</dd>
+										</dl>
+									</div>
+									<div class="announce_txt">
+										<div class="announce_list">
+											<ul>
+												<li>환불할 상품금액이 반품/교환 배송비보다 적을 경우 배송비를 결제하신 후 남은 상품금액이 환불처리 됩니다.</li>
+											</ul>
+										</div>
+									</div>
+								</div>
+								<!-- //주문고객정보 -->
+							</li>
+						</ul>
+					</div>
+				</div>
+				<!-- //주문내역 -->
+				
+				<!-- 결제 정보 -->
+				<div class="inner">
+					<div class="tbl_wrap">
+						<div class="tbl_tit"> 
+							<h3>결제수단 선택</h3>
+						</div>
+						<div class="tbl tbl_radio">
+							<table>
+								<colgroup>
+									<col width="*">
+								</colgroup>   
+								<tbody>
+									<tr>
+										<th class="sr-only">신용카드</th>
+										<td>
+											<div class="form_field">
+												<input id="chk-1" type="radio" name="rdi-paynormal" value="KCP|G014_30" checked="checked">
+												<label for="chk-1"><span>신용카드</span></label>
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<th class="sr-only">휴대폰결제</th>
+										<td>
+											<div class="form_field">
+												<input id="chk-2" type="radio" name="rdi-paynormal" value="KCP|G014_60">
+												<label for="chk-2"><span>휴대폰 결제</span></label>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+					</div>
+					<div class="area_paymentinfo">
+						<div class="paymentinfo">
+							<div class="payinfo_blk_wrap">
+								<a href="javascript:void(0);">
+									구매조건 확인 및 결제대행 서비스 약관 동의
+									<span>보기</span>
+								</a>
+								<div class="payinfo_blk_parent">
+									<div class="payinfo_blk">
+										<a href="javascript:void(0);">
+											개인정보 제공에 대한 동의
+											<span>보기</span>
+										</a>
+										<div class="infotxt">
+											개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.
+										</div>
+									</div>
+									<div class="payinfo_blk">
+										<a href="javascript:void(0);">
+											결제대행 서비스 약관 동의
+											<span>보기</span>
+										</a>
+										<div class="infotxt">
+											결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.
+										</div>
+									</div>
+								</div>
+							</div>
+							
+						</div>
+						
+						<div class="agree_payment">
+							위 주문내역을 확인 하였으며, 회원 본인은 <br> 결제에 동의합니다.
+						</div>
+					</div>
+				</div> 
+	
+				<!-- //결제 정보 -->
+				<div class="inner wide">
+					<div class="area_paybtn">
+						<div class="btn_group btn_group_flex">
+							<div>
+								<button type="button" class="btn btn_primary" id="btn_payment">동의 후 <span class="total_price" th:text="|${#numbers.formatInteger(addPayCost, 1, 'COMMA')}|"></span>원 결제하기</button>
+							</div>
+						</div>
+					</div>
+				</div>
+			</form>
+		</section>
+	</main>
+</form>
+
+<script th:inline="javascript">
+//결재하기
+$("#btn_payment").on("click", function(){
+	var paynormal			= $("input[name='rdi-paynormal']:checked").val();
+	var paynormalArr		= paynormal.split("|");
+	var pgGb				= paynormalArr[0];
+	var payMeans			= paynormalArr[1];
+	
+	// 주문데이타 생성
+	var orderData = {
+		"pgGb"					: pgGb
+		,"payMeans"				: payMeans // 네이버페이, 카카오페이
+		,"ordNo"				: $("#addPayForm input[name=ordNo]").val()
+		,"addPayCost"			: $("#addPayForm input[name=addPayCost]").val()
+		,"ordChgSq"				: $("#addPayForm input[name=ordChgSq]").val()
+		,"chgGb"				: $("#addPayForm input[name=chgGb]").val()
+		,"chgerPhnno"			: $("#addPayForm input[name=chgerPhnno]").val()
+		,"chgerNm"				: $("#addPayForm input[name=chgerNm]").val()
+		,"goodsNm"				: $("#addPayForm input[name=goodsNm]").val()
+	};
+	
+	$.ajax( {
+		type		: "POST",
+		url 		: '/order/addPayment',
+		data		: JSON.stringify(orderData),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+		},
+		success 	: function(result) {
+			// 결재정보로드
+			$("#order_info").html(result);
+			
+			var pgGb = $("#order_info input[name=pgGb]").val();
+			
+			if (pgGb == "NAVER") {
+				fnNaverPaymentReady();
+			} else if (pgGb == "KAKAO") {
+				fnKakaoPaymentReady();
+			} else if (pgGb == "KCP" || pgGb == "PAYCO") {
+				jsf__pay(document.order_info);
+			}
+		}
+	});
+});
+</script>
+<script type="text/javascript">
+$(document).ready( function() {
+	//TabWrap, TabIndex
+	$(document).on('click', '.tabIndex li a', function() {
+		var $this = $(this),
+		$tabList = $this.parents('ul'),
+		_idx = $this.closest('li').index();
+	
+		$tabList.children().eq(_idx).addClass('active').siblings().removeClass('active');
+		$tabList.next().children().eq(_idx).addClass('active').siblings().removeClass('active');
+	});
+});
+</script>
+</th:block>
+</body>
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -65,7 +65,7 @@
 	<!-- //고객정보 -->
 	
 	<!-- 사은품정보 -->
-	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="freegiftInfo" id="freegiftInfo">
+	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="freegiftInfo">
 		<tr style="height:30px;">
 			<th>freegiftValArr</th>
 			<th>freegiftUsePointArr</th>

+ 3 - 2
src/main/webapp/WEB-INF/views/mob/pg/kcpOrderMob.html

@@ -28,8 +28,8 @@
 	<input type="hidden" name="van_code"		value="">							<!-- 인증시 필요한 파라미터(변경불가)-->
 	<input type="hidden" name="quotaopt"		th:value="${payment.quotaopt}"/>	<!-- 최대 할부 개월 수(0 ~ 18까지 설정 가능) -->
 	<input type="hidden" name="ipgm_date"		value=""/>							<!-- 가상계좌설정 -->
-	<input type="hidden" name="PayUrl"			th:value="${'http:' + @environment.getProperty('domain.front') + '/order/create/preOrder'}" id="PayUrl"/>	<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
-	<input type="hidden" name="Ret_URL"			th:value="${'http:' + @environment.getProperty('domain.front') + '/pg/pay/result/response'}">			<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
+	<input type="hidden" name="PayUrl"			th:value="${'http:' + @environment.getProperty('domain.front') + payment.payUrl}" id="PayUrl"/>	<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
+	<input type="hidden" name="Ret_URL"			th:value="${'http:' + @environment.getProperty('domain.front') + payment.retUrl}">			<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
 
 	<input type="hidden" name="tablet_size"		value="1.0">						<!-- 화면 크기 조정 -->
 	<input type="hidden" name="response_type"	value="TEXT"/>						<!-- 결제 정보 등록시 응답 타입 ( 필드가 없거나 값이 '' 일경우 TEXT, 값이 XML 또는 JSON 지원 -->
@@ -51,6 +51,7 @@
 	<input type="hidden" name="cash_tr_code"	value=""/>
 	<input type="hidden" name="param_opt_1"		th:value="${payment.pgGb}" />		<!-- 모바일은 URL 로 변수 이동하므로 추가 변수로 KCP인지 PAYCO인지 송부 -->
 	<input type="hidden" name="param_opt_2"		th:value="${payment.shopUserId}" />	<!-- 모바일은 URL 로 변수 이동하므로 추가 변수로 custNo 송부 -->
+	<input type="hidden" name="param_opt_3"		th:value="${payment.ordNo}" />		<!-- 모바일은 URL 로 변수 이동하므로 추가 변수로 custNo 송부 -->
 
 	<input type="hidden" name="shop_user_id"	th:value="${payment.shopUserId}" />	<!-- 필수, 쇼핑몰회원ID 기관에 따라 RM 조치를 위해 쇼핑몰 관리 ID를 필수로 요청 -->
 

+ 4 - 4
src/main/webapp/WEB-INF/views/web/display/BestMainFormWeb.html

@@ -37,7 +37,7 @@
 					<div class="taps">
 						<div>
 							<ul id="cateListArea">
-								<li class="active" id="li0"><a href="javascript:void(0);" onclick="fnBestListSearch(this,0);">전체</a></li>
+								<li class="active" id="li0"><a href="javascript:void(0);" onclick="fnBestListSearch(this,'');">전체</a></li>
 								<th:block th:each="item, stat : ${bestCateList}">
 									<li class="" th:id="${'li'+item.cateNo}"><a href="javascript:void(0);" th:onclick="fnBestListSearch(this,[[${item.cateNo}]]);" th:text="${item.cateNm}"></a></li>
 								</th:block>
@@ -296,9 +296,9 @@
 	});
 
 	var fnBestListSearch = function (obj, cateNo){
-		if(gagajf.isNull(cateNo)){
-			cateNo = 0;
-		}
+		// if(gagajf.isNull(cateNo)){
+		// 	cateNo = 0;
+		// }
 
 		$.each($("#cateListArea").find('li'), function() {
 			$(this).removeClass();

+ 1 - 1
src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html

@@ -127,7 +127,7 @@
 
 				<!-- 가로 긴 배너 슬라이드 -->
 				<!-- 브랜드 배너 -->
-				<th:block th:if="${contentsLoc=='006'}">
+				<th:block th:if="${contentsLoc=='006' || contentsLoc=='014'||contentsLoc=='015'||contentsLoc=='016}">
 					<div class="content wide main_1stage">
 						<div class="cont_head dpnone">
 							<p class="t_c">배너 슬라이드</p>

+ 74 - 35
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -372,9 +372,6 @@
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
 									<script type="text/javascript" src="http://pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
 									<script type="text/javascript" >
-										//<![CDATA[
-										/*#if($!NPAY_USE_YN == "Y")
-										#if ($LANG == "ko")*/
 										/*버튼설정*/
 										naver.NaverPayButton.apply({
 											BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
@@ -385,47 +382,59 @@
 											BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
 											"":""
 										});
-										/*#end
-										#end*/
 
 										/*네이버구매하기*/
 										function buy_nc(url) {
-											if ($('#goods_color').val().isBlank()) {
-												alert("$!{rc.getMessage(\"msg.alert.validation.select.color\")}");    /*컬러*/
-												return false;
-											}
-											if ($('#goods_size').val().isBlank()) {
-												alert("$!{rc.getMessage(\"msg.alert.validation.select.option\")}");   /*옵션*/
-												return false;
-											}
-											if ($('#size_qty').val().isBlank()) {
-												alert("$!{rc.getMessage(\"msg.alert.validation.select.qty\")}");      /*수량*/
-												return false;
-											}
+											let goodsCd = "[[${goodsInfo.goodsCd}]]";
+											let optCd = $(".opt_size .form_field input[type=radio]:checked").attr("optcd");
+											let goodsQty = $(".opt_count .number_count input[name=cea]").val();
+											let goodsType = "[[${goodsInfo.goodsType}]]";
 
-											/*네이버페이로 주문 정보를 등록하는 가맹점 페이지로 이동.*/
-											var itemCount   = $('#size_qty').val();
-											var itemUPrice  = "$!shopView.sale_amt";
-											var itemTPrice  = itemUPrice * itemCount;
+											if(goodsType == "G056_N") {
+												if (!goodsCd) {
+													mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+													return false;
+												}
+												if (!optCd) {
+													mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+													return false;
+												}
+												if (!goodsQty || goodsQty < 1) {
+													mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+													return false;
+												}
 
-											var params          = new Object();
-											params.ITEM_CD      = $('#goods_code').val();
-											params.ITEM_COUNT   = itemCount;
-											params.ITEM_OPTION  = $('#goods_color').val()+"/"+$('#goods_size').val();
-											params.BACK_URL     = location.href;
+												let compsList = [];
+												let obj = new Object();
+												obj.goodsCd = goodsCd;
+												obj.optCd = optCd;
+												obj.goodsQty = goodsQty;
+												obj.goodsType = goodsType;
+												obj.cartGb = "N";
+												obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+												obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+												obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+												obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+												compsList.push(obj);
 
-											var nPayReqUrl     = "/order/nPayReq.do";
+												// 장바구니담기
+												cfnAddCart(compsList);
+											} else {
+												// TODO 세트상품 추가 예정
+												alert("개발 중");
+											}
 
-											/*네이버페이 ajax*/
-											jQuery.ajax({
-												type        : 'POST',
-												url         : '/order/nPayReq.do',
-												data        : params,
+											/*$.ajax( {
+												type        : "POST",
+												url         : "/pg/nPayReq",
+												dataType    : 'json',
+												contentType : 'application/json',
+												data        : JSON.stringify(param),
 												async       : false,
 												error: function(xhr, status, error) {
-													alert(status + '; ' + error);
+													alert("!!  " + status + '; ' + error);
 												},
-												success     : function(result) {
+												success : function(result) {
 													if (result.state == "sucess") {
 														window.open('about:blank', 'popupView');
 														document.nPayForm.target = 'popupView';
@@ -435,7 +444,7 @@
 														alert(result.message);
 													}
 												}
-											});
+											});*/
 
 											//해당 페이지에서 주문 정보 등록 후 네이버페이 주문서 페이지로 이동.
 											//네이버페이로 주문 정보를 등록하는 가맹점 페이지로 이동.
@@ -443,6 +452,36 @@
 											return false;
 										}
 
+										function buy_nc_req(cartSqArr) {
+											alert(cartSqArr.length);
+											// buyList[0].backUrl = location.href;
+
+											$.ajax( {
+												type		: "POST",
+												url 		: "/pg/nPayReq",
+												dataType 	: 'json',
+												data		: {cartSqArr : JSON.stringify(cartSqArr)},
+												beforeSend : function(xhr, settings) {
+													xhr.setRequestHeader("AJAX"			, "true");
+													xhr.setRequestHeader('Accept'		, 'application/json');
+													xhr.setRequestHeader('Content-Type'	, 'application/json');
+												},
+												error: function(xhr, status, error) {
+													alert(status + '; ' + error);
+												},
+												success : function(result) {
+													if (result.state == "sucess") {
+														window.open('about:blank', 'popupView');
+														document.nPayForm.target = 'popupView';
+														document.nPayForm.action = "$!{NPAY_ORDER_URL}" + result.orderKey + "/" + result.resultNo;
+														document.nPayForm.submit();
+													} else {
+														alert(result.message);
+													}
+												}
+											});
+										}
+
 										/*네이버찜*/
 										/*function wishlist_nc(url) {
 											// 네이버페이로 찜 정보를 등록하는 가맹점 페이지 팝업 창 생성.

+ 4 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html

@@ -68,9 +68,10 @@
 						if (reviewAttach.fileGb == "M") fileGbClass = "mov";
 				tag +='		<span class="thumb" class="'+fileGbClass+'">\n';<!-- 동영상의 썸네일일 경우 mov 클래스 추가-->
 						if (reviewAttach.fileGb == "M") {
-				tag +='			<video poster="http://cdn.011st.com/11dims/resize/1999x1999/quality/75/11src/review/10201202/3121412332/2e66698576d64c5c9977a6fe6606008d.jpg" muted="muted" preload="metadata" controls="controls">\n';
-				tag +='				<source src="'+_kollusMediaUrl+'/'+reviewAttach.kmcKey + 'player_version=html5" type="video/mp4">\n';
-				tag +='			</video>\n';
+			    tag +='<iframe width="100%" height="100%" src="'+_kollusMediaUrl+'/'+reviewAttach.kmcKey + '/player_version=html5" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>';
+				//tag +='			<video poster="'+_kollusMediaUrl+'/'+reviewAttach.kmcKey + '/player_version=html5" muted="muted" preload="metadata" controls="controls">\n';
+				//tag +='				<source src="'+_kollusMediaUrl+'/'+reviewAttach.kmcKey + '/player_version=html5" type="video/mp4">\n';
+				//tag +='			</video>\n';
 						}else{
 				tag +='			<img src="'+ _imgUrl + reviewAttach.sysFileNm +'" alt="">\n';	
 						}

+ 3 - 3
src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentCompleteWeb.html

@@ -2,8 +2,8 @@
 <html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="web/common/layout/DefaultLayoutWeb">
 <!--
  *******************************************************************************
- * @source  : OrderAddPaymentWeb.html
- * @desc    : 추가결제화면 Page
+ * @source  : OrderAddPaymentCompleteWeb.html
+ * @desc    : 추가결제완료화면 Page
  *============================================================================
  * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
@@ -75,7 +75,7 @@
 					</div>
 					<div class="sec_foot">
 						<div class="btn_group_md">
-							<button type="button" class="btn btn_dark btn_md"><span>쇼핑 계속하기</span></button>
+							<button type="button" class="btn btn_dark btn_md" onclick="location.href='/'"><span>쇼핑 계속하기</span></button>
 						</div>
 					</div>
 				</div>

+ 78 - 10
src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html

@@ -3,14 +3,14 @@
 <!--
  *******************************************************************************
  * @source  : OrderAddPaymentWeb.html
- * @desc    : 추가결제화면 Page
+ * @desc	: 추가결제화면 Page
  *============================================================================
  * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
  *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
+ * VER  DATE		 AUTHOR	  DESCRIPTION
  * ===  ===========  ==========  =============================================
- * 1.0  2021.04.13   jsh77b     최초 작성
+ * 1.0  2021.04.13   jsh77b	 최초 작성
  *******************************************************************************
  -->
 <body>
@@ -69,23 +69,81 @@
 								</div>
 								<div class="area_paymentinfo">
 									<div class="paymentinfo">
+										<!-- 210421_수정 : 테이블 추가. -->
 										<div class="payinfo_blk">
-											<a href="javascript:void(0);">개인정보 제공에 대한 동의<span>보기</span></a>
+											<a href="javascript:void(0)">
+												개인정보 제공에 대한 동의
+												<span>보기</span>
+											</a>
 											<div class="infotxt">
-												개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.
+												STYLE24는 다음과 같이 회원님의 개인정보를 제3자에게 제공합니다.
+												<table>
+													<colgroup>
+														<col width="25%">
+														<col width="*">
+														<col width="25%">
+														<col width="25%">
+													</colgroup>
+													<thead>
+														<tr>
+															<th>제공받는 자</th>
+															<th>제공하는 항목</th>
+															<th>제공 목적</th>
+															<th>보유 및 이용기간</th>
+														</tr>
+													</thead> 
+													<tbody>
+														<tr>
+															<td>
+																서울보증보험㈜, ㈜유세이프
+															</td>
+															<td>
+																구매자명, 구매자 생년월일,
+																구매자 성별, 구매자 연락처
+																(일반전화 및 핸드폰), 구매자
+																이메일, 주문번호,
+																배송지 정보, 주문 금액
+															</td>
+															<td>
+																쇼핑몰보증보험 가입 및 보험가입 제반 사항
+															</td>
+															<td>
+																개별서비스 제공기간
+															</td>
+														</tr>
+														<tr>
+															<td>
+																더비오유컴퍼니 주식회사
+															</td>
+															<td>
+																성명, 주소, 연락처
+															</td>
+															<td>
+																주문상품의 배송, 고객상담 및 불만처리
+															</td>
+															<td>
+																이용목적 달성 시 까지
+															</td>
+														</tr>
+													</tbody>
+												</table>
 											</div>
 										</div>
+										<!-- 210421_수정 : 테이블 추가. -->
 										<div class="payinfo_blk">
-											<a href="javascript:void(0);">결제대행 서비스 약관 동의<span>보기</span></a>
+											<a href="">
+												결제대행 서비스 약관 동의
+												<span>보기</span>
+											</a>
 											<div class="infotxt">
 												결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.
+											</div>
 										</div>
 									</div>
+									<div class="agree_payment">
+										위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다. (전자상거래법 제 8조 제2항) <!-- 210421_수정 : 텍스트 수정. -->
+									</div>
 								</div>
-								<div class="agree_payment">
-									위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다.
-								</div>
-							</div>
 							<div class="area_paybtn">
 								<div class="form_field">
 									<button type="button" class="btn btn_primary btn_block" id="btn_payment">
@@ -171,6 +229,16 @@
 </form>
 
 <script th:inline="javascript">
+// 개인정보동의 열고닫기
+$(document).on('click','.area_paymentinfo .payinfo_blk a',function(e){
+	e.preventDefault();
+	$(this).parents('.payinfo_blk').toggleClass('on');
+	$(this).parents('.payinfo_blk').siblings('.payinfo_blk').removeClass('on'); //210428_수정 : 아코디언 추가.
+	var privacyToggle = $(this).find('span');
+	$(privacyToggle).text($(privacyToggle).text() == '보기' ? '닫기' : '보기');
+	return false;
+});
+
 //결재하기
 $("#btn_payment").on("click", function(){
 	var paynormal			= $("input[name='rdi-paynormal']:checked").val();

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

@@ -65,7 +65,7 @@
 	<!-- //주문자정보 -->
 	
 	<!-- 사은품정보 -->
-	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="freegiftInfo" id="freegiftInfo">
+	<table border="1" style="font-size:10px; text-align:center; margin-top:20px; display:none; width:100%;" name="freegiftInfo">
 		<tr style="height:30px;">
 			<th>freegiftValArr</th>
 			<th>freegiftUsePointArr</th>

+ 1 - 0
src/main/webapp/WEB-INF/views/web/pg/kcpOrderWeb.html

@@ -11,6 +11,7 @@
 	<input type="hidden" name="ordChgSq"	th:value="${payment.ordChgSq}" />
 	<input type="hidden" name="pgGb"		th:value="${payment.pgGb}" />
 	<input type="hidden" name="payMeans"	th:value="${payment.payMeans}" />
+	<input type="hidden" name="orgOrdNo"	th:value="${payment.orgOrdNo}" />
 
 	<!-- 선택, 상점이름(영문으로 작성권장) -->
 	<input type="hidden" name="site_name"	th:value="${payment.siteName}" />

+ 5 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -35,7 +35,8 @@
 				</div>
 				<div class="cont_body">
 				    <div class="bulletship">
-						<div class="bulletship_head" th:utext="${#strings.replace(#strings.replace(shotHtmlTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
+						<!-- <div class="bulletship_head" th:utext="${#strings.replace(#strings.replace(shotHtmlTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}"> -->
+						<div class="bulletship_head">
                             <img src="/images/pc/thumb/bullet_bg1.png" alt="10시까지 주문하면 당일도착">
                         </div>
                         <div class="bulletship_body" id="shotHtml">
@@ -55,8 +56,9 @@
                         </div>
                         <div class="bulletship_foot"><br>
                         </div>
-                        <div class="bulletship_foot" th:utext="${#strings.replace(#strings.replace(shotHtmlBtm.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
-                           <!--  <img src="/images/pc/thumb/bullet_bg2.png" alt="주문/도착, 배송일, 대상상품"> -->
+                        <!-- <div class="bulletship_foot" th:utext="${#strings.replace(#strings.replace(shotHtmlBtm.fsrcPc,'&amplt;','<'),'&ampgt;','>')}"> -->
+                        <div class="bulletship_foot">
+                            <img src="/images/pc/thumb/bullet_bg2.png" alt="주문/도착, 배송일, 대상상품">
                         </div>
                     </div> 
                 </div>

+ 3 - 3
src/main/webapp/biz/mypage.js

@@ -315,16 +315,16 @@ var fnReceipt = function(param) {
 		receiptWin += '?cmd=card_bill';
 		receiptWin += '&tno=' + paymentInfo.pgTid;
 		receiptWin += '&order_no=' + ordNo;
-		receiptWin += '&trade_mony=' + orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt;
+		receiptWin += '&trade_mony=' + (orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt);
 		
 		// 팝업 크기 설정
 		option = 'width=455, height=815';
 	} else if (param == 'cash') {
 		// URL 설정
 		receiptWin += '?cmd=cash_bill';
-		receiptWin += '&cash_no=' + paymentInfo.cashAuthNo;
+		receiptWin += '&cash_no=' + paymentInfo.cashTradeNo;
 		receiptWin += '&order_id=' + ordNo;
-		receiptWin += '&trade_mony=' + orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt;
+		receiptWin += '&trade_mony=' + (orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt);
 		
 		// 팝업 크기 설정
 		option = 'width=370, height=625';

+ 8 - 1
src/main/webapp/ux/mo/css/style24_m.css

@@ -2584,4 +2584,11 @@ main.container .od_extra .inner:last-child {padding-bottom: 0;}
 .modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table {table-layout: fixed;}
 .modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr th {font-size: 1.3rem;}
 .modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr td {font-size: 1.2rem;}
-.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr th, .modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr td {border-left: 0; word-break: break-all;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr th, .modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr td {border-left: 0; word-break: break-all;}
+
+/* main_띠배너 */
+.bnrtype_banner {background: #fd4801; position: relative;}
+.bnrtype_banner a {display: block; padding:1.3rem 2rem; padding-right:4rem;}
+.bnrtype_banner a > div {color:#fff; font-size:1.3rem; font-weight:300;}
+.bnrtype_banner a > div span {font-weight: 500;}
+.bnrtype_banner .bnrtype_close {position: absolute; top: 50%; right: 0; width: 4rem; height: 4.4rem; transform:translateY(-50%); background: url(/images/mo/btn_main_pop_arrow.png) no-repeat center/1.3rem; z-index: 10;}

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

@@ -928,11 +928,11 @@ $( document ).ready( function() {
             return false;
         });	
 
-        //210409_토스트 팝업 버튼 클릭시 닫기
-        $(document).on('click','.popup_box .button_list button',function(){
-            $(this).parents('.popup_box').hide().removeClass('active');
-            $("body").css({"overflow":"visible"});
-        })
+        //210510_삭제
+        // $(document).on('click','.popup_box .button_list button',function(){
+        //     $(this).parents('.popup_box').hide().removeClass('active');
+        //     $("body").css({"overflow":"visible"});
+        // })
 
         
 

+ 8 - 5
src/main/webapp/ux/pc/css/layout.css

@@ -919,7 +919,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .tbl.type1 table th {padding:10px 0px 10px 40px; font-weight:500;}
 .tbl.type1 table td {padding:10px 40px 10px 0px;}
 .tbl.type1 table tr td:first-child {padding-left:40px}
-.tbl.type1 table tr td:last-child {padding-right:40px}
+.tbl.type1 table tr td:last-child {padding-right:40px;}
 
 /* 테이블 type2 - 수직형 행,열별 구분선 있음 */
 .tbl.type2 {padding:0; border-top:1px solid #000;} 
@@ -991,7 +991,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .tbl td .single_line ul li:first-child::before {display:none;}
 .tbl td .single_line ul li > span {margin-right:0}
 .tbl td .block_line {position:relative;}
-.tbl td .block_line ul li {margin-top:5px; height:1.625em; /*line-height:1;*/}
+.tbl td .block_line ul li {margin-top:5px; height:100%; /*line-height:1;*/}
 .tbl td .block_line ul li:first-child {margin-top:0}
 .tbl td .block_line ul li > span {vertical-align:top;}
 .tbl td .block_line ul li .tag {margin-left:6px; margin-top:2px; vertical-align:top;}
@@ -1937,7 +1937,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.cmt_wrap .cmt_group .cmt_list li .cmt_cont .btn {width:72px; height:34px; background:none; border-color:#a1a1a1; padding:0px; margin-top:20px; font-size:14px; color:#222; font-weight:200;}
 	.cmt_wrap .cmt_group .cmt_list li .cmt_cont .btn.btn_del span {position:relative; padding-left:20px;}
 	.cmt_wrap .cmt_group .cmt_list li .cmt_cont .btn.btn_del span::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); margin-top:-1px; width:13px; height:16px; background:url('/images/pc/ico_trash.png') no-repeat 0% 50%; opacity:0.85;}
-	.cmt_wrap .cmt_group .nodata {margin-top:120px}
+	.cmt_wrap .cmt_group .nodata {margin-top:120px;}
 	.cmt_wrap .pageNav > li > a,
 	.cmt_wrap .pageNav > li > span {background-color:transparent;}
 	.cmt_wrap .paging_wrap {margin-top: 50px; margin-bottom: 0; box-sizing:content-box;}
@@ -1945,8 +1945,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	/* dp_기획전상세 : 중간 배너 */	
 	.dp .dp_mid_banner {padding-top:60px; padding-bottom:60px;}	
 	.dp .dp_mid_banner .mid_banner {position:relative;}
-	.dp .dp_mid_banner .mid_banner .swiper-button-prev {left:70px}
-	.dp .dp_mid_banner .mid_banner .swiper-button-next {right:70px}
+	.dp .dp_mid_banner img {width:100%; height:auto;}
+	.dp .dp_mid_banner .mid_banner .swiper-button-prev {left:70px;}
+	.dp .dp_mid_banner .mid_banner .swiper-button-next {right:70px;}
 	.dp .dp_mid_banner .mid_banner .swiper-pagination {position:relative; width:100%; margin-top:40px;}
 
 	/* dp_기획전상세 : 대표상품 노출 */	
@@ -4046,6 +4047,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.myOrderView .tbl table td .input_wrap {width:100%;}
 	.myOrderView .tbl table td .input_wrap textarea {width:100%; height:82px; padding:14px 15px; font-size:14px; color:#222;}
 	.myOrderView .tbl table td .input_wrap .txt_cnt {margin-top:10px;}
+	.myOrderView .tbl table td .block_line ul li:nth-of-type(3) > span {vertical-align:top; display:inline-block; max-width:calc(100% - 135px); width:auto;}
+	.myOrderView .tbl.type1 table tr:nth-of-type(3) td:last-child > span {display:inline-block; width:auto; max-width:calc(100% - 135px); vertical-align:top;}
 	.myOrderView .tbl.type6 {position: relative;}
 	.myOrderView .tbl.type6 table + p {position: absolute;top: auto;bottom: -25px;left: 0;right: auto;}
 	.myOrderView .retrieve_method .form_field > div {margin-right:30px}

+ 2 - 0
src/main/webapp/ux/style24_link.js

@@ -338,6 +338,8 @@ function cfnAddCart(cartList) {
 					}
 					$("#directOrderForm").html(orderHtml);
 					$("#directOrderForm").submit();
+				} else if (result.cartGb == "N") {
+					buy_nc_req(result.cartSqList);
 				} else {
 					mcxDialog.alert("해당 기능을 사용 할 수 없습니다. 새로고침 후 다시 시도해주세요.");
 				}