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

상품평의 동영상만 등록 시 포인트지급은 대기로 처리, 그 외는 즉시지급

gagamel 4 лет назад
Родитель
Сommit
53dd21a35f

+ 36 - 24
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -178,25 +178,46 @@ public class TsfReviewService {
 		
 		review.setDispYn("Y");
 		review.setDelYn("N");
-		review.setConfirmYn("Y");
 		review.setRegNo(TsfSession.getInfo().getCustNo());
 		review.setUpdNo(TsfSession.getInfo().getCustNo());
 
 		int textReviewPnt = envsetService.getTextReviewPoint(TscConstants.Site.STYLE24.value());
 		int photoReviewPnt = envsetService.getPhotoReviewPoint(TscConstants.Site.STYLE24.value());
 
-		if (review.getKufKeyArr() == null && review.getOrgFileNmArr() == null) {
-			review.setPntGiveStat("G043_30");
-			review.setReviewGb("R");
+		if (review.getOrgFileNmArr() == null && review.getKufKeyArr() == null) { // 텍스트만 등록
+			review.setReviewGb("R"); // 일반상품평
 			review.setGiveDuePnt(textReviewPnt);
-		}else if(review.getKufKeyArr() == null && review.getOrgFileNmArr() != null) {
-			review.setPntGiveStat("G043_30");
-			review.setReviewGb("P");
+			review.setPntGiveStat("G043_30"); // 포인트즉시지급
+			review.setConfirmYn("Y"); // 확인완료
+			review.setConfirmUno(TsfSession.getInfo().getCustNo());
+		} else if (review.getOrgFileNmArr() == null && review.getKufKeyArr() != null) { // 동영상만 등록
+			review.setReviewGb("P"); // 프리미엄상품평
 			review.setGiveDuePnt(photoReviewPnt);
-		}else {
-			review.setPntGiveStat("G043_10");
-			review.setReviewGb("P");
+			review.setPntGiveStat("G043_10"); // 포인트지급대기
+			review.setConfirmYn("N"); // 확인대기(동영상노출안함)
+		} else if (review.getOrgFileNmArr() != null && review.getKufKeyArr() == null) { // 포토만 등록
+			review.setReviewGb("P"); // 프리미엄상품평
+			review.setGiveDuePnt(photoReviewPnt);
+			review.setPntGiveStat("G043_30"); // 포인트즉시지급
+			review.setConfirmYn("Y"); // 확인완료
+			review.setConfirmUno(TsfSession.getInfo().getCustNo());
+		} else if (review.getOrgFileNmArr() != null && review.getKufKeyArr() != null) { // 포토+동영상 등록
+			review.setReviewGb("P"); // 프리미엄상품평
 			review.setGiveDuePnt(photoReviewPnt);
+			review.setPntGiveStat("G043_30"); // 포인트즉시지급
+			review.setConfirmYn("N"); // 확인대기(동영상노출안함)
+		}
+		
+		// 당월에 지급완료한 포인트 횟수 (한 달에 10번만 지급 체크). 2021.08.11
+		int monthCount = reviewDao.getReviewPointGiveMonthCount(review);
+		if (monthCount >= 10) {
+			review.setPntGiveStat("G043_50"); // 당월지급횟수(10)초과
+		}
+		
+		// 한가지 상품을 여러 번 주문을 했어도 포인트 지급은 한번으로 수정. 2021.08.11
+		int goodsCount = reviewDao.getReviewPointGiveCount(review);
+		if (goodsCount >= 1) {
+			review.setPntGiveStat("G043_60"); // 동일상품기지급
 		}
 		
 		reviewDao.saveMypageReview(review);
@@ -253,14 +274,8 @@ public class TsfReviewService {
 			}
 		}
 		
-		// 2021.08.11 
-		// @ 1달에 10번만 포인트 지급
-		int monthCount = reviewDao.getReviewPointGiveMonthCount(review);
-		if (monthCount < 10) {
-			
-			// @ 한가지상품을 여러번 주문을 했어도 포인트 지급은 한번으로 수정
-			int goodsCount = reviewDao.getReviewPointGiveCount(review);
-			if (goodsCount < 1) {
+		if (monthCount < 10) { // 1달에 10번만 포인트 지급
+			if (goodsCount < 1) { // 한가지 상품에 대해 기등록된 상품평이 없을 때
 				Point point = new Point();
 				point.setCustNo(TsfSession.getInfo().getCustNo());
 				point.setOccurGb(TscConstants.PointOccurGb.REVIEW_POINT.value());
@@ -269,17 +284,14 @@ public class TsfReviewService {
 				point.setOrdNo(review.getOrdNo());
 				point.setOrdDtlNo(review.getOrdDtlNo());
 				
-				if (review.getKufKeyArr() == null && review.getOrgFileNmArr() == null) {
-					// 상품평만 적었을 경우
+				if (review.getKufKeyArr() == null && review.getOrgFileNmArr() == null) { // 텍스트만 등록
 					point.setGvPntAmt(textReviewPnt);
 					point.setRmPntAmt(textReviewPnt);
 					reviewDao.createReviewPoint(point);
 					point.setPntAmt(textReviewPnt);
 					point.setReviewSq(review.getReviewSq());
 					reviewDao.createReviewPointHst(point);
-				} else if(review.getKufKeyArr() == null && review.getOrgFileNmArr() != null) {
-					// 상품평 + 사진
-					point.setCustNo(TsfSession.getInfo().getCustNo());
+				} else if (review.getOrgFileNmArr() != null) { // 포토 또는 포토+동영상 등록
 					point.setGvPntAmt(photoReviewPnt);
 					point.setRmPntAmt(photoReviewPnt);
 					reviewDao.createReviewPoint(point);
@@ -298,7 +310,7 @@ public class TsfReviewService {
 		
 		return resultStr;
 	}
-		
+	
 	/**
 	 * 상품 리뷰 목록
 	 * @param review

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

@@ -736,59 +736,65 @@
 	<insert id="saveMypageReview" parameterType="Review" useGeneratedKeys="true" keyProperty="reviewSq">
 		/* TsfReivew.saveMypageReview */
 		INSERT INTO TB_REVIEW (
-		                         REVIEW_SQ
-		                       , GOODS_CD
-		                       , REVIEW_GB
-		                       , CUST_NO
-		                       , ORD_NO
-		                       , ORD_DTL_NO
-		                       , REVIEW_TITLE
-		                       , REVIEW_CONTENT
-		                       , SCORE
-		                       , HEIGHT
-		                       , WEIGHT
-		                       , SCORE_SIZE
-		                       , SCORE_COLOR
-		                       , SCORE_FIT
-		                       , SCORE_THICK
-		                       , SCORE_WEIGHT
-		                       , SCORE_BALL
-		                       , GIVE_DUE_PNT
-		                       , PNT_GIVE_STAT
-		                       , DISP_YN
-		                       , DEL_YN
-		                       , REG_NO
-		                       , REG_DT
-		                       , UPD_NO
-		                       , UPD_DT
-		                      )
-		               VALUES (
-		                          #{reviewSq}
-		                        , #{goodsCd}
-		                        , #{reviewGb}
-		                        , #{custNo}
-		                        , #{ordNo}
-		                        , #{ordDtlNo}
-		                        , #{reviewTitle}
-		                        , #{reviewContent}
-		                        , #{score}
-		                        , #{height}
-		                        , #{weight}
-		                        , #{scoreSize}
-		                        , #{scoreColor}
-		                        , #{scoreFit}
-		                        , #{scoreThick}
-		                        , #{scoreWeight}
-		                        , #{scoreBall}
-		                        , #{giveDuePnt}
-		                        , #{pntGiveStat}
-		                        , #{dispYn}
-		                        , #{delYn}
-		                        , #{regNo}
-		                        , now()
-		                        , #{updNo}
-		                        , now()
-		                      )
+		       REVIEW_SQ
+		     , GOODS_CD
+		     , REVIEW_GB
+		     , CUST_NO
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REVIEW_TITLE
+		     , REVIEW_CONTENT
+		     , SCORE
+		     , HEIGHT
+		     , WEIGHT
+		     , SCORE_SIZE
+		     , SCORE_COLOR
+		     , SCORE_FIT
+		     , SCORE_THICK
+		     , SCORE_WEIGHT
+		     , SCORE_BALL
+		     , GIVE_DUE_PNT
+		     , PNT_GIVE_STAT
+		     , DISP_YN
+		     , DEL_YN
+		     , CONFIRM_YN
+		     , CONFIRM_UNO
+		     , CONFIRM_DT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{reviewSq}
+		     , #{goodsCd}
+		     , #{reviewGb}
+		     , #{custNo}
+		     , #{ordNo}
+		     , #{ordDtlNo}
+		     , #{reviewTitle}
+		     , #{reviewContent}
+		     , #{score}
+		     , #{height}
+		     , #{weight}
+		     , #{scoreSize}
+		     , #{scoreColor}
+		     , #{scoreFit}
+		     , #{scoreThick}
+		     , #{scoreWeight}
+		     , #{scoreBall}
+		     , #{giveDuePnt}
+		     , #{pntGiveStat}
+		     , #{dispYn}
+		     , #{delYn}
+		     , #{confirmYn}
+		     , CASE WHEN #{confirmYn} = 'Y' THEN #{confirmUno} ELSE NULL END
+		     , CASE WHEN #{confirmYn} = 'Y' THEN NOW() ELSE NULL END
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
 	</insert>
 	
 	<update id="updateMypageReview" parameterType="Review">
@@ -1227,31 +1233,22 @@
 	<!-- 2021.08.11 포인트 지급 이번달 1일부터 31일 사이의 포인트지급 카운트 -->
 	<select id="getReviewPointGiveMonthCount" parameterType="Review" resultType="int">
 		/* TsfReivew.getReviewPointGiveMonthCount */	
-		SELECT COUNT(*) AS COUNT
-		FROM   TB_REVIEW RV
-		WHERE  1=1 
-		AND    RV.PNT_GIVE_STAT = 'G043_30'
-		AND    RV.CUST_NO = #{custNo}
-		AND    RV.REG_DT BETWEEN LAST_DAY(NOW() - INTERVAL -1 MONTH) AND LAST_DAY(NOW())	
+		SELECT COUNT(*) AS CNT
+		FROM   TB_REVIEW R
+		WHERE  R.CUST_NO = #{custNo} 
+		AND    R.PNT_GIVE_STAT = 'G043_30' /*포인트반영완료된 넘*/
+		AND    R.REG_DT <![CDATA[>=]]> STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(),'%Y-%m'),'-01'),'%Y-%m-%d') /*당월1일부터*/
+		AND    R.REG_DT <![CDATA[<]]> DATE_ADD(LAST_DAY(NOW()), INTERVAL 1 DAY) /*당월말일까지*/
 	</select>
 		
 	<!-- 2021.08.11 포인트 지급은 한개의 상품만 가능 -->
 	<select id="getReviewPointGiveCount" parameterType="Review" resultType="int">
-		/* TsfReivew.getReviewPointGiveCount */	
-		SELECT COUNT(*) AS COUNT
-		FROM   TB_REVIEW RV
-		WHERE  1=1 
-		AND    RV.PNT_GIVE_STAT = 'G043_30'
-		AND    RV.CUST_NO = #{custNo}
-		AND    EXISTS (
-		    SELECT 1
-		    FROM   TB_ORDER_DETAIL OD
-		    WHERE  1=1
-		    AND    OD.ORD_NO = #{ordNo}
-		    AND    OD.ORD_DTL_NO = #{ordDtlNo}
-		    AND    OD.GOODS_CD = RV.GOODS_CD
-		)
-		AND    RV.REVIEW_SQ    != #{reviewSq}
+		/* TsfReivew.getReviewPointGiveCount */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_REVIEW R
+		WHERE  R.CUST_NO = #{custNo}
+		AND    R.GOODS_CD = #{goodsCd} /*동일상품으로 등록된 상품평이 있는지*/
+		AND    R.PNT_GIVE_STAT = 'G043_30' /*포인트반영완료된 넘*/
 	</select>
 	
 	<insert id="createReviewPoint" parameterType="Point" useGeneratedKeys="true" keyProperty="custPntSq">