sowon4187 5 vuotta sitten
vanhempi
commit
e3a9829a05

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

@@ -79,6 +79,15 @@ public interface TsfReviewDao {
 	 */
 	Collection<Review> getCompleteReviewList(Review review);
 	
+	/**
+	 * 마이페이지 리뷰작성 상품 데이타
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 25
+	 */
+	Goods getReviewGoodsInfo(Review review);
+	
 	/**
 	 * 마이페이지 리뷰 등록
 	 * @param review
@@ -124,5 +133,23 @@ public interface TsfReviewDao {
 	 */
 	Review getAdminConfirmCount(Review review);
 	
+	/**
+	 * 마이페이지 댓글 삭제
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 26
+	 */
+	void reviewDelete(Review review);
+	
+	/**
+	 * 마이페이지 댓글 관련 첨부파일 삭제
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 26
+	 */
+	void reviewAttachDelete(Review review);
+	
 	
 }

+ 42 - 0
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -4,8 +4,10 @@ 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.TsfReviewDao;
+import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Review;
 
@@ -88,6 +90,17 @@ public class TsfReviewService {
 		return reviewDao.getCompleteReviewList(review);
 	}
 	
+	/**
+	 * 마이페이지 리뷰작성 상품 데이타
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 25
+	 */
+	public Goods getReviewGoodsInfo(Review review){
+		return reviewDao.getReviewGoodsInfo(review);
+	}
+	
 	/**
 	 * 마이페이지 리뷰 등록
 	 * @param review
@@ -148,5 +161,34 @@ public class TsfReviewService {
 	}
 	
 	
+	/**
+	 * 마이페이지 댓글 삭제
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 26
+	 */
+	public void reviewDelete(Review review) {
+		review.setCustNo(TsfSession.getInfo().getCustNo());
+		reviewDao.reviewDelete(review);
+		//관련 파일 삭제 처리
+		reviewAttachDelete(review);
+	}
+	
+	/**
+	 * 마이페이지 댓글 관련 첨부파일 삭제
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 3. 26
+	 */
+	@Transactional("shopTxnManager")
+	public void reviewAttachDelete(Review review) {
+		reviewDao.reviewAttachDelete(review);
+	}
+	
+	
+	
+	
 	
 }

+ 22 - 2
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -848,7 +848,7 @@ public class TsfMypageController extends TsfBaseController {
 		// 작성한 리뷰 카운트
 		mav.addObject("alreadyReviewCount", reviewService.getAlreadyReviewCount(review));
 		
-		// 관리자 댓글확인 카운트
+		// 관리자 댓글확인 
 		mav.addObject("adminCount", reviewService.getAdminConfirmCount(review));
 		
 		// 리뷰 이미지/동영상
@@ -943,7 +943,7 @@ public class TsfMypageController extends TsfBaseController {
 		review.setOrdDtlNo(ordDtlNo);
 		review.setGoodsCd(goodsCd);
 		
-		mav.addObject("completeReviewList", reviewService.getCompleteReviewList(review));
+		mav.addObject("reviewInfo", reviewService.getReviewGoodsInfo(review));
 		
 		mav.setViewName(super.getDeviceViewName("mypage/MypageReviewCreateForm"));
 
@@ -967,6 +967,26 @@ public class TsfMypageController extends TsfBaseController {
 
 		return result;
 	}
+	
+	/**
+	 * 마이페이지 리뷰 삭제처리
+	 *
+	 * @param review
+	 * @return 
+	 * @throws Exception
+	 * @author sowon
+	 * @since 2021. 03. 26
+	 */
+	@PostMapping("/review/delete")
+	@ResponseBody
+	public GagaMap mypageReviewDelete(@RequestBody Review review) throws Exception {
+		GagaMap result = new GagaMap();
+		reviewService.reviewDelete(review);
+		
+		result.set("status", "200");
+
+		return result;
+	}
 
 	/*신주승 시작*/
 

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

@@ -102,11 +102,11 @@ public class Review extends TscBaseDomain {
 	private TscPageRequest pageable2;
 
 	private int pageNo = 1;							// 페이지번호
-	private int pageSize = 10;						// 페이지목록수
+	private int pageSize = 5;						// 페이지목록수
 	private int pageUnit = 10;						// 페이지번호수
 	
 	private int pageNo2 = 1;							// 페이지번호
-	private int pageSize2 = 10;						// 페이지목록수
+	private int pageSize2 = 5;						// 페이지목록수
 	private int pageUnit2 = 10;						// 페이지번호수
 	
 	

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

@@ -308,17 +308,95 @@
 			      ,I.SIZE_GB 
 			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
 			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-								 			 	 AND OD.ORD_DTL_STAT = 'G013_70' -- 구매 확정인것만
+								 			-- 	 AND OD.ORD_DTL_STAT = 'G013_70' -- 구매 확정인것만
 			                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
-			                  	                 AND ODI.ORD_DTL_STAT = 'G013_70'
+			                  	         --        AND ODI.ORD_DTL_STAT = 'G013_70'
 			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
 			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
 			                LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD 
 			WHERE 1=1
 				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
 				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
-				AND O.CUST_NO =#{custNo}
+				AND O.CUST_NO =100011
+				AND O.DISP_YN = 'Y'
+				AND O.SITE_CD = #{siteCd}
+				<!-- <if test="ordNo!=null and ordNo != ''">
+				AND O.ORD_NO = #{ordNo}
+				</if>
+				<if test="ordDtlNo!=null and ordDtlNo != ''">
+				AND OD.ORD_DTL_NO = #{ordDtlNo}
+				</if>
+				<if test="goodsCd!=null and goodsCd!=''">
+				AND G.GOODS_CD = #{goodsCd}
+				</if> -->
+			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
+	</select>
+	
+	<!-- 마이페이지 리뷰작성 상품데이타 -->
+	<select id="getReviewGoodsInfo" parameterType="Review" resultType="Goods">
+		/* TsfReivew.getCompleteReviewList */
+		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
+		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
+			      ,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 
+			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
+			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
+								 		--	 	 AND OD.ORD_DTL_STAT = 'G013_70' -- 구매 확정인것만
+			                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
+			                  	         --        AND ODI.ORD_DTL_STAT = 'G013_70'
+			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
+			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
+			                LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD 
+			WHERE 1=1
+				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
+				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+				AND O.CUST_NO =100011
 				AND O.DISP_YN = 'Y'
 				AND O.SITE_CD = #{siteCd}
 				<if test="ordNo!=null and ordNo != ''">
@@ -391,7 +469,7 @@
 			WHERE 1=1
 				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
 				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
-				AND O.CUST_NO = #{custNo}
+				AND O.CUST_NO = 100011
 				AND O.DISP_YN = 'Y'
 				AND O.SITE_CD = #{siteCd}
 			GROUP BY O.ORD_NO 
@@ -445,7 +523,7 @@
 					)
 					VALUES (
 					     	#{goodsCd}
-						  , #{custNo}
+						  , 100011
 						  , #{ordNo}
 						  , #{ordDtlNo}
 						  , #{reviewTitle}
@@ -672,4 +750,20 @@
 		 AND ADM_RPL IS NOT NULL
 		ORDER BY  R.ADM_RPL_DT DESC, R.REVIEW_SQ LIMIT 1
 	</select>
+	
+	<update id="reviewDelete" parameterType="Review">
+		UPDATE TB_REVIEW R
+		SET R.DEL_YN = 'Y'
+		WHERE 1=1
+ 		AND R.REVIEW_SQ = #{reviewSq}
+ 		AND R.ADM_RPL IS NULL
+ 		AND R.CUST_NO = 100011
+	</update>
+	
+	<update id="reviewAttachDelete" parameterType="Review">
+		UPDATE TB_REVIEW_ATTACH RA
+		SET RA.DEL_YN = 'Y'
+		WHERE 1=1
+ 		AND RA.REVIEW_SQ = #{reviewSq}
+	</update>
 </mapper>

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

@@ -42,12 +42,12 @@
 									<li>리뷰 작성시 욕설, 비방, 선정적인 내용등이 있을 경우 통보 없이 관리자에 의해 삭제 될 수 있습니다.</li>
 								</ul>
 							</div>
-							<th:block th:each="review, status : ${completeReviewList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-							<form class="form_wrap" id="reviewForm" th:action="@{'/mypage/review/save'}">
-								<input type="hidden" name="ordNo" th:value="${review.ordNo}">
-								<input type="hidden" name="ordDtlNo" th:value="${review.ordDtlNo}">
-								<input type="hidden" name="goodsCd" th:value="${review.goodsCd}">
-								<input type="hidden" name="custNo" th:value="${review.custNo}">
+							<!-- <th:block th:each="review, status : ${completeReviewList}" > -->
+							<form class="form_wrap" id="reviewForm" th:action="@{'/mypage/review/save'}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<input type="hidden" name="ordNo" th:value="${reviewInfo.ordNo}">
+								<input type="hidden" name="ordDtlNo" th:value="${reviewInfo.ordDtlNo}">
+								<input type="hidden" name="goodsCd" th:value="${reviewInfo.goodsCd}">
+								<input type="hidden" name="custNo" th:value="${reviewInfo.custNo}">
 								<h4 class="subH3">리뷰쓰기</h4>
 								<div class="part_goods">
 									<div class="goods_cont">
@@ -59,24 +59,24 @@
 													<div class="gd_item">	
 														<a href="">
 															<span class="thumb">
-																<img th:src="${imageUrl + '/' + review.sysImgNm}" width="100%" alt="">
+																<img th:src="${imageUrl + '/' + reviewInfo.sysImgNm}" width="100%" alt="">
 															</span>
 															<p>
-																<span class="buy_date"><em th:text="${review.payDt}"></em>&nbsp;구매</span>
+																<span class="buy_date"><em th:text="${reviewInfo.payDt}"></em>&nbsp;구매</span>
 															</p>
 															<p>
-																<span class="brand" th:text="${review.brandEnm}"></span>
+																<span class="brand" th:text="${reviewInfo.brandEnm}"></span>
 																<!-- <span class="tag">STYLE24 일반배송</span> -->
 															</p>
 															<p>
-																<span class="name" th:text="${review.goodsNm}"></span>																
+																<span class="name" th:text="${reviewInfo.goodsNm}"></span>																
 															</p>
 														</a>
 													</div>
 													<div class="gd_opt">
 														<div class="option_wrap">
 															<span class="title sr-only">주문 옵션</span>
-															<span class="option">[[${review.optCd1}]]K&nbsp;/&nbsp;[[${review.optCd2}]]</span>
+															<span class="option">[[${reviewInfo.optCd1}]]K&nbsp;/&nbsp;[[${reviewInfo.optCd2}]]</span>
 														</div>
 													</div>
 												</div>
@@ -363,7 +363,7 @@
 									<button type="button" id="btn_review_registration" class="btn btn_dark btn_md" onclick="reviewCreate()"><span>리뷰 등록</span></button>
 								</div>		
 							</form>	
-							</th:block>						
+							<!-- </th:block>	 -->					
 						</div>
 					</div>
 					<!-- // CONT-BODY -->					

+ 23 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -236,7 +236,7 @@
 				if (item.admRpl == null || item.admRpl == '') {
 					html+='						<p><button type="button" class="btn btn_default btn_sm"><span>리뷰 수정</span></button></p>';
 				}
-				html+='						<p><button type="button" class="btn btn_default btn_sm"><span>리뷰 삭제</span></button></p>';
+				html+='						<p><button type="button" class="btn btn_default btn_sm" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></p>';
 				html+='					</div>';
 				html+='				</div>';
 				html+='				<div class="order_review">';
@@ -366,11 +366,33 @@
 		cfnGoToPage(_PAGE_MYPAGE_CREATE_REVIEW + ordNo +'/'+ordDtlNo+'/'+goodsCd);
 	}
 	
+	// 스크롤 이동
 	var fnMove = function(obj) {
 	  	 var offset = $("#admin_" + obj).offset();
 	  	 console.log(offset);
         $('html, body').animate({scrollTop : offset.top}, 400);
 	}
+	
+	// 리뷰삭제
+	var fnDeleteReview = function(obj) {
+		var data = {reviewSq : obj};
+				
+		var jsonData = JSON.stringify(data);
+
+		mcxDialog.confirm("작성한 리뷰를 삭제하시겠습니까?", {
+			cancelBtnText : "취소",
+			sureBtnText : "확인",
+			sureBtnClick : function() {
+
+				gagajf.ajaxJsonSubmit('/mypage/review/delete', jsonData, function() {
+					if (result.status == '200') {
+						mcxDialog.alert("삭제되었습니다.");
+					}
+					$("#alreadyReview").trigger('click');	
+				});
+			}
+		});
+	}
 	</script>
 	</th:block>