itn 2023-07-26
등급제 대량등록 수정
@022a753d28f45720e10d9cf1deed47687bcff36e
src/main/java/itn/let/sym/grd/service/MberGrdService.java
--- src/main/java/itn/let/sym/grd/service/MberGrdService.java
+++ src/main/java/itn/let/sym/grd/service/MberGrdService.java
@@ -52,10 +52,19 @@
 	// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
 	public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception;
 	
+	// 회원별 등급 초기화 By Temp
+	public int updateMberGrdWhiteByTemp(MberGrdVO mberGrdVO) throws Exception;
+
+	// 회원별 등급 초기화 All
+	public int updateMberGrdWhiteAll(MberGrdVO mberGrdVO) throws Exception;
+
 	// 문자할인, B선라인 대상자 종료
 	public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception;
 	
-	// 전체회원 등급 종료
+	// 전체회원 TEMP_YN 업데이트
+	public int updateMberGrdTempYn(MberGrdVO mberGrdVO) throws Exception;
+	
+	// 전체회원 등급 전체종료
 	public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception;
 
 	// 회원 등급제 종료
src/main/java/itn/let/sym/grd/service/MberGrdVO.java
--- src/main/java/itn/let/sym/grd/service/MberGrdVO.java
+++ src/main/java/itn/let/sym/grd/service/MberGrdVO.java
@@ -46,6 +46,7 @@
 	private String grdNewDate;		// 시작일자, 계산기간 시작일자 중 최근날짜
 	private String grdDatePrgYn;	// 회원등급제 시작일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N)
 	private String grdPeriod;		// 회원등급제 누적결제 계산기간
+	private String tempYn;
 	
 	// 검색필터
 	private String searchGrdStatus;
@@ -268,6 +269,12 @@
 	public void setGrdPeriod(String grdPeriod) {
 		this.grdPeriod = grdPeriod;
 	}	
+	public String getTempYn() {
+		return tempYn;
+	}
+	public void setTempYn(String tempYn) {
+		this.tempYn = tempYn;
+	}	
 	public String getSearchGrdStatus() {
 		return searchGrdStatus;
 	}
src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java
--- src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java
+++ src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java
@@ -83,12 +83,27 @@
 		return update("mberGrdDAO.updateMberGrdAfterRefund", mberGrdVO);
 	}
 	
+	// 회원별 등급 초기화 By Temp
+	public int updateMberGrdWhiteByTemp(MberGrdVO mberGrdVO) throws Exception {
+		return update("mberGrdDAO.updateMberGrdWhiteByTemp", mberGrdVO);
+	}		
+
+	// 회원별 등급 초기화 All
+	public int updateMberGrdWhiteAll(MberGrdVO mberGrdVO) throws Exception {
+		return update("mberGrdDAO.updateMberGrdWhiteAll", mberGrdVO);
+	}			
+	
 	// 문자할인, B선라인 대상자 종료
 	public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception {
 		return update("mberGrdDAO.updateMberGrdEndBySale", mberGrdVO);
 	}		
 	
-	// 전체회원 등급 종료
+	// 전체회원 TEMP_YN 업데이트
+	public int updateMberGrdTempYn(MberGrdVO mberGrdVO) throws Exception {
+		return update("mberGrdDAO.updateMberGrdTempYn", mberGrdVO);
+	}		
+	
+	// 전체회원 등급 전체종료
 	public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
 		return update("mberGrdDAO.updateMberGrdEndAll", mberGrdVO);
 	}		
src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
--- src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
+++ src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
@@ -155,8 +155,9 @@
 	// 회원별 등급 일괄변경
 	@Override
 	public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception {
-		int updateCnt1 = 0;
+		int updateCnt = 0;
 		int updateCnt2 = 0;
+		int updateCnt3 = 0;
 		
 		// Step 1. 등급제 시행 ON 일경우
 		MberGrdVO mberGrdVO1 = new MberGrdVO();
@@ -164,19 +165,26 @@
 		if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
 			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
 			
-			// 대상자 추가
+			// Step1. 대상자 추가
 			insertMberGrdAllByExist(mberGrdVO);
 			
-			// 문자할인, B선라인, 스팸회원 대상자 종료
-			updateCnt1 = updateMberGrdEndBySale(mberGrdVO);
+			// Step2. TEMP_YN 업데이트(N)
+			mberGrdVO.setTempYn("N");
+			updateMberGrdTempYn(mberGrdVO);
 			
-			// 등급제 정상대상자 초기화(화이트등급) 
+			// Step3. 문자할인, B선라인, 스팸회원 대상자 종료
+			updateCnt = updateMberGrdEndBySale(mberGrdVO);
 			
-			// 회원별 등급 일괄변경
+			// Step4. 회원별 등급 일괄변경
 			updateCnt2 = mberGrdDAO.updateMberGrdAll(mberGrdVO);
+			
+			// Step5. 등급제 정상대상자 초기화(화이트등급)
+			updateCnt3 = updateMberGrdWhiteByTemp(mberGrdVO);
+			
+			
 		}
 		
-		return updateCnt1 + updateCnt2;
+		return updateCnt + updateCnt2 + updateCnt3;
 	}	
 	
 	// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
@@ -185,13 +193,31 @@
 		return mberGrdDAO.updateMberGrdAfterRefund(mberGrdVO);
 	}	
 
+	// 회원별 등급 초기화 By Temp
+	@Override
+	public int updateMberGrdWhiteByTemp(MberGrdVO mberGrdVO) throws Exception {
+		return mberGrdDAO.updateMberGrdWhiteByTemp(mberGrdVO);
+	}	
+
+	// 회원별 등급 초기화 All
+	@Override
+	public int updateMberGrdWhiteAll(MberGrdVO mberGrdVO) throws Exception {
+		return mberGrdDAO.updateMberGrdWhiteAll(mberGrdVO);
+	}	
+	
 	// 문자할인, B선라인 대상자 종료
 	@Override
 	public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception {
 		return mberGrdDAO.updateMberGrdEndBySale(mberGrdVO);
 	}	
 
-	// 전체회원 등급 종료
+	// 전체회원 TEMP_YN 업데이트
+	@Override
+	public int updateMberGrdTempYn(MberGrdVO mberGrdVO) throws Exception {
+		return mberGrdDAO.updateMberGrdTempYn(mberGrdVO);
+	}	
+	
+	// 전체회원 등급 전체종료
 	@Override
 	public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
 		return mberGrdDAO.updateMberGrdEndAll(mberGrdVO);
src/main/java/itn/let/sym/grd/web/MberGrdMngController.java
--- src/main/java/itn/let/sym/grd/web/MberGrdMngController.java
+++ src/main/java/itn/let/sym/grd/web/MberGrdMngController.java
@@ -45,9 +45,9 @@
     	return "/sym/grd/mberGrdSetting";
     }
     
-	// 등급제 일괄 저장
-	@RequestMapping(value = "/sym/grd/mberGrdSettingMassUpdateAjax.do")
-	public ModelAndView mberGrdSettingMassUpdateAjax(
+	// 등급제 설정 저장
+	@RequestMapping(value = "/sym/grd/mberGrdSettingUpdateAjax.do")
+	public ModelAndView mberGrdSettingUpdateAjax(
 			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
 
 		ModelAndView modelAndView = new ModelAndView();
@@ -69,7 +69,44 @@
     			isSuccess = false;
     			msg = "등급제 시행여부 변경에 실패했습니다.";        		
         	}
-        	else {
+		}
+		catch(Exception e) {
+			isSuccess = false;
+			msg = e.getMessage();
+		}		
+
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		modelAndView.addObject("updateMberCnt", updateMberCnt);
+		
+		return modelAndView;
+	}
+	
+	// 등급제 일괄 저장
+	@RequestMapping(value = "/sym/grd/mberGrdSettingMassUpdateAjax.do")
+	public ModelAndView mberGrdSettingMassUpdateAjax(
+			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
+
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+
+		boolean isSuccess = true;
+		String msg = "";
+		int updateMberCnt = 0;
+		
+    	// 로그인VO에서  사용자 정보 가져오기
+    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+    	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
+    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID
+
+        try{
+        	// Step1. 등급제 시행여부 변경
+        	//int updateCnt1 = mberGrdService.updateMberSetting(mberGrdVO);
+        	//if (updateCnt1 == 0) {
+        	//	isSuccess = false;
+        	//	msg = "등급제 시행여부 변경에 실패했습니다.";        		
+        	//}
+        	//else {
 	        	// Step2. 등급제 단가 업데이트
 	        	int updateCnt2 = mberGrdService.updateGrdSettingList(mberGrdVO);
 	        	if (updateCnt2 == 0) {
@@ -80,7 +117,7 @@
 	        		// Step3. 회원 등급 일괄변경
 	        		updateMberCnt = mberGrdService.updateMberGrdAll(mberGrdVO);
 	        	}
-        	}
+	        //}
 		}
 		catch(Exception e) {
 			isSuccess = false;
@@ -95,6 +132,46 @@
 	}
 	
 	// 회원별 등급 초기화
+	@RequestMapping(value = "/sym/grd/mberGrdResetMassUpdateAjax.do")
+	public ModelAndView mberGrdResetMassUpdateAjax(
+			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
+
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+
+		boolean isSuccess = true;
+		String msg = "";
+		int updateMberCnt = 0;
+		
+    	// 로그인VO에서  사용자 정보 가져오기
+    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+    	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
+    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID
+
+        try{
+    		// Step 1. 등급제 시행 ON 일경우
+    		MberGrdVO mberGrdVO1 = new MberGrdVO();
+    		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+    		if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
+    			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
+    			
+           		// 회원별 등급 초기화
+           		updateMberCnt = mberGrdService.updateMberGrdWhiteAll(mberGrdVO);
+    		}     
+		}
+		catch(Exception e) {
+			isSuccess = false;
+			msg = e.getMessage();
+		}		
+
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		modelAndView.addObject("updateMberCnt", updateMberCnt);
+		
+		return modelAndView;
+	}		
+	
+	// 회원별 등급제 전체종료
 	@RequestMapping(value = "/sym/grd/mberGrdEndMassUpdateAjax.do")
 	public ModelAndView mberGrdEndMassUpdateAjax(
 			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
@@ -113,7 +190,7 @@
 
         try{
         	
-       		// 회원별 등급 초기화
+       		// 회원별 등급 전체종료
        		updateMberCnt = mberGrdService.updateMberGrdEndAll(mberGrdVO);
        		
 		}
@@ -257,7 +334,7 @@
         	
         	// 회원 등급제 종료
         	mberGrdService.updateMberGrdEndByUser(mberGrdVO);
-       		
+     		
 		}
 		catch(Exception e) {
 			isSuccess = false;
@@ -327,7 +404,6 @@
     		MberGrdVO mberGrdVO1 = new MberGrdVO();
     		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
     		if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
-    			// 회원별 등급 일괄변경
     			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
     			
             	// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
@@ -247,7 +247,7 @@
 				WHEN M.grdSetNo = 9 THEN 'orange'
 				WHEN M.grdSetNo = 10 THEN 'green'
 				WHEN M.grdSetNo = 11 THEN 'yellow'
-				WHEN M.grdSetNo = 112 THEN 'white'
+				WHEN M.grdSetNo = 12 THEN 'white'
 			END grdSetIcon		
 			, M.grdDate		
 			, M.totAmt
@@ -319,7 +319,7 @@
 				, IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) AS REFUND_SUM
 				, (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
 				, (
-					SELECT IFNULL(MIN(S1.GRD_SET_NO), 12) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
+					SELECT IFNULL(MIN(S1.GRD_SET_NO), (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
 				 ) GRD_SET_NO 
 			FROM MJ_PG S 
 			LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@@ -402,7 +402,7 @@
 	
 	<!-- 회원별 등급 등록 All => 기존대상자 제외 -->
 	<insert id="mberGrdDAO.insertMberGrdAllByExist" parameterClass="mberGrdVO">	
-			INSERT INTO MJ_MBER_GRD_INFO 
+		INSERT INTO MJ_MBER_GRD_INFO 
 		(
 			MBER_ID
 			, GRD_SET_NO
@@ -423,13 +423,13 @@
 			, EDIT_DATE
 		)
 		SELECT
-			A.MBER_ID
-			, S.GRD_SET_NO
-			, S.SHORT_PRICE
-			, S.LONG_PRICE
-			, S.PICTURE_PRICE
-			, S.PICTURE2_PRICE
-			, S.PICTURE3_PRICE
+			M.MBER_ID
+			, M.GRD_SET_NO
+			, M.SHORT_PRICE
+			, M.LONG_PRICE
+			, M.PICTURE_PRICE
+			, M.PICTURE2_PRICE
+			, M.PICTURE3_PRICE
 			, 0
 			, 0
 			, #grdNewDate#
@@ -439,19 +439,43 @@
 			, ''
 			, NOW()
 			, ''
-			, NOW()
-		FROM LETTNGNRLMBER A
-		INNER JOIN MJ_MBER_GRD_SETTING S
-			ON S.GRD_SET_NO = 12
-		WHERE A.MBER_STTUS = 'Y'
-			AND MBER_ID NOT IN (SELECT MBER_ID FROM MJ_MBER_GRD_INFO)
+			, NOW()	
+		FROM (
+			SELECT
+				A.MBER_ID
+				, S.GRD_SET_NO
+				, S.SHORT_PRICE
+				, S.LONG_PRICE
+				, S.PICTURE_PRICE
+				, S.PICTURE2_PRICE
+				, S.PICTURE3_PRICE
+				, IFNULL(A.BLINE_CODE, 'N') 	AS blineCode
+				, IFNULL(A.SPAM_YN, 'N') 		AS spamYn
+				, CASE
+					WHEN 
+						(A.SHORT_PRICE > 0 
+							AND (B.SHORT_PRICE > A.SHORT_PRICE 
+								OR B.LONG_PRICE > A.LONG_PRICE 
+								OR B.PICTURE_PRICE > A.PICTURE_PRICE 
+								OR B.PICTURE2_PRICE > A.PICTURE2_PRICE 
+								OR B.PICTURE3_PRICE > A.PICTURE3_PRICE)
+						)
+					THEN 'Y'
+					ELSE 'N'
+				END isSalePrice			
+			FROM LETTNGNRLMBER A
+			INNER JOIN MJ_MBER_GRD_SETTING S
+				ON S.GRD_SET_NO = (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)
+			JOIN MJ_MBER_SETTING B			
+			WHERE A.MBER_STTUS = 'Y'
+				AND MBER_ID NOT IN (SELECT MBER_ID FROM MJ_MBER_GRD_INFO)
+		) M
+		WHERE M.isSalePrice = 'N'
+			AND M.blineCode = 'N'
+			AND M.spamYn = 'N'	
 	</insert>			
 	
-	<!-- 
-		회원별 등급 일괄변경
-		=> 기존등급보다 상위등급 대상만 업데이트 됨.
-		=> 기존등급과 같거나 좋지않은 경우 제외됨.
-	 -->
+	<!-- 회원별 등급 일괄변경 -->
 	<update id="mberGrdDAO.updateMberGrdAll" parameterClass="mberGrdVO">
 	<![CDATA[
 		UPDATE MJ_MBER_GRD_INFO A
@@ -469,7 +493,7 @@
 					, IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) AS REFUND_SUM
 					, (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
 					, (
-						SELECT IFNULL(MIN(S1.GRD_SET_NO), 12) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
+						SELECT IFNULL(MIN(S1.GRD_SET_NO), (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
 					 ) GRD_SET_NO 
 				FROM MJ_PG S 
 				LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@@ -498,6 +522,7 @@
 			, A.TOT_AMT = B.AMT_SUM
 			, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
 			, A.EDIT_DATE = NOW()
+			, A.TEMP_YN = 'Y'
 		WHERE B.GRD_SET_NO IS NOT NULL
 			AND A.GRD_STATUS = 'Y'
 			AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
@@ -525,7 +550,7 @@
 					, IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) AS REFUND_SUM
 					, (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
 					, (
-						SELECT IFNULL(MIN(S1.GRD_SET_NO), 12) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
+						SELECT IFNULL(MIN(S1.GRD_SET_NO), (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
 					 ) GRD_SET_NO 
 				FROM MJ_PG S 
 				LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@@ -562,6 +587,48 @@
 	]]>
 	</update>	
 	
+	<!-- 회원별 등급 초기화 By Temp -->
+	<update id="mberGrdDAO.updateMberGrdWhiteByTemp" parameterClass="mberGrdVO">
+	<![CDATA[
+		UPDATE MJ_MBER_GRD_INFO A
+		JOIN MJ_MBER_GRD_SETTING C
+		SET
+			A.GRD_SET_NO = C.GRD_SET_NO
+			, A.SHORT_PRICE = C.SHORT_PRICE
+			, A.LONG_PRICE = C.LONG_PRICE
+			, A.PICTURE_PRICE = C.PICTURE_PRICE
+			, A.PICTURE2_PRICE = C.PICTURE2_PRICE
+			, A.PICTURE3_PRICE = C.PICTURE3_PRICE
+			, A.AMT = 0
+			, A.TOT_AMT = 0
+			, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
+			, A.EDIT_DATE = NOW()
+			, A.TEMP_YN = 'Y'
+		WHERE A.TEMP_YN = 'N'
+			AND C.GRD_SET_NO = (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)
+	]]>
+	</update>	
+
+	<!-- 회원별 등급 초기화 All -->
+	<update id="mberGrdDAO.updateMberGrdWhiteAll" parameterClass="mberGrdVO">
+	<![CDATA[
+		UPDATE MJ_MBER_GRD_INFO A
+		JOIN MJ_MBER_GRD_SETTING C
+		SET
+			A.GRD_SET_NO = C.GRD_SET_NO
+			, A.SHORT_PRICE = C.SHORT_PRICE
+			, A.LONG_PRICE = C.LONG_PRICE
+			, A.PICTURE_PRICE = C.PICTURE_PRICE
+			, A.PICTURE2_PRICE = C.PICTURE2_PRICE
+			, A.PICTURE3_PRICE = C.PICTURE3_PRICE
+			, A.AMT = 0
+			, A.TOT_AMT = 0
+			, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
+			, A.EDIT_DATE = NOW()
+		WHERE C.GRD_SET_NO = (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING)
+	]]>
+	</update>	
+		
 	<!-- 문자할인, B선라인, 스팸회원 대상자 종료 -->
 	<update id="mberGrdDAO.updateMberGrdEndBySale" parameterClass="mberGrdVO">
 	<![CDATA[
@@ -604,6 +671,12 @@
 	]]>
 	</update>	
 	
+	<!-- 전체회원 TEMP_YN 업데이트 -->
+	<update id="mberGrdDAO.updateMberGrdTempYn" parameterClass="mberGrdVO">
+		UPDATE MJ_MBER_GRD_INFO SET
+			TEMP_YN		= #tempYn#
+	</update>	
+		
 	<!-- 전체회원 등급 종료 -->
 	<update id="mberGrdDAO.updateMberGrdEndAll" parameterClass="mberGrdVO">
 		UPDATE MJ_MBER_GRD_INFO SET
src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdSetting.jsp
--- src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdSetting.jsp
+++ src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdSetting.jsp
@@ -5,15 +5,54 @@
 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
 <!DOCTYPE html>
 <html lang="ko">
-
 <head>
 	<meta charset="UTF-8">
 	<title>등급제 관리</title>
+	
 	<script type="text/javascript">
 	//숫자 천단위 콤마 찍어주기
 	function numberWithCommas(x) { 
 		return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
 	}
+	
+	// 등급제 설정변경
+	function setMberGrdSettingEdit() {
+		
+		if ($("input[name='grdNoti']:checked").val() == "") {
+			alert("등급제 적용 온/오프를 선택해주세요.");
+			return false;			
+		}
+		
+		// 누적결제 적용일자
+		if ($("#ntceBgndeYYYMMDD").val() == "") {
+			alert("누적결제 적용일자를 선택해주세요.");
+			return false;
+		}		
+		
+		if(confirm("저장 하시겠습니까?")) {
+			$("#grdDate").val($("#ntceBgndeYYYMMDD").val());
+			
+			$.ajax({
+		        type: "POST",
+		        url: "/sym/grd/mberGrdSettingUpdateAjax.do",
+		        data: $("#listForm").serialize(),
+		        dataType:'json',
+		        async: false,
+		        success: function (data) {
+					if (data.isSuccess) { 
+						location.reload();
+					} 
+					else {
+						alert("Msg : " + data.msg);
+					}
+				},
+		        error: function (e) { 
+		        	alert("ERROR : " + JSON.stringify(e)); 
+		        }
+		    });	
+				
+		}
+	}		
 	
 	// 등급제 일괄변경
 	function setMberGrdSettingMassEdit() {
@@ -55,16 +94,17 @@
 		        error: function (e) { 
 		        	alert("ERROR : " + JSON.stringify(e)); 
 		        }
-		    });				
+		    });	
+				
 		}
 	}	
 	
 	// 회원별 등급 초기화
-	function setMberGrdEndMassEdit() {
+	function setMberGrdResetMassEdit() {
 		if(confirm("모든 고객 등급을 초기화하시겠습니까?")) {
 			$.ajax({
 		        type: "POST",
-		        url: "/sym/grd/mberGrdEndMassUpdateAjax.do",
+		        url: "/sym/grd/mberGrdResetMassUpdateAjax.do",
 		        data: {},
 		        dataType:'json',
 		        async: false,
@@ -83,6 +123,28 @@
 		    });				
 		}
 	}		
+	
+	// 오늘날짜 Get
+	function getToday() {
+		// new Date를 통해서 날짜 객체를 생성. 여기서 년, 월, 일 정보만 필요.
+		 const nowDate = new Date();
+
+		var year = nowDate.getFullYear(); // 년
+		var month = ('0' + (nowDate.getMonth() + 1)).slice(-2); // 월
+		var day = ('0' + nowDate.getDate()).slice(-2); // 일
+
+		// yyyy-mm-dd 형식으로 todate에 담기.
+		var todate = year + '-' + month + '-' + day;
+		
+		return todate;
+	}
+	
+	// 오늘날짜 Set
+	function setToday() {
+		var toDay = getToday();
+		
+		$('#ntceBgndeYYYMMDD').val(toDay);
+	}
 	
 	</script>
 </head>
@@ -125,6 +187,9 @@
 							    value="<c:out value="${grdDate}" />" >
 							   	 	<input type="button" class="calBtn">
 						    	</a>
+						    	
+						    	&nbsp;&nbsp;&nbsp;
+						    	<input type="button" style="cursor: pointer; height: 33px;" onclick="setToday();" value="오늘">
 							</td>
 							<th>누적결제 계산기간</th>
 							<td>
@@ -134,7 +199,13 @@
 					</tbody>
 				</table>
 			</div>
-			<br /><br />
+			
+			<br />
+			<div class="btnWrap">
+				<input type="button" class="btnType1" value="저장" onclick="javascript:setMberGrdSettingEdit(); return false;">
+			</div>
+			
+			<br /><br /><br />
 						
 			<div class="tableWrap">
 				<table class="tbType1">
@@ -178,9 +249,9 @@
 			
 			<br />
 			<div class="btnWrap">
-				<input type="button" class="btnType2" value="모든 고객 등급 초기화" onclick="javascript:setMberGrdEndMassEdit(); return false;">
-				<input type="button" class="btnType1" value="취소" onclick="javascript:location.reload(); return false;">
-				<input type="button" class="btnType1" value="수정" onclick="javascript:setMberGrdSettingMassEdit(); return false;">
+				<input type="button" class="btnType2" value="모든 고객 등급 초기화" onclick="javascript:setMberGrdResetMassEdit(); return false;">
+				<%--<input type="button" class="btnType1" value="취소" onclick="javascript:location.reload(); return false;">--%>
+				<input type="button" class="btnType1" value="저장" onclick="javascript:setMberGrdSettingMassEdit(); return false;">
 			</div>
 		</div>
 	</div>
Add a comment
List