이준호 이준호 2023-07-12
이준호 문자온 커밋
 - (관리자)점검중페이지 관리 기능 추가
@1dc6d2f759c0ac1967b26922f09efc8786a27770
src/main/java/itn/let/sym/site/service/EgovSiteManagerService.java
--- src/main/java/itn/let/sym/site/service/EgovSiteManagerService.java
+++ src/main/java/itn/let/sym/site/service/EgovSiteManagerService.java
@@ -161,5 +161,7 @@
 	int selectPersnalMemberCnt(String userId) throws Exception;
 
 	// 첫결제여부
-	int selectFirstPayCnt(String userId) throws Exception;	
+	int selectFirstPayCnt(String userId) throws Exception;
+	
+	void updateInspManage(SiteManagerVO siteManagerVO) throws Exception;
 }
src/main/java/itn/let/sym/site/service/SiteManagerVO.java
--- src/main/java/itn/let/sym/site/service/SiteManagerVO.java
+++ src/main/java/itn/let/sym/site/service/SiteManagerVO.java
@@ -62,6 +62,8 @@
 	private String sessionTimeCdText;  //세션타임 코드 텍스트
 	private String sessionTimeUserCd;  //세션타임 사용자 코드 텍스트
 	private String sessionTimeUserCdTxt;  //세션타임 사용자 코드 텍스트
+	private String sysMaintenance;	//점검중페이지 노출여부
+	private String sysMaintenanceIp;	//점검중페이지제외IP
 	
 	public static long getSerialversionuid() {
 		return serialVersionUID;
@@ -332,4 +334,21 @@
 		this.sessionTimeUserCdTxt = sessionTimeUserCdTxt;
 	}
 
+	public String getSysMaintenance() {
+		return sysMaintenance;
+	}
+
+	public void setSysMaintenance(String sysMaintenance) {
+		this.sysMaintenance = sysMaintenance;
+	}
+
+	public String getSysMaintenanceIp() {
+		return sysMaintenanceIp;
+	}
+
+	public void setSysMaintenanceIp(String sysMaintenanceIp) {
+		this.sysMaintenanceIp = sysMaintenanceIp;
+	}
+	
+
 }
src/main/java/itn/let/sym/site/service/impl/EgovSiteManagerServiceImpl.java
--- src/main/java/itn/let/sym/site/service/impl/EgovSiteManagerServiceImpl.java
+++ src/main/java/itn/let/sym/site/service/impl/EgovSiteManagerServiceImpl.java
@@ -5,6 +5,7 @@
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
 import itn.let.sym.site.service.EgovSiteManagerService;
@@ -388,5 +389,16 @@
 	@Override
 	public int selectFirstPayCnt(String userId) throws Exception{
 		return siteManagerDAO.selectFirstPayCnt(userId);
-	}	
+	}
+
+	@Override
+	public void updateInspManage(SiteManagerVO siteManagerVO) throws Exception {
+		if(!StringUtils.isEmpty(siteManagerVO.getSysMaintenanceIp())) {
+			siteManagerVO.setSysMaintenanceIp(siteManagerVO.getSysMaintenanceIp().trim().replaceAll(" ", ""));
+		}
+		
+		siteManagerDAO.updateInspManage(siteManagerVO);
+	}
+	
+	
 }
src/main/java/itn/let/sym/site/service/impl/SiteManagerDAO.java
--- src/main/java/itn/let/sym/site/service/impl/SiteManagerDAO.java
+++ src/main/java/itn/let/sym/site/service/impl/SiteManagerDAO.java
@@ -370,6 +370,10 @@
 	// 첫결제여부
 	public int selectFirstPayCnt(String userId) throws Exception{
 		return (int) select("siteManagerDAO.selectFirstPayCnt", userId);
-	}	
+	}
+	
+	public void updateInspManage(SiteManagerVO siteManagerVO) throws Exception{
+		update("siteManagerDAO.updateInspManage", siteManagerVO);
+	}
 	
 }	
src/main/java/itn/let/sym/site/web/EgovSiteManagerController.java
--- src/main/java/itn/let/sym/site/web/EgovSiteManagerController.java
+++ src/main/java/itn/let/sym/site/web/EgovSiteManagerController.java
@@ -2469,4 +2469,46 @@
 		modelAndView.addObject("msg", msg);
 		return modelAndView;
 	}
+	
+	/**
+     * 관리자 알림 여부
+     * 
+     * @param joinSettingVO
+     * @param model
+     * @return
+     * @throws Exception
+     */
+    
+    @RequestMapping("/sym/site/selectInspManage.do")
+    public String selectInspManage(ModelMap model) throws Exception {
+    	model.addAttribute("model", egovSiteManagerService.selectSiteManagerVO(new SiteManagerVO()));
+    	return "/sym/site/inspManage";
+    }
+    
+    @RequestMapping("/sym/site/updateInspManageAjax.do")
+    public ModelAndView updateInspManage(SiteManagerVO siteManagerVO, ModelMap model) throws Exception {
+    	
+    	ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+    	
+    	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+    	
+		siteManagerVO.setLastUpdusrId(userId);
+		String msg = "저장되었습니다.";
+		String result = "SUCCESS";
+		
+		try {
+			egovSiteManagerService.updateInspManage(siteManagerVO);
+		} catch (Exception e) {
+			System.out.println(e.getMessage());
+			msg = "저장에 실패했습니다.";
+			result = "fail";
+		}
+		
+		model.addAttribute("msg", msg);
+		model.addAttribute("result", result);
+		
+    	return modelAndView;
+    }
 }
src/main/java/itn/web/MainController.java
--- src/main/java/itn/web/MainController.java
+++ src/main/java/itn/web/MainController.java
@@ -13,6 +13,7 @@
 import java.security.spec.RSAPublicKeySpec;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
@@ -50,6 +51,7 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -717,6 +719,23 @@
     		ModelMap model, HttpServletRequest request)
             throws Exception {
     	
+    	//점검중 페이지 체크
+		SiteManagerVO siteManagerVO_ = new SiteManagerVO();
+		siteManagerVO_ = egovSiteManagerService.selectSiteManagerVO(siteManagerVO_);
+		
+		//1. 사이트 점검중 페이지 노출
+		//2. siteManager 테이블의 SYS_MAINTENANCE, SYS_MAINTENANCE_IP 를 통해 구분
+		//3. 점검중페이지 노출 방식 
+		//			미사용 : 점검 중 페이지 미노출
+		//			IP로제어 : 등록 IP를 제외하고 모든 페이지에서 '점검중' 레이어 노출
+		//			PATH로제어 : '/web/main/mainPage.do' 메인페이지에 접근했을때만 점검중페이지로 이동
+		String userIP = this.getClientIP(request);
+		Boolean result = this.inspPageIp(request, userIP, siteManagerVO_);
+		if(!result) {
+			model.addAttribute("inspYn", "Y");
+		}
+    	
+    	
     	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
     	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
     	
@@ -1296,19 +1315,23 @@
 		//점검중 페이지 체크
 		SiteManagerVO siteManagerVO = new SiteManagerVO();
 		siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO);
-		if("Y".equals(siteManagerVO.getInspFlag() )){ //점검중
+//		if("Y".equals(siteManagerVO.getInspFlag() )){ //점검중
+//			return "web/com/insp";
+//		}
+		
+		
+		//1. 사이트 점검중 페이지 노출
+		//2. siteManager 테이블의 SYS_MAINTENANCE, SYS_MAINTENANCE_IP 를 통해 구분
+		//3. 점검중페이지 노출 방식 
+		//			미사용 : 점검 중 페이지 미노출
+		//			IP로제어 : 등록 IP를 제외하고 모든 페이지에서 '점검중' 레이어 노출
+		//			PATH로제어 : '/web/main/mainPage.do' 메인페이지에 접근했을때만 점검중페이지로 이동
+		String userIP = this.getClientIP(request);
+		Boolean result = this.inspPagePath(request, userIP, siteManagerVO);
+		if(!result) {
 			return "web/com/insp";
 		}
 		
-		/*LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
-    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
-    	String authority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
-    	
-    	if("ROLE_ADMIN".equals(authority)) {
-    		String referer = request.getHeader("Referer");
-    		request.getSession().invalidate();
-    		return "redirect:/web/main/mainPage.do";
-    	}*/
 		
 		//자신의 위치 정보
     	List<MenuManageJTreeVO> menuCurrentResultList = new ArrayList<MenuManageJTreeVO>(); //자신의 위치
@@ -2695,6 +2718,229 @@
 		modelAndView.addObject("msg", msg);
 			
 		return modelAndView;
-	}		
+	}
+	
+	@RequestMapping(value = "/web/main/mainPage_insp.do")
+	public String mainPage_insp(HttpServletRequest request, ModelMap model, HttpSession session, 
+			@RequestParam(value="message", defaultValue="0") String message, LetterVO letterVO) throws Exception{
+		//메인이미지
+		String referer = (String)request.getHeader("REFERER");
+		
+		//로그인 실패시 메세지
+		if(!"0".equals(message)) {
+			model.addAttribute("messageflag", "1");
+			model.addAttribute("message", message);
+		}
+		
+		//kisa 사용자 경고 팝업
+		LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		if(EgovUserDetailsHelper.isAuthenticated() && user!=null) {
+			KisaVO kisaVO = new KisaVO();
+			kisaVO.setMberId(user.getId());
+			kisaVO.setKisaPopupYn("Y");
+			List<KisaVO> kisaList = kisaService.selectKisaListMberId(kisaVO);
+			if(kisaList.size() > 0) {
+				//kisa 코드 조회
+				ComDefaultCodeVO kisacodeVO = new ComDefaultCodeVO();
+				kisacodeVO.setCodeId("ITN034");
+				List<?> kisacodeResult = cmmUseService.selectCmmCodeDetail(kisacodeVO);
+				model.addAttribute("kisacodeResult", kisacodeResult);
+				
+				//위반 사항 안내 종합 (아이디별 kisalist의 각각 kisaWarnMessage를 한번에 보여주기 위해)
+				String[] chk = {};
+				ArrayList<String> kisaWarnMessagelist = new ArrayList<String>();
+				for(KisaVO tmpVO : kisaList) {
+					if(!"".equals(tmpVO.getKisaWarnMessage()) && tmpVO.getKisaWarnMessage() != null) {
+						chk = tmpVO.getKisaWarnMessage().split(",");
+						for(int i = 0 ; i < chk.length ; i++) {
+							if(!kisaWarnMessagelist.contains(chk[i])) {
+								kisaWarnMessagelist.add(chk[i]);
+							}
+						}
+					}
+				}
+				model.addAttribute("chk", kisaWarnMessagelist);
+				model.addAttribute("kisaListSize", kisaList.size());
+				model.addAttribute("kisaList", kisaList);
+			}
+		}
+		
+		//공지사항 게시글 불러오기
+		BoardMasterVO boardMasterVO = new BoardMasterVO();
+		//공지사항 url로 전체게시글 불러오기
+		boardMasterVO.setUrl("/web/cop/bbs/NoticeList.do");
+		BoardMasterVO bmVO = new BoardMasterVO();
+		
+		BoardVO boardVO = new BoardVO();
+		boardVO.setPageUnit(7);
+		boardVO.setPageSize(10);
+		
+		if("".equals(boardMasterVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
+			boardMasterVO.setSearchSortCnd("nttId");
+			boardMasterVO.setSearchSortOrd("desc");
+		}
+		//전체 게시글 불러오기
+		Map<String, Object> map = new HashMap<String, Object>();
+		
+		if(boardMasterVO.getPageUnit() != 10) {
+			bmVO.setPageUnit(boardMasterVO.getPageUnit());
+		}
+		PaginationInfo paginationInfo = new PaginationInfo();
+		paginationInfo.setCurrentPageNo(bmVO.getPageIndex());
+		paginationInfo.setRecordCountPerPage(bmVO.getPageUnit());
+		paginationInfo.setPageSize(bmVO.getPageSize());
+		
+		paginationInfo.setCurrentPageNo(boardVO.getPageIndex());
+		paginationInfo.setRecordCountPerPage(boardVO.getPageUnit());
+		paginationInfo.setPageSize(boardVO.getPageSize());
+
+		boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
+		boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex());
+		boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
+		
+		String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리
+		boardMasterVO.setUrl(temp.replace("Ajax", ""));
+		
+		Map<String, Object> noticeMap = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null);
+		
+		if(!noticeMap.get("resultCnt").equals("0")){
+			@SuppressWarnings("unchecked")
+			ArrayList<BoardVO> boardList= (ArrayList<BoardVO>)noticeMap.get("resultList") ; //nttcn 태그 삭제 처리
+			for( BoardVO tempBoardVO : boardList){
+				if("".equals(tempBoardVO.getNttCn().replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "").split("<")[0].equals(""))){
+					tempBoardVO.setNttCn  ( tempBoardVO.getNttCn().replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "")) ;
+				}else {
+					tempBoardVO.setNttCn( tempBoardVO.getNttCn().replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "").split("<")[0] ) ;
+				}
+			}
+			model.addAttribute("noticeList", noticeMap.get("resultList"));
+		}
+		
+		// 문자 카테고리 리스트 불러오기
+		List<CateCode> cateConfList = letterService.selectCateConfWithList("N");
+		model.addAttribute("cateCodeList", cateConfList);
+		
+		// 맞춤문자 카테고리 리스트 불러오기
+		List<CateCode> cateConfCustomList = letterService.selectCateConfWithList("C");
+		model.addAttribute("cateConfCustomList", cateConfCustomList);
+			
+		{
+			/**
+			 * 
+			 * 이벤트를 위한 결제내역 조회
+			 * 결제 내역이 없으면 첫결제 이벤트 팝업 호출 할 수 있도록 함.
+			 * 
+			 * */
+			String userId = user == null ? "" : EgovStringUtil.isNullToString(user.getId());
+			int payCnt = 0;
+			if(StringUtil.isNotEmpty(userId)) {
+				//결제내역 카운트 조회
+				payCnt = mjonPayService.selectMemerPayCount(userId);
+				
+			}
+			model.addAttribute("payCount", payCnt);
+			model.addAttribute("userId", userId);
+
+			//현재 진행중 이벤트 조회(최저가 문자발송 이벤트 진행중인지 조회 - like 검색으로 진행중인 이벤트를 1개만 불러온다.)
+			//일단 테스트로 게시글 제목으로 조회하도록 함.
+			String nttSj = "[첫결제 이벤트] 첫 결제 시, 누구나 조건 없이 인생 최저가!";		//제목 검색
+			BoardVO eventBoardVO = new BoardVO();
+			eventBoardVO.setBbsId("BBSMSTR_000000000731");
+			eventBoardVO.setNttSj(nttSj);
+			BoardVO resultEvent = mjonEventService.selectEventInfoByNttSj(eventBoardVO);
+			
+			model.addAttribute("resultEvent", resultEvent);
+			
+			String blineCode = "N";
+			if(StringUtil.isNotEmpty(userId)) {
+				// B선 전송사 사용여부
+				MberManageVO mberManageVO = new MberManageVO();
+				mberManageVO.setMberId(userId);
+				blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO);
+			}
+			model.addAttribute("blineCode", blineCode);
+		}
+		
+		return "web/main/mainPage";
+	}
+	
+	private String getClientIP(HttpServletRequest request) {
+    	String ip = "";
+    	
+    	try {
+            ip = request.getHeader("X-Forwarded-For");
+            //logger.info("> X-FORWARDED-FOR : " + ip);
+            //System.out.println("> X-FORWARDED-FOR : " + ip);
+
+            if (ip == null) {
+                ip = request.getHeader("Proxy-Client-IP");
+                //System.out.println("> Proxy-Client-IP : " + ip);
+            }
+            if (ip == null) {
+                ip = request.getHeader("WL-Proxy-Client-IP");
+                //System.out.println(">  WL-Proxy-Client-IP : " + ip);
+            }
+            if (ip == null) {
+                ip = request.getHeader("HTTP_CLIENT_IP");
+                //System.out.println("> HTTP_CLIENT_IP : " + ip);
+            }
+            if (ip == null) {
+                ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+                //System.out.println("> HTTP_X_FORWARDED_FOR : " + ip);
+            }
+            if (ip == null) {
+                ip = request.getRemoteAddr();
+                //System.out.println("> getRemoteAddr : "+ip);
+            }
+            //System.out.println("> Result : IP Address : "+ip);    		
+    	}catch(Exception ex)
+    	{
+    		ex.printStackTrace();
+    	}
+
+        return ip;
+    }
+	
+	private Boolean inspPagePath(HttpServletRequest request, String userIP, SiteManagerVO siteManagerVO) {
+//		if("IP".equals(siteManagerVO.getSysMaintenance())) {
+//			if(!StringUtils.isEmpty(siteManagerVO.getSysMaintenanceIp())) {
+//				if(!Arrays.stream(siteManagerVO.getSysMaintenanceIp().split(",")).anyMatch(userIP::equals)) {
+//					/* 점검중 */
+//					return false;
+//				}
+//			} else {
+//				/* 점검중 */
+//				return false;
+//			}
+//		}
+		if("PATH".equals(siteManagerVO.getSysMaintenance())) {
+			if("/web/main/mainPage.do".equals(request.getRequestURI())) {
+				/* 점검중 */
+				return false;
+			}
+		}
+		return true;
+	}
+	
+	private Boolean inspPageIp(HttpServletRequest request, String userIP, SiteManagerVO siteManagerVO) {
+		if("IP".equals(siteManagerVO.getSysMaintenance())) {
+			if(!StringUtils.isEmpty(siteManagerVO.getSysMaintenanceIp())) {
+				if(!Arrays.stream(siteManagerVO.getSysMaintenanceIp().split(",")).anyMatch(userIP::equals)) {
+					/* 점검중 */
+					return false;
+				}
+			} else {
+				/* 점검중 */
+				return false;
+			}
+		}
+//		if("PATH".equals(siteManagerVO.getSysMaintenance())) {
+//			if("/web/main/mainPage.do".equals(request.getRequestURI())) {
+//				/* 점검중 */
+//				return false;
+//			}
+//		}
+		return true;
+	}
 }
     
(No newline at end of file)
src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml
@@ -48,7 +48,9 @@
 			A.TERMS_YN              AS termsYn,
             A.TERMS_CN              AS termsCn,
             C.CODE_DC               AS sessionTimeCdText,
-            D.CODE_DC           	AS sessionTimeUserCdTxt
+            D.CODE_DC           	AS sessionTimeUserCdTxt,
+            A.SYS_MAINTENANCE		AS sysMaintenance,
+            A.SYS_MAINTENANCE_IP	AS sysMaintenanceIp
 		FROM SITEMANAGER A 
 		LEFT JOIN LETTNFILEDETAIL B ON A.FAVICON_FILE_ID = B.ATCH_FILE_ID
 		LEFT JOIN ( 
@@ -1358,5 +1360,15 @@
 			AND PG_STATUS = '1'
 		LIMIT 1
 	</select>
+	
+	<update id="siteManagerDAO.updateInspManage" parameterClass="siteManagerVO">
+            UPDATE sitemanager
+			SET    LAST_UPDUSR_ID       = #lastUpdusrId#
+			       ,LAST_UPDT_PNTTM      = now()
+			       ,SYS_MAINTENANCE      = #sysMaintenance#
+			       <isEqual property="sysMaintenance" compareValue="IP">
+				       	,SYS_MAINTENANCE_IP   = #sysMaintenanceIp#
+			       </isEqual>
+    </update>
         	    
 </sqlMap>
 
src/main/webapp/WEB-INF/jsp/sym/site/inspManage.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/sym/site/inspManage.jsp
@@ -0,0 +1,108 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ 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">
+	$(document).ready(function(){
+		disabledFn("<c:out value='${model.sysMaintenance}'/>");
+	});
+
+	function doUpdate() {
+		var data = new FormData(document.form);
+		var url = "/sym/site/updateInspManageAjax.do";
+		
+		if (!confirm('수정하시겠습니까?')) 
+			return;
+		
+		$.ajax({
+	        type: "POST",
+	        url: url,
+	        data: data,
+	        dataType:'json',
+	        async: false,
+	        processData: false,
+	        contentType: false,
+	        cache: false,
+	        success: function (returnData, status) {
+			console.log(returnData.result);
+			if(returnData.result ==  'SUCCESS'){
+				alert(returnData.msg);
+			}else{
+			    alert(returnData.msg);                                        
+			}
+		    },
+		    error: function (e) { alert("요청에 실패하였습니다."); console.log("ERROR : ", e); }
+		});
+	}
+	
+	function disabledFn(pram){
+		if(pram == 'IP'){
+			$('#ipTable').find('input').removeAttr('disabled')
+		}else{
+			$('#ipTable').find('input').attr('disabled','disabled')
+		}
+		
+	}
+	
+	</script>
+	<style>
+		.cf_box{border: 2px solid #f5f7fa; border-radius: 5px; padding: 20px; margin: 0 0 20px 0; line-height:1.3;}
+	</style>
+</head>
+<body>
+	<div class="contWrap">
+		<div class="pageTitle">
+			<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
+			<h2 class="titType1 c_222222 fwBold">점검중페이지관리</h2>
+			<p class="tType6 c_999999">점검중페이지관리 페이지 입니다.</p>
+		</div>
+		<div class="pageCont">
+			<div class=cf_box>
+<pre>
+*방식 설명*
+미사용 : 점검 중 페이지 미노출
+IP로제어 : 등록 IP를 제외하고 모든 페이지에서 '점검중' 레이어 노출
+PATH로제어 : '/web/main/mainPage.do' 메인페이지에 접근했을때만 점검중페이지로 이동
+</pre>
+			</div>	
+			<form name="form" id="form" method="post">
+			<div class="tableWrap">
+				<table class="tbType2">
+					<colgroup>
+						<col width="30%">
+						<col width="*">
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>점검중 페이지 방식</th>
+							<td>
+								<select name="sysMaintenance" id="sysMaintenance" onchange="disabledFn(this.value); return false;">
+									<option value="NONE" <c:if test="${model.sysMaintenance == 'NONE'}">selected</c:if> >미사용</option>
+									<option value="IP" <c:if test="${model.sysMaintenance == 'IP'}">selected</c:if> >IP로 제어</option>
+									<option value="PATH" <c:if test="${model.sysMaintenance == 'PATH'}">selected</c:if> >PATH로 제어</option>
+								</select>
+							</td>
+						</tr>
+						<tr id="ipTable">
+							<th>IP테이블(IP로 선택 시 제외할 IP ','를 구분자로 기입)</th>
+							<td>
+								<input type="text" id="sysMaintenanceIp" name="sysMaintenanceIp" value="${model.sysMaintenanceIp}"/>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+			</form>
+			<div class="btnWrap">
+				<input type="button" class="btnType1" value="수정" onclick="javascript:doUpdate(); return false;">
+			</div>
+		</div>
+	</div>
+</body>
+</html>(No newline at end of file)
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
@@ -738,6 +738,17 @@
 	}
 </script>
 	<div class="mask"></div>
+<c:if test="${inspYn == 'Y'}">
+	<style>
+		.mask_layer{position: fixed; background: white; width: 100%; height: 100%; z-index: 9999; text-align: center;}
+		.mask_layer .text_area{color: #000; position: relative; top: 50%; left: 50%; transform: translate(-50%, -50%);}
+	</style>
+	<div class="mask_layer">
+		<div class="text_area">
+			점검중임
+		</div>
+	</div>	
+</c:if>
 	<!-- 포인트 교환 팝업 -->
 	<form id="pointForm" name="pointForm" action="/web/member/pay/pointUseAjax.do" >
 		<input type="hidden" name="birthDate" value="000000" />
Add a comment
List