itn 2023-07-04
등급제관리 등록화면 시행여부 추가
@c9ba6517b817c1367737ef9302daa1cd57753d73
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
@@ -26,6 +26,9 @@
 	// 회원별 등급 수정
 	public void updateMberGrd(MberGrdVO mberGrdVO)  throws Exception;		
 	
+	// 회원별 등급 일괄변경
+	public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception;
+	
 	// 회원별 등급 진행여부
 	int selectMberGrdPrgCnt(String userId) throws Exception;
 	
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
@@ -44,6 +44,11 @@
 	// 회원별 등급 수정
 	public void updateMberGrd(MberGrdVO mberGrdVO) throws Exception{
 		update("mberGrdDAO.updateMberGrd", mberGrdVO);
+	}	
+	
+	// 회원별 등급 일괄변경
+	public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception {
+		return update("mberGrdDAO.updateMberGrdAll", 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
@@ -75,6 +75,12 @@
 		mberGrdDAO.updateMberGrd(mberGrdVO);
 	}	
 	
+	// 회원별 등급 일괄변경
+	@Override
+	public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception {
+		return mberGrdDAO.updateMberGrdAll(mberGrdVO);
+	}	
+	
 	// 회원별 등급 진행여부
 	@Override
 	public int selectMberGrdPrgCnt(String userId) throws Exception{
src/main/java/itn/let/sym/grd/web/MberGrdController.java
--- src/main/java/itn/let/sym/grd/web/MberGrdController.java
+++ src/main/java/itn/let/sym/grd/web/MberGrdController.java
@@ -53,6 +53,7 @@
 
 		boolean isSuccess = true;
 		String msg = "";
+		int updateMberCnt = 0;
 		
     	// 로그인VO에서  사용자 정보 가져오기
     	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
@@ -60,15 +61,23 @@
     	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID
 
         try{
-        	// 등급제 시행여부 변경
-        	int updateCnt = mberGrdService.updateMberSetting(mberGrdVO);
-        	if (updateCnt == 0) {
+        	// Step1. 등급제 시행여부 변경
+        	int updateCnt1 = mberGrdService.updateMberSetting(mberGrdVO);
+        	if (updateCnt1 == 0) {
     			isSuccess = false;
     			msg = "등급제 시행여부 변경에 실패했습니다.";        		
         	}
         	else {
-	        	// 등급제 업데이트
-	        	mberGrdService.updateGrdSettingList(mberGrdVO);
+	        	// Step2. 등급제 단가 업데이트
+	        	int updateCnt2 = mberGrdService.updateGrdSettingList(mberGrdVO);
+	        	if (updateCnt2 == 0) {
+	    			isSuccess = false;
+	    			msg = "등급제 단가 변경에 실패했습니다.";        		
+	        	}
+	        	else {
+	        		// Step3. 회원 등급 일괄변경
+	        		updateMberCnt = mberGrdService.updateMberGrdAll(mberGrdVO);
+	        	}
         	}
 		}
 		catch(Exception e) {
@@ -78,6 +87,7 @@
 
 		modelAndView.addObject("isSuccess", isSuccess);
 		modelAndView.addObject("msg", msg);
+		modelAndView.addObject("updateMberCnt", updateMberCnt);
 		
 		return modelAndView;
 	}	    
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
@@ -147,6 +147,54 @@
 			MBER_ID = #mberId#
 	</update>	
 	
+	<!-- 회원별 등급 일괄변경 -->
+	<update id="mberGrdDAO.updateMberGrdAll" parameterClass="mberGrdVO">
+	<![CDATA[
+		UPDATE MJ_MBER_GRD_INFO A
+		INNER JOIN (
+			SELECT
+				M.USER_ID
+				, M.AMT_SUM_ORIGIN
+				, M.AMT_SUM
+				, M.GRD_SET_NO 				
+			FROM (
+				SELECT 
+					S.USER_ID
+					, SUM(S.AMT) AS AMT_SUM_ORIGIN
+					, (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
+					, (
+						SELECT MIN(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - 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
+					ON S.USER_ID = SS.MBER_ID
+					AND SS.EVENT_START_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
+				WHERE S.PG_STATUS = '1'	
+					AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
+				GROUP BY S.USER_ID
+			) M
+			WHERE M.GRD_SET_NO IS NOT NULL
+		) B
+			ON A.MBER_ID = B.USER_ID
+		INNER JOIN MJ_MBER_GRD_SETTING C
+			ON C.GRD_SET_NO = B.GRD_SET_NO
+		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.TOT_AMT = B.AMT_SUM
+			, A.GRD_START_DATE = CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
+			, A.EDIT_DATE = NOW()
+		WHERE B.GRD_SET_NO IS NOT NULL
+			AND A.GRD_SET_NO >= B.GRD_SET_NO
+			AND GRD_STATUS NOT IN ('N', 'E')
+			AND NOW() BETWEEN GRD_START_DATE AND GRD_END_DATE
+	]]>
+	</update>	
+		
 	<!-- 회원별 등급 진행여부 -->
 	<select id="mberGrdDAO.selectMberGrdPrgCnt" parameterClass="String" resultClass="Integer">
 		SELECT
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
@@ -24,7 +24,7 @@
 			return false;
 		}		
 		
-		if(confirm("등급별 단가를 변경 하시겠습니까?")) {
+		if(confirm("수정사항 저장 시 모든 고객의 단가가 변경될 수 있습니다.\n수정하시겠습니까?")) {
 			$("#grdDate").val($("#ntceBgndeYYYMMDD").val());
 			
 			// 콤마 제거
@@ -41,7 +41,7 @@
 		        success: function (data) {
 		        	console.log(data);
 					if (data.isSuccess) { 
-						alert("저장 완료했습니다.");
+						alert(data.updateMberCnt + "명 저장 완료했습니다.");
 						location.reload();
 					} 
 					else {
Add a comment
List