Browse Source

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

eskim 5 years ago
parent
commit
558f4d6044

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

@@ -178,6 +178,15 @@ public interface TsfReviewDao {
 	 */
 	void reviewCustomerConfirm(Review review);
 	
+	/**
+	 * 마이페이지 이미지/동영상등록
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 4. 26
+	 */
+	void saveReviewAttach(ReviewAttach reviewAttach);
+	
 	
 	
 	

+ 47 - 2
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -1,16 +1,23 @@
 package com.style24.front.biz.service;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.gagaframework.web.util.GagaDateUtil;
+import com.gagaframework.web.util.GagaFileUtil;
 import com.style24.front.biz.dao.TsfReviewDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Review;
+import com.style24.persistence.domain.ReviewAttach;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -26,6 +33,9 @@ public class TsfReviewService {
 
 	@Autowired
 	private TsfReviewDao reviewDao;
+	
+	@Autowired
+	private Environment env;
 
 	/**
 	 * 상품 리뷰 목록 건수
@@ -152,9 +162,44 @@ public class TsfReviewService {
 		review.setDispYn("Y");
 		review.setDelYn("N");
 		review.setRegNo(TsfSession.getInfo().getCustNo());
-		review.setUpdNo(TsfSession.getInfo().getCustNo());
-		
+		review.setUpdNo(TsfSession.getInfo().getCustNo());		
 		reviewDao.saveMypageReview(review);
+		
+		//이미지등록
+		ReviewAttach fileReview = new ReviewAttach();
+		if(!StringUtils.isAllEmpty(review.getOrgFileNmArr())) {
+			fileReview.setRegNo(TsfSession.getInfo().getCustNo());
+			fileReview.setUpdNo(TsfSession.getInfo().getCustNo());
+			fileReview.setReviewSq(review.getReviewSq());
+			fileReview.setFileGb("I");
+			fileReview.setDelYn("N");
+			//파일아이템 등록
+			String[] fileItemVal1 = review.getOrgFileNmArr();
+			int ind = 1;
+			for (int j = 0; j < fileItemVal1.length; j++) {
+				String imgInd = String.valueOf(ind);
+				if (ind < 10) {
+					imgInd = "0" + imgInd;
+				}
+				String planUploadPath = env.getProperty("upload.default.target.path");
+				String yearMonth = GagaDateUtil.getToday().substring(0, 6);
+				planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, "/review");
+				File newFile = new File(GagaFileUtil.getConcatenationPath(planUploadPath, fileItemVal1[j]));
+				planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, yearMonth);
+				String newFilename = "REVIEW_" + GagaDateUtil.getTodayDateTime() + "_" + imgInd + "." + org.springframework.util.StringUtils.getFilenameExtension(fileItemVal1[j]);
+				File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(planUploadPath, newFilename)));
+				// Rename a file
+				File path = new File(planUploadPath);
+				if (!path.exists()) {
+					path.mkdir();
+				}
+				newFile.renameTo(uniqueFile);
+				fileReview.setOrgFileNm("/review/" + yearMonth + "/" + newFilename);
+				fileReview.setSysFileNm("/review/" + yearMonth + "/" + newFilename);
+				reviewDao.saveReviewAttach(fileReview);
+				ind++;
+			}
+		}
 	}
 	
 	/**

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

@@ -63,6 +63,8 @@ public class GoodsSearch extends TscBaseDomain {
     private String priceRow;
     private String dcrateHigh;
     private String dcrateRow;
+    private String sexGb;
+    private String newProd;
 
     private TscPageRequest pageable;				// 페이징
     private int pageNo = 1;

+ 6 - 0
src/main/java/com/style24/persistence/domain/ReviewAttach.java

@@ -1,5 +1,6 @@
 package com.style24.persistence.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 
 import lombok.Data;
@@ -23,5 +24,10 @@ public class ReviewAttach extends TscBaseDomain {
 	private String kufKey;		// Kollus업로드파일키
 	private String kmcKey;		// Kollus미디어컨텐츠키
 	private String delYn;		// 삭제여부
+	
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] orgFileNmArr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] sysFileNmArr;
 
 }

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

@@ -769,6 +769,14 @@
 		           <if test="dcrateRow != null and dcrateRow != ''">
 		           AND    G.DC_RATE <![CDATA[>=]]> #{dcrateRow}
 		           </if>
+		           <if test="sexGb != null and sexGb != ''">
+		           AND    G.SEX_GB = #{sexGb}
+		           </if>
+		           <if test="newProd != null and newProd != ''">
+		           AND    EXISTS ( SELECT 1 FROM TB_GOODS_BENEFIT
+		                           WHERE GOODS_CD = G.GOODS_CD
+		                           AND BENEFIT_GB IN (#{newProd}) )
+		           </if>
 		           <include refid="getCategoryGoodsList_sql"/>
 		) G
 		WHERE  1 = 1
@@ -933,6 +941,15 @@
 		                <if test="dcrateRow != null and dcrateRow != ''">
 		                    AND    G.DC_RATE <![CDATA[>=]]> #{dcrateRow}
 		                </if>
+		                <if test="sexGb != null and sexGb != ''">
+		                    AND    G.SEX_GB = #{sexGb}
+		                </if>
+		                <if test="newProd != null and newProd != ''">
+		                    AND    EXISTS ( SELECT 1 FROM TB_GOODS_BENEFIT
+		                                    WHERE GOODS_CD = G.GOODS_CD
+		                                    AND BENEFIT_GB IN (#{newProd})
+		                        )
+		                </if>
 		                <include refid="getCategoryGoodsList_sql"/>
 		                ) G
 		          WHERE  1 = 1
@@ -967,9 +984,24 @@
 		                 , G.REG_DT             /*등록일시*/
 		                 , G.SELL_WEEK_QTY
 		                 , G.REVIEW_REG_CNT
-		                 , RANK() OVER(ORDER BY G.FORMAL_GB
-		                 , G.REG_DT DESC
-		                 , G.GOODS_CD) AS NUMB
+		                 <choose>
+		                    <when test="sortGb != null and sortGb !=''">
+		                        <choose>
+		                           <when test="sortGb == 'new'">
+		                 , RANK() OVER(ORDER BY G.FORMAL_GB , G.REG_DT DESC , G.GOODS_CD) AS NUMB
+		                           </when>
+		                           <when test="sortGb == 'best'">
+		                 , RANK() OVER(ORDER BY G.FORMAL_GB , G.SELL_WEEK_QTY DESC , G.REG_DT DESC, G.GOODS_CD) AS NUMB
+		                           </when>
+		                           <when test="sortGb == 'review'">
+		                 , RANK() OVER(ORDER BY G.FORMAL_GB , G.REVIEW_REG_CNT DESC , G.REG_DT DESC, G.GOODS_CD) AS NUMB
+		                           </when>
+		                        </choose>
+		                    </when>
+		                    <otherwise>
+		                 , RANK() OVER(ORDER BY G.FORMAL_GB , G.REG_DT DESC , G.GOODS_CD) AS NUMB
+		                    </otherwise>
+		                 </choose>
 		                 FROM TAB_GOODS G
 		                 LEFT OUTER JOIN TAB_OPTION O ON G.GOODS_CD = O.GOODS_CD
 		        ) ORIGINAL

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

@@ -48,14 +48,14 @@
 	<select id="getAccumulatePointList" parameterType="Point" resultType="Point">
 	/* TsfPoint.getAccumulatePointList */
 		SELECT CASE TCHP.OCCUR_GB
-		            WHEN 'G069_12' THEN '상품구매'
+		            WHEN 'G069_12' THEN '상품 구매'
 		            WHEN 'G069_20' THEN '리뷰'
 		            WHEN 'G069_30' THEN '이벤트'
 		            WHEN 'G069_31' THEN '회원가입'
 		            WHEN 'G069_32' THEN '생일축하'
 		            WHEN 'G069_35' THEN 'APP다운'
 		            WHEN 'G069_36' THEN '사은품구매'
-		            WHEN 'G069_37' THEN '출석체크'
+		            WHEN 'G069_37' THEN '이벤트'
 		            WHEN 'G069_90' THEN '관리자'
 		       END                                          AS OCCUR_GB
 		     , CASE TCHP.OCCUR_GB
@@ -150,7 +150,7 @@
 		WHEN   'G069_32' THEN '생일축하'
 		WHEN   'G069_35' THEN 'APP다운'
 		WHEN   'G069_36' THEN '사은품구매'
-		WHEN   'G069_37' THEN '출석체크'
+		WHEN   'G069_37' THEN '이벤트'
 		WHEN   'G069_40' THEN '구매 사용'
 		WHEN   'G069_42' THEN '사은품'
 		WHEN   'G069_90' THEN '관리자'

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

@@ -836,120 +836,120 @@
 		/* TsfReivew.getAlreadyReviewList */
 		<include refid="selectForPagingHeader"/>
 		SELECT F.*
-			  , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
+		      , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
 		FROM
 		(
-			SELECT O.ORD_NO 
-			      ,O.ORD_NM
-			      ,DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
-			      ,O.CUST_NO 
-			      ,OD.ORD_DTL_NO
-			      ,OD.ORD_EXCH_GB 
-			      ,OD.GOODS_CD 
-			      ,OD.REAL_ORD_AMT 
-			      ,OD.SAVE_PNT_AMT 
-			      ,OD.GFCD_USE_AMT 
-			      ,ODI.ORD_DTL_ITEM_SQ 
-			      ,ODI.ITEM_CD 
-			      ,ODI.OPT_CD 
-			      ,ODI.OPT_CD1
-			      ,ODI.OPT_CD2
-			      ,IFNULL(C.COLOR_KNM, ODI.OPT_CD1) AS OPT_CD1_NM
-			      ,ODI.ITEM_QTY 
-			      ,ODI.ITEM_PRICE
-			      ,G.GOODS_NM 
-			      ,G.MAIN_COLOR_CD
-			      ,B.BRAND_ENM 
-			      ,I.ITEMKIND_NM 
-			      ,I.ITEMKIND_CD 
-			      ,I.SIZE_GB 
-			      ,R.REVIEW_SQ
-			      ,R.REVIEW_GB
-			      ,R.REVIEW_CONTENT
-			      ,R.SCORE
-			      ,R.HEIGHT
-			      ,R.WEIGHT
-			      ,(CASE R.SCORE_SIZE   WHEN 1 THEN '작음' 
-	      								WHEN 2 THEN '딱맞음'
-	      								WHEN 3 THEN '큼'
-	      													END) AS SCORE_SIZE
-			      ,(CASE R.SCORE_COLOR  WHEN 1 THEN '밝음' 
-			      						WHEN 2 THEN '똑같음'
-			      						WHEN 3 THEN '어두움'   
-			      						 					END) AS SCORE_COLOR
-			      ,(CASE R.SCORE_FIT    WHEN 1 THEN '슬림' 
-			      						WHEN 2 THEN '레귤러' 
-			      						WHEN 3 THEN '오버' 
-			      											END) AS SCORE_FIT
-			      ,(CASE R.SCORE_THICK  WHEN 1 THEN '얇음' 
-			      						WHEN 2 THEN '적당함' 
-			      						WHEN 3 THEN '도톰함'
-			      											END) AS SCORE_THICK
-			      ,(CASE R.SCORE_WEIGHT WHEN 1 THEN '가벼움' 
-			      						WHEN 2 THEN '적당함'
-			      						WHEN 3 THEN '무거움'
-			      											END) AS SCORE_WEIGHT
-			      ,(CASE R.SCORE_BALL   WHEN 1 THEN '작음'
-			      						WHEN 2 THEN '딱맞음'
-		                                WHEN 3 THEN '큼' 
+		     SELECT O.ORD_NO 
+		           ,O.ORD_NM
+		           ,DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
+		           ,O.CUST_NO 
+		           ,OD.ORD_DTL_NO
+		           ,OD.ORD_EXCH_GB 
+		           ,OD.GOODS_CD 
+		           ,OD.REAL_ORD_AMT 
+		           ,OD.SAVE_PNT_AMT 
+		           ,OD.GFCD_USE_AMT 
+		           ,ODI.ORD_DTL_ITEM_SQ 
+		           ,ODI.ITEM_CD 
+		           ,ODI.OPT_CD 
+		           ,ODI.OPT_CD1
+		           ,ODI.OPT_CD2
+		           ,IFNULL(C.COLOR_KNM, ODI.OPT_CD1) AS OPT_CD1_NM
+		           ,ODI.ITEM_QTY 
+		           ,ODI.ITEM_PRICE
+		           ,G.GOODS_NM 
+		           ,G.MAIN_COLOR_CD
+		           ,B.BRAND_ENM 
+		           ,I.ITEMKIND_NM 
+		           ,I.ITEMKIND_CD 
+		           ,I.SIZE_GB 
+		           ,R.REVIEW_SQ
+		           ,R.REVIEW_GB
+		           ,R.REVIEW_CONTENT
+		           ,R.SCORE
+		           ,R.HEIGHT
+		           ,R.WEIGHT
+		           ,(CASE R.SCORE_SIZE   WHEN 1 THEN '작음' 
+		                               	WHEN 2 THEN '딱맞음'
+		                                WHEN 3 THEN '큼'
+		                                                   END) AS SCORE_SIZE
+		           ,(CASE R.SCORE_COLOR  WHEN 1 THEN '밝음' 
+		           						WHEN 2 THEN '똑같음'
+		           						WHEN 3 THEN '어두움'   
+		           						 					END) AS SCORE_COLOR
+		           ,(CASE R.SCORE_FIT    WHEN 1 THEN '슬림' 
+		           						WHEN 2 THEN '레귤러' 
+		           						WHEN 3 THEN '오버' 
+		           											END) AS SCORE_FIT
+		           ,(CASE R.SCORE_THICK  WHEN 1 THEN '얇음' 
+		           						WHEN 2 THEN '적당함' 
+		           						WHEN 3 THEN '도톰함'
+		           											END) AS SCORE_THICK
+		           ,(CASE R.SCORE_WEIGHT WHEN 1 THEN '가벼움' 
+		           						WHEN 2 THEN '적당함'
+		           						WHEN 3 THEN '무거움'
+		           											END) AS SCORE_WEIGHT
+		           ,(CASE R.SCORE_BALL   WHEN 1 THEN '작음'
+		           						WHEN 2 THEN '딱맞음'
+	                                     WHEN 3 THEN '큼' 
 		                                					END) AS SCORE_BALL
-			      ,R.GIVE_DUE_PNT
-			      ,R.PNT_GIVE_STAT
-			      ,R.BEST_YN
-			      ,R.GIVE_DUE_BPNT
-			      ,R.BPNT_GIVE_YN
-			      ,R.DISP_YN
-			      ,R.DEL_YN
-			      ,R.CONFIRM_YN
-			      ,R.CONFIRM_UNO
-			      ,R.CONFIRM_DT
-			      ,R.REG_NO
-			      ,DATE_FORMAT(R.REG_DT , '%Y-%m-%d') AS REG_DT
-			      ,R.UPD_NO
-			      ,DATE_FORMAT(R.UPD_DT , '%Y-%m-%d') AS UPD_DT
-			      ,R.ADM_RPL
-			      ,R.ADM_RPL_REG_NO
-			      ,DATE_FORMAT(R.ADM_RPL_DT , '%Y-%m-%d %H:%i:%s') AS ADM_RPL_DT
-			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
-			      , RANK() OVER(ORDER BY O.PAY_DT DESC) AS RNUM
-			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
-			                  					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
-			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
-			                INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
-			                              		AND R.ORD_NO = O.ORD_NO
-			                              		AND R.ORD_DTL_NO = OD.ORD_DTL_NO 
-			                              		AND R.DEL_YN = 'N'
-			                              		AND R.DISP_YN = 'Y'
-			                LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD 
-			                LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
-		                                               AND C.USE_YN = 'Y'
-			WHERE 1=1
-				AND O.CUST_NO = #{custNo}
-				AND O.DISP_YN = 'Y'
-				AND O.SITE_CD = #{siteCd}
-			GROUP BY O.ORD_NO 
-			      ,O.ORD_NM 
-			      ,O.PAY_DT 
-			      ,O.CUST_NO 
-			      ,OD.ORD_DTL_NO
-			      ,OD.ORD_EXCH_GB 
-			      ,OD.GOODS_CD 
-			      ,OD.REAL_ORD_AMT 
-			      ,OD.SAVE_PNT_AMT 
-			      ,OD.GFCD_USE_AMT 
-			      ,ODI.ORD_DTL_ITEM_SQ 
-			      ,ODI.ITEM_CD 
-			      ,ODI.OPT_CD 
-			      ,ODI.OPT_CD1
-			      ,ODI.OPT_CD2
-			      ,ODI.ITEM_QTY 
-			      ,ODI.ITEM_PRICE
-			      ,G.GOODS_NM 
-			      ,G.MAIN_COLOR_CD
-			      ,B.BRAND_ENM 
-		)F
+		        ,R.GIVE_DUE_PNT
+		        ,R.PNT_GIVE_STAT
+		        ,R.BEST_YN
+		        ,R.GIVE_DUE_BPNT
+		        ,R.BPNT_GIVE_YN
+		        ,R.DISP_YN
+		        ,R.DEL_YN
+		        ,R.CONFIRM_YN
+		        ,R.CONFIRM_UNO
+		        ,R.CONFIRM_DT
+		        ,R.REG_NO
+		        ,DATE_FORMAT(R.REG_DT , '%Y-%m-%d') AS REG_DT
+		        ,R.UPD_NO
+		        ,DATE_FORMAT(R.UPD_DT , '%Y-%m-%d') AS UPD_DT
+		        ,R.ADM_RPL
+		        ,R.ADM_RPL_REG_NO
+		        ,DATE_FORMAT(R.ADM_RPL_DT , '%Y-%m-%d %H:%i:%s') AS ADM_RPL_DT
+		        ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
+		        , RANK() OVER(ORDER BY O.PAY_DT DESC) AS RNUM
+		  FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
+		                  INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
+		                    					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		                  INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
+		                  INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
+		                  INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+		                                		AND R.ORD_NO = O.ORD_NO
+		                                		AND R.ORD_DTL_NO = OD.ORD_DTL_NO 
+		                                		AND R.DEL_YN = 'N'
+		                                		AND R.DISP_YN = 'Y'
+		                  LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD 
+		                  LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
+		  	                                           AND C.USE_YN = 'Y'
+		       WHERE 1=1
+		     AND O.CUST_NO = #{custNo}
+		     AND O.DISP_YN = 'Y'
+		     AND O.SITE_CD = #{siteCd}
+		     GROUP BY O.ORD_NO 
+		           ,O.ORD_NM 
+		           ,O.PAY_DT 
+		           ,O.CUST_NO 
+		           ,OD.ORD_DTL_NO
+		           ,OD.ORD_EXCH_GB 
+		           ,OD.GOODS_CD 
+		           ,OD.REAL_ORD_AMT 
+		           ,OD.SAVE_PNT_AMT 
+		           ,OD.GFCD_USE_AMT 
+		           ,ODI.ORD_DTL_ITEM_SQ 
+		           ,ODI.ITEM_CD 
+		           ,ODI.OPT_CD 
+		           ,ODI.OPT_CD1
+		           ,ODI.OPT_CD2
+		           ,ODI.ITEM_QTY 
+		           ,ODI.ITEM_PRICE
+		           ,G.GOODS_NM 
+		           ,G.MAIN_COLOR_CD
+		           ,B.BRAND_ENM 
+		     )F
 		ORDER BY F.PAY_DT DESC
 		<include refid="selectForPagingFooter"/>
 	</select>
@@ -1082,9 +1082,9 @@
 		, #{kmcKey}
 		, #{kufKey}
 		, #{delYn}
-		, #{custNo}
+		, #{regNo}
 		, CURRENT_TIMESTAMP
-		, #{custNo}
+		, #{updNo}
 		, CURRENT_TIMESTAMP
 		)
 	</insert>

+ 11 - 8
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1170,9 +1170,10 @@
 						$('#quickMenuWishList').html('');
 						$('#quick03').find('span').html(result.length);
 						$('#quickMenuWishListCount').html(result.length);
-						
+						tag = '';
 						if (result.length > 0) {
-							let tag = '<div class="product_count"><span class="c_primary" id="quickMenuWishListCount">'+result.length+'</span>개의 상품</div>\n';
+							$("#quickMenuWishList").attr("class","quick_body");
+							tag += '<div class="product_count"><span class="c_primary" id="quickMenuWishListCount">'+result.length+'</span>개의 상품</div>\n';
 							tag += '	<div class="itemsGrp">\n';
 							
 							$.each(result, function (idx, item) {
@@ -1197,18 +1198,20 @@
 								tag += '			</div>';	    
 								tag += '		</div>';	    
 								tag += '	</div>	';		
-								tag += '	<div class="no_item">';	    
-								tag += '		최근 본 상품이 없습니다.';	    
-								tag += '	</div>';	    
 								
 							});
-							
 							tag += '	</div>\n';
 							
-							$('#quickMenuWishList').html(tag);
 						} else {
-							$('#quickMenuWishList').addClass('nodata');
+							$("#quickMenuWishList").addClass("nodata");
+							tag += '<div class="itemsGrp">';
+							tag += '<div class="no_item" style="display:block">';
+							tag += '	등록된 위시리스트가 없습니다.';
+							tag += '</div>';
+							tag += '</div>';
 						}
+						
+						$('#quickMenuWishList').html(tag);
 					}
 			});
 	}

+ 45 - 17
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -76,10 +76,10 @@
 								</ul>
 								<div class="form_field">
 									<div>
-										<input id="price" type="checkbox" ><label for="price"> <span>남여 공용만 보기</span> </label>
+										<input id="sexGb" type="checkbox" onclick="fnFilterOption(this,'on');"><label for="sexGb"> <span>남여 공용만 보기</span> </label>
 									</div>
 									<div>
-										<input id="chk-2" type="checkbox" checked=""><label for="chk-2"> <span>신상품만 보기</span> </label>
+										<input id="newProd" type="checkbox" onclick="fnFilterOption(this,'on');"><label for="newProd"> <span>신상품만 보기</span> </label>
 									</div>
 								</div>
 							</div>
@@ -222,16 +222,6 @@
 								<!-- 필터 -->
 								<div class="fillter">
 									<div class="fillter_box" id="filterData">
-										<!--										<span>-->
-										<!--											모이몰른-->
-										<!--											<a href="javascript:;" class="filter_delete"></a >-->
-										<!--										</span>-->
-										<!-- 컬러 표시 -->
-										<!--										<span>-->
-										<!--											<span class="pdColor-color12"></span>-->
-										<!--											<a href="javascript:;" class="filter_delete"></a >-->
-										<!--										</span>-->
-										<!-- 컬러 표시 -->
 									</div>
 									<button type="button" class="fillter_reset" onclick="fnFilterReset();"><span>전체 초기화</span></button>
 								</div>
@@ -251,15 +241,15 @@
 										<p><span id="totCntId"></span>개의 상품</p>
 									</div>
 									<div>
-										<ul>
+										<ul id="sortArea">
 											<li>
-												<a href="" class="on">최신상품순</a>
+												<a href="javascript:void(0);" class="on" onclick="fnSortList(this,'new');">최신상품순</a>
 											</li>
 											<li>
-												<a href="">인기상품순</a>
+												<a href="javascript:void(0);" onclick="fnSortList(this,'best');">인기상품순</a>
 											</li>
 											<li>
-												<a href="">리뷰 많은순</a>
+												<a href="javascript:void(0);" onclick="fnSortList(this,'review');">리뷰 많은순</a>
 											</li>
 										</ul>
 									</div>
@@ -294,7 +284,7 @@
 		<input type="hidden" name="cate2No" th:value="${cateInfo.cate2No}"/>
 		<input type="hidden" name="cate3No" th:value="${cateInfo.cate3No}"/>
 		<input type="hidden" name="cate4No" th:value="${cateInfo.cate4No}"/>
-		<input type="hidden" name="sortGb"/>
+		<input type="hidden" name="sortGb" value="new"/>
 	</form>
 
 	<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
@@ -372,6 +362,33 @@
 			fnCreateCategoryList();
 		});
 
+		var fnFilterOption = function (obj, stat){
+			var thisId = $(obj).attr('id');
+			var tag = '';
+
+			if(thisId == 'sexGb'){
+				if(stat=='on'){
+					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+					tag += '<input type="hidden" name="sexGb" value="G007_Z"/>\n';
+					$("#searchGoodsForm").append(tag);
+				}else{
+					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+					$("#searchGoodsForm input:hidden[name=sexGb]").remove();
+				}
+			}else{
+				if(stat=='on'){
+					$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+					tag += '<input type="hidden" name="newProd" value="40"/>\n';
+					$("#searchGoodsForm").append(tag);
+				}else{
+					$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+					$("#searchGoodsForm input:hidden[name=newProd]").remove();
+				}
+			}
+			fnCategoryGoodsInfiniteScrollInit();
+			fnGoodsListSearch();
+		}
+
 		// 필터 가격 확인
 		var fnCheckPrice = function (data){
 			$("#priceSpan").remove();
@@ -666,6 +683,17 @@
 			}
 		});
 
+		var fnSortList = function (obj, sortGb){
+			$("#sortArea").find('li').each(function (){
+				$(this).find('a').attr('class','off');
+			});
+
+			$(obj).addClass("on");
+			$("#searchGoodsForm").find("[name=sortGb]").val(sortGb);
+			fnCategoryGoodsInfiniteScrollInit();
+			fnGoodsListSearch();
+		}
+
 		/*]]>*/
 	</script>
 

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

@@ -128,9 +128,9 @@
 	//동적으로 날짜 년도 append
 	function appendYear() {
 		for (var i = 0; i < date.length; i++) {
-			$("#searchDt").append(	"<li onclick='fnChangeDate(this.value)' value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" + date[i].month + "월 </li>")
+			$("#searchDt").append(	"<li onclick='fnChangeDate(this.value)' value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" +  "  " + date[i].month + "월 </li>")
 		}
-		$(".select").append("<li class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년" + date[0].month + "월 </li>"); // 현재년도 선택 */ 
+		$(".select").append("<li class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년" +  "  " + date[0].month + "월 </li>"); // 현재년도 선택 */ 
 	}
 	appendYear($("#searchDt"));
 

+ 5 - 5
src/main/webapp/WEB-INF/views/web/mypage/MypagePointFormWeb.html

@@ -130,9 +130,9 @@
 	//동적으로 날짜 년도 append
 	function appendYear() {
 		for (var i = 0; i < date.length; i++) {
-			$("#searchDt").append(	"<li onclick='fnChangeDate(this.value)' value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" + date[i].month + "월 </li>")
+			$("#searchDt").append(	"<li onclick='fnChangeDate(this.value)' value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" +  "  " + date[i].month + "월 </li>")
 		}
-		$(".select").append("<li class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년" + date[0].month + "월 </li>"); // 현재년도 선택 */ 
+		$(".select").append("<li class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년"  +  "  " + date[0].month + "월 </li>"); // 현재년도 선택 */ 
 	}
 	appendYear($("#searchDt"));
 
@@ -196,11 +196,11 @@
 				tag += '	<td>';
 				if(item.pntAmt > 0){
 					tag += '		<span class="amount_plus">';
-					tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
+					tag += '			<em>+'+item.pntAmt.addComma()+'</em>P';
 					tag += '		</span>';
 				}else{
-					tag += '		<span class="c_primary">';
-					tag += '			<em>'+item.pntAmt+'</em>P';
+					tag += '		<span class="amount_minus">';
+					tag += '			<em>'+item.pntAmt.addComma()+'</em>P';
 					tag += '		</span>';
 				}
 				

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

@@ -521,10 +521,10 @@ var reviewUpdate = function() {
 }
 var fnSaveCallback = function (result) {
 	if(result.status == "200"){
-		mcxDialog.confirm("상품리뷰를 등록 하였습니다.리뷰 등록으로 STYLE포인트 XXXP가 적립예정입니다. / 첨부파일이 업로드 된 후 등록이 가능합니다.", {
+		mcxDialog.confirm("상품리뷰를 등록 하였습니다. 150P 적립 예정입니다.", {
 			sureBtnText: "확인",
 			sureBtnClick: function() { 
-				cfnGoToPage(_PAGE_MYPAGE_REVIEW);
+				//cfnGoToPage(_PAGE_MYPAGE_REVIEW);
 			}
 		});
 	}
@@ -533,8 +533,8 @@ var fnSaveCallback = function (result) {
 var fnUpdateCallback = function (result) {
 	if(result.status == "200"){
 		//포인트 예정금액 고지해야함
-		cfnGoToPage(_PAGE_MYPAGE_REVIEW);
-		$("#alreadyReview").trigger('click');
+		//cfnGoToPage(_PAGE_MYPAGE_REVIEW);
+		//$("#alreadyReview").trigger('click');
 		//mcxDialog.alert("상품 리뷰를 수정하였습니다.");
 	}
 }

+ 18 - 19
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -188,8 +188,6 @@
 				}else{
 					html += '							<span class="option">'+item.optCd1Nm+'&nbsp;/&nbsp;'+item.optCd2+'</span>     ';
 				}
-				
-				
 				html += '						</div>                                                                                            ';
 				html += '					</div>                                                                                                ';
 				html += '				</div>                                                                                                    ';
@@ -318,27 +316,28 @@
 				html+='							</div>';
 				html+='						</div>';
 				if (attachList != null && attachList.length >0) {
+					html+='						<div class="photo_box">';
+					html+='							<div class="photo_list">';
+					html+='								<ul>';
 					for (var i = 0; i < attachList.length; i++) {
 						if (attachList[i].reviewSq == item.reviewSq) {
-							html+='						<div class="photo_box">';
-							html+='							<div class="photo_list">';
-							html+='								<ul>';
-							html+='									<li>';
-							html+='										<a href="">';
-							html+='											<div class="pic">';
-							if (attachList[i].fileGb == 'M') {
-								html+='												<span class="thumb mov" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
-							}else{
-								html+='												<span class="thumb" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
-							}
-							html+='											</div>';
-							html+='										</a>';
-							html+='									</li>';
-							html+='								</ul>';
-							html+='							</div>';
-							html+='						</div>';
+
+						html+='									<li>';
+						html+='										<a onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\');">';
+						html+='											<div class="pic">';
+						if (attachList[i].fileGb == 'M') {
+							html+='												<span class="thumb mov" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+						}else{
+							html+='												<span class="thumb" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+						}
+						html+='											</div>';
+						html+='										</a>';
+						html+='									</li>';
 						}
 					}
+					html+='								</ul>';
+					html+='							</div>';
+					html+='						</div>';
 					
 				}
 				html+='						<div class="txt_review_box"  id="admin_'+item.reviewSq+'">';

+ 61 - 59
src/main/webapp/WEB-INF/views/web/mypage/MypageWishListFormWeb.html

@@ -37,14 +37,7 @@
 			</div>
 			<div class="sec_body" id="wishList">
 				<!-- 데이터 없을 시 -->
-				 <div class="nodata" style="display:none;">
-					<div class="txt_box">
-						<p>
-							등록된 위시리스트가 없습니다.<br>
-							
-						</p>
-					</div>
-				</div> 
+				
 				<!-- //데이터 없을 시 -->											
 			</div>
 		</div>
@@ -58,14 +51,10 @@ let month = [[${wishMonth}]];
 
 // 마이페이지 위시리스트 해제
 var wishlistDelete = function(obj) {
-	mcxDialog.confirm("위시리스트를 해제하시겠습니까?", {
-		cancelBtnText : "취소",
-		sureBtnText : "확인",
-		sureBtnClick : function() {
-			cfnPutWishList(obj);
-			ajaxWishList();
-		}
-	});
+	
+	cfnPutWishList(obj);
+	ajaxWishList();
+
 }
 
 // 마이페이지 위시리스트 
@@ -74,54 +63,67 @@ var ajaxWishList = function () {
 		if (status == 'success') {
 			$('#wishList').html('');
 			html = '';
-			for (var i = 0; i < month.length; i++) {
-				html+='<div class="monthly_wish_wrap">';
-				html+='	<div class="date">';
-				html+='		<span>'+month[i].regDt+'</span>';
-				html+='	</div>';
-				html+='	<div class="itemsGrp">';
-				
-				$.each(result, function (idx, item) {
-					if (item.regDtMonth == month[i].regDt) {
-						html+='		<div class="item_prod">';
-						html+='			<div class="item_state">';
-						html+='				<button type="button" class="itemLike active" goodsCd="'+item.goodsCd+'" onclick="wishlistDelete(this)">관심상품 추가</button>';
-						html+='				<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail('+item.goodsCd+')">';
-						html+='					<div class="itemPic">';
-						html+='						<img alt="" class=" vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '">';
-						html+='					</div>';
-						html+='					<p class=" itemBrand">'+item.brandGroupNm+'</p>';
-						html+='					<div class=" itemName">'+item.goodsNm+'</div>';
-						html+='					<p class="itemPrice">'+item.currPrice.addComma();
-						if (item.currPrice != item.listPrice) {
-							html+='						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
-						}
-						if (item.dcRate>0) {
-							html+='						<span class=" itemPercent">'+item.dcRate+'%</span>';
+			if (result.length>0) {
+				$(".nodata").hide();
+				for (var i = 0; i < month.length; i++) {
+					html+='<div class="monthly_wish_wrap">';
+					html+='	<div class="date">';
+					html+='		<span>'+month[i].regDt+'</span>';
+					html+='	</div>';
+					html+='	<div class="itemsGrp">';
+					
+					$.each(result, function (idx, item) {
+						if (item.regDtMonth == month[i].regDt) {
+							html+='		<div class="item_prod">';
+							html+='			<div class="item_state">';
+							html+='				<button type="button" class="itemLike active" goodsCd="'+item.goodsCd+'" onclick="wishlistDelete(this)">관심상품 추가</button>';
+							html+='				<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">';
+							html+='					<div class="itemPic">';
+							html+='						<img alt="" class=" vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '">';
+							html+='					</div>';
+							html+='					<p class=" itemBrand">'+item.brandGroupNm+'</p>';
+							html+='					<div class=" itemName">'+item.goodsNm+'</div>';
+							html+='					<p class="itemPrice">'+item.currPrice.addComma();
+							if (item.currPrice != item.listPrice) {
+								html+='						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+							}
+							if (item.dcRate>0) {
+								html+='						<span class=" itemPercent">'+item.dcRate+'%</span>';
+							}
+							
+							html+='					</p>';
+							html+='					<div class="itemcolorchip">';
+							html+='						<span class="chip_color35" value="ABM">BEIGE</span>';
+							html+='						<span class="chip_color54" value="BDS">BLACK</span>';
+							html+='						<span class="chip_color40" value="YBR">WHITE</span>';
+							html+='					</div>';
+							html+='					 <p class="itemBadge">';
+							html+='						<span class="badge13">베스트 </span>';
+							html+='					</p>';
+							if (item.goodsTnm != null && item.goodsTnm != '') {
+								html+='					<div class="itemComment">'+item.goodsTnm+'</div>';
+							}
+							html+='				</a>';
+							html+='			</div>';
+							html+='		</div>';
 						}
 						
-						html+='					</p>';
-						html+='					<div class="itemcolorchip">';
-						html+='						<span class="chip_color35" value="ABM">BEIGE</span>';
-						html+='						<span class="chip_color54" value="BDS">BLACK</span>';
-						html+='						<span class="chip_color40" value="YBR">WHITE</span>';
-						html+='					</div>';
-						html+='					 <p class="itemBadge">';
-						html+='						<span class="badge13">베스트 </span>';
-						html+='					</p>';
-						if (item.goodsTnm != null && item.goodsTnm != '') {
-							html+='					<div class="itemComment">'+item.goodsTnm+'</div>';
-						}
-						html+='				</a>';
-						html+='			</div>';
-						html+='		</div>';
-					}
-					
-				});
+					});
+				}
 				html+='	</div>';
 				html+='</div>';
-				$('#wishList').html(html);
+				
+			}else{
+				html += ' <div class="nodata">';
+				html += '	<div class="txt_box">';
+				html += '		<p>';
+				html += '			등록된 위시리스트가 없습니다.<br>';
+				html += '			';
+				html += '		</p>';
+				html += '	</div>';
+				html += '</div>';
 			}
+			$('#wishList').html(html);
 		}
 	});
 }

+ 6 - 0
src/main/webapp/WEB-INF/views/web/planning/PlanningEventPollFormWeb.html

@@ -239,6 +239,12 @@ var fnSubmitPoll = function () {
 				mcxDialog.alert("Q"+(i+1)+"항목은 필수항목입니다.");
 				return;
 			}
+			if($('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val() == '기타'){
+				if($('input:text[name=etc_input_'+pollQsq+']').val()==''){
+					mcxDialog.alert("Q"+(i+1)+"기타 내용을 입력해주세요.");
+					return;
+				}
+			}
 			if ($('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val() == '기타') {
 				pollQsq_10 += pollQsq +'-'+$('input:text[name=etc_input_'+pollQsq+']').val() + '/';
 			}else{