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

Merge branch 'develop' into card007

card007 4 лет назад
Родитель
Сommit
beac33496e
30 измененных файлов с 390 добавлено и 105 удалено
  1. 8 0
      src/main/java/com/style24/front/biz/dao/TsfCouponDao.java
  2. 12 1
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  3. 13 0
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  4. 5 0
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  5. 34 3
      src/main/java/com/style24/front/biz/thirdparty/EigeneaiApi.java
  6. 41 30
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  7. 6 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  8. 8 1
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  9. 1 1
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  10. 2 0
      src/main/java/com/style24/persistence/domain/Goods.java
  11. 0 15
      src/main/java/com/style24/persistence/domain/eigene/Eigeneai.java
  12. 29 0
      src/main/java/com/style24/persistence/domain/eigene/Item.java
  13. 27 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  14. 34 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  15. BIN
      src/main/webapp/WEB-INF/lib/Istyle-1.3.jar
  16. 33 1
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  17. 21 3
      src/main/webapp/WEB-INF/views/mob/display/SearchGoodsListFormMob.html
  18. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentCompleteMob.html
  19. 2 0
      src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html
  20. 5 2
      src/main/webapp/WEB-INF/views/web/callcenter/FaqFormWeb.html
  21. 1 1
      src/main/webapp/WEB-INF/views/web/callcenter/GoodsQnaFormWeb.html
  22. 2 2
      src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html
  23. 1 1
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html
  24. 4 26
      src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html
  25. 17 9
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  26. 21 2
      src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html
  27. 5 4
      src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html
  28. 39 0
      src/main/webapp/WEB-INF/views/web/error/PaymentFailWeb.html
  29. 10 1
      src/main/webapp/biz/search.js
  30. 8 1
      src/main/webapp/ux/pc/css/layout.css

+ 8 - 0
src/main/java/com/style24/front/biz/dao/TsfCouponDao.java

@@ -166,4 +166,12 @@ public interface TsfCouponDao {
 	 */
 	Collection<Coupon> getQuickCouponDownList(Coupon coupon);
 
+	/**
+	 * 기획전 쿠폰 디테일 정보
+	 * @param coupon - 쿠폰정보
+	 * @return Coupon
+	 * @author bin2107
+	 * @since 2021. 07. 07
+	 */
+	Coupon getPlanCouponDetailInfo(Coupon coupon);
 }

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

@@ -22,6 +22,7 @@ import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.SizeInfo;
 import com.style24.persistence.domain.Tmtb;
+import com.style24.persistence.domain.eigene.Item;
 import com.style24.persistence.domain.searchengine.SearchEngine;
 
 /**
@@ -257,7 +258,7 @@ public interface TsfGoodsDao {
 	 * @date 2021. 6. 10
 	 */
 	Collection<Tmtb> getTmtbSqList(Goods goods);
-	
+
 	/**
 	 * 상품 다다익선 목록
 	 *
@@ -503,4 +504,14 @@ public interface TsfGoodsDao {
 	 * @date 2021. 07. 06
 	 */
 	Goods getNewCustOrdCanYnInfo(Goods param);
+
+	/**
+	 * 상품추가정보 목록
+	 * @param goods - 상품정보
+	 * @return
+	 * @author gagamel
+	 * @date 2021. 7. 7
+	 */
+	Collection<Item> getGoodsAddInfoList(Goods goods);
+
 }

+ 13 - 0
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -843,4 +843,17 @@ public class TsfCouponService {
 		return couponDao.getJoinCoupon(coupon);
 	}
 
+	/**
+	 * 기획전 쿠폰 디테일 정보
+	 * @param cpnId
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 07. 07
+	 */
+	public Coupon getPlanCouponDetailInfo(Coupon coupon) {
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		return couponDao.getPlanCouponDetailInfo(coupon);
+	}
+
 }

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

@@ -405,6 +405,11 @@ public class TsfOrderService {
 			}
 
 			// TB_PAYMENT 등록. 실패시 PG 환불.
+			if(TscConstants.PgGb.NAVER.value().equals(param.getPgGb()) && !"SUCCESS".equals(result.getCode().toUpperCase())) {
+				result.setPgGb(param.getPgGb());
+				return result;
+			}
+
 			if(coreOrderDao.updatePaymentOrderComplete(result) < 1) {
 				if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
 					if(TscConstants.PayMeans.GIFTCARD.value().equals(param.getPayMeans())) {

+ 34 - 3
src/main/java/com/style24/front/biz/thirdparty/EigeneaiApi.java

@@ -15,10 +15,13 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
 import com.google.gson.Gson;
+import com.style24.front.biz.dao.TsfGoodsDao;
+import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
+import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.eigene.Eigeneai;
-import com.style24.persistence.domain.eigene.Eigeneai.Item;
 import com.style24.persistence.domain.eigene.Eigeneai.Result;
+import com.style24.persistence.domain.eigene.Item;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -39,6 +42,9 @@ public class EigeneaiApi {
 	@Autowired
 	private RestTemplate restTemplate;
 
+	@Autowired
+	private TsfGoodsDao goodsDao;
+
 	@PostConstruct
 	public void init() {
 		log.debug("\n\n---- Eigene.ai initialization started ----");
@@ -240,14 +246,39 @@ public class EigeneaiApi {
 	 * @since 2021. 6. 30
 	 */
 	public Collection<Item> getRealtimeViewGoodsList(int size) {
+		Collection<Item> dataList = new ArrayList<Item>();
+
 		String requestUrl = rtsApiUrl + "/stream?cuid=" + cuid + "&size=" + size + "&type=view";
 
 		Eigeneai eigeneai = this.getEigeneaiInfo(requestUrl);
 		if (eigeneai.getItems() != null && !eigeneai.getItems().isEmpty()) {
-			return eigeneai.getItems();
+			Collection<Item> items = eigeneai.getItems();
+			StringBuilder sql = new StringBuilder();
+			int idx = 1;
+			for (Item item : items) {
+				if (idx++ > 1) {
+					sql.append("UNION ALL");
+				}
+				sql.append(" SELECT ").append(item.getCount()).append(" AS COUNT");
+				sql.append(" , '").append(item.getItemId()).append("' AS ITEM_ID");
+				sql.append(" , '").append(item.getImageUrl()).append("' AS IMAGE_URL");
+				sql.append(" , '").append(item.getItemName()).append("' AS ITEM_NAME");
+				sql.append(" , '").append(item.getItemUrl()).append("' AS ITEM_URL");
+				sql.append(" , '").append(item.getCategoryId()).append("' AS CATEGORY_ID");
+				sql.append(" , '").append(item.getBrandId()).append("' AS BRAND_ID");
+				sql.append(" , ").append(idx).append(" AS RK FROM DUAL\n");
+			}
+			Goods goods = new Goods();
+			goods.setSql(sql.toString());
+			if (TsfSession.isLogin()) {
+				goods.setCustNo(TsfSession.getInfo().getCustNo());
+			}
+			goods.setFrontGb(TsfSession.getFrontGb());
+			goods.setCustGb(TsfSession.getCustGb());
+			dataList.addAll(goodsDao.getGoodsAddInfoList(goods));
 		}
 
-		return new ArrayList<Item>();
+		return dataList;
 	}
 
 	/**

+ 41 - 30
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -9,8 +9,6 @@ import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 
-import com.style24.front.biz.thirdparty.EigeneaiApi;
-import com.style24.persistence.domain.eigene.Eigeneai;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
@@ -23,7 +21,6 @@ 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.TscKcpService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.env.TscConstants;
@@ -32,6 +29,7 @@ import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfCouponService;
 import com.style24.front.biz.service.TsfGoodsService;
 import com.style24.front.biz.service.TsfOrderService;
+import com.style24.front.biz.thirdparty.EigeneaiApi;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
@@ -39,9 +37,13 @@ import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.eigene.Eigeneai;
+import com.style24.persistence.domain.eigene.Item;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+
 /**
  * 장바구니 Controller
  *
@@ -90,7 +92,7 @@ public class TsfCartController extends TsfBaseController {
 	public ModelAndView cartListForm() {
 		ModelAndView mav = new ModelAndView();
 		Cart cart = new Cart();
-		if(TsfSession.isLogin()) {
+		if (TsfSession.isLogin()) {
 			cart.setCustNo(TsfSession.getInfo().getCustNo());
 		} else {
 			cart.setCustNo(0);
@@ -98,14 +100,14 @@ public class TsfCartController extends TsfBaseController {
 		}
 
 		Collection<Cart> cartList = cartService.getAllCartList(cart);
-		if(cartList != null && cartList.size() > 0) {
+		if (cartList != null && cartList.size() > 0) {
 			// 장바구니 상품이 있을 경우
 			Collection<Eigeneai.Result> itemList = eigeneaiApi.getRelatedGoodsList(cartList, 20);
 			mav.addObject("recomGoodsList", itemList);
 			mav.addObject("cartSize", cartList.size());
 		} else {
 			// 장바구니 상품이 없을 경우
-			Collection<Eigeneai.Item> itemList = eigeneaiApi.getRealtimeViewGoodsList(20);
+			Collection<Item> itemList = eigeneaiApi.getRealtimeViewGoodsList(20);
 			mav.addObject("recomGoodsList", itemList);
 			mav.addObject("cartSize", 0);
 		}
@@ -139,7 +141,7 @@ public class TsfCartController extends TsfBaseController {
 	public GagaMap createCart(@RequestBody Collection<Cart> params) {
 		GagaMap result = cartService.saveCartInfo(params);
 		String cartGb = String.valueOf(result.get("cartGb"));
-		if("C".equals(cartGb) || cartGb.equals(TscConstants.CartGb.CART.value())) {
+		if ("C".equals(cartGb) || cartGb.equals(TscConstants.CartGb.CART.value())) {
 			cartService.deleteOldCart();
 		}
 
@@ -153,20 +155,20 @@ public class TsfCartController extends TsfBaseController {
 		int shotCanYn = coreOrderService.getDailyDeliveryCheck(param);
 
 		// 10시 이전에만 총알 배송 가능 여부 체크
-		if(shotCanYn == 1) {
-			SimpleDateFormat format = new SimpleDateFormat ( "MM/dd");
+		if (shotCanYn == 1) {
+			SimpleDateFormat format = new SimpleDateFormat("MM/dd");
 			Date time = new Date();
 
 			param.setShotCanYn("Y");
 			param.setShotDelvDt(format.format(time));
 		} else {
-			SimpleDateFormat format = new SimpleDateFormat ( "MM/dd");
+			SimpleDateFormat format = new SimpleDateFormat("MM/dd");
 			Date time = new Date();
 			param.setShotCanYn("N");
 			param.setShotDelvDt(format.format(time));
 		}
 
-		if(param.getShotDelvUseYn() == null) {
+		if (param.getShotDelvUseYn() == null) {
 			param.setShotDelvUseYn(param.getShotCanYn());
 		}
 
@@ -210,21 +212,21 @@ public class TsfCartController extends TsfBaseController {
 
 		// 수량 및 금액 다다익선 최소 조건 조회
 		DecimalFormat format = new DecimalFormat("###,###");
-		List<Order> tmtbSalesValueList = (ArrayList<Order>) cartService.selectTmtbSalesValueList(param);
+		List<Order> tmtbSalesValueList = (ArrayList<Order>)cartService.selectTmtbSalesValueList(param);
 		// 조건 멘트 적용
 		List<StringBuilder> tmtbDcDescList = new ArrayList<StringBuilder>();
-		for(Order tmtbDcValue : tmtbSalesValueList) {
-			if(!StringUtils.isEmpty(tmtbDcValue.getDefaultYn()) && "Y".equals(tmtbDcValue.getDefaultYn())) {
+		for (Order tmtbDcValue : tmtbSalesValueList) {
+			if (!StringUtils.isEmpty(tmtbDcValue.getDefaultYn()) && "Y".equals(tmtbDcValue.getDefaultYn())) {
 				StringBuilder tmtbDcDesc = new StringBuilder();
-				if(TscConstants.ApplyGb.QTY.value().equals(tmtbDcValue.getSectionGb())) {
+				if (TscConstants.ApplyGb.QTY.value().equals(tmtbDcValue.getSectionGb())) {
 					tmtbDcDesc.append(tmtbDcValue.getSectionVal()).append("개 이상 구매시 ");
 				} else if (TscConstants.ApplyGb.AMT.value().equals(tmtbDcValue.getSectionGb())) {
 					tmtbDcDesc.append(format.format(tmtbDcValue.getSectionVal())).append("원 이상 구매시 ");
 				}
 
-				if(TscConstants.DcWay.AMT.value().equals(tmtbDcValue.getDcWay())) {
+				if (TscConstants.DcWay.AMT.value().equals(tmtbDcValue.getDcWay())) {
 					tmtbDcDesc.append(format.format(tmtbDcValue.getDcVal())).append("원 할인");
-				} else if(TscConstants.DcWay.RATE.value().equals(tmtbDcValue.getDcWay())) {
+				} else if (TscConstants.DcWay.RATE.value().equals(tmtbDcValue.getDcWay())) {
 					tmtbDcDesc.append(tmtbDcValue.getDcVal()).append("% 할인");
 				}
 
@@ -254,7 +256,7 @@ public class TsfCartController extends TsfBaseController {
 	@PostMapping("/login/info")
 	public Login selectLoginInfo(Order param) {
 		Login result = new Login();
-		if(TsfSession.isLogin()) {
+		if (TsfSession.isLogin()) {
 			result = TsfSession.getInfo();
 		} else {
 			result.setCustNo(0);
@@ -343,7 +345,7 @@ public class TsfCartController extends TsfBaseController {
 
 		result = cartService.updateCartOption(param);
 
-		if("SUCCESS".equals(result.get("status"))) {
+		if ("SUCCESS".equals(result.get("status"))) {
 			result.put("message", message.getMessage("SUCC_0009"));
 		}
 
@@ -384,7 +386,8 @@ public class TsfCartController extends TsfBaseController {
 	 */
 	@GetMapping("/quick/cart/list")
 	@ResponseBody
-	public Order getCartList() {
+	public GagaMap getCartList() {
+		GagaMap result = new GagaMap();
 		Order cart = new Order();
 
 		// 장바구니 상품목록
@@ -392,7 +395,7 @@ public class TsfCartController extends TsfBaseController {
 		cart.setImgPath1(env.getProperty("upload.goods.view"));
 
 		// 현재 주문 가능 수량순으로 정렬
-		Collections.sort((ArrayList<Order>) cart.getDelvAllCartList(), new Comparator<Order>() {
+		Collections.sort((ArrayList<Order>)cart.getDelvAllCartList(), new Comparator<Order>() {
 			@Override
 			public int compare(Order c1, Order c2) {
 				return c1.getOrdCanQty() - c2.getOrdCanQty();
@@ -401,35 +404,43 @@ public class TsfCartController extends TsfBaseController {
 		});
 
 		List<Order> cartList = new ArrayList<>();
-		for(Order oneData : cart.getDelvAllCartList()) {
-			if(oneData.getOrdCanQty() < 6 && oneData.getOrdCanQty() > 0) {
+		for (Order oneData : cart.getDelvAllCartList()) {
+			if (oneData.getOrdCanQty() < 6 && oneData.getOrdCanQty() > 0) {
 				cartList.add(oneData);
 			}
 		}
 
 		// 장바구니 등록 최신순 정렬
-		Collections.sort((ArrayList<Order>) cart.getDelvAllCartList(), new Comparator<Order>() {
+		Collections.sort((ArrayList<Order>)cart.getDelvAllCartList(), new Comparator<Order>() {
 			@Override
 			public int compare(Order c1, Order c2) {
 				return c2.getCartSq() - c1.getCartSq();	//역순 정렬
 			}
 		});
 
-		for(Order oneData : cart.getDelvAllCartList()) {
-			if(oneData.getOrdCanQty() > 5) {
+		for (Order oneData : cart.getDelvAllCartList()) {
+			if (oneData.getOrdCanQty() > 5) {
 				cartList.add(oneData);
 			}
 		}
 
-		for(Order oneData : cart.getDelvAllCartList()) {
-			if(oneData.getOrdCanQty() < 1) {
+		for (Order oneData : cart.getDelvAllCartList()) {
+			if (oneData.getOrdCanQty() < 1) {
 				cartList.add(oneData);
 			}
 		}
 
 		cart.setDelvAllCartList(cartList);
 
-		return cart;
+		if(cart.getTotCartCnt() < 1) {
+			// 장바구니 상품이 없을 경우
+			Collection<Item> itemList = eigeneaiApi.getRealtimeViewGoodsList(20);
+			result.put("itemList", itemList);
+		}
+
+		result.put("order", cart);
+
+		return result;
 	}
 
 	/**
@@ -454,7 +465,7 @@ public class TsfCartController extends TsfBaseController {
 	public Goods selectTmtbSalesGoodsOptCd(@RequestBody Goods param) {
 		Collection<Goods> goodsList = cartService.selectTmtbSalesGoodsOptCd(param);
 		Goods result = new Goods();
-		for(Goods goods : goodsList) {
+		for (Goods goods : goodsList) {
 			result = goods;		// goodsList는 상품정보 1라인만 조회됨
 		}
 

+ 6 - 0
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -990,6 +990,12 @@ public class TsfDisplayController extends TsfBaseController {
 		mav.addObject("filterBenefitList", displayService.getCategoryFilterList(filterList, "BENEFIT"));
 		mav.addObject("params", params);
 
+		// 광고 배너 조회
+		Contents adContents = new Contents();
+		adContents.setContentsLoc("SAD001");
+		adContents.setMaxRow(1);
+		mav.addObject("adBannerList", displayService.getContentsList(adContents));
+
 		log.info("filterPriceList:::{}", displayService.getCategoryFilterList(filterList, "PRICE"));
 
 		return mav;

+ 8 - 1
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -869,7 +869,14 @@ public class TsfOrderController extends TsfBaseController {
 		
 		// 2. 결재정보등록(TB_PAYMENT)
 		param = orderService.orderPgPayResult(param, request, response);
-		
+
+		log.info("CHECK RES_CD :::: {} / {}", param.getCode(), param.getResCd());
+		if(TscConstants.PgGb.NAVER.value().equals(param.getPgGb()) && !"SUCCESS".equals(param.getCode().toUpperCase())) {
+			ModelAndView redir = new ModelAndView();
+			redir.setViewName("redirect:/order/payment/fail");
+			return redir;
+		}
+
 		order.setOrdNo(param.getOrdNo());
 		order.setSellGb("10");
 		order.setPgGb(param.getPgGb());

+ 1 - 1
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -321,7 +321,7 @@ public class TsfPlanningController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 - 기본정보
-		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(coupon));
+		mav.addObject("couponDetailInfo", couponService.getPlanCouponDetailInfo(coupon));
 		
 		mav.setViewName(super.getDeviceViewName("planning/PlanningCouponDetailForm"));
 		return mav;

+ 2 - 0
src/main/java/com/style24/persistence/domain/Goods.java

@@ -224,4 +224,6 @@ public class Goods extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] benefitArr;		// 상품혜택
 
+	private String sql;
+
 }

+ 0 - 15
src/main/java/com/style24/persistence/domain/eigene/Eigeneai.java

@@ -47,19 +47,4 @@ public class Eigeneai implements Serializable {
 		private Product product;	// 상품정보
 	}
 
-	// 실시간 상품정보
-	@Data
-	public class Item {
-		private int count;				// view건수
-		private String itemId;			// 상품코드
-		private String imageUrl;		// 상품이미지URL
-		private String itemName;		// 상품명
-		private String itemUrl;			// 상품상세페이지URL
-		private String categoryId;		// 카테고리ID
-		private double originalPrice;	// 정상가
-		private double salePrice;		// 판매가
-		private String brandId;			// 브랜드ID(브랜드그룹번호)
-		private String brandName;		// 브랜드명
-	}
-
 }

+ 29 - 0
src/main/java/com/style24/persistence/domain/eigene/Item.java

@@ -0,0 +1,29 @@
+package com.style24.persistence.domain.eigene;
+
+import java.io.Serializable;
+
+import lombok.Data;
+
+/**
+ * 추천솔루션 - Eigene - 실시간상품정보 도메인
+ * 
+ * @author gagamel
+ * @since 2021. 5. 14
+ */
+@SuppressWarnings("serial")
+@Data
+public class Item implements Serializable {
+
+	private int count;				// view건수
+	private String itemId;			// 상품코드
+	private String imageUrl;		// 상품이미지URL
+	private String itemName;		// 상품명
+	private String itemUrl;			// 상품상세페이지URL
+	private String categoryId;		// 카테고리ID
+	private double originalPrice;	// 정상가
+	private double salePrice;		// 판매가
+	private String brandId;			// 브랜드ID(브랜드그룹번호)
+	private String brandName;		// 브랜드명
+	private int wishCnt;			// 위시리스트담긴상품(1:있음, 0:없음)
+
+}

+ 27 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -1318,5 +1318,32 @@
 		     ) <![CDATA[>=]]> 1
 		ORDER BY  C.REG_DT DESC ,C.AVAIL_EDDT ASC LIMIT 10
 	</select>
+
+	<select id="getPlanCouponDetailInfo" parameterType="Coupon" resultType="Coupon">
+		/*TsfCoupon.getPlanCouponDetailInfo*/
+		SELECT C.CPN_ID                          /*쿠폰ID*/
+		     , C.CPN_NM                           /*쿠폰명*/
+		     , C.BUY_LIMIT_AMT                    /*구매제한금액*/
+		     , C.MAX_DC_AMT                       /*최대할인금액*/
+		     , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		    		WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		    		WHEN #{frontGb} = 'A' THEN C.DC_AVAL  END             AS DC_VAL          /*할인값*/
+		     , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'
+		       ELSE '%'  END             AS DC_WAY          /*할인방법*/
+		     , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                  ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ') END
+		     , CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		       ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인') END)     AS USE_CONDITION   /*사용조건*/
+		     , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN '' ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')  END   AS ISSUE_CONDITION /*발급조건*/
+		     , C.AVAIL_STDT                      /*유효시작일자*/
+		     , C.AVAIL_EDDT                      /*유효종료일자*/
+		FROM   (
+		   SELECT *
+		   FROM TB_COUPON
+		   WHERE 1=1
+		   AND   CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		   AND   CPN_ID   = #{cpnId}
+		) C
+	</select>
 	
 </mapper>

+ 34 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -3699,4 +3699,38 @@
 		FROM   TB_GOODS G
 		WHERE  G.GOODS_CD = #{goodsCd}
 	</select>
+	
+	<!-- 상품추가정보 목록 -->
+	<select id="getGoodsAddInfoList" parameterType="Goods" resultType="Item">
+		/* TsfGoods.getGoodsAddInfoList */
+		SELECT Z.COUNT                                                                              /*view건수*/
+		     , Z.ITEM_ID                                                                            /*상품코드*/
+		     , Z.IMAGE_URL
+		     , Z.ITEM_NAME
+		     , Z.ITEM_URL
+		     , Z.CATEGORY_ID
+		     , G.LIST_PRICE                                                       AS ORIGINAL_PRICE /*정상가*/
+		     , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb}) AS SALE_PRICE     /*현재판매가*/
+		     , BG.BRAND_GROUP_NO                                                  AS BRAND_ID       /*브랜드ID(브랜드그룹번호)*/
+		     , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN BG.BRAND_GROUP_ENM
+		            ELSE BG.BRAND_GROUP_KNM END                                   AS BRAND_NAME     /*브랜드명(브랜드그룹명)*/
+		     <choose>
+		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		     , IF(W.GOODS_CD IS NULL,0,1)                                         AS WISH_CNT       /*위시리스트담긴상품*/
+		         </when>
+		         <otherwise>
+		     , 0                                                                  AS WISH_CNT       /*위시리스트담긴상품*/
+		         </otherwise>
+		     </choose>
+		FROM   (
+		        ${sql}
+		       ) Z
+		INNER JOIN TB_GOODS G ON Z.ITEM_ID = G.GOODS_CD
+		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		LEFT OUTER JOIN TB_WISHLIST W ON Z.ITEM_ID = W.GOODS_CD
+		                             AND IFNULL(#{custNo}, 0) = W.CUST_NO
+		ORDER  BY Z.RK
+	</select>
+	
 </mapper>

BIN
src/main/webapp/WEB-INF/lib/Istyle-1.3.jar


+ 33 - 1
src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html

@@ -27,7 +27,7 @@
 		</section>
 
 		<th:block th:if="${cartSize>0}">
-			<div class="od_recommend">
+			<div class="od_recommend" style="background-color:white;">
 				<h3>추천상품</h3>
 				<div class="swiper-container item_list swiper-container-initialized swiper-container-horizontal swiper-container-ios">
 					<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
@@ -58,6 +58,31 @@
 			</div>
 		</th:block>
 
+		<th:block th:if="${cartSize == null or cartSize == 0}">
+			<div class="od_liveview" style="background-color:white;">
+				<h3>지금 많이 보고 있어요</h3>
+				<div class="swiper-container item_list">
+					<div class="swiper-wrapper">
+						<th:block th:each="cart, status : ${recomGoodsList}">
+							<div class="swiper-slide">
+								<div class="item_prod">
+									<div class="item_state">
+										<a th:href="${cart.itemUrl}" class="itemLink">
+											<div class="itemPic">
+												<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${cart.imageUrl}" src="">
+											</div>
+											<div class="itemName" th:text="${cart.itemName}"></div>
+											<div class="viewComment" th:text="${cart.count + '명 보는중'}"></div>
+										</a>
+									</div>
+								</div>
+							</div>
+						</th:block>
+					</div>
+				</div>
+			</div>
+		</th:block>
+
 		<!-- 옵션변경_팝업01 -->
 		<div id="optModifyPop01" class="popup_box optModifyPop optModifyPop01">
 			<div class="lap">
@@ -165,6 +190,13 @@
 			centerMode: true
 		});
 
+		//추천상품_슬라이드
+		var od_liveview_slide = new Swiper('.od_liveview .swiper-container', {
+			slidesPerView: 3,
+			spaceBetween: 8,
+			centerMode: true,
+		});
+
 		//배송요청사항
 		// var my_deilivery_selecter = new sCombo('.my .ship_request .select_custom');
 

+ 21 - 3
src/main/webapp/WEB-INF/views/mob/display/SearchGoodsListFormMob.html

@@ -595,6 +595,8 @@
 
 	<script th:inline="javascript">
 	/*<![CDATA[*/
+	var adBannerList = [[${adBannerList}]];
+	var adBannerTag = '';
 	var filterPriceList = [[${filterPriceList}]];
 
 	$(window).on("pageshow", function(event) {
@@ -651,7 +653,6 @@
 				fnSearchGoodsListSearch();
 			}
 		}else{
-			console.log('2');
 			fnCategoryGoodsInfiniteScrollInit();
 
 			var sortingType = $("#searchGoodsForm input:hidden[name=sortingType]").val();
@@ -697,7 +698,6 @@
 		}
 
 		if(dataListLen > 0){
-			idx++;
 			$('#noFilterData').hide();
 			$('#endPage').hide();
 			$('#eventNodata').hide();
@@ -706,8 +706,9 @@
 			var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 			let lastPage = result.paging.pageNo;
 			let endRow = result.paging.endRow - result.paging.pageSize;
-			var htm = fnCreateGoodsList(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow, 'Mob');
+			var htm = fnCreateGoodsList(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow, 'Mob', idx,adBannerTag);
 			gagaInfiniteScroll.draw(htm);
+			idx++;
 			//fnImgOnoff();
 		}else{
 			if(idx > 1){ // 데이터가 1건 이상
@@ -848,6 +849,23 @@
 
 
 	$(document).ready( function() {
+		// 광고배너체크
+		if(!gagajf.isNull(adBannerList) && adBannerList.length>0){
+			var imgUrl = [[${@environment.getProperty('upload.image.view')}]];
+			$.each(adBannerList, function (idx,item){
+				adBannerTag += '<div class="banner">\n';
+				adBannerTag += '	<a href="'+item.strVar1+'">\n';
+				adBannerTag += '		<div class="bnnbox">\n';
+				adBannerTag += '			<div class="txtWrap">\n';
+				adBannerTag += '				<p>'+item.strTitle1+'</p>\n';
+				adBannerTag += '			</div>\n';
+				adBannerTag += '			<img src="'+imgUrl+item.imgPath1+'" alt="검색결과 배너">\n';
+				adBannerTag += '		</div>\n';
+				adBannerTag += '	</a>\n';
+				adBannerTag += '</div>\n';
+			});
+		}
+
 		if(filterPriceList.length > 0){
 			$("#priceArea").html('');
 			var priceHtml = '';

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

@@ -1,5 +1,5 @@
 <!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">
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/SubLayoutMob">
 <!--
  *******************************************************************************
  * @source  : OrderAddPaymentCompleteMob.html

+ 2 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html

@@ -175,8 +175,10 @@ $(document).ready( function() {
 	$("#orderForm .select_custom.delivery_list .combo .list > li").on("click", function(){
 		if ($("#orderForm .select_etc").hasClass("selected")){
 			$(".ship_etc").show();
+			$("#orderForm input[name=delvMemoText]").attr("disabled", false);
 		} else {
 			$(".ship_etc").hide();
+			$("#orderForm input[name=delvMemoText]").attr("disabled", true);
 		}
 	});
 });

+ 5 - 2
src/main/webapp/WEB-INF/views/web/callcenter/FaqFormWeb.html

@@ -47,7 +47,7 @@
 										</li>
 									</ul>
 								</div>
-								<div class="search_wrap mb60">
+								<div class="search_wrap mb60" id="scrollInit">
 									<h4 class="subH3_eng mb20 c_black">FAQ SEARCH</h4>
 									<div class="faq_search t_c">
 										<form id="faqForm" name="faqForm" class="search_box" action="#" th:action="@{'/callcenter/faq/list'}" th:method="post" onsubmit="fnSearchFaq(); return false;">
@@ -196,7 +196,10 @@
 			});
 			$('#divFaq').removeClass('nodata');
 			if(idx>1){
-				document.getElementById('faqForm').scrollIntoView();
+				// document.getElementById('scrollInit').scrollIntoView();
+				// let sTop = document.getElementById("scrollInit").scrollHeight;
+				var offset = $("#scrollInit").offset();
+				$('html, body').animate({scrollTop : offset.top-100}, 300);
 			}
 			idx++;
 		} else {

+ 1 - 1
src/main/webapp/WEB-INF/views/web/callcenter/GoodsQnaFormWeb.html

@@ -172,7 +172,7 @@
 				$('#ulQna').append(tag);
 				$('#divQna').removeClass('nodata');
 				if(idx>1){
-					document.getElementById('callcenterLnb').scrollIntoView();
+					document.getElementById('container').scrollIntoView();
 				}
 				idx++;
 			});

+ 2 - 2
src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html

@@ -20,7 +20,7 @@
 
 <th:block layout:fragment="content">
 	<div id="container" class="container cs"> 
-		<div class="breadcrumb"> 
+		<div class="breadcrumb">
 			<ul>
 				<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
 				<li class="bread_2depth"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_FAQ);">고객센터</a></li>
@@ -137,7 +137,7 @@
 			
 			$('#divNotice').removeClass('nodata');
 			if(idx>1){
-				document.getElementById('callcenterLnb').scrollIntoView();
+				document.getElementById('container').scrollIntoView();
 			}
 			idx++;
 		} else {

+ 1 - 1
src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html

@@ -246,7 +246,7 @@
 			
 			$('#divQna').removeClass('nodata');
 			if(idx>1){
-				document.getElementById('callcenterLnb').scrollIntoView();
+				document.getElementById('container').scrollIntoView();
 			}
 			idx++;
 		} else {

+ 4 - 26
src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html

@@ -99,7 +99,7 @@
 								<div class="swiper-slide">
 									<div class="item_prod">
 										<div class="item_state">
-											<button type="button" class="itemLike" onclick="cfnPutWishList(this);" th:attr="goodscd=${cart.itemId}, ithrCd='IN18_01', contentsLoc='', planDtlSq=''">관심상품 추가</button>
+											<button type="button" class="itemLike" th:classappend="${cart.wishCnt > 0} ? 'likeit active'" onclick="cfnPutWishList(this);" th:attr="goodscd=${cart.itemId}, ithrCd='IN18_01', contentsLoc='', planDtlSq=''">관심상품 추가</button>
 											<a th:href="${cart.itemUrl}" class="itemLink">
 												<div class="itemPic">
 													<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${cart.imageUrl}" src="">
@@ -148,32 +148,10 @@
         // 장바구니 상품 정보 select
         getCartList();
 
-        // 로그인 되어 있을 경우 체크
-		if("[[${cartSize}]]" == "" || "[[${cartSize}]]" == "0") {
+        // 장바구니 수량이 존재하는경우
+		if("[[${cartSize}]]" != "" && [[${cartSize}]] > 0) {
 			if(cfCheckLogin()) {
-				// 장바구니 보유 상품 없을 경우 추천솔루션 > "지금 많이 보고있어요" 영역
-				let targetT = $('#container .od_realtime').find('.item_state').find('button');
-				targetT.each(function(){
-					let goodsCd = $(this).attr('goodscd');
-					var $this = $(this);
-					let url = "/mypage/wish/list/check/"+goodsCd;
-					var result = '';
-					$.ajax({
-						type: 'get'
-						, async: false
-						, url: url
-						, success: function (data) {
-							//likeit active
-							if ("Y" == data){
-								$this.addClass('likeit').addClass('active');
-							}
-						}
-					});
-				});
-			}
-		} else {
-			if(cfCheckLogin()) {
-				// 장바구니 보유 상품 없을 경우 추천솔루션 > "지금 많이 보고있어요" 영역
+				// 장바구니 보유 상품 있을 경우 추천솔루션 > "추천 상품" 영역
 				let targetT = $('#container .od_recommend').find('.item_state').find('button');
 				targetT.each(function(){
 					let goodsCd = $(this).attr('goodscd');

+ 17 - 9
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1071,7 +1071,9 @@
 
 	// 장바구니
 	let fnGetCartGoodsList = function() {
-		$.getJSON('/cart/quick/cart/list', function(order, status) {
+		$.getJSON('/cart/quick/cart/list', function(result, status) {
+			let order = result.order;
+
 			$("#quick_menu .shopingbag.quick_con.quick02 .quick_head a").attr("href", _PAGE_CART);
 			$("#header .gnb .btn_cart").attr("href", _PAGE_CART);
 
@@ -1146,6 +1148,8 @@
 
 					$("#quick_menu #quick02 .count").text(order.delvAllCartList.length);
 				} else {
+					let itemList = result.itemList;
+
 					if(!$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").hasClass("nodata")) {
 						$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").addClass("nodata");
 					}
@@ -1153,19 +1157,22 @@
 					quickShoppingBagHtml += '<div class="itemsGrp empty">';
 					quickShoppingBagHtml += '	<p class="desc">쇼핑백에 담긴 상품이 없습니다.</p>';
 					quickShoppingBagHtml += '	<span class="subH3">지금 많이 보고있어요</span>';
-					for(let i = 0 ; i < 10 ; i++) {
+					for(let i = 0 ; i < itemList.length ; i++) {
+						let item = itemList[i];
 						quickShoppingBagHtml += '	<div class="item_prod">';
 						quickShoppingBagHtml += '		<div class="item_state">';
-						quickShoppingBagHtml += '			<a href="javascript:;" class="itemLink">';
+						quickShoppingBagHtml += '			<a href="' + item.itemUrl + '" class="itemLink">';
 						quickShoppingBagHtml += '				<div class="itemPic">';
-						quickShoppingBagHtml += '					<img alt="BLACK-a" class="vLHTC pd_img" src="/images/pc/thumb/prod1.jpg"/>';
+						quickShoppingBagHtml += '					<img alt="BLACK-a" class="vLHTC pd_img" src="' + item.imageUrl + '"/>';
 						quickShoppingBagHtml += '				</div>';
-						quickShoppingBagHtml += '				<p class="itemBrand">BRAND NAME</p>';
-						quickShoppingBagHtml += '				<div class="itemName">[온라인 단독] 여성 니트 후드 경량 다운 점퍼 여성 니트 후드 경량 다운 점퍼 여성 니트 후드 경량 다운 점퍼</div>';
-						quickShoppingBagHtml += '				<p class="itemPrice">80,100';
-						quickShoppingBagHtml += '					<span class="itemPrice_original">89,000</span>';
+						quickShoppingBagHtml += '				<p class="itemBrand">' + item.brandName + '</p>';
+						quickShoppingBagHtml += '				<div class="itemName">' + item.itemName + '</div>';
+						quickShoppingBagHtml += '				<p class="itemPrice">' + Number(item.salePrice).toLocaleString();
+						if(item.salePrice < item.originalPrice) {
+							quickShoppingBagHtml += '					<span class="itemPrice_original">' + Number(item.originalPrice).toLocaleString() + '</span>';
+						}
 						quickShoppingBagHtml += '				</p>';
-						quickShoppingBagHtml += '				<div class="viewCount"><span>508</span>명 보는중</div>';
+						quickShoppingBagHtml += '				<div class="viewCount"><span>' + item.count + '</span>명 보는중</div>';
 						quickShoppingBagHtml += '			</a>';
 						quickShoppingBagHtml += '		</div>';
 						quickShoppingBagHtml += '	</div>';
@@ -1175,6 +1182,7 @@
 
 				$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").html(quickShoppingBagHtml);
 				$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").show();
+				$("#quick_menu #quick02 .count").text(order.delvAllCartList.length);
 
 				let cartCnt = $("#quick_menu #quick02 .count").text();
 				if(!cartCnt) cartCnt = 0;

+ 21 - 2
src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html

@@ -580,6 +580,8 @@
 	<script th:src="@{'/biz/search.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/search.js"></script>
 
 	<script th:inline="javascript">
+		var adBannerList = [[${adBannerList}]];
+		var adBannerTag = '';
 		var filterPriceList = [[${filterPriceList}]];
 		var custom_values = [];
 
@@ -611,7 +613,6 @@
 			}
 
 			if(dataListLen > 0){
-				idx++;
 				$('#noFilterData').hide();
 				$('#endPage').hide();
 				$('#goodsNodata').hide();
@@ -622,8 +623,9 @@
 				var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 				let lastPage = result.paging.pageNo;
 				let endRow = result.paging.endRow - result.paging.pageSize;
-				var htm = fnCreateGoodsList(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow);
+				var htm = fnCreateGoodsList(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow,'',idx,adBannerTag);
 				gagaInfiniteScroll.draw(htm);
+				idx++;
 				//fnImgOnoff();
 			}else{
 				// console.log('idx:::'+idx);
@@ -891,6 +893,23 @@
 		}
 	
 		$(document).ready( function() {
+			// 광고배너체크
+			if(!gagajf.isNull(adBannerList) && adBannerList.length>0){
+				var imgUrl = [[${@environment.getProperty('upload.image.view')}]];
+				$.each(adBannerList, function (idx,item){
+					adBannerTag += '<div class="banner">\n';
+					adBannerTag += '	<a href="'+item.strVar1+'">\n';
+					adBannerTag += '		<div class="bnnbox">\n';
+					adBannerTag += '			<div class="txtWrap">\n';
+					adBannerTag += '				<p>'+item.strTitle1+'</p>\n';
+					adBannerTag += '			</div>\n';
+					adBannerTag += '			<img src="'+imgUrl+item.imgPath1+'" width="100%" alt="">\n';
+					adBannerTag += '		</div>\n';
+					adBannerTag += '	</a>\n';
+					adBannerTag += '</div>\n';
+				});
+			}
+
 			let priceLen;
 			// console.log(filterPriceList);
 			if(!gagajf.isNull(filterPriceList)){

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

@@ -394,10 +394,14 @@
 	// 검색어 찾기 결과
 	var fnAutoCompleteList = function (result){
 		if(result.autoKeywords.length==0 && result.brand == null && result.cateList == null && result.goodsList ==null){
+			$('.common_search .area_result .default_box').hide();
 			$('.common_search .area_result .searching_box').hide();
-			$('.empty_box .nodata').find('#noDataKeyword').text("'"+$("#searchMainForm").find('input[name=keyword]').val()+"'");
 			$('.common_search .area_result .empty_box').show();
+			$('.empty_box .nodata').find('#noDataKeyword').text("'"+$("#searchMainForm").find('input[name=keyword]').val()+"'");
 		}else{
+			$('.common_search .area_result .default_box').hide();
+			$('.common_search .area_result .searching_box').show();
+			$('.common_search .area_result .empty_box').hide();
 			// 자동완성 키워드
 			if(result.autoKeywords != null && result.autoKeywords.length > 0){
 				$(".autokeyword_blk").html('');
@@ -498,9 +502,6 @@
 	var fnOnkeyupKeyword = function (obj){
 		var searchValue = $(obj).val();
 		if(searchValue.length > 0) {
-			$('.common_search .area_result .default_box').hide();
-			$('.common_search .area_result .searching_box').show();
-			$('.common_search .area_result .empty_box').hide();
 			fnGetAutoSearch();
 		} else if (searchValue.length == 0) {
 			$('.common_search .area_result .searching_box').hide();

Разница между файлами не показана из-за своего большого размера
+ 39 - 0
src/main/webapp/WEB-INF/views/web/error/PaymentFailWeb.html


+ 10 - 1
src/main/webapp/biz/search.js

@@ -2,7 +2,7 @@
 var categoryGoodsList = [];
 var cnt = 1;
 var email = '';
-var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow, appGb) {
+var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow, appGb, firstRow, adBannerTag) {
 	console.log('search fnCreateGoodsList');
 	var tag = '';
 	var rank = 0;
@@ -176,6 +176,15 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 			tag += '	</div>';
 			tag += '</div>';
 		}
+		if(appGb=='Mob'){
+			if(idx==1 && firstRow==1){
+				tag += adBannerTag;
+			}
+		}else{
+			if(idx==4 && firstRow==1){
+				tag += adBannerTag;
+			}
+		}
 	});
 
 	return tag;

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

@@ -3786,7 +3786,13 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .cont_body {}
 	.sch_result .cont_body .sch_result_cont {display:none;}
 	.sch_result .cont_body .sch_result_cont .sch_recommend h3 {margin-bottom: 40px; text-align: center;}
-	.sch_result .cont_body .sch_result_cont .banner {margin-bottom:40px;}
+	.sch_result .cont_body .sch_result_cont .banner {position: relative; margin-bottom:40px;}
+	.sch_result .cont_body .sch_result_cont .banner .bnnbox{position:relative;}
+	.sch_result .cont_body .sch_result_cont .banner .txtWrap{width: 445px; margin:0 auto; position:absolute; top:50%; left:26.35%; transform:translate(0, -50%);z-index:1; text-align:left;}
+	.sch_result .cont_body .sch_result_cont .banner .txtWrap p{line-height: 1; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color:#222222; font-size:40px; font-weight:500; text-align:left; line-height:1.25;}
+	@media screen and (max-width:1460px) {
+		.sch_result .cont_body .sch_result_cont .banner .txtWrap p {font-size:34px;}
+	}
 	.sch_result .cont_body .sch_result_cont .itemsGrp {margin-left:-10px; margin-right:-10px;}
 	.sch_result .cont_body .sch_result_cont .itemsGrp .item_prod {width:calc(100% / 5);}
 	.sch_result .cont_body .sch_result_cont .sec_head .itemsGrp {margin-top:30px}
@@ -4442,6 +4448,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	/* 이용약관,개인정보취급방침,업체리스트 */
 	.ps .cont_head > div h3{text-align: center;margin-bottom: 0;padding-bottom: 60px;font-size: 40px;line-height: 1;}
 	.ps .cont_body {width: 1200px;margin: 0 auto;}
+	.ps .ps_terms .cont_body {margin:0 auto 160px;}
 	.ps .cont_foot {width: 1200px;margin: 0 auto;}
 	.ps p {font-size:16px;color:#666666;line-height:26px;letter-spacing:-0.025em;}
 	.ps {padding:0; border-top:1px solid #000;} 

Некоторые файлы не были показаны из-за большого количества измененных файлов