Explorar o código

베스트상품평 선정 로직 추가

gagamel %!s(int64=5) %!d(string=hai) anos
pai
achega
bd28cf17e9

+ 24 - 0
src/main/java/com/style24/admin/biz/dao/TsaReviewDao.java

@@ -58,4 +58,28 @@ public interface TsaReviewDao {
 	 */
 	void deleteReviewAttach(ReviewAttach reviewAttach);
 
+	/**
+	 * 베스트상품평포인트 생성
+	 * @param review - 상품평 정보
+	 * @author gagamel
+	 * @since 2021. 4. 27
+	 */
+	void createBestReviewPoint(Review review);
+
+	/**
+	 * 베스트상품평포인트이력 생성
+	 * @param review - 상품평 정보
+	 * @author gagamel
+	 * @since 2021. 4. 27
+	 */
+	void createBestReviewPointHistory(Review review);
+
+	/**
+	 * 베스트상품평 선정 처리
+	 * @param review - 상품평 정보
+	 * @author gagamel
+	 * @since 2021. 4. 27
+	 */
+	void updateBestReviewSelection(Review review);
+
 }

+ 44 - 3
src/main/java/com/style24/admin/biz/service/TsaReviewService.java

@@ -7,7 +7,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.admin.biz.dao.TsaReviewDao;
-import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.support.env.TscConstants;
 import com.style24.persistence.domain.Review;
 import com.style24.persistence.domain.ReviewAttach;
 
@@ -24,10 +26,10 @@ import lombok.extern.slf4j.Slf4j;
 public class TsaReviewService {
 
 	@Autowired
-	private TscMessageByLocale message;
+	private TsaReviewDao reviewDao;
 
 	@Autowired
-	private TsaReviewDao reviewDao;
+	private TscEnvsetService envsetService;
 
 	/**
 	 * 상품평 목록
@@ -79,4 +81,43 @@ public class TsaReviewService {
 		reviewDao.deleteReviewAttach(reviewAttach);
 	}
 
+	/**
+	 * 베스트상품평선정 처리
+	 * @param reviewList - 상품평 목록
+	 * @author gagamel
+	 * @since 2021. 4. 27
+	 */
+	@Transactional("shopTxnManager")
+	public void saveBestReviewList(Collection<Review> reviewList) {
+		// 1.베스트상품평포인트금액
+		int bestPntAmt = envsetService.getBestReviewPoint(TscConstants.Site.STYLE24.value());
+
+		for (Review review : reviewList) {
+			review.setGvPntAmt(bestPntAmt);
+			review.setRegNo(TsaSession.getInfo().getUserNo());
+			review.setUpdNo(TsaSession.getInfo().getUserNo());
+
+			// 2.베스트상품평포인트 생성
+			reviewDao.createBestReviewPoint(review);
+
+			// 고객포인트일련번호 설정
+			Integer custPntSq = review.getCustPntSq();
+			if (review.getCustPntSq() == null) {
+				review.setCustPntSq(custPntSq);
+			}
+
+			review.setOccurGb(TscConstants.PointOccurGb.REVIEW_POINT.value());
+			review.setOccurDtlDesc("베스트상품평포인트 지급");
+			review.setPntAmt(bestPntAmt);
+			review.setPntUploadStat(TscConstants.PntUploadStat.APPLY_COMPLETE.value());
+
+			// 3.베스트상품평포인트이력 생성
+			reviewDao.createBestReviewPointHistory(review);
+
+			// 4.베스트상품평선정 처리
+			review.setGiveDueBpnt(bestPntAmt);
+			reviewDao.updateBestReviewSelection(review);
+		}
+	}
+
 }

+ 19 - 0
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -262,6 +262,25 @@ public class TsaMarketingController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0004"));
 	}
 
+	/**
+	 * 베스트상품평선정 처리
+	 * @param reviewList - 상품평 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 4. 27
+	 */
+	@PostMapping("/review/best/list/save")
+	@ResponseBody
+	public GagaResponse saveBestReviewList(@RequestBody Collection<Review> reviewList) {
+		if (reviewList == null || reviewList.isEmpty()) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		reviewService.saveBestReviewList(reviewList);
+
+		return super.ok(message.getMessage("SUCC_0004"));
+	}
+
 	/* xodud1202 진행 */
 	/**
 	 * 사은품 프로모션 관리 화면

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

@@ -86,4 +86,12 @@ public class Review extends TscBaseDomain {
 		return TsaSession.getInfo().getMaskingYn().equals("Y") ? MaskingUtils.name(getCustNm()) : getCustNm();
 	}
 
+	// 베스트상품평포인트 생성
+	private Integer custPntSq;		// 고객포인트일련번호
+	private int gvPntAmt;			// 지급포인트금액
+	private String occurGb;			// 포인트발생구분
+	private String occurDtlDesc;	// 포인트발생상세설명
+	private int pntAmt;				// 포인트금액
+	private String pntUploadStat;	// 포인트반영상태
+
 }

+ 93 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaReview.xml

@@ -35,6 +35,9 @@
 		     , R.PNT_GIVE_STAT                                            /*포인트지급상태*/
 		     , R.DISP_YN                                                  /*표시여부*/
 		     , R.DEL_YN                                                   /*삭제여부*/
+		     , R.BEST_YN                                                  /*베스트여부*/
+		     , R.GIVE_DUE_BPNT                                            /*베스트지급에정포인트*/
+		     , R.BPNT_GIVE_YN                                             /*베스트포인트지급여부*/
 		     , R.CONFIRM_YN                                               /*확인여부*/
 		     , FN_GET_USER_NM(R.CONFIRM_UNO)            AS CONFIRM_UNM    /*확인자명*/
 		     , DATE_FORMAT(R.CONFIRM_DT,'%Y%m%d%H%i%S') AS CONFIRM_DT     /*확인일시*/ 
@@ -110,6 +113,9 @@
 		     , FN_GET_CODE_NM('G041',R.SCORE_BALL)           AS SCORE_BALL     /*볼넓이점수*/
 		     , R.GIVE_DUE_PNT                                                  /*지급예정포인트*/
 		     , FN_GET_CODE_NM('G043',R.PNT_GIVE_STAT)        AS PNT_GIVE_STAT  /*포인트지급상태*/
+		     , R.BEST_YN                                                       /*베스트여부*/
+		     , R.GIVE_DUE_BPNT                                                 /*베스트지급에정포인트*/
+		     , R.BPNT_GIVE_YN                                                  /*베스트포인트지급여부*/
 		     , R.CONFIRM_YN                                                    /*확인여부*/
 		     , FN_GET_USER_NM(R.CONFIRM_UNO)                 AS CONFIRM_UNM    /*확인자명*/
 		     , DATE_FORMAT(R.CONFIRM_DT,'%Y-%m-%d %H:%i:%S') AS CONFIRM_DT     /*확인일시*/ 
@@ -166,4 +172,91 @@
 		AND    DEL_YN = 'N' /*삭제안된넘*/
 	</update>
 	
+	<!-- 베스트상품평포인트 생성-->
+	<insert id="createBestReviewPoint" parameterType="Review" keyProperty="custPntSq">
+		/* TsaReview.createBestReviewPoint */
+		INSERT INTO TB_CUST_POINT (
+		       CUST_PNT_SQ
+		     , CUST_NO
+		     , GV_PNT_AMT
+		     , US_PNT_AMT
+		     , RM_PNT_AMT
+		     , EXP_BE_DT
+		     , EXP_CMP_DT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT NULL                             AS CUST_PNT_SQ
+		     , CUST_NO
+		     , #{gvPntAmt}                      AS GV_PNT_AMT
+		     , 0                                AS US_PNT_AMT
+		     , 0                                AS RM_PNT_AMT
+		     , DATE_ADD(NOW(), INTERVAL 1 YEAR) AS EXP_BE_DT
+		     , NULL                             AS EXP_CMP_DT
+		     , #{regNo}                         AS REG_NO
+		     , NOW()                            AS REG_DT
+		     , #{updNo}                         AS UPD_NO
+		     , NOW()                            AS UPD_DT
+		FROM   TB_REVIEW
+		WHERE  REVIEW_SQ = #{reviewSq}
+		AND    BEST_YN = 'N' /*베스트상품이아닌넘. 베스트여부 값이 변경될 수도 있으므로 체크로직 추가*/
+	</insert>
+
+	<!-- 베스트상품평포인트이력 생성-->
+	<insert id="createBestReviewPointHistory" parameterType="Review">
+		/* TsaReview.createBestReviewPointHistory */
+		INSERT INTO TB_CUST_POINT_HST (
+		       PNT_HST_SQ
+		     , CUST_NO
+		     , OCCUR_GB
+		     , OCCUR_DTL_DESC
+		     , PNT_AMT
+		     , CUST_PNT_SQ
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REVIEW_SQ
+		     , SWITCH_DUE_DT
+		     , PNT_UPLOAD_STAT
+		     , PNT_UPLOAD_DT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT NULL            AS PNT_HST_SQ
+		     , CUST_NO
+		     , #{occurGb}      AS OCCUR_GB
+		     , #{occurDtlDesc} AS OCCUR_DTL_DESC
+		     , #{pntAmt}       AS PNT_AMT
+		     , #{custPntSq}    AS CUST_PNT_SQ
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REVIEW_SQ
+		     , NOW()            AS SWITCH_DUE_DT
+		     , #{pntUploadStat} AS PNT_UPLOAD_STAT
+		     , NOW()            AS PNT_UPLOAD_DT
+		     , #{regNo}         AS REG_NO
+		     , NOW()            AS REG_DT
+		     , #{updNo}         AS UPD_NO
+		     , NOW()            AS UPD_DT
+		FROM   TB_REVIEW
+		WHERE  REVIEW_SQ = #{reviewSq}
+		AND    BEST_YN = 'N' /*베스트상품이아닌넘. 베스트여부 값이 변경될 수도 있으므로 체크로직 추가*/
+	</insert>
+	
+	<!-- 베스트상품평 선정 처리 -->
+	<update id="updateBestReviewSelection" parameterType="Review">
+		/* TsaReview.updateBestReviewSelection */
+		UPDATE TB_REVIEW
+		SET    BEST_YN = 'Y'
+		     , GIVE_DUE_BPNT = #{giveDueBpnt}
+		     , BPNT_GIVE_YN = 'Y'
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  REVIEW_SQ = #{reviewSq}
+		AND    BEST_YN = 'N' /*베스트상품이아닌넘. 베스트여부 값이 변경될 수도 있으므로 체크로직 추가*/
+	</update>
+	
 </mapper>

+ 2 - 2
src/main/webapp/WEB-INF/views/marketing/ReviewForm.html

@@ -281,7 +281,7 @@
 			return;
 		}
 		
-		mcxDialog.confirm("베스트상품평으로 선정하시겠습니까?", {
+		mcxDialog.confirm("베스트 상품평으로 선정하시겠습니까?", {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function() {
@@ -295,7 +295,7 @@
 				});
 				
 				var jsonData = JSON.stringify(updatedData);
-				gagajf.ajaxJsonSubmit('/marketing/review/best/save'
+				gagajf.ajaxJsonSubmit('/marketing/review/best/list/save'
 						, jsonData
 						, function() {
 							$('#btnSearch').trigger('click');