name 2023-08-08
Merge branch 'master' into wyh
@5cbbfb516974acbaa2a21ae1681fc9d2b84f09ea
src/main/java/itn/let/fax/user/web/FaxRestController.java
--- src/main/java/itn/let/fax/user/web/FaxRestController.java
+++ src/main/java/itn/let/fax/user/web/FaxRestController.java
@@ -198,7 +198,7 @@
 		
 	}
 	
-	
+
 	
 	
 }
 
src/main/java/itn/let/mjo/test/service/TestVO.java (added)
+++ src/main/java/itn/let/mjo/test/service/TestVO.java
@@ -0,0 +1,18 @@
+package itn.let.mjo.test.service;
+
+public class TestVO {
+
+	private String fileNm;
+
+	public String getFileNm() {
+		return fileNm;
+	}
+
+	public void setFileNm(String fileNm) {
+		this.fileNm = fileNm;
+	}
+	
+	
+	
+	
+}
src/main/java/itn/let/mjo/test/web/TestController.java
--- src/main/java/itn/let/mjo/test/web/TestController.java
+++ src/main/java/itn/let/mjo/test/web/TestController.java
@@ -1,7 +1,16 @@
 package itn.let.mjo.test.web;
 
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -13,25 +22,42 @@
 import java.util.Map;
 
 import javax.annotation.Resource;
+import javax.imageio.ImageIO;
+import javax.mail.internet.ContentDisposition;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.lang.StringUtils;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.rendering.ImageType;
+import org.apache.pdfbox.rendering.PDFRenderer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.env.SystemEnvironmentPropertySource;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import org.springframework.web.util.UriUtils;
 
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
 import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
@@ -82,6 +108,7 @@
 import itn.let.utl.user.service.CheckFileUtil;
 import itn.let.utl.user.service.CheckLoginUtil;
 import itn.let.utl.user.service.CheckNoServiceCommon;
+
 
 @Controller
 public class TestController {
@@ -1909,6 +1936,8 @@
         		//일괄변환에 의한 단문, 장문 별개로 전송을 했기 때문에 각각 전송 결과 건수를 합쳐준 후 결과를  modelAndView로 리턴해준다.
         		String returnMessage = "";
         		String returnStatus = "";
+        		String msgGroupIdListComma = "";
+        		String msgTypeListComma = "";
         		
         		//그림 결과 내용
         		if(!returnImgMap.isEmpty()) {
@@ -1925,6 +1954,7 @@
             			
             			returnMessage = returnImgMap.get("message");
             			returnStatus = returnImgMap.get("result");
+            			msgGroupIdListComma = returnImgMap.get("msgGroupId");
             			
         			}else {
             			returnMessage = returnImgMap.get("message");
@@ -1955,6 +1985,12 @@
             			
             			returnMessage = returnLongMap.get("message");
             			returnStatus = returnLongMap.get("result");
+            			msgGroupIdListComma = StringUtils.isNotEmpty(msgGroupIdListComma) 
+            											? msgGroupIdListComma+","+returnLongMap.get("msgGroupId") 
+            											: returnLongMap.get("msgGroupId");
+            			msgTypeListComma = StringUtils.isNotEmpty(msgTypeListComma) 
+            											? msgTypeListComma+","+"6" 
+            											: "6";
             			
         			}else {
             			returnMessage = returnLongMap.get("message");
@@ -1985,6 +2021,12 @@
             			
             			returnMessage = returnShortMap.get("message");
             			returnStatus = returnShortMap.get("result");
+            			msgGroupIdListComma = StringUtils.isNotEmpty(msgGroupIdListComma) 
+            												? msgGroupIdListComma+","+returnShortMap.get("msgGroupId") 
+            												: returnShortMap.get("msgGroupId");
+            			msgTypeListComma = StringUtils.isNotEmpty(msgTypeListComma) 
+															? msgTypeListComma+","+"4" 
+															: "4";
             			
             		}else {
             			returnMessage = returnShortMap.get("message");
@@ -2000,8 +2042,8 @@
         			
         		}
 
-        		modelAndView.addObject("msgType", mjonMsgVO.getMsgType());
-        		modelAndView.addObject("msgGroupId", mjonMsgVO.getMsgGroupId());
+        		modelAndView.addObject("msgType", msgTypeListComma);
+        		modelAndView.addObject("msgGroupId", msgGroupIdListComma);
         		modelAndView.addObject("message", returnMessage);
 				modelAndView.addObject("result", returnStatus);
 				modelAndView.addObject("resultSts", resultSts);
@@ -2545,7 +2587,7 @@
 	    		}
 	    		
 	    		System.out.println("=========================================================================");
-	    		System.out.println("+++++++++++++++++++++++++++++++++++++++++++ resultSts ::: " + resultSts); 
+	    		System.out.println(" 25xx +++++++++++++++++++++++++++++++++++++++++++ resultSts ::: " + resultSts); 
 	    		System.out.println("=========================================================================");
 	    		
 	    		try {
@@ -2645,6 +2687,8 @@
 		
 		returnMap.put("message", "문자 전송이 완료되었습니다.");
 		returnMap.put("result", "success");
+		returnMap.put("msgGroupId", mjonMsgVO.getMsgGroupId());
+		returnMap.put("resultSts", Integer.toString(resultSts));
 		returnMap.put("resultSts", Integer.toString(resultSts));
 		returnMap.put("resultBlockSts", Integer.toString(resultBlockSts));
 		return returnMap;
@@ -3038,9 +3082,198 @@
 
 	
 	
+
+	@RequestMapping(value= {"/web/user/login/fileTest.do"})
+	public void downloadAndSaveFile() throws Exception {
+		
+		String downloadUrl = "http://192.168.0.11:5000/converHWPtoPDF";
+		String filePath = "D:\\Development\\test_dev";
+		String fileNm = "저작권분쟁조정규칙(20220516)";
+//		String fileNm = "testFileName(20220516)";
+		String fileExt = ".pdf";
+		String cnvtfileExt = ".jpg";
+		
+		
+		
+	    byte[] fileData = fileSendAnddownloadFile(downloadUrl, filePath + File.separator + fileNm + ".hwp");
+//	    byte[] fileData = downloadFile(downloadUrl, fileNm);
+	    this.saveFile(fileData, filePath, fileNm+fileExt);
+	    this.pdfToJpg(filePath, fileNm, fileExt, cnvtfileExt);
+	}
+	
+	/** 
+	 * @methodName	: fileSendAnddownloadFile 
+	 * @author		: 이호영
+	 * @date		: 2023.08.04 
+	 * @description	: 파일을 보내서 PFD로 변환한 파일을 받는다
+	 * @param downloadUrl
+	 * @param filePathNm
+	 * @return
+	 * @throws IOException 
+	 */
+	public byte[] fileSendAnddownloadFile(String downloadUrl, String filePathNm) throws IOException {
+	    RestTemplate restTemplate = new RestTemplate();
+
+	    HttpHeaders headers = new HttpHeaders();
+	    headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+
+	    // Create a ByteArrayResource to wrap the file content without relying on the file system
+	    FileSystemResource fileResource = new FileSystemResource(filePathNm);
+
+	    // To ensure correct encoding for non-ASCII characters
+	    String encodedFilename = UriUtils.encode(fileResource.getFilename(), "UTF-8");
+
+	    // Create a new HttpEntity for file and use encoded filename
+	    MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
+	    body.add("file", new ByteArrayResource(Files.readAllBytes(fileResource.getFile().toPath())) {
+	        @Override
+	        public String getFilename() {
+	            return encodedFilename;
+	        }
+	    });
+
+
+	    
+	    HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<>(body, headers);
+
+	    ResponseEntity<byte[]> responseEntity = restTemplate.exchange(downloadUrl, HttpMethod.POST, entity, byte[].class);
+		
+		if (responseEntity.getStatusCodeValue() == 200) {
+			return responseEntity.getBody();
+		} else {
+			throw new RuntimeException("Failed to download file from " + downloadUrl);
+		}
+	}
+	
+	/** 
+	 * @methodName	: downloadFile 
+	 * @author		: 이호영
+	 * @date		: 2023.08.04 
+	 * @description	: 서버에 파일을 요청해서 받는 형식
+	 * @param downloadUrl
+	 * @param fileNm
+	 * @return  
+	public byte[] downloadFile(String downloadUrl, String fileNm) {
+		RestTemplate restTemplate = new RestTemplate();
+		
+		
+		HttpHeaders headers = new HttpHeaders();
+		headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+		
+		MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
+		body.add("fileNm", fileNm);
+		HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(body, headers);
+		
+		
+		ResponseEntity<byte[]> responseEntity = restTemplate.exchange(downloadUrl, HttpMethod.POST, entity, byte[].class);
+		
+//		System.out.println("responseEntity :: "+ responseEntity);
+		if (responseEntity.getStatusCodeValue() == 200) {
+			return responseEntity.getBody();
+		} else {
+			throw new RuntimeException("Failed to download file from " + downloadUrl);
+		}
+	}
+	 */
 	
 	
+	/** 
+	 * @methodName	: saveFile 
+	 * @author		: 이호영
+	 * @date		: 2023.08.04 
+	 * @description	: 파일 저장 
+	 * @param fileData
+	 * @param filePath
+	 * @param fileNm 
+	 */
+	public void saveFile(byte[] fileData, String filePath, String fileNm) {
+	    Path path = Paths.get(filePath, fileNm);
+	    
+	    try {
+	        Files.write(path, fileData);
+	    } catch (IOException e) {
+	        throw new RuntimeException("Failed to save file to " + filePath, e);
+	    }
+	}
 	
 	
+	/** 
+	 * @methodName	: pdfToJpg 
+	 * @author		: 이호영
+	 * @date		: 2023.08.04 
+	 * @description	: 저장한 파일을 불러와서 파일명의 폴더를 생성하여 jpg로 저장
+	 * @param filePath
+	 * @param fileNm
+	 * @param oriFileExt
+	 * @param cnvtfileExt
+	 * @throws Exception 
+	 */
+	public void pdfToJpg(String filePath, String fileNm, String oriFileExt, String cnvtfileExt) throws Exception {
+
+		File file = new File(filePath + File.separator + fileNm + oriFileExt);
+		PDDocument document = PDDocument.load(file);
+		try {
+			
+			int pageCount = document.getNumberOfPages();
+			PDFRenderer pdfRenderer = new PDFRenderer(document);
+			
+			System.out.println("pageCount : "+ pageCount);
+			
+			String saveFilePath = this.filePathChk(filePath + File.separator +fileNm); 
+			
+			if(StringUtils.isNotEmpty(saveFilePath))
+			{
+				
+				for (int i = 0; i < pageCount; i++) {
+					
+					BufferedImage imageObj = pdfRenderer.renderImageWithDPI(i, 100, ImageType.RGB);
+					File outputfile = new File(saveFilePath + File.separator + fileNm + i + cnvtfileExt);
+					ImageIO.write(imageObj, "jpg", outputfile);
+				}
+			}
+			
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			// TODO: handle exception
+		}finally {
+			if (document != null) {
+			    document.close();
+			}
+		}
+		
+	}
+
+	/** 
+	 * @methodName	: filePathChk 
+	 * @author		: 이호영
+	 * @date		: 2023.08.04 
+	 * @description	: jpg 파일 저장할 디렉토리 생성
+	 * @param filePath
+	 * @return 
+	 */
+	private String filePathChk(String filePath) {
+		// TODO Auto-generated method stub
+        String directoryPath = filePath;
+
+        Path path = Paths.get(directoryPath);
+        
+        if (!Files.exists(path)) {
+            try {
+                
+                Files.createDirectories(path);
+                System.out.println("Directory created");
+        		return directoryPath;
+            } catch (IOException e) {
+                throw new RuntimeException("Failed to create directory!", e);
+            }
+        } else {
+            System.out.println("Directory already exists");
+        }
+		
+		return null;
+		
+	}
+	
 	
 }
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
@@ -34,6 +34,9 @@
 	// 회원 등급제 대상여부 정보(사용자화면용)
 	public MberGrdVO selectMberGrdInfo(String mberId) throws Exception;
 	
+	// 회원 등급 예외 정보
+	public MberGrdVO selectMberEtcInfo(String mberId) throws Exception;
+	
 	// 회원별 등급 누적결제액 상세
 	public MberGrdVO selectMberGrdAmtDetail(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
@@ -48,6 +48,9 @@
 	private String grdPeriod;		// 회원등급제 누적결제 계산기간
 	private String tempYn;
 	private String moid;			// 결제번호
+	private String isSalePrice;		// 협의회원
+	private String blineCode;		// B선회원
+	private String spamYn;			// 스팸회원
 	
 	// 검색필터
 	private String searchGrdStatus;
@@ -287,5 +290,23 @@
 	}
 	public void setSearchGrdStatus(String searchGrdStatus) {
 		this.searchGrdStatus = searchGrdStatus;
+	}
+	public String getIsSalePrice() {
+		return isSalePrice;
+	}
+	public void setIsSalePrice(String isSalePrice) {
+		this.isSalePrice = isSalePrice;
+	}
+	public String getBlineCode() {
+		return blineCode;
+	}
+	public void setBlineCode(String blineCode) {
+		this.blineCode = blineCode;
+	}
+	public String getSpamYn() {
+		return spamYn;
+	}
+	public void setSpamYn(String spamYn) {
+		this.spamYn = spamYn;
 	}	
 }
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
@@ -53,6 +53,11 @@
 		return (MberGrdVO) select("mberGrdDAO.selectMberGrdInfo", mberId);
 	}
 	
+	// 회원 등급 예외 정보
+	public MberGrdVO selectMberEtcInfo(String mberId) throws Exception{
+		return (MberGrdVO) select("mberGrdDAO.selectMberEtcInfo", mberId);
+	}
+	
 	// 회원별 등급 누적결제액 상세
 	public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception{
 		return (MberGrdVO) select("mberGrdDAO.selectMberGrdAmtDetail", 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
@@ -130,6 +130,15 @@
 		return mberGrdDAO.selectMberGrdInfo(mberId);
 	}	
 	
+	// 회원 등급 예외 정보
+	@Override
+	public MberGrdVO selectMberEtcInfo(String mberId) throws Exception {
+		// 공백제거
+		mberId = mberId.trim();
+		
+		return mberGrdDAO.selectMberEtcInfo(mberId);
+	}	
+
 	// 회원별 등급 누적결제액 상세
 	@Override
 	public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) 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
@@ -43,7 +43,7 @@
     		HttpServletRequest request,
     		ModelMap model) throws Exception{
     	
-    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+    	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
     	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
     	mberGrdVO.setMberId(userId);
     	
@@ -78,7 +78,7 @@
     	return "/web/grd/MberGrdHistListAjax";
     }	
 	
-	// 등급제 시행 ON/OFF 체크
+	// 등급제 시행 ON/OFF 체크(로그인 상태에서만 조회)
 	@RequestMapping(value = "/web/grd/mberSettDetailAjax.do")
 	public ModelAndView mberSettingDetailAjax(
 			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
@@ -90,11 +90,67 @@
 		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;			
-			}
+        	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+        	if (null != loginVO) {
+	        	MberGrdVO mberGrdVO1 = new MberGrdVO();
+				mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+				if (mberGrdVO1.getGrdNoti().equals("Y")) {
+	       			isSuccess = true;			
+				}
+        	}
+		}
+		catch(Exception e) {
+			msg = e.getMessage();
+		}		
+
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		
+		return modelAndView;
+	}		
+	
+	// 등급제 시행 ON/OFF 체크(비로그인 상태에서 조회)
+	@RequestMapping(value = "/web/grd/mberSettDetailByNotLoginAjax.do")
+	public ModelAndView mberSettDetailByNotLoginAjax(
+			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
+
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+   	
+		boolean isSuccess = false;
+		String msg = "";
+		MberGrdVO rtnMberGrdVO = new MberGrdVO();
+		
+        try{
+        	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+        	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+        	if (null != loginVO) {        
+        		mberGrdVO.setMberId(userId);
+        		
+        		// Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)
+	    		MberGrdVO mberGrdVO1 = new MberGrdVO();
+	    		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+	    		if (mberGrdVO1.getGrdNoti().equals("Y")) {
+		        	// Step 2. 회원별 이벤트 진행여부
+		        	int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId());
+		        	if (mberEventPrgCnt == 0) {
+		           		rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
+		           		if (null != rtnMberGrdVO) {
+		           			isSuccess = true;
+		           		}
+		           		else {
+		        			msg = "종료";       			
+		           		}
+		        	}	    			
+	    		}        		
+        	}
+        	else {
+	        	MberGrdVO mberGrdVO1 = new MberGrdVO();
+				mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+				if (mberGrdVO1.getGrdNoti().equals("Y")) {
+	       			isSuccess = true;			
+				}
+        	}
 		}
 		catch(Exception e) {
 			msg = e.getMessage();
@@ -115,7 +171,7 @@
 		modelAndView.setViewName("jsonView");
 
     	// 로그인VO에서  사용자 정보 가져오기
-    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
     	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
 
     	
@@ -127,17 +183,22 @@
         	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 = "종료";       			
-	           		}
-	        	}
+	    		// Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)
+	    		MberGrdVO mberGrdVO1 = new MberGrdVO();
+	    		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+	    		if (mberGrdVO1.getGrdNoti().equals("Y")) {
+		        	// Step 2. 회원별 이벤트 진행여부
+		        	int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId());
+		        	if (mberEventPrgCnt == 0) {
+		           		rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
+		           		if (null != rtnMberGrdVO) {
+		           			isSuccess = true;
+		           		}
+		           		else {
+		        			msg = "종료";       			
+		           		}
+		        	}	    			
+	    		}
         	}
 		}
 		catch(Exception e) {
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
@@ -4,6 +4,7 @@
 
 import javax.annotation.Resource;
 
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.ModelAttribute;
@@ -182,7 +183,7 @@
     		// Step 1. 등급제 시행 ON 일경우
     		MberGrdVO mberGrdVO1 = new MberGrdVO();
     		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
-    		if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
+    		if (mberGrdVO1.getGrdNoti().equals("Y")) {
     			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
     			
            		// 회원별 등급 초기화
@@ -312,7 +313,7 @@
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.setViewName("jsonView");
 
-		boolean isSuccess = true;
+		boolean isSuccess = false;
 		String msg = "";
    		MberGrdVO rtnMberGrdVO = new MberGrdVO();
    		
@@ -320,25 +321,83 @@
     	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
     	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
     	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID
-
+	
         try{
-       		rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
-       		if (null != rtnMberGrdVO) {
-       			// 등급제 적용
-
-       		}
-       		else {
-    			isSuccess = false;
-    			msg = "종료";       			
-       		}
+        	if (StringUtils.isNotEmpty(mberGrdVO.getMberId())) {
+	    		// Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)
+	    		MberGrdVO mberGrdVO1 = new MberGrdVO();
+	    		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
+	    		if (mberGrdVO1.getGrdNoti().equals("Y")) {
+		        	// Step 2. 회원별 이벤트 진행여부
+		        	int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId());
+		        	if (mberEventPrgCnt == 0) {
+		           		rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
+		           		if (null != rtnMberGrdVO) {
+		           			isSuccess = true;
+		           		}
+		           		else {
+		        			msg = "종료";       			
+		           		}
+		        	}	    			
+	    		}
+        	}
 		}
 		catch(Exception e) {
-			isSuccess = false;
 			msg = e.getMessage();
 		}		
 
         modelAndView.addObject("rtnMberGrdVO", rtnMberGrdVO);
 		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		
+		return modelAndView;
+	}
+	
+	// 회원 등급 예외 정보
+	@RequestMapping(value = "/sym/grd/mberGrdEtcChkAjax.do")
+	public ModelAndView mberGrdEtcChkAjax(
+			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
+
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+
+		boolean isSuccess = false;
+		boolean isEvent = false;
+		String msg = "";
+   		MberGrdVO rtnMberGrdVO = new MberGrdVO();
+   		
+    	// 로그인VO에서  사용자 정보 가져오기
+    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+    	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
+    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID
+	
+        try{
+        	if (StringUtils.isNotEmpty(mberGrdVO.getMberId())) {
+
+	        	// Step 2. 회원별 이벤트 진행여부
+	        	int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId());
+	        	if (mberEventPrgCnt == 0) {
+	           		rtnMberGrdVO = mberGrdService.selectMberEtcInfo(mberGrdVO.getMberId());
+	           		if (null != rtnMberGrdVO) {
+	           			isSuccess = true;
+	           		}
+	           		else {
+	        			msg = "종료";       			
+	           		}
+	        	}
+	        	else {
+	        		isEvent = true;
+	        	}
+
+        	}
+		}
+		catch(Exception e) {
+			msg = e.getMessage();
+		}		
+
+        modelAndView.addObject("rtnMberGrdVO", rtnMberGrdVO);
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("isEvent", isEvent);
 		modelAndView.addObject("msg", msg);
 		
 		return modelAndView;
@@ -433,7 +492,7 @@
     		// Step 1. 등급제 시행 ON 일경우
     		MberGrdVO mberGrdVO1 = new MberGrdVO();
     		mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
-    		if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
+    		if (mberGrdVO1.getGrdNoti().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
@@ -303,6 +303,41 @@
 	]]>
 	</select>
 	
+	<!-- 회원 등급 예외 정보 -->
+	<select id="mberGrdDAO.selectMberEtcInfo" parameterClass="String" resultClass="mberGrdVO">
+	<![CDATA[
+		SELECT
+			M.mberId
+			, M.isSalePrice
+			, M.blineCode
+			, M.spamYn
+		FROM (
+			SELECT 
+				A.MBER_ID						AS mberId
+				, 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 
+			JOIN MJ_MBER_SETTING B
+			WHERE 1=1
+				AND A.MBER_STTUS = 'Y'
+				AND A.MBER_ID = #mberId#
+		) M
+		LIMIT 1	
+	]]>
+	</select>	
+	
 	<!-- 회원별 등급 누적결제액 상세 -->
 	<select id="mberGrdDAO.selectMberGrdAmtDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO">
 	<![CDATA[
@@ -887,6 +922,7 @@
 		AND A.MBER_ID = #mberId#
 		AND IFNULL(TRIM(A.MOID), '') != ''
 		AND A.TOT_AMT > 0
+		AND A.GRD_DATE >= (SELECT S.GRD_DATE FROM MJ_MBER_GRD_INFO S WHERE S.MBER_ID = #mberId#)		
 		ORDER BY A.REG_DATE DESC
 		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
 	</select>
src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
--- src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
+++ src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
@@ -169,8 +169,78 @@
 		$(this).val(value);
 	});
  
+	//등급제 적용 테스트
+	getMberGrdChk();
 });
 
+
+//등급제 적용 테스트
+function getMberGrdChk() {
+	$(".grdSetNm").html("");											
+	
+	var mberId = document.mberManageVO.mberSearchId.value;
+	
+	$.ajax({
+        type: "POST",
+        url: "/sym/grd/mberGrdChkAjax.do",
+        data: {"mberId" : mberId},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				$(".grdSetNm").html(data.rtnMberGrdVO.grdSetNm);
+			} 
+			else {
+				//회원 등급 예외 정보
+				getMberGrdEtc();
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}	
+
+//회원 등급 예외 정보
+function getMberGrdEtc() {
+	$(".grdSetNm").html("");											
+	
+	var mberId = document.mberManageVO.mberSearchId.value;
+	
+	$.ajax({
+        type: "POST",
+        url: "/sym/grd/mberGrdEtcChkAjax.do",
+        data: {"mberId" : mberId},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				var gradeNm = "";
+				if (data.isEvent) {
+					gradeNm += "(할인이벤트회원) ";
+				}
+				else if (data.rtnMberGrdVO.isSalePrice == "Y") {
+					gradeNm += "(단가협의회원) ";
+				}
+				else if (data.rtnMberGrdVO.blineCode == "Y") {
+					gradeNm += "(B선회원) ";
+				}
+				else if (data.rtnMberGrdVO.spamYn == "Y") {
+					gradeNm += "(스팸회원) ";
+				}
+				
+				$(".grdSetNm").html(gradeNm);
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}	
 
 function fnCheckAll(){
     var checkField = document.delayForm.checkDelayField;
@@ -480,7 +550,7 @@
 	// 발송 금액 변경
 	if (obj == "price") {
 		//등급별 단가 정보
-		//getMberGrdSettingList();		
+		getMberGrdSettingList();		
 	}
 }
 
@@ -3064,9 +3134,8 @@
 													<option value="N" <c:if test="${mberManageVO.spamYn == 'N'}">selected="selected"</c:if>>오프(Off)</option>
 												</select>
 											</td>
-											<th></th>
-											<td>
-											</td>											
+											<th>등급</th>
+											<td><span class="grdSetNm"></span></td>											
 										</tr>										
 										<tr>
 											<th>전화번호<button type="button" onclick="layerPopOpen('sms');">SMS</button></th>
@@ -3461,9 +3530,8 @@
 													<option value="N" <c:if test="${mberManageVO.spamYn == 'N'}">selected="selected"</c:if>>오프(Off)</option>
 												</select>
 											</td>
-											<th></th>
-											<td>
-											</td>											
+											<th>등급</th>
+											<td><span class="grdSetNm"></span></td>											
 										</tr>										
 										<tr>
 											<th>전화번호<button type="button" onclick="layerPopOpen('sms');">SMS</button></th>
@@ -5472,12 +5540,10 @@
 						<col style="width:auto;">
 					</colgroup>
 					<tbody>
-						<!-- 
 						<tr>
 							<th id="mberGrdSettingTitle">등급단가 적용</th>
 							<td><div id="mberGrdSettingCombo"></div></td>
 						</tr>
-						 -->					
 						<tr>
 							<th>단문 금액</th>
 							<td><input type="text" name="shortPrice" id="shortPrice" value="<c:out value='${shortPrice}'/>"/></td>
src/main/webapp/WEB-INF/jsp/uss/ion/apikey/UserAPIKEYModify.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/apikey/UserAPIKEYModify.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/apikey/UserAPIKEYModify.jsp
@@ -649,8 +649,10 @@
 				</c:if>
 				
 				<c:if test="${apiKeyVO.useYn eq 'Y'}">
-					<input type="button" class="btnType2 bg_888888" value="API KEY 미사용 처리" id="btn_fn_delete"
+					<input type="button" class="btnType2 bg_888888" value="API 미사용 처리" id="btn_fn_delete"
 					onclick="fn_delete('N'); return false;">
+					<input type="button" class="btnType2 bg_888888" value="API KEY 중지  처리" id="btn_fn_delete"
+					onclick="fn_delete('W'); return false;">
 					<input type="button" class="btnType2 bg_888888" value="API 승인요청상태로"  id="btn_fn_delete"
 					onclick="fn_delete('A'); return false;">									
 				</c:if>
@@ -667,6 +669,10 @@
 					onclick="fn_delete('Y'); return false;">				
 				</c:if>
 				
+				<c:if test="${apiKeyVO.useYn eq 'W'}">
+					<input type="button" class="btnType2 bg_888888" value="API KEY 사용 처리"  id="btn_fn_delete"
+					onclick="fn_delete('Y'); return false;">									
+				</c:if>	
 					<input type="button" class="btnType2 bg_888888" value="API KEY 사용자 삭제(실제)"  id="btn_fn_delete"
 					onclick="fn_delete_real(); return false;">
 
src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp
--- src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp
+++ src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp
@@ -322,7 +322,7 @@
 												<button type="button" class="btnType btnType14" onclick="fn_delete('${apiVO.accessNo}','A'); return false;">재신청</button>
 											</td>             
 										</c:when>
-										<c:when test="${apiVO.useYn eq 'Y' or (apiVO.useYn eq 'N' and apiVO.accessKey ne '')}"><!-- API 사용 중 -->
+										<c:when test="${apiVO.useYn eq 'Y' or (apiVO.useYn eq 'N' and apiVO.accessKey ne '') or apiVO.useYn eq 'W' }"><!-- API 사용 중 -->
 											<td>${apiVO.frstRegistPnttm}</td>
 											<td>${apiVO.lastUpdtPnttm}</td>
 											<td>승인</td>
@@ -366,7 +366,7 @@
 								<tbody>
 									<tr>
 										<c:choose>
-											<c:when test="${apiVO.useYn eq 'Y'}">
+											<c:when test="${apiVO.useYn eq 'Y' }">
 												<td>
 													${apiVO.lastUpdtPnttm}
 												</td>
@@ -377,11 +377,11 @@
 													사용
 												</td>
 												<td>
-													<button type="button" class="btnType btnType23" onclick="fn_delete('${apiVO.accessNo}','N'); return false;">정지</button>
+													<button type="button" class="btnType btnType23" onclick="fn_delete('${apiVO.accessNo}','W'); return false;">정지</button>
 													<button type="button" class="btnType btnType14" onclick="fn_update_apikey('14'); return false;">재발급</button>
 												</td>
 											</c:when>
-											<%-- <c:when test="${apiVO.useYn eq 'N'}">
+											<c:when test="${apiVO.useYn eq 'W' }">
 												<td>
 													${apiVO.lastUpdtPnttm}
 												</td>
@@ -392,10 +392,9 @@
 													미사용
 												</td>
 												<td>
-													<button type="button" class="btnType btnType23" onclick="fn_delete('${apiVO.accessNo}','Y'); return false;">사용처리</button>
-													<button type="button" class="btnType btnType14" onclick="fn_update_apikey('${apiVO.accessNo}'); return false;">재발급</button>
+													<button type="button" class="btnType btnType14" onclick="fn_delete('${apiVO.accessNo}','Y'); return false;">사용</button>
 												</td>
-											</c:when> --%>
+											</c:when>
 											<c:otherwise>
 												<td colspan="4">API KEY 발급 내역이 없습니다.</td>
 											</c:otherwise>
@@ -427,7 +426,7 @@
 								</thead>
 								<tbody>
 										<c:choose>
-											<c:when test="${apiVO.useYn eq 'Y' or apiVO.useYn eq 'N'}">
+											<c:when test="${apiVO.useYn eq 'Y' or apiVO.useYn eq 'N' or apiVO.useYn eq 'W'}">
 												<c:forEach var="result" items="${apiCallInfoVOList}" varStatus="status">
 													<tr>
 														<td>${result.frstRegistPnttm}</td>
@@ -461,8 +460,9 @@
 <!-- 		                        <p class="admin_info">* IP는 10개 까지만 등록 가능합니다.</p> -->
 	                        </c:otherwise>
                         </c:choose>
-                        <p class="admin_info">* 대역 등록을 원하실 경우 상위 IP만 작성하시면 됩니다. ex&#65289; 92.168.255.0 ~ 192.168.255.255 대역을 등록할 경우 192.168. 255. 입력</p>
-                        <p class="admin_info">* IP는 최대 10개까지 등록 가능합니다. 단, IP 대역은 1개의 IP로 계산합니다.<c:out value="${apiCallInfoVOListSize }" /></p>              
+<!--                         <p class="admin_info">* 대역 등록을 원하실 경우 상위 IP만 작성하시면 됩니다. ex&#65289; 192.168.255.0 ~ 192.168.255.255 대역을 등록할 경우 192.168. 255. 입력</p> -->
+<!--                         <p class="admin_info">* 대역 등록을 원하실 경우 상위 IP만 작성하시면 됩니다. ex&#65289; 192.168.255.0 입력</p> -->
+                        <p class="admin_info">* IP는 최대 10개까지 등록 가능합니다. 단, IP 대역은 1개의 IP로 계산합니다.</p>              
                         <!--//사용 승인 될 경우에만 노출-->
 					</div>
 					<!--// API 사용 IP 관리 : IP등록 전-->
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
@@ -101,7 +101,71 @@
 	<c:if test="${!loginPage}">
 		getid();
 	</c:if>	
+	
+	if(!${empty LoginVO}){
+		//등급제 대상 여부(헤더)
+		getMberGrdChk_Header();
+	}
+	
+	var reqURL = "${pageContext.request.requestURL}";
+	var mainURL = "web/main/mainPage.do";
+	if (reqURL.lastIndexOf(mainURL) > -1) {
+		//등급제 시행 ON/OFF 체크(비로그인)
+		getMberSettingDetailByNotLogin();		
+	}
+	else {
+		// 문자(등급별 요금 안내)
+		$("#priceTopBanner").hide();		
+	}
+	
 });	
+
+//등급제 시행 ON/OFF 체크(비로그인)
+function getMberSettingDetailByNotLogin() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberSettDetailByNotLoginAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 문자(등급별 요금 안내)
+				$("#priceTopBanner").show();
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}	
+
+//등급제 대상 여부
+function getMberGrdChk_Header() {
+	$.ajax({
+        type: "POST",
+        url: "/web/grd/mberGrdChkAjax.do",
+        data: {},
+        dataType:'json',
+        async: false,
+        success: function (data) {
+			if (data.isSuccess) {
+				// 등급제 누적결제액 세부내역
+				var levelIcon = "/publish/images/level/level_icon/" + data.rtnMberGrdVO.grdSetIcon + "_icon.png";
+				$("#commonHeaderGradeIcon").attr("src", levelIcon);
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });				
+}
 
 //남은 시간 계산해주기(화면 새로고침해도 시간은 계속 유지됨)
 function getTimer(date) { 
@@ -1057,12 +1121,10 @@
     <!-- 요금안내 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">
+			<img class="price_top_banner" id="priceTopBanner" style="display:none;" 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>    
     
@@ -1534,7 +1596,7 @@
 		                <div class="login_left">
 		                    <div class="login_info">
 		                    	<input type="hidden" id="loginId" name="loginId" value="${LoginVO.id}">
-								<i></i>
+								<i><img src="/publish/images/mypageIcon2.png" id="commonHeaderGradeIcon" /></i>
 								<div class="login2_name" onclick="location.href='/web/user/mberInfoChange.do'" style="cursor:pointer;">
 		                        	<p><c:out value="${LoginVO.name}"/></p>
 		                        	<c:choose>
src/main/webapp/WEB-INF/jsp/web/grd/MberGrdHistListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/grd/MberGrdHistListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/grd/MberGrdHistListAjax.jsp
@@ -92,7 +92,7 @@
 							</c:when>
 							<c:otherwise>
 								<tr>
-									<td colspan="5">
+									<td colspan="5" style="text-align: center;">
 										검색 결과가 없습니다.
 									</td>
 								</tr>
src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
@@ -297,6 +297,18 @@
     $("#txtFile").val("");
 } 
 
+//발송금액 단가표시
+function SetPriceWrapOpen() {
+	var loginVO = '${LoginVO}';
+	//로그인 체크
+	if(loginVO == "" || loginVO == null){
+	}
+	else {
+		// 발송금액 가격안내
+		$("#myPriceWrap").show();		
+	}
+}
+
 //등급제 시행 ON/OFF 체크
 function getMberSettingDetail() {
 	$.ajax({
@@ -307,7 +319,7 @@
         async: false,
         success: function (data) {
 			if (data.isSuccess) {
-				// 발송금액 아래 등급별 가격안내 추가
+				// 발송금액 가격안내
 				$("#myPriceWrap").show();
 			} 
 			else {
@@ -321,8 +333,8 @@
 }	
 
 $(document).ready(function (){
-	//등급제 시행 ON/OFF 체크
-	getMberSettingDetail();
+	// 발송금액 단가표시
+	SetPriceWrapOpen();	
 	
 	//미리보기 이미지 영역 숨김 처리
 	$('.preiew_img').hide();
src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp
@@ -442,6 +442,18 @@
     $("#txtFile").val("");
 } 
 
+//발송금액 단가표시
+function SetPriceWrapOpen() {
+	var loginVO = '${LoginVO}';
+	//로그인 체크
+	if(loginVO == "" || loginVO == null){
+	}
+	else {
+		// 발송금액 가격안내
+		$("#myPriceWrap").show();		
+	}
+}
+
 //등급제 시행 ON/OFF 체크
 function getMberSettingDetail() {
 	$.ajax({
@@ -452,7 +464,7 @@
         async: false,
         success: function (data) {
 			if (data.isSuccess) {
-				// 발송금액 아래 등급별 가격안내 추가
+				// 발송금액 가격안내
 				$("#myPriceWrap").show();
 			} 
 			else {
@@ -466,8 +478,8 @@
 }	
 
 $(document).ready(function (){
-	//등급제 시행 ON/OFF 체크
-	getMberSettingDetail();
+	// 발송금액 단가표시
+	SetPriceWrapOpen();	
 	
 	$('.preiew_img').hide();
 	$('.prePhoto').hide();
src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
@@ -449,6 +449,18 @@
     $("#txtFile").val("");
 } 
 
+// 발송금액 단가표시
+function SetPriceWrapOpen() {
+	var loginVO = '${LoginVO}';
+	//로그인 체크
+	if(loginVO == "" || loginVO == null){
+	}
+	else {
+		// 발송금액 가격안내
+		$("#myPriceWrap").show();		
+	}
+}
+
 //등급제 시행 ON/OFF 체크
 function getMberSettingDetail() {
 	$.ajax({
@@ -459,7 +471,7 @@
         async: false,
         success: function (data) {
 			if (data.isSuccess) {
-				// 발송금액 아래 등급별 가격안내 추가
+				// 발송금액 가격안내
 				$("#myPriceWrap").show();
 			} 
 			else {
@@ -473,8 +485,8 @@
 }	
 
 $(document).ready(function (){
-	//등급제 시행 ON/OFF 체크
-	getMberSettingDetail();
+	// 발송금액 단가표시
+	SetPriceWrapOpen();	
 			
 	// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
 	var blineCodeYn = $("#blineCode").val();
src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp
@@ -593,6 +593,18 @@
     $("#txtFile").val("");
 } 
 
+//발송금액 단가표시
+function SetPriceWrapOpen() {
+	var loginVO = '${LoginVO}';
+	//로그인 체크
+	if(loginVO == "" || loginVO == null){
+	}
+	else {
+		// 발송금액 가격안내
+		$("#myPriceWrap").show();		
+	}
+}
+
 //등급제 시행 ON/OFF 체크
 function getMberSettingDetail() {
 	$.ajax({
@@ -603,7 +615,7 @@
         async: false,
         success: function (data) {
 			if (data.isSuccess) {
-				// 발송금액 아래 등급별 가격안내 추가
+				// 발송금액 가격안내
 				$("#myPriceWrap").show();
 			} 
 			else {
@@ -617,8 +629,8 @@
 }	
 
 $(document).ready(function (){
-	//등급제 시행 ON/OFF 체크
-	getMberSettingDetail();
+	// 발송금액 단가표시
+	SetPriceWrapOpen();	
 	
 	// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
 	var blineCodeYn = $("#blineCode").val();
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,8 +65,8 @@
 		$("#btnEstimate").trigger("click");
 	}
 	
-	//등급제 시행 ON/OFF 체크
-	getMberSettingDetail();
+	//등급제 시행 ON/OFF 체크(비로그인)
+	getMberSettingDetailByNotLogin();
 		
 	// 등급제 대상 여부
 	getMberGrdChk();
@@ -341,11 +341,11 @@
 }
 
 
-//등급제 시행 ON/OFF 체크
-function getMberSettingDetail() {
+//등급제 시행 ON/OFF 체크(비로그인)
+function getMberSettingDetailByNotLogin() {
 	$.ajax({
         type: "POST",
-        url: "/web/grd/mberSettDetailAjax.do",
+        url: "/web/grd/mberSettDetailByNotLoginAjax.do",
         data: {},
         dataType:'json',
         async: false,
src/main/webapp/WEB-INF/jsp/web/pay/PayView.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayView.jsp
@@ -25,9 +25,6 @@
 		$("#btnDdedicatedAccount").trigger("click");
 	}
 	
-	//등급제 시행 ON/OFF 체크
-	getMberSettingDetail();
-		
 	// 등급제 대상 여부
 	getMberGrdChk();		
 });
@@ -432,29 +429,6 @@
 	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({
@@ -471,7 +445,10 @@
 				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 + " ~ 현재)");				
+				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");
+				
+				// 문자(등급별 요금 안내)
+				$("#mberGrdSettingArea").show();				
 			} 
 			else {
 				//alert("Msg : " + data.msg);
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,9 +29,6 @@
 		$("#btnDdedicatedAccount").trigger("click");
 	}
 	
-	//등급제 시행 ON/OFF 체크
-	getMberSettingDetail();
-		
 	// 등급제 대상 여부
 	getMberGrdChk();	
 });
@@ -618,30 +615,6 @@
 	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({
@@ -658,7 +631,10 @@
 				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 + " ~ 현재)");				
+				$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");
+				
+				// 문자(등급별 요금 안내)
+				$("#mberGrdSettingArea").show();				
 			} 
 			else {
 				//alert("Msg : " + data.msg);
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
@@ -301,7 +301,7 @@
 					</c:when>
 					<c:otherwise>
 					<tr>
-						<td colspan="12">발송 내역이 없습니다.</td>
+						<td colspan="13">발송 내역이 없습니다.</td>
 					</tr>
 					</c:otherwise>
 				</c:choose>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp
@@ -240,7 +240,7 @@
 					</c:when>
 					<c:otherwise>
 					<tr>
-						<td colspan="10">발송 내역이 없습니다.</td>
+						<td colspan="11">발송 내역이 없습니다.</td>
 					</tr>
 					</c:otherwise>
 				</c:choose>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp
@@ -227,7 +227,7 @@
 					</c:when>
 					<c:otherwise>
 					<tr>
-						<td colspan="9">발송 내역이 없습니다.</td>
+						<td colspan="10">발송 내역이 없습니다.</td>
 					</tr>
 					</c:otherwise>
 				</c:choose>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
@@ -244,7 +244,7 @@
 					</c:when>
 					<c:otherwise>
 					<tr>
-						<td colspan="9">발송 내역이 없습니다.</td>
+						<td colspan="10">발송 내역이 없습니다.</td>
 					</tr>
 					</c:otherwise>
 				</c:choose>
src/main/webapp/sample_mjon/jsp_example_send_msg_r1.jsp
--- src/main/webapp/sample_mjon/jsp_example_send_msg_r1.jsp
+++ src/main/webapp/sample_mjon/jsp_example_send_msg_r1.jsp
@@ -25,7 +25,7 @@
 		//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용
 		//실제서비스용
 		final String mberId		=	"dudgusw";	//문자온 로그인 아이디 
-		final String apiKey		=	"769089bdd0363e0d0b1d20761a8d013bd";		//발급받은 api ke
+		final String apiKey		=	"0096519c62100b9eea77c040a6045c";		//발급받은 api ke
 		
 		
 		//테스트용
src/main/webapp/sample_mjon/jsp_example_send_msgs_r1.jsp
--- src/main/webapp/sample_mjon/jsp_example_send_msgs_r1.jsp
+++ src/main/webapp/sample_mjon/jsp_example_send_msgs_r1.jsp
@@ -25,7 +25,7 @@
 		//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용
 		//실제서비스용
 		final String mberId		=	"dudgusw";	//문자온 로그인 아이디 
-		final String apiKey		=	"769089bdd0363e0d0b1d20761a8d013bd";		//발급받은 api key
+		final String apiKey		=	"0096519c62100b9eea77c040a6045c";		//발급받은 api ke
 		
 		
 		//테스트용
Add a comment
List