wyh 2023-07-17
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
@07ff1e34cac049913a06dc15fbd6b58c1e9753af
src/main/java/itn/let/mjo/block/web/AddrBlockController.java
--- src/main/java/itn/let/mjo/block/web/AddrBlockController.java
+++ src/main/java/itn/let/mjo/block/web/AddrBlockController.java
@@ -543,7 +543,7 @@
         	
         	//전송사 구분 코드  - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오
         	//mjonMsgVO.setAgentCode("01");
-        	// 하드코딩
+        	
         	//sendAgent = "02";
         	mjonMsgVO.setAgentCode(sendAgent);
         	
src/main/java/itn/let/mjo/event/web/MjonEventPayV2Controller.java
--- src/main/java/itn/let/mjo/event/web/MjonEventPayV2Controller.java
+++ src/main/java/itn/let/mjo/event/web/MjonEventPayV2Controller.java
@@ -76,11 +76,6 @@
 			return "redirect:/web/user/login/login.do";
 		}
 		
-		// 하드코딩
-		if(!userId.equals("nobledeco") && !userId.equals("nobledeco2") && !userId.equals("nopay")) {
-			return "redirect:/web/main/mainPage.do";
-		}
-		
 		//기존 결제 내역이 있는 회원인지 확인
 		int payCnt = 0;
 		if(StringUtil.isNotEmpty(userId)) {
src/main/java/itn/let/mjo/pay/web/MjonPayController.java
--- src/main/java/itn/let/mjo/pay/web/MjonPayController.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayController.java
@@ -83,6 +83,8 @@
 import itn.let.mjo.tax.service.TaxService;
 import itn.let.mjo.tax.service.TaxVO;
 import itn.let.schdlr.service.SchdlrManageService;
+import itn.let.sym.grd.service.MberGrdService;
+import itn.let.sym.grd.service.MberGrdVO;
 import itn.let.sym.site.service.EgovSiteManagerService;
 import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.uat.uia.service.AuthCertVO;
@@ -157,6 +159,9 @@
 	/** 사이트 설정 */ 
 	@Resource(name = "egovSiteManagerService")
 	EgovSiteManagerService egovSiteManagerService;	
+	
+	@Resource(name = "mberGrdService")
+	MberGrdService mberGrdService;	
 	
 	//배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"}
 	private String[][] sendPayExcelValue ={
@@ -1627,6 +1632,10 @@
    		}
     	model.addAttribute("tabType", tabType);
     	
+    	MberGrdVO mberGrdVO = new MberGrdVO();
+    	List<MberGrdVO> mberGrdSettingList = mberGrdService.selectMberGrdSettingList(mberGrdVO);
+    	model.addAttribute("mberGrdSettingList", mberGrdSettingList);
+    	
 		return "/web/pay/PayGuide";
 	}
     
@@ -1651,7 +1660,6 @@
     	float picturePrice2 = 0;	// 그림문자(MMS) 2장
     	float picturePrice3 = 0;	// 그림문자(MMS) 3장
     	
-    	// 하드코딩 => 그림문자 2장, 3장 금액은 30원씩 플러스
     	shortPrice = sysJoinSetVO.getShortPrice();
     	longPrice = sysJoinSetVO.getLongPrice();
     	picturePrice = sysJoinSetVO.getPicturePrice();
src/main/java/itn/let/mjo/pay/web/MjonPayV2Controller.java
--- src/main/java/itn/let/mjo/pay/web/MjonPayV2Controller.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayV2Controller.java
@@ -35,6 +35,8 @@
 import itn.let.mjo.pay.service.MjonVaMsgLogVO;
 import itn.let.mjo.payva.service.VacsVactService;
 import itn.let.mjo.payva.service.VacsVactVO;
+import itn.let.sym.grd.service.MberGrdService;
+import itn.let.sym.grd.service.MberGrdVO;
 import itn.let.sym.site.service.EgovSiteManagerService;
 import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.uss.umt.service.EgovMberManageService;
@@ -76,6 +78,8 @@
 	@Resource(name="MjonCommon")
 	private MjonCommon mjonCommon;
 	
+	@Resource(name = "mberGrdService")
+	MberGrdService mberGrdService;	
 	
 	/** KG 모빌리언스 설정 */
 	// CARD
@@ -119,11 +123,10 @@
 			return "redirect:/web/user/login/login.do";
 		}
 		
-		// 하드코딩
 		// Itm Member Id Check
-		if(!getItnMemberId(userId)) {
-			return "redirect:/web/main/mainPage.do";
-		}
+		//if(!getItnMemberId(userId)) {
+		//	return "redirect:/web/main/mainPage.do";
+		//}
 		
 		MberManageVO mberManageVO = mberManageService.selectMber(loginVO.getId());
     	model.addAttribute("mberManageVO", mberManageVO);
@@ -181,6 +184,10 @@
    		}
     	model.addAttribute("tabType", tabType);
     	
+    	MberGrdVO mberGrdVO = new MberGrdVO();
+    	List<MberGrdVO> mberGrdSettingList = mberGrdService.selectMberGrdSettingList(mberGrdVO);
+    	model.addAttribute("mberGrdSettingList", mberGrdSettingList);
+    	
 		return "/web/pay/PayViewV2";
 	}
 
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
@@ -5,6 +5,7 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.ModelAttribute;
@@ -77,8 +78,36 @@
     	return "/web/grd/MberGrdHistListAjax";
     }	
 	
+	// 등급제 시행 ON/OFF 체크
+	@RequestMapping(value = "/web/grd/mberSettDetailAjax.do")
+	public ModelAndView mberSettingDetailAjax(
+			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
+
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+   	
+		boolean isSuccess = false;
+		String msg = "";
+   		
+        try{
+        	MberGrdVO mberGrdVO1 = new MberGrdVO();
+			mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+			if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
+       			isSuccess = true;			
+			}
+		}
+		catch(Exception e) {
+			msg = e.getMessage();
+		}		
+
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		
+		return modelAndView;
+	}		
+	
 	// 등급제 적용여부 체크
-	@RequestMapping(value = "/web/member/grd/mberGrdChkAjax.do")
+	@RequestMapping(value = "/web/grd/mberGrdChkAjax.do")
 	public ModelAndView mberGrdChkAjax(
 			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
 
@@ -88,25 +117,28 @@
     	// 로그인VO에서  사용자 정보 가져오기
     	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
     	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
-    	mberGrdVO.setMberId(userId);
+
     	
 		boolean isSuccess = false;
 		String msg = "";
    		MberGrdVO rtnMberGrdVO = new MberGrdVO();
    		
         try{
-        	// 회원별 이벤트 진행여부
-        	int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId());
-        	if (mberEventPrgCnt == 0) {
-           		rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
-           		if (null != rtnMberGrdVO) {
-           			isSuccess = true;
-           		}
-           		else {
-        			msg = "종료";       			
-           		}
+        	if (StringUtils.isNotEmpty(userId)) {
+	        	mberGrdVO.setMberId(userId);
+	        	
+	        	// 회원별 이벤트 진행여부
+	        	int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId());
+	        	if (mberEventPrgCnt == 0) {
+	           		rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
+	           		if (null != rtnMberGrdVO) {
+	           			isSuccess = true;
+	           		}
+	           		else {
+	        			msg = "종료";       			
+	           		}
+	        	}
         	}
-        	
 		}
 		catch(Exception e) {
 			msg = e.getMessage();
@@ -117,6 +149,6 @@
 		modelAndView.addObject("msg", msg);
 		
 		return modelAndView;
-	}		
+	}			
 	
 }
src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
--- src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
+++ src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
@@ -471,6 +471,8 @@
 			//이용정지 처리 시 해당 회원 접속 기록이 있는 IP들 차단 처리
 			hackIpVO.setFrstRegisterId(mberManageVO.getMberSttusUpdusrId());
 			hackIpVO.setIgnoreDc("이용정지로 인한 IP 차단");
+			// JSPark 2023.07.13 => 이용정지시 아이피 차단 기능 주석처리(장팀장 요청)
+			/*
 			for (int i=0; i<IpList.size() ; i++){
 				//회사 IP는 차단에서 제외
 				if(!"119.193.215.98".equals(IpList.get(i))
@@ -481,18 +483,20 @@
 				}
 			}
 			System.out.println(IpList);
-			
+			*/
 		}else	if(mberSttus.equals("Y")) {
 		//이용정지 해제 시 차단된 IP들 차단해제 처리
 		//이용정지 해제 회원 처리
 		//step1-2.이용정지해제시
 			
 		//step1-2-1.이용정지IP삭제		
-		
+			// JSPark 2023.07.13 => 이용정지시 아이피 차단 기능 주석처리(장팀장 요청)
+			/*
 			for (int i=0; i<IpList.size() ; i++){
 				hackIpVO.setIgnoreIp(IpList.get(i));
 				hackIpService.deleteIgnoreIpByIp(hackIpVO);
 			}
+			*/
 		}
 		
 		// 22.11.24 관리자 처리 히스토리 남기기 로직 추가
src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
--- src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
+++ src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
@@ -579,15 +579,19 @@
 		// 업데이트
 		userManageDAO.updateUserSmishingYn(userManageVO);
 		
+		/*
 		// B선 전송사 이용고객 => 전송사 JJ로 변경안함
 		MberManageVO mberManageVO = new MberManageVO();
 		mberManageVO.setMberId(userManageVO.getMberId());
 		String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO);
 		if (blineCode != null && blineCode.equals("N")) {		
 			// 전송사 JJ로 변경
-			mberManageVO.setHotlineAgentCode("05");		// 전송사 JJ
+			mberManageVO.setHotlineAgentName("첫결제 JJ");
+			mberManageVO.setHotlineAgentCode("05");
+			mberManageVO.setAdmUserId("admin");
 			mjonMsgAgentStsService.updateMberHotlineAgentCodeInfo(mberManageVO);			
 		}
+		*/
 	}	
 	
 	// 알림톡 스미싱의심 온/오프
src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
--- src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
+++ src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
@@ -2316,6 +2316,19 @@
     				
     			}
     			
+    			// 관리자 메모
+    			String memo = "";
+    			if(mberManageVO.getMberSttus().equals("Y")) {
+    				memo = "회원상태 변경 : 일반";
+    			}
+    			else if(mberManageVO.getMberSttus().equals("B")) {
+    				memo = "회원상태 변경 : 이용정지";
+    			}
+    			mberManageVO.setMberId(mberId);
+    			mberManageVO.setMemoCn(memo);
+        		mberManageVO.setFrstRegisterId(userId);
+            	mberManageService.insertMberMemo(mberManageVO);
+    			
     			modelAndView.addObject("message", "이용자 상태를 수정하였습니다.");
     			modelAndView.addObject("result", "success");
     			
@@ -2648,7 +2661,14 @@
         	resultCnt = mberManageService.updateUserSecessionMsttus(mberManageVO);
     		
     		if(resultCnt > 0) {
-    			
+    			// 관리자 메모
+    			String memo = "";
+   				memo = "회원상태 변경 : 탈퇴";
+    			mberManageVO.setMberId(mberId);
+    			mberManageVO.setMemoCn(memo);
+        		mberManageVO.setFrstRegisterId(userId);
+            	mberManageService.insertMberMemo(mberManageVO);
+            	
     			modelAndView.addObject("message", "이용자 탈퇴가 완료 되었습니다.");
     			modelAndView.addObject("result", "success");
     			
src/main/resources/egovframework/egovProps/globals_prod.properties
--- src/main/resources/egovframework/egovProps/globals_prod.properties
+++ src/main/resources/egovframework/egovProps/globals_prod.properties
@@ -95,7 +95,7 @@
 
 #KG \ubaa8\ube4c\ub9ac\uc5b8\uc2a4 \uc124\uc815
 #CARD
-Globals.pay.kgm.card.cnSvcid=191017078687
+Globals.pay.kgm.card.cnSvcid=230523133878
 Globals.pay.kgm.card.payMode=10
 #BANK
 Globals.pay.kgm.bank.raSvcid=230510133362
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
@@ -140,8 +140,46 @@
 				 	A.MBER_ID = #searchKeyword#
                 </isEqual>
             </isNotEmpty>		
-     	    <isNotEmpty prepend="AND" property="searchGrdStatus">
-  				A.GRD_STATUS = #searchGrdStatus#
+     	    <isNotEmpty property="searchGrdStatus">
+                <isEqual property="searchGrdStatus" compareValue="Y">
+					AND (CASE
+						WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
+						THEN '대기'			
+						WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
+						THEN '진행'
+						WHEN A.GRD_STATUS = 'N'
+						THEN '대기'
+						WHEN A.GRD_STATUS = 'E'
+						THEN '종료'
+						ELSE '종료'
+					END) = '진행'
+                </isEqual>     	    
+                <isEqual property="searchGrdStatus" compareValue="N">
+					AND (CASE
+						WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
+						THEN '대기'			
+						WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
+						THEN '진행'
+						WHEN A.GRD_STATUS = 'N'
+						THEN '대기'
+						WHEN A.GRD_STATUS = 'E'
+						THEN '종료'
+						ELSE '종료'
+					END) = '대기'
+                </isEqual>     	    
+                <isEqual property="searchGrdStatus" compareValue="E">
+					AND (CASE
+						WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
+						THEN '대기'			
+						WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
+						THEN '진행'
+						WHEN A.GRD_STATUS = 'N'
+						THEN '대기'
+						WHEN A.GRD_STATUS = 'E'
+						THEN '종료'
+						ELSE '종료'
+					END) = '종료'
+                </isEqual>     	                    
   			</isNotEmpty>	                    	
 		ORDER BY 1=1
 		<isNotEmpty property="searchSortCnd">
@@ -181,6 +219,7 @@
 
 	<!-- 회원 등급제 대상여부 정보(사용자화면용) -->
 	<select id="mberGrdDAO.selectMberGrdInfo" parameterClass="String" resultClass="mberGrdVO">
+	<![CDATA[
 		SELECT
 			M.mberId
 			, blineCode
@@ -239,6 +278,8 @@
 				ON G.GRD_SET_NO = S.GRD_SET_NO					
 			JOIN MJ_MBER_SETTING B
 			WHERE 1=1
+				AND B.GRD_NOTI = 'Y'
+				AND DATE_FORMAT(B.GRD_DATE, '%Y-%m-%d') <= DATE_FORMAT(NOW(), '%Y-%m-%d') 
 				AND G.GRD_STATUS = 'Y'
 				AND NOW() BETWEEN G.GRD_START_DATE AND G.GRD_END_DATE				
 				AND G.MBER_ID = #mberId#
@@ -246,6 +287,7 @@
 		WHERE M.isSalePrice = 'N'
 		OR M.blineCode != 'N'
 		LIMIT 1
+	]]>
 	</select>
 	
 	<!-- 회원별 등급 누적결제액 상세 -->
src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp
--- src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp
+++ src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp
@@ -101,8 +101,8 @@
 			
 				<select id="searchGrdStatus" name="searchGrdStatus" title="상태">
 					<option value="" <c:if test="${empty searchVO.searchGrdStatus }">selected="selected"</c:if> >상태</option>
-                    <option value="Y" <c:if test="${searchVO.searchGrdStatus == 'Y'}">selected="selected"</c:if> >진행중</option>
-                    <option value="N" <c:if test="${searchVO.searchGrdStatus == 'N'}">selected="selected"</c:if> >미진행</option>
+                    <option value="Y" <c:if test="${searchVO.searchGrdStatus == 'Y'}">selected="selected"</c:if> >진행</option>
+                    <option value="N" <c:if test="${searchVO.searchGrdStatus == 'N'}">selected="selected"</c:if> >대기</option>
 					<option value="E" <c:if test="${searchVO.searchGrdStatus == 'E'}">selected="selected"</c:if> >종료</option>
 	            </select>	            
 	            			
src/main/webapp/WEB-INF/jsp/web/addrBlock/AddrBlockList.jsp
--- src/main/webapp/WEB-INF/jsp/web/addrBlock/AddrBlockList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addrBlock/AddrBlockList.jsp
@@ -991,7 +991,6 @@
 function SetBlockResultSave() {
 	//alert(globalBlockId);
 	
-	// 하드코딩
 	//alert("준비중입니다.");
 	//return;
 	
src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
--- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
@@ -1053,6 +1053,20 @@
     <div class="skip_menu">
         <a href="#cont" title="본문 바로가기" class="contGo" rel="nosublink">본문 바로가기</a>
     </div><!--// skip 메뉴  -->
+
+    <!-- 요금안내 top 배너 시작 -->
+    <c:choose> 
+    	<c:when test="${fn:contains(pageContext.request.requestURL , 'web/main/mainPage.do')}">
+			<!--
+			<img class="price_top_banner"  src="/publish/images/level/top_banner.png" alt="최저 8.1원 요금안내" usemap="#topbanner">
+			<map name="topbanner">
+			  <area shape="poly" coords="45,165,194,164,182,183,155,200,124,208,85,202,63,187,46,167" href="/web/pay/PayGuide.do" alt="">
+			</map>
+			-->    
+    	</c:when>
+    </c:choose>    
+    
+    
     <!-- quick 메뉴 -->
     <!-- 메인화면 퀵 메뉴와 서브화면 퀵메뉴 클래스 분기 -->
     <c:choose> 
src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/bankOkUrl.jsp
--- src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/bankOkUrl.jsp
+++ src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/bankOkUrl.jsp
@@ -60,8 +60,8 @@
 				<p><c:out value='${Resultmsg}'/></p>
 			</div>
 			<div class="popup_btn" style="margin: 30px auto 0 auto;">
-				<%--<button type="button" onclick="goPayList();">요금결제내역 보기</button>--%>                      
-				<button type="button" onclick="goClose();">닫기</button>                      
+				<button type="button" onclick="goPayList();">요금결제내역 보기</button>                      
+				<button type="button" onclick="goPayList();">닫기</button>                      
 			</div>
 		</div>
 	</div>
src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/cardOkUrl.jsp
--- src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/cardOkUrl.jsp
+++ src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/cardOkUrl.jsp
@@ -60,8 +60,8 @@
 				<p><c:out value='${Resultmsg}'/></p>
 			</div>
 			<div class="popup_btn" style="margin: 30px auto 0 auto;">
-				<%--<button type="button" onclick="goPayList();">요금결제내역 보기</button>--%>                      
-				<button type="button" onclick="goClose();">닫기</button>                      
+				<button type="button" onclick="goPayList();">요금결제내역 보기</button>                      
+				<button type="button" onclick="goPayList();">닫기</button>                      
 			</div>
 		</div>		
 	</div>
src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/mobileOkUrl.jsp
--- src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/mobileOkUrl.jsp
+++ src/main/webapp/WEB-INF/jsp/web/cop/kgmV2/mobileOkUrl.jsp
@@ -60,8 +60,8 @@
 				<p><c:out value='${Resultmsg}'/></p>
 			</div>
 			<div class="popup_btn" style="margin: 30px auto 0 auto;">
-				<%--<button type="button" onclick="goPayList();">요금결제내역 보기</button>--%>                      
-				<button type="button" onclick="goClose();">닫기</button>                      
+				<button type="button" onclick="goPayList();">요금결제내역 보기</button>                      
+				<button type="button" onclick="goPayList();">닫기</button>                      
 			</div>
 		</div>
 	</div>
src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
@@ -65,6 +65,12 @@
 		$("#btnEstimate").trigger("click");
 	}
 	
+	//등급제 시행 ON/OFF 체크
+	//getMberSettingDetail();
+		
+	// 등급제 대상 여부
+	//getMberGrdChk();
+	
 });
 
 //품목정보 추가
@@ -318,21 +324,70 @@
 }
 
 
-	//체크박스 전체선택/해제
-	$(document).on("click", "#chkAll", function(e) {
-		var isChecked = $(this).is(":checked");
-		$("input[name=chkEach]:checkbox").prop("checked", isChecked);
-	});	
+//체크박스 전체선택/해제
+$(document).on("click", "#chkAll", function(e) {
+	var isChecked = $(this).is(":checked");
+	$("input[name=chkEach]:checkbox").prop("checked", isChecked);
+});	
 
-	/* 윈도우팝업 열기 */
-	function infoPop(pageUrl){
-		document.infoPopForm.pageType.value = pageUrl;
-		document.infoPopForm.action = "/web/pop/infoPop.do";
-		document.infoPopForm.method = "post"; 
-		window.open("about:blank", 'infoPop', 'width=790, height=280, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
-		document.infoPopForm.target = "infoPop";
-		document.infoPopForm.submit();
-	}
+/* 윈도우팝업 열기 */
+function infoPop(pageUrl){
+	document.infoPopForm.pageType.value = pageUrl;
+	document.infoPopForm.action = "/web/pop/infoPop.do";
+	document.infoPopForm.method = "post"; 
+	window.open("about:blank", 'infoPop', 'width=790, height=280, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
+	document.infoPopForm.target = "infoPop";
+	document.infoPopForm.submit();
+}
+
+
+//등급제 시행 ON/OFF 체크
+function getMberSettingDetail() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberSettDetailAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 문자(등급별 요금 안내)
+				$("#mberGrdSettingArea").show();
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}		
+
+// 등급제 대상 여부
+function getMberGrdChk() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberGrdChkAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 등급제 누적결제액 세부내역
+				$("#grdShowArea").html("(등급 : " + data.rtnMberGrdVO.grdSetNm + ")");
+				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");				
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}		
+
 </script>
 
 <form name="popForm" method="post">
@@ -376,7 +431,7 @@
 				<div class="fee_cont current" id="tab1_1">
 					<div>
 						<p class="tType1_title">
-							<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자
+							<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span class="level_first" id="grdShowArea"></span>
 						</p>
 						<table class="tType2">
 							<caption></caption>
@@ -412,6 +467,57 @@
 						</table>
 						<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
 					
+						<!--문자_등급별 요금 안내 추가 시작-->
+						<div id="mberGrdSettingArea" style="display: none;">
+							<p class="tType1_title level"><img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span>(등급별 요금 안내)</span></p>
+							<table class="tType2 tType2_level">
+								<caption></caption>
+								<colgroup>
+									<col style="width: 13%;">
+									<col style="width: auto;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+									<col style="width: 11%;">
+								</colgroup>
+								<thead>
+									<tr>
+										<th>등급</th>
+										<th class="th_second">누적결제액<span id="levelSubTitle"></span></th>
+										<th>단문</th>
+										<th>장문</th>
+										<th>그림(1장)</th>
+										<th>그림(2장)</th>
+										<th>그림(3장)</th>
+									</tr>
+								</thead>
+								<tbody>
+				    				<c:forEach var="result" items="${mberGrdSettingList}" varStatus="status">
+									<tr class="level_table">
+										<th><c:out value="${result.grdSetNm}"/></th>
+										<td class="level_price"><c:out value="${result.stdAmtComma}"/></td>
+										<td><c:out value="${result.shortPrice}"/></td>
+										<td><c:out value="${result.longPrice}"/></td>
+										<td><c:out value="${result.picturePrice}"/></td>
+										<td><c:out value="${result.picture2Price}"/></td>
+										<td><c:out value="${result.picture3Price}"/></td>
+									</tr>
+									</c:forEach>													
+								</tbody>
+							</table>
+							<span class="reqTxt4">
+								* 등급별 요금제는 당사의 정책 및 운영의 필요상 수정, 중단 또는 변경될 수 있습니다. <br>
+								* 누적결제액은 등급별 요금제 적용일로부터 적립된 결제금액을 말하며, 누적결제액에 따라 등급은 자동으로 적용됩니다. <br>
+								* "첫결제 이벤트" 등 이벤트 결제금액은 등급별 요금제 누적결제액에서 제외됩니다. <br>
+							</span> 
+							<p class="reqTxt4 reqTxt4_last">
+								* 문자피싱, 스미싱, 주식, 도박, 로또, 스팸, 사기, 협박, 범죄, 유사투자, 유사수신 등을 목적으로 하거나 교사 또는 방조하는 내용의 정보, 발신번호 조작 등으로 인지되는 문자에 대해서는 사전 또는 즉시 발송을 차단하고
+   								이용을 정지시킬 수 있으며, 이에 대한 어떠한 환불이나 보상을 실시하지 않습니다. 또한, 상기 문자를 발송한 회원에 대해서는 그 즉시 등급별 요금제 혜택을 취소합니다. 
+							</p>
+						</div>
+						<!--문자_등급별 요금 안내 추가 끝-->					
+					
 						<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 알림톡</p>
 						<table class="tType2">
 							<colgroup>
src/main/webapp/WEB-INF/jsp/web/pay/PayListAllAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayListAllAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayListAllAjax.jsp
@@ -89,6 +89,8 @@
 		$(this).val($(this).val().replace(/[^\.0-9]/g,""))
 	})
 	
+	// 등급제 대상 여부
+	//getMberGrdChk();	
 });
 
 
@@ -307,6 +309,46 @@
     var isChecked = $(this).is(":checked");
     $("input[name=eachChk]:checkbox").prop("checked", isChecked);
 });
+
+
+//등급제 누적결제액 세부내역
+function mberGrdHistListAjax(pageNo){
+	document.levelForm.pageIndex.value = pageNo;
+		
+	var sendData= $(document.levelForm).serializeArray();
+	$("#mberGrdHistListLoad").load("/web/member/grd/mberGrdHistListAjax.do", sendData ,function(response, status, xhr){
+
+	});
+}
+
+// 등급제 대상 여부
+function getMberGrdChk() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberGrdChkAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 등급제 누적결제액 세부내역
+				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");				
+				document.levelForm.grdSetNm.value = data.rtnMberGrdVO.grdSetNm;
+				document.levelForm.totAmt.value = data.rtnMberGrdVO.totAmt;
+				mberGrdHistListAjax(1);	
+
+				$("#levelIconBtn").show();
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}	
+
 </script>
 <form id="listForm" name="listForm" action="<c:url value='/web/member/pay/PayList.do'/>" method="post">
 	<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
@@ -351,6 +393,9 @@
 					 -->
 				</div>
 				<div>
+                    <button type="button" class="level_btn" data-tooltip="level_check_popup01" id="levelIconBtn" style="display: none;">
+                        <img src="/publish/images/level/level_btn_icon.png" alt="등급 및 누적결제액 확인 버튼">등급 및 누적결제액 확인
+                    </button>
 					<button type="button" class="excel_btn" onclick="javascript:payExcelDownload();">
 						<i class="downroad"></i>엑셀 다운로드
 					</button>
@@ -852,3 +897,28 @@
 		</form>		
 	</div>
 	<!--// 세금계산서 팝업 -->	
+	
+	<form id="levelForm" name="levelForm" method="post">
+		<input type="hidden" id="pageType" name="pageType"  value=""/>
+		<input type="hidden" id="pageIndex" name="pageIndex" value=""/>
+		<input type="hidden" id="grdSetNm" name="grdSetNm" value=""/>
+		<input type="hidden" id="totAmt" name="totAmt" value=""/>
+	</form>	
+    <!-- 등급 및 누적결제액 확인 팝업 data-tooltip:level_check_popup01 시작 -->
+    <div class="tooltip-wrap level_popup">
+        <div class="popup-com candidate_layer level_check_popup01" tabindex="0" data-tooltip-con="level_check_popup01"
+            data-focus="level_check_popup01" data-focus-prev="level_check_popup01-close" style="width: 680px;">
+            <div class="popup_heading">
+                <p>누적결제액 세부내역<span id="levelSubTitle"></span></p>
+                <button type="button" class="tooltip-close" data-focus="level_check_popup01-close"><img
+                        src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+            </div>
+            <div class="layer_in" id="mberGrdHistListLoad" style="padding-bottom: 0px;">
+            </div>
+            
+            <div class="popup_btn_wrap2" style="margin-bottom: 30px;">
+                <button type="button" class="tooltip-close" data-focus="level_check_popup01-close">닫기</button>
+            </div>            
+        </div>
+    </div>
+    <!-- 등급 및 누적결제액 확인 팝업 data-tooltip:level_check_popup01 끝 -->	
src/main/webapp/WEB-INF/jsp/web/pay/PayViewV2.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayViewV2.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayViewV2.jsp
@@ -29,6 +29,11 @@
 		$("#btnDdedicatedAccount").trigger("click");
 	}
 	
+	//등급제 시행 ON/OFF 체크
+	//getMberSettingDetail();
+		
+	// 등급제 대상 여부
+	//getMberGrdChk();	
 });
 
 
@@ -601,6 +606,59 @@
 	// 충전금액 세팅
 	setPriceMake();	
 }
+
+
+//등급제 시행 ON/OFF 체크
+function getMberSettingDetail() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberSettDetailAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 문자(등급별 요금 안내)
+				$("#mberGrdSettingArea").show();
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}		
+
+// 등급제 대상 여부
+function getMberGrdChk() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberGrdChkAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 등급제 누적결제액 세부내역
+				var sHtml = "";
+				sHtml += "<p>등급 : <span><img src='/publish/images/level/level_icon/level_small/" + data.rtnMberGrdVO.grdSetIcon + "_small_icon.png' alt='등급 스몰 아이콘'>" + data.rtnMberGrdVO.grdSetNm;
+				sHtml += "(누적결제액 : &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp;  &nbsp;<span>" + numberWithCommas(data.rtnMberGrdVO.totAmt) + "</span>원)</span></p>";
+				$("#grdShowArea").html(sHtml);
+				$("#grdShowArea").show();
+				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");				
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}		
+
 </script>
 
 <!-- </head>
@@ -1037,6 +1095,66 @@
 						</div>
 						<!-- //즉시이체 -->
 					</div>
+
+
+					<!--누적결제액별 등급 및 단가 추가 시작-->
+					<div class="accrue_price" id="grdShowArea" style="display: none;">
+					</div>
+					<div class="accrue_level" id="mberGrdSettingArea" style="display: none;">
+						<p class="tType1_title level"><img src="/publish/images/level/accrue.png" alt="누적결제액별 등급 및 단가 아이콘"> 누적결제액별 등급 및 단가
+						</p>
+						<table class="tType2 tType2_level">
+							<caption></caption>
+							<colgroup>
+								<col style="width: 13%;">
+								<col style="width: auto;">
+								<col style="width: 11%;">
+								<col style="width: 11%;">
+								<col style="width: 11%;">
+								<col style="width: 11%;">
+								<col style="width: 11%;">
+							</colgroup>
+							<thead>
+								<tr>
+									<th>등급</th>
+									<th class="th_second">누적결제액<span id="levelSubTitle"></span></th>
+									<th>단문</th>
+									<th>장문</th>
+									<th>그림(1장)</th>
+									<th>그림(2장)</th>
+									<th>그림(3장)</th>
+								</tr>
+							</thead>
+							<tbody>
+			    				<c:forEach var="result" items="${mberGrdSettingList}" varStatus="status">
+								<tr>
+									<th><c:out value="${result.grdSetNm}"/></th>
+									<td class="level_price"><c:out value="${result.stdAmtComma}"/></td>
+									<td><c:out value="${result.shortPrice}"/></td>
+									<td><c:out value="${result.longPrice}"/></td>
+									<td><c:out value="${result.picturePrice}"/></td>
+									<td><c:out value="${result.picture2Price}"/></td>
+									<td><c:out value="${result.picture3Price}"/></td>
+								</tr>
+								</c:forEach>																				
+							</tbody>
+						</table>
+						<span class="reqTxt4">
+							* 등급별 요금제는 당사의 정책 및 운영의 필요상 수정, 중단 또는 변경될 수 있습니다. <br>
+							* 누적결제액은 등급별 요금제 적용일로부터 적립된 결제금액을 말하며, 누적결제액에 따라 등급은 자동으로 적용됩니다. <br>
+							* "첫결제 이벤트" 등 이벤트 결제금액은 등급별 요금제 누적결제액에서 제외됩니다. <br>
+						</span>
+						<p class="reqTxt4 reqTxt4_last">
+							* 문자피싱, 스미싱, 주식, 도박, 로또, 스팸, 사기, 협박, 범죄, 유사투자, 유사수신 등을 목적으로 하거나 교사 또는 방조하는 내용의 정보, 발신번호 조작
+							등으로 인지되는 문자에 대해서는
+							사전 또는 즉시 발송을 차단하고
+							이용을 정지시킬 수 있으며, 이에 대한 어떠한 환불이나 보상을 실시하지 않습니다. 또한, 상기 문자를 발송한 회원에 대해서는 그 즉시 등급별 요금제 혜택을
+							취소합니다.
+						</p>
+					</div>            
+					<!--문자_등급별 요금 안내 추가 끝-->    
+
+
 				</div><!-- 결제관리 - 결제하기 -->
             </div><!--// send top -->
         </div>
src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
@@ -111,7 +111,7 @@
 function getMberGrdChk() {
 	$.ajax({
         type: "POST",
-        url: "/web/member/grd/mberGrdChkAjax.do",
+        url: "/web/grd/mberGrdChkAjax.do",
         data: {},
         dataType:'json',
         async: false,
@@ -121,7 +121,7 @@
 				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");				
 				document.levelForm.grdSetNm.value = data.rtnMberGrdVO.grdSetNm;
 				document.levelForm.totAmt.value = data.rtnMberGrdVO.totAmt;
-				mberGrdHistListAjax(1, data.rtnMberGrdVO.grdSetNm, data.rtnMberGrdVO.totAmt);	
+				mberGrdHistListAjax(1);	
 
 				// 등급제 아이콘 버튼 노출여부
 				var sHtml = "";
Add a comment
List