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

Merge branch 'develop' into bin2107

bin2107 5 лет назад
Родитель
Сommit
f7733f67a8
25 измененных файлов с 470 добавлено и 169 удалено
  1. 1 10
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  2. 58 0
      src/main/java/com/style24/front/biz/dao/TsfRecentlyGoodsDao.java
  3. 1 12
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  4. 89 0
      src/main/java/com/style24/front/biz/service/TsfRecentlyGoodsService.java
  5. 33 25
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  6. 7 0
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  7. 7 0
      src/main/java/com/style24/front/support/interceptor/TsfGoodsViewInterceptor.java
  8. 11 4
      src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java
  9. 1 0
      src/main/java/com/style24/persistence/domain/GoodsSafeNo.java
  10. 24 0
      src/main/java/com/style24/persistence/domain/RecentlyGoods.java
  11. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  12. 1 20
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  13. 106 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfRecentlyGoods.xml
  14. 3 3
      src/main/webapp/WEB-INF/views/mob/customer/NonCustOrderConfirmFormMob.html
  15. 16 6
      src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html
  16. 6 6
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  17. 15 13
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  18. 1 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html
  19. 6 6
      src/main/webapp/WEB-INF/views/mob/planning/PlanningCustGradeBenefitFormMob.html
  20. 32 32
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  21. 4 4
      src/main/webapp/WEB-INF/views/web/customer/NonCustOrderConfirmFormWeb.html
  22. 13 4
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  23. 17 7
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  24. 3 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailQnaFormWeb.html
  25. 14 14
      src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html

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

@@ -13,6 +13,7 @@ import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsSafeNo;
+import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsVideo;
 import com.style24.persistence.domain.GoodsViewHst;
@@ -21,7 +22,6 @@ 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.GoodsSearch;
 import com.style24.persistence.domain.searchengine.SearchEngine;
 
 /**
@@ -310,15 +310,6 @@ public interface TsfGoodsDao {
 	 */
 	Collection<GoodsCompose> getGoodsSetComposeList(Goods goods);
 
-	/**
-	 * 최근본상품 목록
-	 * @param goods - 상품 정보
-	 * @return
-	 * @author gagamel
-	 * @date 2021. 3. 22
-	 */
-	Collection<Goods> getRecentlyGoodsList(Goods goods);
-
 	/**
 	 * 상품의 다다익선 목록 
 	 *

+ 58 - 0
src/main/java/com/style24/front/biz/dao/TsfRecentlyGoodsDao.java

@@ -0,0 +1,58 @@
+package com.style24.front.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.RecentlyGoods;
+
+/**
+ * 최근본상품 Dao
+ * 
+ * @author gagamel
+ * @since 2021. 5. 13
+ */
+@ShopDs
+public interface TsfRecentlyGoodsDao {
+
+	/**
+	 * 최근본상품 총건수
+	 * @param recentlyGoods - 최근본상품 정보
+	 * @author gagamel
+	 * @date 2021. 5. 13
+	 */
+	int getRecentlyGoodsTotalCount(RecentlyGoods recentlyGoods);
+
+	/**
+	 * 맨 처음 등록된 최근본상품 삭제
+	 * @param recentlyGoods - 최근본상품 정보
+	 * @author gagamel
+	 * @date 2021. 5. 13
+	 */
+	void deleteRecentlyFirstGoods(RecentlyGoods recentlyGoods);
+
+	/**
+	 * 최근본상품 저장
+	 * @param recentlyGoods - 최근본상품 정보
+	 * @author gagamel
+	 * @date 2021. 5. 13
+	 */
+	void createRecentlyGoods(RecentlyGoods recentlyGoods);
+
+	/**
+	 * 로그인 후 최근본상품 Update
+	 * @param recentlyGoods - 최근본상품 정보
+	 * @author gagamel
+	 * @since 2021. 5. 13
+	 */
+	public void updateRecentlyGoodsAfterLogin(RecentlyGoods recentlyGoods);
+
+	/**
+	 * 최근본상품 목록
+	 * @param recentlyGoods - 최근본상품 정보
+	 * @return
+	 * @author gagamel
+	 * @date 2021. 5. 13
+	 */
+	Collection<RecentlyGoods> getRecentlyGoodsList(RecentlyGoods recentlyGoods);
+
+}

+ 1 - 12
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -22,6 +22,7 @@ import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsSafeNo;
+import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsVideo;
 import com.style24.persistence.domain.GoodsViewHst;
@@ -31,7 +32,6 @@ import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.SizeInfo;
 import com.style24.persistence.domain.Tmtb;
 import com.style24.persistence.domain.searchengine.SearchEngine;
-import com.style24.persistence.domain.GoodsSearch;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -709,17 +709,6 @@ public class TsfGoodsService {
 		return getGoodsSetComposeList;
 	}
 
-	/**
-	 * 최근본상품 목록
-	 * @param goods - 상품 정보
-	 * @return
-	 * @author gagamel
-	 * @date 2021. 3. 22
-	 */
-	public Collection<Goods> getRecentlyGoodsList(Goods goods) {
-		return goodsDao.getRecentlyGoodsList(goods);
-	}
-
 	/**
 	 * 상품의 다다익선 목록 
 	 * @param goods

+ 89 - 0
src/main/java/com/style24/front/biz/service/TsfRecentlyGoodsService.java

@@ -0,0 +1,89 @@
+package com.style24.front.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.style24.front.biz.dao.TsfRecentlyGoodsDao;
+import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.domain.RecentlyGoods;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 최근본상품 Service
+ *
+ * @author gagamel
+ * @since 2021. 5. 13
+ */
+@Service
+@Slf4j
+public class TsfRecentlyGoodsService {
+
+	@Autowired
+	private TsfRecentlyGoodsDao recentlyGoodsDao;
+
+	/**
+	 * 최근본상품 저장
+	 * @param goodsCd - 상품코드
+	 * @author gagamel
+	 * @since 2021. 5. 13
+	 */
+	@Transactional("shopTxnManager")
+	public void createRecentlyGoods(String goodsCd) {
+		RecentlyGoods recentlyGoods = new RecentlyGoods();
+		recentlyGoods.setGoodsCd(goodsCd);
+		recentlyGoods.setJsessionId(TsfSession.getSessionId());
+
+		if (TsfSession.isLogin()) {
+			recentlyGoods.setCustNo(TsfSession.getInfo().getCustNo());
+		}
+
+		// 최근본상품 건수
+		int totCnt = recentlyGoodsDao.getRecentlyGoodsTotalCount(recentlyGoods);
+		log.info("최근본상품 건수: {}", totCnt);
+
+		if (totCnt >= 50) {
+			// 맨 처음 등록된 상품 삭제
+			recentlyGoodsDao.deleteRecentlyFirstGoods(recentlyGoods);
+		}
+
+		// 최근본상품 생성
+		recentlyGoodsDao.createRecentlyGoods(recentlyGoods);
+	}
+
+	/**
+	 * 로그인 후 최근본상품 Update
+	 * 		회원 로그인 후 호출됨으로 세션 정보 있음
+	 * @param custNo - 고객번호
+	 * @author gagamel
+	 * @since 2021. 5. 13
+	 */
+	@Transactional("shopTxnManager")
+	public void updateRecentlyGoodsAfterLogin(Integer custNo) {
+		RecentlyGoods recentlyGoods = new RecentlyGoods();
+		recentlyGoods.setJsessionId(TsfSession.getSessionId());
+		recentlyGoods.setCustNo(custNo);
+		recentlyGoodsDao.updateRecentlyGoodsAfterLogin(recentlyGoods);
+	}
+
+	/**
+	 * 최근본상품 목록
+	 * @return
+	 * @author gagamel
+	 * @date 2021. 3. 22
+	 */
+	public Collection<RecentlyGoods> getRecentlyGoodsList() {
+		RecentlyGoods recentlyGoods = new RecentlyGoods();
+		recentlyGoods.setJsessionId(TsfSession.getSessionId());
+
+		if (TsfSession.isLogin()) {
+			recentlyGoods.setCustNo(TsfSession.getInfo().getCustNo());
+		}
+
+		return recentlyGoodsDao.getRecentlyGoodsList(recentlyGoods);
+	}
+
+}

+ 33 - 25
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -26,6 +26,7 @@ import com.style24.front.biz.service.TsfCounselService;
 import com.style24.front.biz.service.TsfCouponService;
 import com.style24.front.biz.service.TsfDisplayService;
 import com.style24.front.biz.service.TsfGoodsService;
+import com.style24.front.biz.service.TsfRecentlyGoodsService;
 import com.style24.front.biz.service.TsfRendererService;
 import com.style24.front.biz.service.TsfReviewService;
 import com.style24.front.biz.service.TsfWishlistService;
@@ -43,6 +44,7 @@ import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.GoodsVideo;
 import com.style24.persistence.domain.Lookbook;
 import com.style24.persistence.domain.Measurement;
+import com.style24.persistence.domain.RecentlyGoods;
 import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.Review;
 import com.style24.persistence.domain.SizeInfo;
@@ -99,6 +101,9 @@ public class TsfGoodsController extends TsfBaseController {
 	@Value("${has-ssl}")
 	private String hasSsl;
 
+	@Autowired
+	private TsfRecentlyGoodsService recentlyGoodsService;
+
 	/**
 	 * 상품상세
 	 *
@@ -209,7 +214,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 			// 사은품
 			paramsGoods.setMaxRownum(1);
-			mav.addObject("freeGoodsList", goodsService.getFreeGoodsList(paramsGoods)); 
+			mav.addObject("freeGoodsList", goodsService.getFreeGoodsList(paramsGoods));
 
 			// 딜용 상품평건수
 			Review review = new Review();
@@ -1236,29 +1241,32 @@ public class TsfGoodsController extends TsfBaseController {
 	 */
 	@GetMapping("/recently/list")
 	@ResponseBody
-	public Collection<Goods> getRecentlyGoodsList() {
-		Collection<Goods> recentlyGoodsList = new ArrayList<>();
-		Goods goods = new Goods();
-
-		String ckGoodsCds = GagaCookieUtil.getCookie(TsfSession.getHttpServletRequest(), TsfConstants.CK_PREFIX + "_today_goodsCd");
-		if (StringUtils.isNotBlank(ckGoodsCds)) {
-			String[] arrGoodsCds = ckGoodsCds.split("\\,");
-			StringBuilder sql = new StringBuilder();
-			if (arrGoodsCds.length > 0) {
-				int idx = 1;
-				for (String goodsCd : arrGoodsCds) {
-					if (!StringUtils.isBlank(goodsCd)) {
-						if (idx > 1) {
-							sql.append("UNION ALL ");
-						}
-						sql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
-					}
-				}
-				goods.setGoodsSql(sql.toString());
-				recentlyGoodsList = goodsService.getRecentlyGoodsList(goods);
-			}
-		}
-		return recentlyGoodsList;
+	public Collection<RecentlyGoods> getRecentlyGoodsList() {
+//		// DB 처리를 하는 것으로 변경함에 따라 해당 부분 주석 처리
+//		Collection<RecentlyGoods> recentlyGoodsList = new ArrayList<>();
+//		RecentlyGoods recentlyGoods = new RecentlyGoods();
+//		
+//		String ckGoodsCds = GagaCookieUtil.getCookie(TsfSession.getHttpServletRequest(), TsfConstants.CK_PREFIX + "_today_goodsCd");
+//		if (StringUtils.isNotBlank(ckGoodsCds)) {
+//			String[] arrGoodsCds = ckGoodsCds.split("\\,");
+//			StringBuilder sql = new StringBuilder();
+//			if (arrGoodsCds.length > 0) {
+//				int idx = 1;
+//				for (String goodsCd : arrGoodsCds) {
+//					if (!StringUtils.isBlank(goodsCd)) {
+//						if (idx > 1) {
+//							sql.append("UNION ALL ");
+//						}
+//						sql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
+//					}
+//				}
+//				recentlyGoods.setGoodsSql(sql.toString());
+//				recentlyGoodsList = recentlyGoodsService.getRecentlyGoodsList();
+//			}
+//		}
+//
+//		return recentlyGoodsList;
+		return recentlyGoodsService.getRecentlyGoodsList();
 	}
 
 	/**
@@ -1334,7 +1342,7 @@ public class TsfGoodsController extends TsfBaseController {
 		// 상품 고시정보
 		mav.addObject("goodsNotiList", goodsService.getGoodsNotiList(goods));
 		// 상품 안전인증 정보
-		mav.addObject("goodsSafeNo", goodsService.getGoodsSafeNo(goods)); 
+		mav.addObject("goodsSafeNo", goodsService.getGoodsSafeNo(goods));
 
 		// 상품 공통 베너
 		log.info("paramsGoods={}", paramsGoods);

+ 7 - 0
src/main/java/com/style24/front/biz/web/TsfNoMemberController.java

@@ -252,6 +252,13 @@ public class TsfNoMemberController extends TsfBaseController {
 			order.setOrdPhnno(order.getOrdPhnno().replaceAll("(\\d{3})(\\d{3,4})(\\d{4})", "$1-$2-$3"));
 		}
 		boolean isFind = orderService.getPagingOrdNoListCount(order) > 0;
+
+		if (isFind) {
+			TsfSession.setAttribute("noMemberOrdNm",order.getOrdNm());
+			TsfSession.setAttribute("noMemberOrdNo", String.valueOf(order.getOrdNo()));
+			TsfSession.setAttribute("noMemberPhnno",order.getOrdPhnno());
+		}
+
 		result.setBoolean("isFind", isFind);
 		return result;
 	}

+ 7 - 0
src/main/java/com/style24/front/support/interceptor/TsfGoodsViewInterceptor.java

@@ -10,6 +10,7 @@ import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
 import com.style24.front.biz.service.TsfGoodsService;
+import com.style24.front.biz.service.TsfRecentlyGoodsService;
 import com.style24.front.support.env.TsfConstants;
 
 import lombok.extern.slf4j.Slf4j;
@@ -34,6 +35,9 @@ public class TsfGoodsViewInterceptor extends HandlerInterceptorAdapter {
 	@Autowired
 	private TsfGoodsService goodsService;
 
+	@Autowired
+	private TsfRecentlyGoodsService recentlyGoodsService;
+
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 		// Parameter
@@ -42,6 +46,9 @@ public class TsfGoodsViewInterceptor extends HandlerInterceptorAdapter {
 		// 상품뷰이력 생성
 		goodsService.createGoodsViewHst(params.getString("goodsCd"), params.getString("ithrCd"));
 
+		// 최근본상품 생성
+		recentlyGoodsService.createRecentlyGoods(params.getString("goodsCd"));
+
 		// SSL Server
 		boolean isSslServer = Boolean.parseBoolean(hasSsl);
 		log.debug("isSslServer: [{}]", isSslServer);

+ 11 - 4
src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java

@@ -17,6 +17,7 @@ import org.springframework.security.web.authentication.AuthenticationSuccessHand
 
 import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfLoginService;
+import com.style24.front.biz.service.TsfRecentlyGoodsService;
 import com.style24.front.support.env.TsfConstants;
 import com.style24.front.support.security.TsfLoginDetails;
 import com.style24.front.support.security.session.TsfSession;
@@ -65,6 +66,9 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 	@Autowired
 	private TsfCartService cartService;
 
+	@Autowired
+	private TsfRecentlyGoodsService recentlyGoodsService;
+
 	@Value("${has-ssl}")
 	private String hasSsl;
 
@@ -135,6 +139,9 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 		// 로그인 후 장바구니 Update
 		cartService.updateCartToAfterLogin(custNo);
 
+		// 로그인 후 최근본상품 Update
+		recentlyGoodsService.updateRecentlyGoodsAfterLogin(custNo);
+
 		// 비밀번호 변경 캠페인 일자
 		if (loginDetails.getLoginInfo().getPwdChgDay() >= CHANG_PWD_CAMPAIGN_DAY) {
 			returnUrl = "/customer/password/campaign/form";
@@ -146,17 +153,17 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 		}
 
 		// 상품상세 바로구매 > 로그인 한 경우
-		if (returnUrl.indexOf(GOODS_DETAIL_FORM) > -1)  {
+		if (returnUrl.indexOf(GOODS_DETAIL_FORM) > -1) {
 			if (StringUtils.isNotBlank(cartSqArr)) {
-				returnUrl = "/order/noMember?cartSqArr="+ cartSqArr;
+				returnUrl = "/order/noMember?cartSqArr=" + cartSqArr;
 			}
 		}
 
 		if (isSslServer) {
 			// 로그인 성공 쿠키로 저장 (마케팅 스크립트용)
-			GagaCookieUtil.setSecureCookie(response, TsfConstants.CK_PREFIX + "_login_success", "Y", 1*60);
+			GagaCookieUtil.setSecureCookie(response, TsfConstants.CK_PREFIX + "_login_success", "Y", 1 * 60);
 		} else {
-			GagaCookieUtil.setCookie(response, TsfConstants.CK_PREFIX + "_login_success", "Y", 1*60);
+			GagaCookieUtil.setCookie(response, TsfConstants.CK_PREFIX + "_login_success", "Y", 1 * 60);
 		}
 
 		GagaMap result = new GagaMap();

+ 1 - 0
src/main/java/com/style24/persistence/domain/GoodsSafeNo.java

@@ -27,6 +27,7 @@ public class GoodsSafeNo extends TscBaseDomain {
 	private String certFormGb;
 	private String certFormNm;
 	private String certType;
+	private String certTypeNm;
 	private String certNum;
 	private String certState;
 	private String certDiv;

+ 24 - 0
src/main/java/com/style24/persistence/domain/RecentlyGoods.java

@@ -0,0 +1,24 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 최근본상품 Domain
+ *
+ * @author gagamel
+ * @since 2021. 5. 13
+ */
+@SuppressWarnings("serial")
+@Data
+public class RecentlyGoods extends TscBaseDomain {
+
+	private String goodsCd;		// 상품코드
+	private String jsessionId;	// 세션ID
+	private Integer custNo;		// 고객번호
+	private String goodsSql;	// 오늘본상품SQL
+	private String mainColorCd;	// 메인칼러코드
+	private String sysImgNm;	// 상품이미지명
+
+}

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

@@ -634,7 +634,7 @@
 	<!--고객 등급 기준 주문정보-->
 	<select id="getCustGradeOrderInfo" parameterType="CustGrade" resultType="CustGrade">
 		/* TsfCustomer.getCustGradeOrderInfo */
-		SELECT   COUNT(DISTINCT A.ORD_NO) AS ORD_NO_CNT
+		SELECT   COUNT(DISTINCT A.ORD_NO) AS ORD_CNT
 		       , SUM(A.SUM_REAL_ORD_AMT)  AS SUM_REAL_ORD_AMT
 		FROM (
 		      SELECT O.ORD_NO

+ 1 - 20
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -662,6 +662,7 @@
 		      , CERT_FORM_GB
 		      , FN_GET_CODE_NM('G084',CERT_FORM_GB) AS CERT_FORM_NM  
 		      , CERT_TYPE
+		      , FN_GET_CODE_NM('G081',CERT_TYPE) AS CERT_TYPE_NM  
 		      , CERT_NUM
 		      , CERT_STATE
 		      , CERT_DIV
@@ -1017,26 +1018,6 @@
 		ORDER BY A.DISP_ORD
 	</select>
 	
-	<!-- 최근본상품 조회 -->
-	<select id="getRecentlyGoodsList"  parameterType="Goods" resultType="Goods">
-		/* TsfGoods.getRecentlyGoodsList */
-		SELECT G.GOODS_CD
-		     , G.MAIN_COLOR_CD
-		     , GI.SYS_IMG_NM
-		FROM   (
-		        ${goodsSql}
-		       ) A
-		     , TB_GOODS G
-		     , TB_GOODS_IMG GI
-		WHERE  A.GOODS_CD = G.GOODS_CD
-		AND    G.GOODS_CD = GI.GOODS_CD
-		AND    G.MAIN_COLOR_CD = GI.COLOR_CD
-		AND    G.GOODS_STAT = 'G008_90' /*승인완료된상품만*/
-		AND    GI.DEFAULT_IMG_YN = 'Y' /*기본이미지만*/
-		GROUP  BY G.GOODS_CD, G.MAIN_COLOR_CD, GI.SYS_IMG_NM, A.DISP_ORD
-		ORDER  BY A.DISP_ORD DESC
-	</select>
-	
 	<!-- 상품의 다다익선 목록 -->
 	<select id="getTmtbList"  parameterType="Goods" resultType="Tmtb">
 		/* TsfGoods.getTmtbList */

+ 106 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfRecentlyGoods.xml

@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.front.biz.dao.TsfRecentlyGoodsDao">
+
+	<!-- 최근본상품 총건수 -->
+	<select id="getRecentlyGoodsTotalCount"  parameterType="RecentlyGoods" resultType="int">
+		/* TsfRecentlyGoods.getRecentlyGoodsTotalCount */
+		SELECT COUNT(*)
+		FROM   TB_RECENTLY_GOODS
+		WHERE  1 = 1
+		AND    (
+		        JSESSION_ID = #{jsessionId}
+		        OR
+		        CUST_NO = #{custNo}
+		       )
+	</select>
+	
+	<!-- 맨 처음 등록된 최근본상품 삭제 -->
+	<delete id="deleteRecentlyFirstGoods"  parameterType="RecentlyGoods">
+		/* TsfRecentlyGoods.deleteRecentlyFirstGoods */
+		DELETE
+		FROM   TB_RECENTLY_GOODS
+		WHERE  RGOODS_SQ = (SELECT RGOODS_SQ
+		                    FROM   TB_RECENTLY_GOODS
+		                    WHERE  1 = 1
+		                    AND    (
+		                            JSESSION_ID = #{jsessionId}
+		                            OR
+		                            CUST_NO = #{custNo}
+		                           )
+		                    ORDER  BY RGOODS_SQ
+		                    LIMIT 1
+		                   )
+	</delete>
+	
+	<!-- 최근본상품 저장 -->
+	<insert id="createRecentlyGoods" parameterType="RecentlyGoods">
+		/* TsfRecentlyGoods.createRecentlyGoods */
+		INSERT INTO TB_RECENTLY_GOODS (
+		       RGOODS_SQ
+		     , GOODS_CD
+		     , JSESSION_ID
+		     , CUST_NO
+		     , REG_DT
+		     , UPD_DT
+		)
+		SELECT NULL
+		     , #{goodsCd}
+		     , #{jsessionId}
+		     , #{custNo}
+		     , NOW()
+		     , NOW()
+		FROM   DUAL
+		WHERE  (SELECT COUNT(*)
+		        FROM   TB_RECENTLY_GOODS
+		        WHERE  1 = 1
+		        AND    (
+		                (GOODS_CD = #{goodsCd} AND JSESSION_ID = #{jsessionId})
+		                OR
+		                (GOODS_CD = #{goodsCd} AND CUST_NO = #{custNo})
+		               )
+		       ) = 0
+	</insert>
+	
+	<!-- 로그인 후 최근본상품 Update -->
+	<insert id="updateRecentlyGoodsAfterLogin" parameterType="RecentlyGoods">
+		/* TsfRecentlyGoods.updateRecentlyGoodsAfterLogin */
+		UPDATE TB_RECENTLY_GOODS
+		SET    CUST_NO = #{custNo}
+		     , UPD_DT = NOW()
+		WHERE  JSESSION_ID = #{jsessionId}
+	</insert>
+	
+	<!-- 최근본상품 목록 -->
+	<select id="getRecentlyGoodsList"  parameterType="RecentlyGoods" resultType="RecentlyGoods">
+		/* TsfRecentlyGoods.getRecentlyGoodsList */
+		SELECT G.GOODS_CD
+		     , G.MAIN_COLOR_CD
+		     , GI.SYS_IMG_NM
+		FROM   (
+		        SELECT GOODS_CD
+		             , RANK() OVER(ORDER BY REG_DT DESC, GOODS_CD) AS DISP_ORD
+		        FROM   TB_RECENTLY_GOODS
+		        WHERE  1 = 1
+		        <choose>
+		            <when test="custNo != null and custNo > 0"> <!-- 로그인했으면 -->
+		        AND    CUST_NO = #{custNo}
+		            </when>
+		            <otherwise>
+		        AND    JSESSION_ID = #{jsessionId}
+		            </otherwise>
+		        </choose>
+		        LIMIT 30
+		       ) A
+		     , TB_GOODS G
+		     , TB_GOODS_IMG GI
+		WHERE  A.GOODS_CD = G.GOODS_CD
+		AND    G.GOODS_CD = GI.GOODS_CD
+		AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		AND    G.GOODS_STAT = 'G008_90' /*승인완료된상품만*/
+		AND    GI.DEFAULT_IMG_YN = 'Y' /*기본이미지만*/
+		GROUP  BY G.GOODS_CD, G.MAIN_COLOR_CD, GI.SYS_IMG_NM, A.DISP_ORD
+		ORDER  BY A.DISP_ORD
+	</select>
+	
+</mapper>

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/customer/NonCustOrderConfirmFormMob.html

@@ -91,14 +91,14 @@
 		if (!gagajf.validation($('#nonCustOrderForm'))) {
 			return;
 		}
-		gagajf.ajaxFormSubmit("/noMember/order/info/validation",'#nonCustOrderForm', fnOrderInfoCallback)
+		gagajf.ajaxFormSubmit('/noMember/order/info/validation','#nonCustOrderForm', fnOrderInfoCallback)
 	});
 
 	var fnOrderInfoCallback = function (result) {
 		if (result.isFind) {
-			$('#nonCustOrderForm').submit();
+			cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);
 		} else {
-			mcxDialog.alert("입력하신 정보가 정확하지 않습니다. 다시 시도해주세요.");
+			mcxDialog.alert('입력하신 정보가 정확하지 않습니다. 다시 시도해주세요.');
 			return;
 		}
 	};

+ 16 - 6
src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html

@@ -39,12 +39,22 @@
 									<span>1인 최대 <th:block th:text="${(goodsCoupon.custPubLimitQty > 0) ? #numbers.formatInteger(goodsCoupon.custPubLimitQty, 0,'COMMA') +'장' : '무제한'}"></span>
 								</p>
 							</div>
-							<th:block th:if="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}">
+							<div class="btn_group_flex">
+								<div>
+									<button type="button" class="btn btn_dark" id="btn_result_coupon" 
+											th:disabled="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}"
+											th:attr="cpnId=${goodsCoupon.cpnId}" th:id="${'coupon_'+goodsCoupon.cpnId}" onclick="fnGoodsCouponDown(this);">
+										<span>쿠폰받기</span>
+										<span>받기완료</span>
+									</button>
+								</div>
+							</div>
+							<!-- <th:block th:if="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}">
 							<button type="button" class="btn btn_dark btn_block btn_coupon_down"   disabled="disabled"><span>받기완료</span></button>
 							</th:block>
 							<th:block th:unless="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}">
 							<button type="button" class="btn btn_dark btn_block btn_coupon_down" th:attr="cpnId=${goodsCoupon.cpnId}" th:id="${'coupon_'+goodsCoupon.cpnId}" onclick="fnGoodsCouponDown(this);"><span>쿠폰받기</span></button>
-							</th:block>
+							</th:block> -->
 						</div>
 					</li>
 				</ul>
@@ -72,8 +82,8 @@
 		let cpnId = $obj.attr('cpnId');
 		let goodsCd = $('#goodsCouponForm input[name=goodsCd]').val();
 		
-		 gagajf.ajaxJsonSubmit(_PAGE_GOODS_CPN_DOWNLOAD, JSON.stringify({goodsCd: goodsCd, cpnId: cpnId}), fnGoodsCouponCallBack);
-		 
+		gagajf.ajaxJsonSubmit(_PAGE_GOODS_CPN_DOWNLOAD, JSON.stringify({goodsCd: goodsCd, cpnId: cpnId}), fnGoodsCouponCallBack);
+		
 	//쿠폰이 발급되었습니다
 	//죄송합니다. 쿠폰이 모두 소진되었습니다
 	//죄송합니다. 해당 쿠폰은 다운로드가 불가합니다.
@@ -90,13 +100,13 @@
 				if (coupon.cpnId == cpnId){
 					if (Number(coupon.custPubLimitQty) > 0){
 						if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
-							$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+							//$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 							$('#coupon_'+ coupon.cpnId).attr('disabled', true);
 						}
 					}
 					if (Number(coupon.TotPubLimitQty) > 0){
 						if (Number(coupon.TotPubLimitQty) <= Number(coupon.CustCouponCnt)){
-							$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+							//$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
 							$('#coupon_'+ coupon.cpnId).attr('disabled', true);
 						}
 					}

+ 6 - 6
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html

@@ -65,9 +65,9 @@
 			</th:block>
 			
 			<!-- 관리자 에디터입력 내용 노출  상단 html -->
-			<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty and goodsInfo.selfGoodsYn =='Y'}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+			<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
 			
-			<th:block th:if="${goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+			<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
 		</div>	
 			
 		<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">	
@@ -135,11 +135,11 @@
 				</span>
 			</div>
 		</div>
-		<!-- //라벨 노출 -->
+		<!-- //네이밍룰 안맞는 이미지 노출-->
 		<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01')}">
 			<div class="view">
 				<th:block th:each="goodsImg, status : ${goodsImgList}" >
-					<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
+					<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 					</th:block>
 			</div>
 		</div>
@@ -210,10 +210,10 @@
 				<div><i class="ico ico_kcl"></i></div>
 				<div>
 					<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-					<p class="tit normal" th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+					<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
 					</th:block>
 					<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-					<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' 안전인증'}"></p>
+					<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' / '+goodsSafeNo.certTypeNm}"></p>
 					</th:block>
 					<p class="normal" >
 						<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">

+ 15 - 13
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -97,7 +97,7 @@
 						</p>
 						<p class="save_point" th:if="${goodsInfo.pntAmt > 0}">스타일포인트 <th:block th:text="${#numbers.formatInteger(goodsInfo.pntAmt, 0,'COMMA')}"></th:block>P 적립예정</p>
 						<div class="btn_group_flex">
-							<div><button type="button" class="btn btn_default" id="btn_saleCoupon_pop" th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.goodsType}]])">쿠폰받기</button></div>
+							<div><button type="button" class="btn btn_default" id="btn_saleCoupon_pop" th:if="${goodsCouponList != null and !goodsCouponList.empty}" th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.goodsType}]])">쿠폰받기</button></div>
 						</div>
 					</div>
 				</div>
@@ -133,9 +133,13 @@
 						<div class="form_field">
 							<div th:each="goodsOption2, status : ${goodsOption2List}">
 								<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
-										th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}"
-										 />
+										th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}"/>
+								<th:block th:if="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}">
+								<label th:for="${goodsOption2.optCd}">90</span></label>
+								</th:block>
+								<th:block th:unless="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}">
 								<label th:for="${goodsOption2.optCd}" th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )"><span th:text="${goodsOption2.optCd2}">90</span></label>
+								</th:block>
 							</div>
 						</div>
 					</div>
@@ -279,9 +283,9 @@
 					
 				<div class="view_outfit_box" >
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
-					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty and goodsInfo.selfGoodsYn =='Y'}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
 					
-					<th:block th:if="${goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+					<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
 				</div>
 				<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">	
 				<!-- 착용컷 노출 -->
@@ -348,11 +352,11 @@
 						</span>
 					</div>
 				</div>
-				<!-- //라벨 노출 -->
+				<!-- //네이밍룰 안맞는 이미지 노출 -->
 				<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01')}">
 					<div class="view">
 						<th:block th:each="goodsImg, status : ${goodsImgList}" >
-							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 							</th:block>
 					</div>
 				</div>
@@ -422,10 +426,10 @@
 						<div><i class="ico ico_kcl"></i></div>
 						<div>
 							<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+							<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
 							</th:block>
 							<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' 안전인증'}"></p>
+							<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' / '+goodsSafeNo.certTypeNm}"></p>
 							</th:block>
 							<p class="normal" >
 								<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
@@ -470,10 +474,10 @@
 						<div><i class="ico ico_kcl"></i></div>
 						<div>
 							<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certDiv +' '+goodsCompose.goodsSafeNo.certTypeNm + ' / ' + goodsCompose.goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
 							</th:block>
 							<th:block th:unless="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certFormNm + ' 안전인증'}"></p>
+							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certFormNm + ' / '+goodsCompose.goodsSafeNo.certTypeNm}"></p>
 							</th:block>
 							<p class="normal" >
 								<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
@@ -2080,8 +2084,6 @@
 			return false;
 		});   
 
-	   
-		
 		fnOptionSoldout();
 		
 		// 광고 스크립트용

+ 1 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html

@@ -138,6 +138,7 @@
 		}else{
 			$('.nodata').show();
 			$('#btnMore').parent().hide();
+			$('.form_field.check_secret').hide();
 		}
 	}
 	

+ 6 - 6
src/main/webapp/WEB-INF/views/mob/planning/PlanningCustGradeBenefitFormMob.html

@@ -33,7 +33,7 @@
 						<span class="my_rank" th:text="${customerInfo.custGradeNm}">GOLD</span> 입니다.
 					</p>
 				</div>
-				<button type="button" id="btnGradeCoupon" class="btn cou_btn">등급 쿠폰 다운로드</button> <!-- 210416_수정 : id 추가. -->
+				<button type="button" id="btnGradeCoupon" class="btn cou_btn">등급 쿠폰 다운로드</button>
 			</div>
 		</div>
 		<div class="inner">
@@ -77,7 +77,7 @@
 				<div class="benefit_txt">
 					<p id="etcGrade">
 						<span id="ordSpan">	구매 건수 <strong id="ordCnt" class="c_primary">0회</strong> </span>
-						<span id="realOrdAmtSpan">, 구매 금액 <strong id="realOrdAmt" class="c_primary">0원 </span>
+						<span id="realOrdAmtSpan">또는 구매 금액 <strong id="realOrdAmt" class="c_primary">0원 </span>
 						</strong> 더 구매하시면 <strong>
 						<span id="nextGrde" class="c_black"></span>로 등급UP!</strong>
 					</p> <!-- 등급 상승까지 남은 정보 안내 -->
@@ -214,8 +214,8 @@
 							<p class="coupon_txt">쿠폰 혜택</p>
 							<div class="coupon_box clear">
 								<div class="coupon_info">
-									<img src="/images/mo/ico_coupon_5.png" alt="5% 할인 쿠폰"> <!-- 210415_수정 : 이미지 수정. -->
-									<p>최대 3천원 할인<br>(3만원 이상 구매 시)</p> <!-- 210415_수정 : 텍스트 수정. -->
+									<img src="/images/mo/ico_coupon_5.png" alt="5% 할인 쿠폰">
+									<p>최대 3천원 할인<br>(2만원 이상 구매 시)</p>
 								</div>
 							</div>
 						</div>
@@ -235,7 +235,7 @@
 						<div class="icon welcome"><span>W</span></div>
 						<div class="desc">
 							<span>WELCOME</span>
-							<p>최근 3개월 미구매</p> <!-- 210415_수정 : 텍스트 수정. -->
+							<p>신규회원 및 최근 3개월 미구매</p>
 						</div>
 					</div>
 					<div class="level_content one_row">
@@ -244,7 +244,7 @@
 							<div class="coupon_box clear">
 								<div class="coupon_info">
 									<img src="/images/mo/ico_coupon_15.png" alt="15% 할인 쿠폰">
-									<p><strong>신규회원 한정 1회 발급</strong><br>최대 3만원 할인</p> <!-- 210415_추가 : strong태그 추가. -->
+									<p><strong>신규회원 한정 1회 발급</strong><br>최대 3만원 할인</p>
 								</div>
 							</div>
 						</div>

+ 32 - 32
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -755,53 +755,53 @@ if(goods1.length>0){
 	for (var i = 0; i < template.length; i++) {
 		var html = '';
 		if(template[i].tmplType == 'G082_50' && array[0] == template[i].planContSq && typeof array[0] != 'undefined') {
-			html += '<div class="dp_listItems_cont type1">';
-			html += '	<h2 class="dp_subtitle">';
+			html += '<div class="dp_listItems_cont type1">\n';
+			html += '	<h2 class="dp_subtitle">\n';
 			if (template[i].linkUrl != null && template[i].linkUrl != '') { /* 링크 변경 예정 */
 				if (template[i].linkOpenGb == 'M') { //본창
-					html += '        <a href="http://'+template[i].linkUrl+'" target="_self">'+template[i].title+' <i class="ico_arrow"></i></a>';
+					html += '        <a href="http://'+template[i].linkUrl+'" target="_self">'+template[i].title+'</a>\n';
 				}else{
-					html += '        <a href="http://'+template[i].linkUrl+'" target="_blank">'+template[i].title+' <i class="ico_arrow"></i></a>';
+					html += '        <a href="http://'+template[i].linkUrl+'" target="_blank">'+template[i].title+'</a>\n';
 				}
 			}else{
-				html += '        <a href="javascript:void(0)">'+template[i].title+'</a>';
+				html += '        <a href="javascript:void(0)">'+template[i].title+'</a>\n';
 			}
-			html += '   </h2>';
-			html += '	<div class="swiper-container item01">';
-			html += '		<div class="swiper-wrapper">';
+			html += '   </h2>\n';
+			html += '	<div class="swiper-container item01">\n';
+			html += '		<div class="swiper-wrapper">\n';
 			$.each(goods1, function(idx, item)  {
 				if (item.planContSq == template[i].planContSq) {
-					html += '			<div class="swiper-slide">';
-					html += '				<div class="item_prod">';
-					html += '					<div class="item_state">';
-					html += '						<a href="#none" class="itemLink">';
-					html += '							<div class="itemPic">';
-					html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'" alt="">';
-					html += '							</div>';
-					html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>';
-					html += '							<div class="itemName">'+item.goodsNm+'</div>';
-					html += '							<p class="itemPrice">';
+					html += '			<div class="swiper-slide">\n';
+					html += '				<div class="item_prod">\n';
+					html += '					<div class="item_state">\n';
+					html += '						<a href="#none" class="itemLink">\n';
+					html += '							<div class="itemPic">\n';
+					html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'?RS=780" alt="">\n';
+					html += '							</div>\n';
+					html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+					html += '							<div class="itemName">'+item.goodsNm+'</div>\n';
+					html += '							<p class="itemPrice">\n';
 					if (item.currPrice != item.listPrice) {
-						html += '								<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+						html += '								<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
 					}
 					html +=                             item.currPrice.addComma();
 					if (item.currPrice != item.listPrice) {
-						html += '								<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>';
+						html += '								<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>\n';
 					}
-					html += '							</p>';
+					html += '							</p>\n';
 					if(item.goodsTnm != null){
-						html += '							<div class="itemComment">'+item.goodsTnm+'</div>';
+						html += '							<div class="itemComment">'+item.goodsTnm+'</div>\n';
 					}
-					html += '						</a>';
-					html += '					</div>';
-					html += '				</div>';
-					html += '			</div>';
+					html += '						</a>\n';
+					html += '					</div>\n';
+					html += '				</div>\n';
+					html += '			</div>\n';
 				}
 			});
-			html += '		</div>';
-			html += '		<div class="swiper-pagination"></div>';
-			html += '	</div>';
-			html += '</div>';
+			html += '		</div>\n';
+			html += '		<div class="swiper-pagination"></div>\n';
+			html += '	</div>\n';
+			html += '</div>\n';
 			$("#G082_50" +array[0]).append(html);
 		}
 		
@@ -825,9 +825,9 @@ if(image.length>0){
 	$.each(image, function(idx, item)  {
 		html += '				<div class="swiper-slide">';
 		if (item.linkOpenGb == 'M') {
-			html += '					<a href="http://'+item.linkUrl+'" target="_self"><img src="'+ imgUrl + item.itemVal +'" ></a>';
+			html += '					<a href="http://'+item.linkUrl+'" target="_self"><img src="'+ imgUrl + item.itemVal +'?RS=1206" ></a>';
 		}else{
-			html += '					<a href="http://'+item.linkUrl+'" target="_blank"><img src="'+ imgUrl + item.itemVal +'" ></a>';
+			html += '					<a href="http://'+item.linkUrl+'" target="_blank"><img src="'+ imgUrl + item.itemVal +'?RS=1206" ></a>';
 		}
 		html += '				</div>';
 	});

+ 4 - 4
src/main/webapp/WEB-INF/views/web/customer/NonCustOrderConfirmFormWeb.html

@@ -26,7 +26,7 @@
 				<h4>비회원 주문 조회</h4>
 			</div>
 			<div class="cont_body">
-				<form id="nonCustOrderForm" class="form_wrap form_col_c form_full" role="form" action="/noMember/order/list/form" method="post">
+				<form id="nonCustOrderForm" class="form_wrap form_col_c form_full" role="form">
 					<div class="form_info">
 						<span class="ico_content_order"></span>
 						<p>
@@ -93,14 +93,14 @@
 		if (!gagajf.validation($('#nonCustOrderForm'))) {
 			return;
 		}
-		gagajf.ajaxFormSubmit("/noMember/order/info/validation",'#nonCustOrderForm', fnOrderInfoCallback)
+		gagajf.ajaxFormSubmit('/noMember/order/info/validation','#nonCustOrderForm', fnOrderInfoCallback)
 	});
 
 	var fnOrderInfoCallback = function (result) {
 		if (result.isFind) {
-			$('#nonCustOrderForm').submit();
+			cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);
 		} else {
-			mcxDialog.alert("입력하신 정보가 정확하지 않습니다. 다시 시도해주세요.");
+			mcxDialog.alert('입력하신 정보가 정확하지 않습니다. 다시 시도해주세요.');
 			return;
 		}
 	};

+ 13 - 4
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -66,9 +66,9 @@
 		</th:block>
 		
 		<!-- 관리자 에디터입력 내용 노출  상단 html -->
-		<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty and goodsInfo.selfGoodsYn =='Y'}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+		<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
 		
-		<th:block th:if="${goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+		<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
 	</div>	
 			
 	<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
@@ -138,6 +138,15 @@
 		</div>
 	</div>
 	<!-- //라벨 노출 -->
+	
+	<!-- //네이밍룰 안맞는 이미지 노출 -->
+	<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01')}">
+		<div class="view">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" >
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
+				</th:block>
+		</div>
+	</div>
 	</th:block>
 		
 	<!-- 관리자 에디터입력 내용 노출  하다단 html -->
@@ -201,10 +210,10 @@
 		<div class="area_kcl" >
 			<i class="ico ico_kcl"></i>
 			<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-			<p class="tit normal" th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+			<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
 			</th:block>
 			<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-			<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' 안전인증'}"></p>
+			<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' / '+ goodsSafeNo.certTypeNm}"></p>
 			</th:block>
 			<p class="normal" >
 				<th:block th:if="${goodsSafeNo.certNum}" th:text="${'인증번호: ' + goodsSafeNo.certNum}"></th:block>

+ 17 - 7
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -646,9 +646,9 @@
 					</th:block>
 					
 					<!-- 관리자 에디터입력 내용 노출  상단 html -->
-					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty and goodsInfo.selfGoodsYn =='Y'}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
 					
-					<th:block th:if="${goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+					<th:block th:if="${ goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
 				</div>	
 					
 				<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
@@ -720,11 +720,21 @@
 						</span>
 					</div>
 				</div>
+				
+				<!-- //네이밍룰 안맞는 이미지 노출 -->
+				<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01')}">
+					<div class="view">
+						<th:block th:each="goodsImg, status : ${goodsImgList}" >
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
+							</th:block>
+					</div>
+				</div>
+				
 				<!-- //라벨 노출 -->
 				</th:block>
 					
 				<!-- 관리자 에디터입력 내용 노출  하다단 html -->
-				<div class="mdhtml_box" th:if="${goodsInfo.goodsDownDesc != null  and !goodsInfo.goodsDownDesc.empty  and goodsInfo.selfGoodsYn =='Y'}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDownDesc))}"></div>
+				<div class="mdhtml_box" th:if="${goodsInfo.goodsDownDesc != null  and !goodsInfo.goodsDownDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDownDesc))}"></div>
 					
 				<!-- 브랜드 노출 -->
 				<div class="brand_box">
@@ -783,10 +793,10 @@
 					<div class="area_kcl" >
 						<i class="ico ico_kcl"></i>
 						<th:block th:if="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-						<p class="tit normal" th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+						<p class="tit normal" th:text="${goodsSafeNo.certDiv +' '+goodsSafeNo.certTypeNm + ' / ' + goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
 						</th:block>
 						<th:block th:unless="${goodsSafeNo.certFormGb != 'G084_4' and  goodsSafeNo.certFormGb != 'G084_5' }">
-						<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' 안전인증'}"></p>
+						<p class="tit normal" th:text="${goodsSafeNo.certFormNm + ' / '+goodsSafeNo.certTypeNm}"></p>
 						</th:block>
 						<p class="normal" >
 							<th:block th:if="${goodsSafeNo.certNum}" th:text="${'인증번호: ' + goodsSafeNo.certNum}"></th:block>
@@ -825,10 +835,10 @@
 						<div class="area_kcl" >
 							<i class="ico ico_kcl"></i>
 							<th:block th:if="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certDiv + ' / ' + goodsCompose.goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
+							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certDiv +' '+goodsCompose.goodsSafeNo.certTypeNm + ' / ' + goodsCompose.goodsSafeNo.certOrganName}">어린이제품 안전인증 / 한국건설생활시험연구원(KCL)</p>
 							</th:block>
 							<th:block th:unless="${goodsCompose.goodsSafeNo.certFormGb != 'G084_4' and  goodsCompose.goodsSafeNo.certFormGb != 'G084_5' }">
-							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certFormNm + ' 안전인증'}"></p>
+							<p class="tit normal" th:text="${goodsCompose.goodsSafeNo.certFormNm + ' / '+ goodsCompose.goodsSafeNo.certTypeNm}"></p>
 							</th:block>
 							<p class="normal" >
 								<th:block th:if="${goodsCompose.goodsSafeNo.certNum}" th:text="${'인goodsCompose.증번호: ' + goodsSafeNo.certNum}"></th:block>

+ 3 - 2
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailQnaFormWeb.html

@@ -32,7 +32,7 @@
 		</div>
 		<div class="qna_list">
 			<!-- 나열조건결과 있을 때 노출 내용 -->
-			<div class="form_field">
+			<div class="form_field check_secret">
 				<input id="except_secret" name="except_secret" type="checkbox"  onclick="fnGoodsQnaList();"><label for="except_secret"><span>비밀글제외</span></label>
 				<input  type="hidden" name="secretYn" >
 			</div>
@@ -84,7 +84,7 @@
 	}
 	
 	var fnGoodsQnaListCallback = function(result) {
-		$('#ulGoodsQna').html('');   
+		$('#ulGoodsQna').html('');
 		$('#goodsQnaForm').find('.nodata').hide();
 		// 목록
 		if (result.dataList != null && result.dataList.length > 0) {
@@ -141,6 +141,7 @@
 		} else {
 			$('#goodsQnaForm').find('.nodata').show();
 			$('#goodsQnaForm').find('.ui_foot').hide();
+			$('#goodsQnaForm').find('.form_field.check_secret').hide();
 		}
 		
 		// Create pagination

+ 14 - 14
src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html

@@ -98,7 +98,7 @@
 								<div class="benefit_txt">
 									<p id="etcGrade">
 										<span id="ordSpan">	구매 건수 <strong id="ordCnt" class="c_primary">0회</strong> </span>
-										<span id="realOrdAmtSpan">, 구매 금액 <strong id="realOrdAmt" class="c_primary">0원 </span>
+										<span id="realOrdAmtSpan">또는 구매 금액 <strong id="realOrdAmt" class="c_primary">0원 </span>
 										</strong> 더 구매하시면 <strong>
 										<span id="nextGrde" class="c_black"></span>로 등급UP!</strong>
 									</p> <!-- 등급 상승까지 남은 정보 안내 -->
@@ -177,33 +177,33 @@
 								<tr>
 									<th rowspan="2">혜택</th>
 									<td class="bbn">
-										<div class="cou_img"><img src="/images/pc/ico_coupon_12.png" alt="7% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_12.png" alt="12% 할인 쿠폰"></div> <!--VIP-->
 										<p>최대 1만 5천원 할인<br>(3만원 이상 구매 시)</p>
 									</td>
 									<td class="bbn">
-										<div class="cou_img"><img src="/images/pc/ico_coupon_10.png" alt="12% 할인 쿠폰"></div>
-										<p>최대 1만 5천원 할인<br>(3만원 이상 구매 시)</p>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_10.png" alt="10% 할인 쿠폰"></div> <!--GOLD-->
+										<p>최대 1만원 할인<br>(3만원 이상 구매 시)</p>
 									</td>
 									<td class="vt" rowspan="2">
-										<div class="cou_img"><img src="/images/pc/ico_coupon_7.png" alt="10% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_7.png" alt="7% 할인 쿠폰"></div> <!--SILVER-->
 										<p>최대 7천원 할인<br>(3만원 이상 구매 시)</p>
 									</td>
 									<td class="vt" rowspan="2">
-										<div class="cou_img"><img src="/images/pc/ico_coupon_5.png" alt="10% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_5.png" alt="5% 할인 쿠폰"></div> <!--BRONZE-->
 										<p>최대 3천원 할인<br>(2만원 이상 구매 시)</p>
 									</td>
 									<td class="bbn">
-										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="15% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="15% 할인 쿠폰"></div> <!--WELCOME-->
 										<p>최대 3만원 할인<br><strong>신규회원 한정 1회 발급</strong></p>
 									</td>
 								</tr>
 								<tr>
 									<td>
-										<div class="cou_img"><img src="/images/pc/ico_coupon_20000.png" alt="20,000원 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_20000.png" alt="20,000원 할인 쿠폰"></div> <!--VIP-->
 										<p>10만원 이상 구매 시</p>
 									</td>
 									<td>
-										<div class="cou_img"><img src="/images/pc/ico_coupon_15000.png" alt="15,000원 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_15000.png" alt="15,000원 할인 쿠폰"></div> <!--GOLD-->
 										<p>10만원 이상 구매 시</p>
 									</td>
 									<td>
@@ -213,23 +213,23 @@
 								<tr>
 									<th>생일쿠폰</th>
 									<td>
-										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="7% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="15% 할인 쿠폰"></div> <!--VIP-->
 										<p>최대 3만원 할인</p>
 									</td>
 									<td>
-										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="12% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="15% 할인 쿠폰"></div> <!--GOLD-->
 										<p>최대 2만원 할인</p>
 									</td>
 									<td>
-										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="15% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_15.png" alt="15% 할인 쿠폰"></div> <!--SILVER-->
 										<p>최대 1만원 할인</p>
 									</td>
 									<td>
-										<div class="cou_img"><img src="/images/pc/ico_coupon_10.png" alt="10% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_10.png" alt="10% 할인 쿠폰"></div> <!--BRONZE-->
 										<p>최대 1만원 할인</p>
 									</td>
 									<td>
-										<div class="cou_img"><img src="/images/pc/ico_coupon_10.png" alt="10% 할인 쿠폰"></div>
+										<div class="cou_img"><img src="/images/pc/ico_coupon_10.png" alt="10% 할인 쿠폰"></div> <!--WELCOME-->
 										<p>최대 1만원 할인</p>
 									</td>
 								</tr>