ソースを参照

Merge remote-tracking branch 'origin/develop' into card007

card007 5 年 前
コミット
f063c11cdc

+ 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

@@ -287,6 +287,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();

+ 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;	// 상품이미지명
+
+}

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

@@ -1017,26 +1017,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;
 		}
 	};

+ 7 - 7
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">
@@ -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>
@@ -337,8 +337,8 @@
 		}
 
 		let remnantBuyCnt = 0;
-		if (nextCustGradePolicy.minBuyCnt > nextCustGradePolicy.ordCnt) {
-			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  nextCustGradePolicy.ordCnt;
+		if (nextCustGradePolicy.minBuyCnt > nextCustGradePolicy.ordNoCnt) {
+			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  nextCustGradePolicy.ordNoCnt;
 		}
 
 		$etcGrade.show();

+ 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;
 		}
 	};

+ 16 - 16
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만 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>
@@ -310,8 +310,8 @@
 		}
 
 		let remnantBuyCnt = 0;
-		if (nextCustGradePolicy.minBuyCnt > nextCustGradePolicy.ordCnt) {
-			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  nextCustGradePolicy.ordCnt;
+		if (nextCustGradePolicy.minBuyCnt > nextCustGradePolicy.ordNoCnt) {
+			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  nextCustGradePolicy.ordNoCnt;
 		}
 
 		$etcGrade.show();