myname 2023-06-21
Merge branch 'master' of http://vcs.iten.co.kr:9999/hylee/mjon_git
@9bc7407fae13c25f64427257fe8067c19d36269d
src/main/java/itn/let/cop/bbs/service/EgovBBSManageService.java
--- src/main/java/itn/let/cop/bbs/service/EgovBBSManageService.java
+++ src/main/java/itn/let/cop/bbs/service/EgovBBSManageService.java
@@ -217,6 +217,8 @@
 
 	public List<BoardVO> selectAdminMainBoardByDash(BoardVO boardVO) throws Exception;
 	
+	public List<BoardVO> selectUserBbsWriteList(BoardVO boardVO) throws Exception;
+	
 	public int selectAdminMainNewBoardCnt(BoardVO boardVO) throws Exception;
 	
 	public int selectAdminMainYdaBoardCnt(BoardVO boardVO) throws Exception;
src/main/java/itn/let/cop/bbs/service/impl/BBSManageDAO.java
--- src/main/java/itn/let/cop/bbs/service/impl/BBSManageDAO.java
+++ src/main/java/itn/let/cop/bbs/service/impl/BBSManageDAO.java
@@ -350,6 +350,11 @@
     	return (List<BoardVO>) list("BBSManageDAO.selectAdminMainBoardByDash", boardVO);
     }
     
+    @SuppressWarnings("unchecked")
+    public List<BoardVO> selectUserBbsWriteList(BoardVO boardVO) throws Exception {
+    	return (List<BoardVO>) list("BBSManageDAO.selectUserBbsWriteList", boardVO);
+    }
+    
 	public int selectAdminMainNewBoardCnt(BoardVO boardVO) throws Exception{
 		return (Integer)select("BBSManageDAO.selectAdminMainNewBoardCnt", boardVO);
 	}
src/main/java/itn/let/cop/bbs/service/impl/EgovBBSManageServiceImpl.java
--- src/main/java/itn/let/cop/bbs/service/impl/EgovBBSManageServiceImpl.java
+++ src/main/java/itn/let/cop/bbs/service/impl/EgovBBSManageServiceImpl.java
@@ -331,6 +331,11 @@
 	public List<BoardVO> selectAdminMainBoardByDash(BoardVO boardVO) throws Exception {
 		return bbsMngDAO.selectAdminMainBoardByDash(boardVO);
 	}
+
+	@Override
+	public List<BoardVO> selectUserBbsWriteList(BoardVO boardVO) throws Exception {
+		return bbsMngDAO.selectUserBbsWriteList(boardVO);
+	}	
 	
 	@Override
 	public int selectAdminMainNewBoardCnt(BoardVO boardVO) throws Exception {
src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
--- src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
+++ src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
@@ -2242,6 +2242,20 @@
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.setViewName("jsonView");
 
+		// Start => bbsId를 변조해서 공지사항에 글 등록 방지 처리
+		//boardVO.setBbsId("BBSMSTR_000000000651");	// 공지사항
+		List<BoardVO> userBbsWriteList = bbsMngService.selectUserBbsWriteList(boardVO);
+		System.out.println("boardVO.getBbsId : " + boardVO.getBbsId());
+		System.out.println("userBbsWriteList.size() : " + userBbsWriteList.size());
+		
+		if (userBbsWriteList.size() == 0) {
+			// 1:1문의, 불편사항 등 고객이 등록할수있는 게시판 목록이 아닐경우 
+			modelAndView.addObject("message", "잘못된 접근입니다.\n관리자에게 문의하세요.");
+			modelAndView.addObject("result", "fail");
+			return modelAndView;			
+		}
+		// End		
+		
 		if (bmVO == null || ("N").equals(bmVO.getUseAt())) {
 			redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl"));
 			//return "redirect:/web/main/mainPage.do";
@@ -2622,6 +2636,20 @@
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.setViewName("jsonView");
 		
+		// Start => bbsId를 변조해서 공지사항에 글 등록 방지 처리
+		//boardVO.setBbsId("BBSMSTR_000000000651");	// 공지사항
+		List<BoardVO> userBbsWriteList = bbsMngService.selectUserBbsWriteList(boardVO);
+		System.out.println("boardVO.getBbsId : " + boardVO.getBbsId());
+		System.out.println("userBbsWriteList.size() : " + userBbsWriteList.size());
+		
+		if (userBbsWriteList.size() == 0) {
+			// 1:1문의, 불편사항 등 고객이 등록할수있는 게시판 목록이 아닐경우 
+			modelAndView.addObject("message", "잘못된 접근입니다.\n관리자에게 문의하세요.");
+			modelAndView.addObject("result", "fail");
+			return modelAndView;			
+		}
+		// End
+		
 		BoardMasterVO bmVO = new BoardMasterVO();
 		bmVO.setBbsId(boardVO.getBbsId());
 		bmVO = bbsAttrbService.selectBBSMasterInf(bmVO);
src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java
@@ -9,6 +9,9 @@
 	//알림톡 전체 발송 리스트
 	List<KakaoVO> selectMjonKakaoATGroupCompleteList(KakaoVO searchVO)  throws Exception;
 		
+	//알림톡 전체 발송 리스트(대시보드용)
+	List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO searchVO)  throws Exception;	
+	
 	//알림톡 발송 상세 리스트
 	List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO searchVO) throws Exception;
 	
src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java
@@ -18,6 +18,11 @@
 	}	
 		
 	@SuppressWarnings("unchecked")
+	public List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO p_mjonKakaoATVO) throws Exception{
+		return (List<KakaoVO>)list("mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList", p_mjonKakaoATVO);
+	}	
+	
+	@SuppressWarnings("unchecked")
 	public List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO p_mjonKakaoATVO)  throws Exception{
 		return (List<KakaoVO>)list("mjonKakaoATDAO.selectMjonKakaoATGroupDtList", p_mjonKakaoATVO);
 	}
src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java
@@ -75,6 +75,23 @@
 	}	
 		
 	@Override
+	public List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO p_mjonKakaoATVO) throws Exception {
+		
+		List<KakaoVO> result = new ArrayList<KakaoVO>();
+		
+		try {
+			
+			result = mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList(p_mjonKakaoATVO); 
+			
+		} catch (Exception e) {
+			System.out.println("selectMjonKakaoATGroupCompleteByUserList ServiceImpl Error ::: " + e);
+		}
+		
+		
+		return result;
+	}		
+	
+	@Override
 	public List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO p_mjonKakaoATVO) throws Exception {
 		
 		List<KakaoVO> resultList = new ArrayList<KakaoVO>();
src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
@@ -20,6 +20,7 @@
 import itn.com.cmm.LoginVO;
 import itn.com.cmm.service.EgovCmmUseService;
 import itn.com.cmm.service.FileVO;
+import itn.com.cmm.util.MJUtil;
 import itn.com.cmm.util.StringUtil;
 import itn.let.kakao.admin.kakaoAt.service.ChannelIDVO;
 import itn.let.kakao.admin.kakaoAt.service.MjonKakaoATService;
@@ -231,7 +232,15 @@
 			kakaoVO.setReserveCYn("N");//예약취소건은 제외하기
 			// 문자발송 완료건은 모두 보이도록 처리
 			//kakaoVO.setMsgType("8");
-			resultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteList(kakaoVO);
+			
+			// 기간검색 설정
+	    	String toDay = MJUtil.getTodayDate();	//오늘    
+	    	String beforeMonthDay = MJUtil.getBefore1MonthDate();	//한달 전        
+	    	if (null == kakaoVO.getNtceBgnde() || kakaoVO.getNtceBgnde().equals("")) {
+	    		kakaoVO.setNtceBgnde(beforeMonthDay);
+	    	}					
+				
+			resultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(kakaoVO);
 			
 	        model.addAttribute("resultList", resultList);
 	        
src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkTemplateController.java
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkTemplateController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkTemplateController.java
@@ -813,8 +813,8 @@
 			searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
 			
 			if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
-				searchVO.setSearchSortCnd("sampleTemplateId");
-				searchVO.setSearchSortOrd("desc");
+				searchVO.setSearchSortCnd("sampleTemplatePriority");
+				searchVO.setSearchSortOrd("asc");
 			}
 			
 			List<MjonKakaoSampleTemplateVO> resultList = new ArrayList<MjonKakaoSampleTemplateVO>();
src/main/java/itn/let/mjo/conf/web/MjonConfController.java
--- src/main/java/itn/let/mjo/conf/web/MjonConfController.java
+++ src/main/java/itn/let/mjo/conf/web/MjonConfController.java
@@ -14,6 +14,8 @@
 import itn.com.utl.fcc.service.EgovStringUtil;
 import itn.let.mjo.conf.service.MjonConfService;
 import itn.let.mjo.conf.service.MjonConfVO;
+import itn.let.mjo.msgagent.service.MjonMsgAgentStsService;
+import itn.let.mjo.msgagent.service.MjonMsgAgentStsVO;
 
 @Controller
 public class MjonConfController {
@@ -21,7 +23,8 @@
 	@Resource(name = "mjonConfService")
 	private MjonConfService mjonConfService;
 	
-	
+	@Resource(name = "mjonMsgAgentStsService")
+	private MjonMsgAgentStsService mjonMsgAgentStsService;
 	
 
 	/**
@@ -96,5 +99,38 @@
 		return modelAndView;
 	}	
 	
-	
+	@RequestMapping(value = "/web/mjon/conf/selectBlineSendCheckAjax.do")
+	public ModelAndView selectBlineSendCheckAjax(
+			@ModelAttribute MjonMsgAgentStsVO mjonMsgAgentStsVO
+			, Model model) throws Exception {
+		
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+		
+		try {
+			
+			System.out.println(mjonMsgAgentStsVO.getAgentCode());
+			if(mjonMsgAgentStsVO.getAgentCode().equals("b1")||mjonMsgAgentStsVO.getAgentCode().equals("B1")) {
+				mjonMsgAgentStsVO.setAgentCode("08");
+			}else if(mjonMsgAgentStsVO.getAgentCode().equals("b2")||mjonMsgAgentStsVO.getAgentCode().equals("B2")) {
+				mjonMsgAgentStsVO.setAgentCode("09");
+			}
+			
+			MjonMsgAgentStsVO vo = mjonMsgAgentStsService.selectMsgAgentBlineYnInfo(mjonMsgAgentStsVO);
+			
+			if(vo == null || "".equals(vo.getUseYn()) || !"Y".equals(vo.getUseYn())) {
+				modelAndView.addObject("message", "문자 발송 불가");	
+				modelAndView.addObject("result", "fail");
+			} else {
+				modelAndView.addObject("message", "문자 발송 가능");	
+				modelAndView.addObject("result", "success");
+			}
+			
+		}catch (Exception e) {
+			modelAndView.addObject("message", "오류가 발생하였습니다.");
+			modelAndView.addObject("result", "fail");
+		}
+		
+		return modelAndView;
+	}
 }
src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java
--- src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java
+++ src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java
@@ -679,6 +679,8 @@
 			int FHMmsResult = 0;
 			int JJResult = 0;
 			int IVTResult = 0;
+			int jjBline01Result = 0;
+			int jjBline02Result = 0;
 			
 			//아이하트 딜레이문자 삭제
 			ihResult = mjonReservMsgDAO.deleteIHeartMsgSeqListByMsgSeq(mjonResvMsgVO);
@@ -701,9 +703,14 @@
 			//인비토 딜레이문자 삭제
 			IVTResult = mjonReservMsgDAO.deleteIVTMsgSeqListByMsgSeq(mjonResvMsgVO);
 			
+			//제이제이 딜레이문자 삭제
+			jjBline01Result = mjonReservMsgDAO.deleteJJB01MsgSeqListByMsgSeq(mjonResvMsgVO);
+			
+			//제이제이 딜레이문자 삭제
+			jjBline02Result = mjonReservMsgDAO.deleteJJB02MsgSeqListByMsgSeq(mjonResvMsgVO);
 			
 			//삭제 결과 합산
-			resultSts = ihResult + FHSmsResult + FHMmsResult + imoResult +bizResult + JJResult + IVTResult;
+			resultSts = ihResult + FHSmsResult + FHMmsResult + imoResult +bizResult + JJResult + IVTResult + jjBline01Result + jjBline02Result;
 			
 			System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts);
 			
@@ -775,6 +782,9 @@
 			int FHMmsResult = 0;
 			int JJResult = 0;
 			int IVTResult = 0;
+			int JJB01Result = 0;
+			int JJB02Result = 0;
+			
 			
 			//아이하트 딜레이문자 즉시발송 처리
 			//ihResult = mjonReservMsgDAO.deleteIHeartMsgSeqListByMsgSeq(mjonResvMsgVO);
@@ -798,8 +808,14 @@
 			//제이제이 딜레이문자 즉시발송 처리
 			IVTResult = mjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq(mjonResvMsgVO);
 			
+			//제이제이 B01 딜레이문자 즉시발송 처리
+			JJB01Result = mjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq(mjonResvMsgVO);
+			
+			//제이제이 B02 딜레이문자 즉시발송 처리
+			JJB02Result = mjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq(mjonResvMsgVO);
+			
 			//삭제 결과 합산
-			resultSts = ihResult + FHSmsResult + FHMmsResult + imoResult +bizResult + JJResult + IVTResult;
+			resultSts = ihResult + FHSmsResult + FHMmsResult + imoResult +bizResult + JJResult + IVTResult + JJB01Result + JJB02Result;
 			
 			System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts);
 			
src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
--- src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
+++ src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
@@ -275,6 +275,29 @@
 		return redirectUrlMaker.getRedirectUrl();
 	}	
 	
+	/**
+     * 알림톡 리스트 스미싱 on off 처리 
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/msg/SendMsgTestList.do"
+     * @throws Exception
+     */	
+	@RequestMapping("/uss/ion/msg/MsgUsersAtSmishingUpdate.do")
+	public String msgUsersAtSmishingUpdate(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes, Model model) throws Exception {
+		
+		// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+		
+		userManageService.updateUserAtSmishingYn(userManageVO, checkedIdForUpt);
+		
+		//redirectAttributes.addFlashAttribute("message", "알림톡 스미싱의심 여부가 정상적으로 수정되었습니다.");
+		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/kakaoat/SendKakaoATList.do?pageIndex="+userManageVO.getPageIndex());
+		return redirectUrlMaker.getRedirectUrl();
+	}		
 	
 	/**
      * 문자전송 테스트 리스트 
src/main/java/itn/let/mjo/msgagent/service/impl/MjonMsgAgentStsServiceImpl.java
--- src/main/java/itn/let/mjo/msgagent/service/impl/MjonMsgAgentStsServiceImpl.java
+++ src/main/java/itn/let/mjo/msgagent/service/impl/MjonMsgAgentStsServiceImpl.java
@@ -8,6 +8,7 @@
 import org.springframework.stereotype.Service;
 
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
 import itn.let.mjo.msgagent.service.MjonMsgAgentStsService;
 import itn.let.mjo.msgagent.service.MjonMsgAgentStsVO;
 import itn.let.uat.uia.service.impl.MberManageDAO;
@@ -26,6 +27,10 @@
 	@Resource(name = "mjonMsgAgentStsService")
 	private MjonMsgAgentStsService mjonMsgAgentStsService;	
 	
+	/** 메모 idgen */
+	@Resource(name="egovGnrlUserSelectMemoIdGnrService")
+	private EgovIdGnrService memoidgenService;
+
 	@Override
 	public List<MjonMsgAgentStsVO> selectMjonMsgAgentStsList() throws Exception{
 		return mjonMsgAgentStsDAO.selectMjonMsgAgentStsList();
@@ -174,6 +179,14 @@
 			// B선라인 일경우 회원테이블 업데이트
 			int uCnt = mberManageDAO.updateUserBlineCodeByAdm(mberManageVO);
 			
+			//보내는 아이디 회원 메모 insert
+			String memo = "";
+			memo = "전용전송사 변경 : " + mberManageVO.getHotlineAgentName() + "(" + mberManageVO.getHotlineAgentCode() + ")";
+			mberManageVO.setMemoId(memoidgenService.getNextStringId());
+			mberManageVO.setMberId(mberManageVO.getMberId());
+			mberManageVO.setMemoCn(memo);
+			mberManageVO.setFrstRegisterId(mberManageVO.getAdmUserId());
+			mberManageDAO.insertMberMemo(mberManageVO);
 		} catch (Exception e) {
 			System.out.println("+++++++++++ updateMberHotlineAgentCodeInfo Service Imple Error!!! " + e);
 		}
src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
@@ -185,11 +185,13 @@
 				mberRepAgent = tmp.getRepAgent();
 				String useYn = tmp.getUseYn();
 				
-				//회원 전용 전송사의 전송 비율이 0 이면 대표전송사로 전송되도록 셋팅함.
-				if(mberSendRate.equals("0") || useYn.equals("N")) {
-					
-					hotlineAgentCode = mberRepAgent;
-					
+				if(userInfo.getBlineCode().equals("N")) {
+					//회원 전용 전송사의 전송 비율이 0 이면 대표전송사로 전송되도록 셋팅함.
+					if(mberSendRate.equals("0") || useYn.equals("N")) {
+						
+						hotlineAgentCode = mberRepAgent;
+						
+					}
 				}
 				
 			}
src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
--- src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
+++ src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
@@ -504,6 +504,10 @@
 			mberManageVO = mjonMsgDataService.selectMberManageInfo(userId);
 			searchVO.setUserId(userId);
 			
+			
+			model.addAttribute("blineCode", mberManageVO.getBlineCode());
+			
+			
 		}
 		
 		model.addAttribute("exceptSpamYn", mberManageVO.getExceptSpamYn());
@@ -904,6 +908,7 @@
 			
 			mberManageVO = mjonMsgDataService.selectMberManageInfo(userId);
 			
+			model.addAttribute("blineCode", mberManageVO.getBlineCode());
 		}
 		
 		model.addAttribute("exceptSpamYn", mberManageVO.getExceptSpamYn());
src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java
--- src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java
+++ src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java
@@ -138,6 +138,27 @@
 		return update("MjonReservMsgDAO.deleteIVTMsgSeqListByMsgSeq", mjonResvMsgVO);
 	}
 	
+	/**
+	* @Method Name : deleteJJB01MsgSeqListByMsgSeq
+	* @작성일 : 2023. 06. 19.
+	* @작성자 :  WYH
+	* @Method 설명 : 제이제이 B01라인 예약취소 삭제
+	*/
+	public int deleteJJB01MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) throws Exception{
+		
+		return update("MjonReservMsgDAO.deleteJJB01MsgSeqListByMsgSeq", mjonResvMsgVO);
+	}
+	
+	/**
+	* @Method Name : deleteJJB02MsgSeqListByMsgSeq
+	* @작성일 : 2023. 06. 19.
+	* @작성자 :  WYH
+	* @Method 설명 : 제이제이 B02라인 예약취소 삭제
+	*/
+	public int deleteJJB02MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) throws Exception{
+		
+		return update("MjonReservMsgDAO.deleteJJB02MsgSeqListByMsgSeq", mjonResvMsgVO);
+	}
 	
 	public void updateResvMsgCancelDataFlag(MjonResvMsgVO mjonResvMsgVO) throws Exception{
 		
@@ -235,4 +256,25 @@
 		return update("MjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq", mjonResvMsgVO);
 	}
 	
+	/**
+	* @Method Name : updateRealTimeJJB01MsgSeqListByMsgSeq
+	* @작성일 : 2023. 06. 20.
+	* @작성자 :  WYD
+	* @Method 설명 : 제이제이 B01라인 지연처리 문자 즉시 발송
+	*/
+	public int updateRealTimeJJB01MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
+		
+		return update("MjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq", mjonResvMsgVO);
+	}
+	
+	/**
+	* @Method Name : updateRealTimeJJB02MsgSeqListByMsgSeq
+	* @작성일 : 2023. 06. 20.
+	* @작성자 :  WYD
+	* @Method 설명 : 제이제이 B02라인 지연처리 문자 즉시 발송
+	*/
+	public int updateRealTimeJJB02MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
+		
+		return update("MjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq", mjonResvMsgVO);
+	}
 }
src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgServiceImpl.java
--- src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgServiceImpl.java
+++ src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgServiceImpl.java
@@ -109,6 +109,8 @@
 			int ivtResult = 0;
 			int FHSmsResult = 0;
 			int FHMmsResult = 0;
+			int jjB01Result = 0;
+			int jjB02Result = 0;
 			
 			//아이하트 예약취소 삭제
 			ihResult = mjonReservMsgDAO.deleteIHeartMsgSeqListByMsgSeq(mjonResvMsgVO);
@@ -131,8 +133,14 @@
 			//인비토 예약취소 삭제
 			ivtResult = mjonReservMsgDAO.deleteIVTMsgSeqListByMsgSeq(mjonResvMsgVO);
 			
+			//제이제이 B01 예약취소 삭제
+			jjB01Result = mjonReservMsgDAO.deleteJJB01MsgSeqListByMsgSeq(mjonResvMsgVO);
+			
+			//제이제이 B02 예약취소 삭제
+			jjB02Result = mjonReservMsgDAO.deleteJJB02MsgSeqListByMsgSeq(mjonResvMsgVO);
+			
 			//삭제 결과 합산
-			result = ihResult + FHSmsResult + FHMmsResult + imoResult + bizResult +jjResult + ivtResult;
+			result = ihResult + FHSmsResult + FHMmsResult + imoResult + bizResult +jjResult + ivtResult + jjB01Result + jjB02Result;
 			
 			//각 전송사별 문자 발송 테이블에서 데이터 삭제 처리
 			/*if(agentCode.equals("01")) { //아이하트 메세지 삭제
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
@@ -123,6 +123,11 @@
 	}
 	
 	@Override
+	public List<MberManageVO> selectMberDelTypeGrpList(UserDefaultVO userSearchVO) throws Exception {
+		return mberManageDAO.selectMberDelTypeGrpList(userSearchVO);
+	}	
+	
+	@Override
 	public List<MberManageVO> selectMberLoginAddList(UserDefaultVO userSearchVO) throws Exception {
 		return mberManageDAO.selectMberLoginAddList(userSearchVO);
 	}
src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
--- src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
+++ src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
@@ -76,6 +76,11 @@
     }
 	
 	@SuppressWarnings("unchecked")
+	public List<MberManageVO> selectMberDelTypeGrpList(UserDefaultVO userSearchVO){
+        return (List<MberManageVO>) list("mberManageDAO.selectMberDelTypeGrpList", userSearchVO);
+    }
+	
+	@SuppressWarnings("unchecked")
 	public List<MberManageVO> selectMberLoginAddList(UserDefaultVO userSearchVO){
         return (List<MberManageVO>) list("mberManageDAO.selectMberLoginAddList", userSearchVO);
     }
src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
--- src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
+++ src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
@@ -52,6 +52,8 @@
 	 */
 	public List<MberManageVO> selectMberList(UserDefaultVO userSearchVO) throws Exception;
 	
+	public List<MberManageVO> selectMberDelTypeGrpList(UserDefaultVO userSearchVO) throws Exception;
+	
 	public List<MberManageVO> selectMberLoginAddList(UserDefaultVO userSearchVO) throws Exception;
 	
 	public List<MberManageVO> selectMberListNewUser(UserDefaultVO userSearchVO) throws Exception;
src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
--- src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
+++ src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
@@ -177,12 +177,20 @@
 	
 	public UserManageVO selectSmishingYnUserInfo(UserManageVO userManageVO) throws Exception;
 	
+	public UserManageVO selectAtSmishingYnUserInfo(UserManageVO userManageVO) throws Exception;
+	
 	// 스미싱의심 온/오프
 	public void updateUserSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception;
 	
 	// 스미싱의심 온/오프 - 상세에서 단일로
 	public void updateOneUserSmishingYn(UserManageVO userManageVO) throws Exception;
     
+	// 알림톡 스미싱의심 온/오프
+	public void updateUserAtSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception;
+	
+	// 알림톡 스미싱의심 온/오프 - 상세에서 단일로
+	public void updateOneUserAtSmishingYn(UserManageVO userManageVO) throws Exception;	
+	
 	// 후불제 여부 저장
 	public void updateUserPrePaymentYn(UserManageVO userManageVO) throws Exception;
 	
src/main/java/itn/let/uss/umt/service/MberManageVO.java
--- src/main/java/itn/let/uss/umt/service/MberManageVO.java
+++ src/main/java/itn/let/uss/umt/service/MberManageVO.java
@@ -488,9 +488,37 @@
 	private String spamKeyword;		//스팸 필터링 문자단어들
 	private String spamRegistPnttm;	//스팸 문자 발송 내용 등록일자
 	private String exceptSpamYn;	//스팸 필터링 예외 처리 여부
-	
 	private String hotlineAgentCode; //회원 전용 전송사 코드 정보
+	private String hotlineAgentName; //회원 전용 전송사 명
+	private String admUserId;		 //관리자아이디
+	private String deleteTypeName;	// 탈퇴 사유 명
+	private String deleteTypeCnt;	// 탈퇴 사유 인원수
 	
+	public String getDeleteTypeName() {
+		return deleteTypeName;
+	}
+	public void setDeleteTypeName(String deleteTypeName) {
+		this.deleteTypeName = deleteTypeName;
+	}
+	public String getDeleteTypeCnt() {
+		return deleteTypeCnt;
+	}
+	public void setDeleteTypeCnt(String deleteTypeCnt) {
+		this.deleteTypeCnt = deleteTypeCnt;
+	}
+	
+	public String getAdmUserId() {
+		return admUserId;
+	}
+	public void setAdmUserId(String admUserId) {
+		this.admUserId = admUserId;
+	}
+	public String getHotlineAgentName() {
+		return hotlineAgentName;
+	}
+	public void setHotlineAgentName(String hotlineAgentName) {
+		this.hotlineAgentName = hotlineAgentName;
+	}
 	private String blineCode;		// B라인코드
 	private String recommendId;		// 추천아이디
 
@@ -518,7 +546,14 @@
 	
 	private String smishingYn;		// 스미싱 의심여부
 	private String vipYn;		// VIP 여부
+	private String atSmishingYn;		// 알림톡 스미싱 의심여부
 	
+	public String getAtSmishingYn() {
+		return atSmishingYn;
+	}
+	public void setAtSmishingYn(String atSmishingYn) {
+		this.atSmishingYn = atSmishingYn;
+	}
 	public String getPrePaymentYn() {
 		return prePaymentYn;
 	}
src/main/java/itn/let/uss/umt/service/UserManageVO.java
--- src/main/java/itn/let/uss/umt/service/UserManageVO.java
+++ src/main/java/itn/let/uss/umt/service/UserManageVO.java
@@ -204,7 +204,14 @@
 	private float cash;
 	private String blineCode;		// B라인코드
 	private String recommendId;		// 추천아이디
-
+	private String atSmishingYn;		// 알림톡 스미싱 의심여부
+	
+	public String getAtSmishingYn() {
+		return atSmishingYn;
+	}
+	public void setAtSmishingYn(String atSmishingYn) {
+		this.atSmishingYn = atSmishingYn;
+	}
 	public String getBlineCode() {
 		return blineCode;
 	}
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
@@ -497,6 +497,11 @@
 		return userManageDAO.selectSmishingYnUserInfo(userManageVO);
 	}
 	
+	@Override
+	public UserManageVO selectAtSmishingYnUserInfo(UserManageVO userManageVO) {
+		return userManageDAO.selectAtSmishingYnUserInfo(userManageVO);
+	}
+	
 	// 스미싱의심 온/오프
 	public void updateUserSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception {
 		if(!"".equals(checkedIdForUpt)) {
@@ -560,6 +565,69 @@
 		
 	}
 	
+	// 알림톡 스미싱의심 온/오프
+	public void updateUserAtSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception {
+		if(!"".equals(checkedIdForUpt)) {
+			String [] uptIdAll = checkedIdForUpt.split(",");
+			String[] uptId = Arrays.stream(uptIdAll).distinct().toArray(String[]::new);
+			for (int i=0; i<uptId.length ; i++){
+				// 업데이트
+				userManageVO.setMberId(uptId[i]);
+				userManageDAO.updateUserAtSmishingYn(userManageVO);
+				
+				// 법인폰 알림문자 발송
+				UserManageVO rtnVO = new UserManageVO();
+				rtnVO = selectAtSmishingYnUserInfo(userManageVO);
+				if (rtnVO.getAtSmishingYn().equals("Y")) {
+					// 법인폰 알람여부 체크
+					JoinSettingVO joinSettingVO = new JoinSettingVO();
+					joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+					// SMS 체크
+					if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+						// 스미싱의심 SMS 알림전송
+						mjonNoticeSendUtil.smishingSmsNoticeSend("알림톡 스미싱 의심!", rtnVO.getMberId(), rtnVO.getMberNm());
+					}					
+					
+					// SLACK 체크
+					if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {					
+						// Slack 메시지 발송(단순본문)
+						String msg = "[문자온] 알림톡 스미싱 의심! - " + rtnVO.getMberNm() +"("+ rtnVO.getMberId() + ")";
+						mjonCommon.sendSimpleSlackMsg(msg);					
+					}
+				}
+			}
+		}
+		
+	}
+	
+	// 알림톡 스미싱의심 온/오프 단일
+	public void updateOneUserAtSmishingYn(UserManageVO userManageVO) throws Exception {
+				// 업데이트
+				userManageDAO.updateUserAtSmishingYn(userManageVO);
+				
+				// 법인폰 알림문자 발송
+				UserManageVO rtnVO = new UserManageVO();
+				rtnVO = selectAtSmishingYnUserInfo(userManageVO);
+				if (rtnVO.getAtSmishingYn().equals("Y")) {
+					// 법인폰 알람여부 체크
+					JoinSettingVO joinSettingVO = new JoinSettingVO();
+					joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+					// SMS 체크
+					if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+						// 스미싱의심 SMS 알림전송
+						mjonNoticeSendUtil.smishingSmsNoticeSend("알림톡 스미싱 의심!", rtnVO.getMberId(), rtnVO.getMberNm());
+					}					
+					
+					// SLACK 체크
+					if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {					
+						// Slack 메시지 발송(단순본문)
+						String msg = "[문자온] 알림톡 스미싱 의심! - " + rtnVO.getMberNm() +"("+ rtnVO.getMberId() + ")";
+						mjonCommon.sendSimpleSlackMsg(msg);										
+					}
+				}
+		
+	}	
+	
 	// 후불제 여부 저장
 	public void updateUserPrePaymentYn(UserManageVO userManageVO) throws Exception {
 		userManageDAO.updateUserPrePaymentYn(userManageVO);
src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
--- src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
+++ src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
@@ -271,11 +271,20 @@
 		return (UserManageVO) select("userManageDAO.selectSmishingYnUserInfo",userManageVO);
 	}
 	
+	public UserManageVO selectAtSmishingYnUserInfo(UserManageVO userManageVO) {
+		return (UserManageVO) select("userManageDAO.selectAtSmishingYnUserInfo",userManageVO);
+	}
+	
 	// 스미싱의심 온/오프
     public void updateUserSmishingYn(UserManageVO userManageVO){
     	update("userManageDAO.updateUserSmishingYn",userManageVO);
     }
     
+	// 알림톡 스미싱의심 온/오프
+    public void updateUserAtSmishingYn(UserManageVO userManageVO){
+    	update("userManageDAO.updateUserAtSmishingYn",userManageVO);
+    }
+    
     // 후불제 여부 저장
     public void updateUserPrePaymentYn(UserManageVO userManageVO){
     	update("userManageDAO.updateUserPrePaymentYn",userManageVO);
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
@@ -78,7 +78,6 @@
 import itn.let.fax.user.service.FaxGroupDataVO;
 import itn.let.fax.user.service.FaxService;
 import itn.let.kakao.admin.kakaoAt.service.ChannelIDVO;
-import itn.let.kakao.admin.kakaoAt.service.MjonKakaoATSentVO;
 import itn.let.kakao.admin.kakaoAt.service.MjonKakaoATService;
 import itn.let.kakao.kakaoComm.KakaoReturnVO;
 import itn.let.kakao.kakaoComm.KakaoVO;
@@ -564,6 +563,9 @@
 		paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0);
 		model.addAttribute("paginationInfo", paginationInfo);
 		
+		// 탈퇴사유별 인원수
+		List<?> resultMberDelTypeGrpList = mberManageService.selectMberDelTypeGrpList(userSearchVO);
+		model.addAttribute("resultMberDelTypeGrpList", resultMberDelTypeGrpList);
 		
 		return "cmm/uss/umt/EgovDelUserManage";
 	}
@@ -1168,8 +1170,8 @@
 			 * 최근 알리톡/친구톡 전송 내역
 			 * */			
 			//최근 발송 문자 내용 불러오기 - 최근 3개 내역만
-			List<MjonKakaoATSentVO> mjonKakaoATSentList = mjonKakaoATService.selectMberKakaoATSentLatestList(userId);
-			model.addAttribute("mjonKakaoATSentList", mjonKakaoATSentList);			
+			//List<MjonKakaoATSentVO> mjonKakaoATSentList = mjonKakaoATService.selectMberKakaoATSentLatestList(userId);
+			//model.addAttribute("mjonKakaoATSentList", mjonKakaoATSentList);			
 		}
 		
 		{
@@ -1376,7 +1378,7 @@
 			sendKakaoVO.setSearchSortOrd("desc");
 			sendKakaoVO.setFirstIndex(0);
 			List<KakaoVO> kakaoResultList = new ArrayList<KakaoVO>();
-			kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteList(sendKakaoVO);
+			kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO);
 			
 	        model.addAttribute("kakaoResultList", kakaoResultList);
 			
@@ -1905,7 +1907,7 @@
 				//searchVO.setReserveYn("N");
 				// 문자발송 완료건은 모두 보이도록 처리
 				
-				kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteList(searchVO);
+				kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(searchVO);
 		        model.addAttribute("kakaoResultList", kakaoResultList);
 		        
 		        //카카오톡 발송 통계 정보 불러오기
@@ -2419,6 +2421,38 @@
 		
 		return modelAndView;
 	}	
+	
+	// 알림톡 스미싱의심 여부 변경
+	@RequestMapping("/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do")
+	public ModelAndView EgovGnrlUpdateUserAtSmishingAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception {
+		
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+		
+		Boolean isSuccess = true;
+		String msg = "";
+		
+		try {
+			// 미인증 사용자에 대한 보안처리
+			Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+			if(!isAuthenticated) {
+				isSuccess = false;
+				msg = "로그인이 필요합니다.";    		
+			}
+			else {
+				userManageService.updateOneUserAtSmishingYn(userManageVO);
+			}
+		} catch (Exception e) {
+			isSuccess = false;
+			msg = e.getMessage();
+		}
+		
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		
+		return modelAndView;
+	}	
+	
 	// VIP 여부 변경
 	@RequestMapping("/uss/umt/user/EgovGnrlUpdateUserVIPAjax.do")
 	public ModelAndView EgovGnrlUpdateUserVIPAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception {
@@ -2468,6 +2502,9 @@
 				msg = "로그인이 필요합니다.";    		
 			}
 			else {
+				LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+				String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+				mberManageVO.setAdmUserId(userId);				
 				int result = mjonMsgAgentStsService.updateMberHotlineAgentCodeInfo(mberManageVO);
 				
 				if(result > 0) {
src/main/resources/egovframework/sqlmap/let/agent/MjonAgent_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/agent/MjonAgent_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/agent/MjonAgent_SQL_mysql.xml
@@ -73,7 +73,8 @@
 	</select>	
 	
 	<select id="mjonMsgAgentStsDAO.selectMsgAgentBlineYnInfo" parameterClass="mjonMsgAgentStsVO" resultClass="mjonMsgAgentStsVO">
-		SELECT BLINE_YN blineYn FROM MJ_AGENT_SEND_RATE 
+		SELECT USE_YN useYn 
+		FROM MJ_AGENT_SEND_RATE 
 		WHERE AGENT_CODE = #agentCode#
 		AND MSG_TYPE = 'S'
 		ORDER BY BLINE_YN DESC
src/main/resources/egovframework/sqlmap/let/cop/bbs/EgovBoard_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/cop/bbs/EgovBoard_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/cop/bbs/EgovBoard_SQL_Mysql.xml
@@ -1767,6 +1767,17 @@
 	    LIMIT #recordCountPerPage# OFFSET #firstIndex#
    </select>   
    
+   <select id="BBSManageDAO.selectUserBbsWriteList" parameterClass="BoardVO" resultClass="BoardVO"  >
+		SELECT 
+			BBS_ID AS bbsId
+			, BBS_NM AS bbsNm 
+		FROM lettnbbsmaster 
+		WHERE 
+			USE_AT = 'Y'
+			AND DASHBD_CNT_YN = 'Y'
+			AND BBS_ID = #bbsId#
+   </select>   
+      
    <select id="BBSManageDAO.selectAdminMainNewBoardCnt" parameterClass="BoardVO" resultClass="java.lang.Integer" >
 		<![CDATA[
 		SELECT COUNT(*) FROM LETTNBBS A
src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
@@ -166,6 +166,14 @@
 					WHERE   C.DEL_FLAG     = 'N'
 					AND     C.RESERVE_C_YN = 'N'
 					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
+					AND     C.RSLT_CODE != '7000'
+					AND     C.MSG_TYPE = '8'
+				)	AS atFailCount ,
+				<!-- ( SELECT COUNT(0) 
+					FROM    MJ_MSG_DATA C
+					WHERE   C.DEL_FLAG     = 'N'
+					AND     C.RESERVE_C_YN = 'N'
+					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
 					AND     C.RSLT_CODE = '7000'
 					AND     C.MSG_TYPE = '9'
 				)	AS ftSuccessCount ,
@@ -175,16 +183,10 @@
 					AND     C.RESERVE_C_YN = 'N'
 					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
 					AND     C.RSLT_CODE != '7000'
-					AND     C.MSG_TYPE = '8'
-				)	AS atFailCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE != '7000'
 					AND     C.MSG_TYPE = '9'
-				)	AS ftFailCount ,
+				)	AS ftFailCount , -->
+				'0' AS ftSuccessCount,
+				'0' AS ftFailCount,
 				MSG_NOTICETALK_SENDER_KEY ,
 				MSG_NOTICETALK_TMP_KEY,
 				MD.BIZ_UMID,
@@ -196,16 +198,16 @@
 				AND MD.DEL_FLAG = 'N'
 				<!-- JSPark 2023.03.24 알림톡 전송완료 목록은 (즉시 + 예약 발송완료) 노출 -->
 				<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
-			<isNotEmpty property="userId">
+				<isNotEmpty property="userId">
 				AND MG.USER_ID = #userId#
-			</isNotEmpty>
+				</isNotEmpty>
 				AND MG.DEL_FLAG ='N'
 				AND MG.RESERVE_C_YN = 'N'
+				AND MG.MSG_TYPE = '8'
 			)M
 			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
 			ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY 
 			AND MKPI.USER_ID = M.USER_ID
-			AND	MKPI.DELETE_YN = 'N'
 			LEFT JOIN LETTNGNRLMBER LTM
 			ON	M.USER_ID = LTM.MBER_ID
 			LEFT JOIN BIZ_LOG BL
@@ -312,6 +314,319 @@
 		
 	</select>	
 	
+	<select id="mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList" parameterClass="kakaoVO" resultClass="kakaoVO">
+	SELECT
+		M2.totCnt ,
+		M2.userId ,
+		M2.msgGroupId ,
+		M2.msgGroupCnt ,
+		M2.smsTxt ,
+		M2.subject ,
+		M2.regDate ,
+		M2.reqDate ,
+		M2.rsltDate ,
+		M2.callFrom ,
+		M2.callTo ,
+		M2.totPrice ,
+		M2.eachPrice ,
+		M2.curState ,
+		M2.rsltCode ,
+		M2.rsltCode2 ,
+		M2.orderByrsltCode ,
+		M2.delFlag ,
+		M2.msgType ,
+		M2.fileCnt ,
+		M2.agentCode ,
+		M2.reserveYn ,
+		M2.reserveCYn ,
+		M2.cancelDate ,
+		M2.msgTypeName ,
+		M2.orderByCode ,
+		M2.msgResult ,
+		M2.msgNoticetalkSenderKey ,
+        M2.msgNoticetalkTmpKey ,
+        M2.yellowId ,
+        M2.userNm ,
+        M2.atSmishingYn ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = M2.msgGroupId
+			AND     C.RSLT_CODE = '7000'
+		)	AS successCount ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = M2.msgGroupId
+			AND     C.RSLT_CODE = '7000'
+			AND     C.MSG_TYPE = '8'
+		)	AS atSuccessCount ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = M2.msgGroupId
+			AND     C.RSLT_CODE != '7000'
+			AND     C.MSG_TYPE = '8'
+		)	AS atFailCount ,
+		<!-- ( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
+			AND     C.RSLT_CODE = '7000'
+			AND     C.MSG_TYPE = '9'
+		)	AS ftSuccessCount ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
+			AND     C.RSLT_CODE != '7000'
+			AND     C.MSG_TYPE = '9'
+		)	AS ftFailCount , -->
+		'0' AS ftSuccessCount,
+		'0' AS ftFailCount,
+		M2.bizUmid,
+		M2.callStatus,
+		M2.bizKakaoResendYn,
+		( SELECT COUNT(0)
+		FROM    BIZ_LOG BL1,
+		 MJ_MSG_DATA MMD1
+		WHERE   M2.bizKakaoResendYn = 'Y'
+		AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
+		AND     MMD1.BIZ_UMID         = BL1.CMID
+		AND     (
+				 CASE
+					 WHEN BL1.CALL_STATUS in ('6600','4100')
+					 THEN 'S'
+					 ELSE 'F'
+				 END ) = 'S'
+		)	kakaoResendSuccCount,
+		( SELECT COUNT(0)
+		FROM    BIZ_LOG BL1,
+		 MJ_MSG_DATA MMD1
+		WHERE   M2.bizKakaoResendYn = 'Y'
+		AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
+		AND     MMD1.BIZ_UMID         = BL1.CMID
+		AND     (
+				 CASE
+					 WHEN BL1.CALL_STATUS in ('6600','4100')
+					 THEN 'S'
+					 ELSE 'F'
+				 END ) = 'F'
+		) kakaoResendFailCount
+	FROM (
+		SELECT
+			COUNT(M.USER_ID) OVER()					AS totCnt ,
+			M.USER_ID                             AS userId ,
+			MSG_GROUP_ID                          AS msgGroupId ,
+			MSG_GROUP_CNT                         AS msgGroupCnt ,
+			SMS_TXT                               AS smsTxt ,
+			M.SUBJECT                             AS subject ,
+			DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
+			DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
+			DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
+			CALL_FROM                             AS callFrom ,
+			CALL_TO                               AS callTo ,
+			TOT_PRICE                             AS totPrice ,
+			EACH_PRICE                            AS eachPrice ,
+			CUR_STATE                             AS curState ,
+			RSLT_CODE                             AS rsltCode ,
+			RSLT_CODE2                            AS rsltCode2 ,
+			IF((RSLT_CODE != '7000'),'1','0')     AS orderByrsltCode ,
+			DEL_FLAG                              AS delFlag ,
+			M.MSG_TYPE                            AS msgType ,
+			FILE_CNT                              AS fileCnt ,
+			AGENT_CODE                            AS agentCode ,
+			RESERVE_YN                            AS reserveYn ,
+			RESERVE_C_YN                          AS reserveCYn ,
+			CANCELDATE                            AS cancelDate ,
+			msgTypeName                           AS msgTypeName ,
+			orderByCode                           AS orderByCode ,
+			RESULT                                AS msgResult ,
+			MSG_NOTICETALK_SENDER_KEY            AS msgNoticetalkSenderKey ,
+	        MSG_NOTICETALK_TMP_KEY               AS msgNoticetalkTmpKey ,
+	        MKPI.YELLOW_ID                       AS yellowId ,
+	        LTM.MBER_NM                          AS userNm ,
+	        LTM.AT_SMISHING_YN					 AS atSmishingYn,
+			BIZ_UMID                              AS bizUmid,
+			BL.CALL_STATUS                        AS callStatus,
+			M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn
+		FROM ( 
+				SELECT MG.USER_ID ,
+				MG.MSG_GROUP_ID ,
+				MG.MSG_GROUP_CNT ,
+				MG.SMS_TXT ,
+				MG.SUBJECT ,
+				MG.REGDATE ,
+				MG.REQ_DATE ,
+				MD.RSLT_DATE ,
+				MG.CALL_FROM ,
+				MG.TOT_PRICE ,
+				MG.EACH_PRICE ,
+				MG.DEL_FLAG ,
+				MG.MSG_TYPE ,
+				MG.FILE_CNT ,
+				MG.AGENT_CODE ,
+				MG.RESERVE_YN ,
+				MG.RESERVE_C_YN ,
+				MG.CANCELDATE ,
+				MD.MSG_SEQ ,
+				MD.CALL_TO ,
+				MD.CUR_STATE ,
+				MD.RSLT_CODE ,
+				MD.RSLT_CODE2 ,
+				CASE
+					 WHEN MG.MSG_TYPE = '8'
+					 THEN '알림톡'
+					 WHEN MG.MSG_TYPE = '9'
+					 THEN '친구톡'
+				END msgTypeName ,
+				CASE
+					WHEN MG.MSG_TYPE = '8'
+					THEN '1'
+					ELSE '2'
+				END orderByCode , 
+				(
+					CASE
+						WHEN MD.RSLT_CODE = '7000'
+						THEN 'S'
+						WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
+						THEN 'W'
+						ELSE 'F'
+					END 
+				) AS result ,
+				MSG_NOTICETALK_SENDER_KEY ,
+				MSG_NOTICETALK_TMP_KEY,
+				MD.BIZ_UMID,
+				MD.BIZ_KAKAO_RESEND_YN
+			FROM    MJ_MSG_DATA MD ,
+					MJ_MSG_GROUP_DATA MG
+			WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
+				AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
+				AND MD.DEL_FLAG = 'N'
+				<!-- JSPark 2023.03.24 알림톡 전송완료 목록은 (즉시 + 예약 발송완료) 노출 -->
+				<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
+				<isNotEmpty property="userId">
+				AND MG.USER_ID = #userId#
+				</isNotEmpty>
+				AND MG.DEL_FLAG ='N'
+				AND MG.RESERVE_C_YN = 'N'
+				AND MG.MSG_TYPE = '8'
+			)M
+			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
+			ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY 
+			AND MKPI.USER_ID = M.USER_ID
+			LEFT JOIN LETTNGNRLMBER LTM
+			ON	M.USER_ID = LTM.MBER_ID
+			LEFT JOIN BIZ_LOG BL
+			ON	M.BIZ_UMID = BL.CMID
+			WHERE 1=1
+			<isNotEmpty property="searchKeyword">
+				<isEqual property="searchCondition" compareValue="" >
+					AND ( 
+						M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+						OR   MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+						OR   M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+					)
+				</isEqual>
+				<isEqual property="searchCondition" compareValue="1">
+					AND M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+				</isEqual>
+				<isEqual property="searchCondition" compareValue="2">
+					AND MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+				</isEqual>
+				<isEqual property="searchCondition" compareValue="3">
+					AND M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+				</isEqual>
+				
+				<isEqual property="searchCondition2" compareValue="" >
+					AND M.RESERVE_YN IN ('Y','N')
+				</isEqual>
+				<isEqual property="searchCondition2" compareValue="N">
+					AND M.RESERVE_YN = 'N'
+				</isEqual>
+				<isEqual property="searchCondition2" compareValue="Y">
+					AND M.RESERVE_YN = 'Y'
+				</isEqual>
+			</isNotEmpty>
+			
+			<isEmpty property="searchKeyword">
+				<isNotEmpty property="searchCondition">
+					<isEqual property="searchCondition" compareValue="" >
+						AND ( 
+							M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+							OR   MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+							OR   M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+						)
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="1">
+						AND M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="2">
+						AND MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="3">
+						AND M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+					</isEqual>
+				</isNotEmpty>
+				<isNotEmpty property="searchCondition2">
+					<isEqual property="searchCondition2" compareValue="" >
+						AND M.RESERVE_YN IN ('Y','N')
+					</isEqual>
+					<isEqual property="searchCondition2" compareValue="N">
+						AND M.RESERVE_YN = 'N'
+					</isEqual>
+					<isEqual property="searchCondition2" compareValue="Y">
+						AND M.RESERVE_YN = 'Y'
+					</isEqual>
+				</isNotEmpty>
+			</isEmpty>
+			
+			
+			<isNotEmpty property="msgType">
+				<isEqual property="msgType" compareValue="8">
+					AND M.MSG_TYPE = '8'
+				</isEqual>
+				<isEqual property="msgType" compareValue="9">
+					AND M.MSG_TYPE = '9'
+				</isEqual>
+			</isNotEmpty>
+			<isEmpty property="msgType">
+					AND M.MSG_TYPE IN ('8','9')
+			</isEmpty>
+			<isNotEmpty property="ntceBgnde">
+				<![CDATA[ 
+					AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#ntceBgnde#, '%Y-%m-%d')
+				]]>
+			</isNotEmpty>
+			<isNotEmpty property="ntceEndde">
+				<![CDATA[ 
+					AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#ntceEndde#, '%Y-%m-%d')  
+				]]>
+			</isNotEmpty>
+		GROUP BY MSG_GROUP_ID
+		ORDER BY 1=1
+		<isNotEmpty property="searchSortCnd">
+			<isEqual property="searchSortCnd" compareValue="curState">
+				, curState  $searchSortOrd$
+				, orderByrsltCode
+			</isEqual>
+			<isNotEqual  property="searchSortCnd" compareValue="curState">
+				,$searchSortCnd$
+			</isNotEqual>
+		</isNotEmpty>
+		<isNotEmpty property="searchSortOrd">
+			$searchSortOrd$
+		</isNotEmpty>
+		LIMIT  #recordCountPerPage# OFFSET #firstIndex#
+	) M2
+		
+	</select>	
+		
 	<!-- 알림톡 상세 리스트 조회 -->
 	<select id="mjonKakaoATDAO.selectMjonKakaoATGroupDtList" parameterClass="kakaoVO" resultClass="kakaoVO">
 	/*	mjonKakaoATDAO.selectMjonKakaoATGroupDtList - 알림톡 전송 개별 리스트	*/
@@ -349,7 +664,6 @@
 	        , MSG_NOTICETALK_TMP_KEY               AS msgNoticetalkTmpKey
 	        , MKPI.YELLOW_ID                       AS yellowId
 	        , LTM.MBER_NM                          AS userNm
-	        , successCount
             , BIZ_KAKAO_RESEND_YN					AS subMsgSendYn
             , BIZ_KAKAO_RESEND_TYPE					AS subMsgType
             , BIZ_KAKAO_RESEND_DATA					AS subMsgTxt
@@ -403,7 +717,6 @@
 					ELSE '2'
 					END orderByCode
 				, (<include refid="KakaoSentDAO.selectAgentResultQuery_A"/>) AS RESULT
-				, (<include refid="mjonKakaoATDAO.selectSuccessResultQuery_C"/>) AS successCount
 				, A.MSG_NOTICETALK_SENDER_KEY
                 , A.MSG_NOTICETALK_TMP_KEY
                 , CASE
@@ -442,7 +755,7 @@
 				]]>
 			)M
 			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
-         	ON       M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY AND MKPI.USER_ID = M.USER_ID AND MKPI.DELETE_YN = 'N'  
+         	ON       M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY AND MKPI.USER_ID = M.USER_ID  
          	LEFT JOIN LETTNGNRLMBER LTM
          	ON       M.USER_ID = LTM.MBER_ID
 		WHERE 1=1 
@@ -714,50 +1027,86 @@
 	<select id="mjonKakaoATDAO.selectReserveMjonKakaoATGroupList" parameterClass="kakaoVO" resultClass="kakaoVO">
 	/*	mjonKakaoATDAO.selectMjonKakaoATGroupList - 알림톡 예약조회	*/
 		SELECT
-			COUNT(M.USER_ID) OVER()					AS totCnt ,
-			M.USER_ID                             AS userId ,
-			MSG_GROUP_ID                          AS msgGroupId ,
-			MSG_GROUP_CNT                         AS msgGroupCnt ,
-			SMS_TXT                               AS smsTxt ,
-			M.SUBJECT                             AS subject ,
-			DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
-			DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
-			DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
-			CALL_FROM                             AS callFrom ,
-			CALL_TO                               AS callTo ,
-			TOT_PRICE                             AS totPrice ,
-			EACH_PRICE                            AS eachPrice ,
-			CUR_STATE                             AS curState ,
-			RSLT_CODE                             AS rsltCode ,
-			RSLT_CODE2                            AS rsltCode2 ,
-			IF((RSLT_CODE != '7000'),'1','0')     AS orderByrsltCode ,
-			DEL_FLAG                              AS delFlag ,
-			M.MSG_TYPE                            AS msgType ,
-			FILE_CNT                              AS fileCnt ,
-			AGENT_CODE                            AS agentCode ,
-			RESERVE_YN                            AS reserveYn ,
-			RESERVE_C_YN                          AS reserveCYn ,
-			CANCELDATE                            AS cancelDate ,
-			msgTypeName                           AS msgTypeName ,
-			orderByCode                           AS orderByCode ,
-			RESULT                                AS msgResult ,
-			MSG_NOTICETALK_SENDER_KEY            AS msgNoticetalkSenderKey ,
-	        MSG_NOTICETALK_TMP_KEY               AS msgNoticetalkTmpKey ,
-	        MKPI.YELLOW_ID                       AS yellowId ,
-	        LTM.MBER_NM                          AS userNm ,
-			successCount,
-			atSuccessCount,
-			ftSuccessCount,
-			atFailCount,
-			ftFailCount,
-			BIZ_UMID                              AS bizUmid,
-			BL.CALL_STATUS                        AS callStatus,
-			M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn,
+			M2.totCnt ,
+			M2.userId ,
+			M2.msgGroupId ,
+			M2.msgGroupCnt ,
+			M2.smsTxt ,
+			M2.subject ,
+			M2.regDate ,
+			M2.reqDate ,
+			M2.rsltDate ,
+			M2.callFrom ,
+			M2.callTo ,
+			M2.totPrice ,
+			M2.eachPrice ,
+			M2.curState ,
+			M2.rsltCode ,
+			M2.rsltCode2 ,
+			M2.orderByrsltCode ,
+			M2.delFlag ,
+			M2.msgType ,
+			M2.fileCnt ,
+			M2.agentCode ,
+			M2.reserveYn ,
+			M2.reserveCYn ,
+			M2.cancelDate ,
+			M2.msgTypeName ,
+			M2.orderByCode ,
+			M2.msgResult ,
+			M2.msgNoticetalkSenderKey ,
+			M2.msgNoticetalkTmpKey ,
+			M2.yellowId ,
+			M2.userNm ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     C.RSLT_CODE = '7000'
+			)	AS successCount ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     C.RSLT_CODE = '7000'
+				AND     C.MSG_TYPE = '8'
+			)	AS atSuccessCount ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     C.RSLT_CODE != '7000'
+				AND     C.MSG_TYPE = '8'
+			)	AS atFailCount ,
+			<!-- ( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     C.RSLT_CODE = '7000'
+				AND     C.MSG_TYPE = '9'
+			)	AS ftSuccessCount ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     C.RSLT_CODE != '7000'
+				AND     C.MSG_TYPE = '9'
+			)	AS ftFailCount ,-->
+			'0' AS ftSuccessCount,
+			'0' AS ftFailCount,
+			M2.bizUmid,
+			M2.callStatus,
+			M2.bizKakaoResendYn,
 			( SELECT COUNT(0)
 			FROM    BIZ_LOG BL1,
 			 MJ_MSG_DATA MMD1
-			WHERE   M.BIZ_KAKAO_RESEND_YN = 'Y'
-			AND     M.MSG_GROUP_ID        = MMD1.MSG_GROUP_ID
+			WHERE   M2.bizKakaoResendYn = 'Y'
+			AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
 			AND     MMD1.BIZ_UMID         = BL1.CMID
 			AND     (
 					 CASE
@@ -769,8 +1118,8 @@
 			( SELECT COUNT(0)
 			FROM    BIZ_LOG BL1,
 			 MJ_MSG_DATA MMD1
-			WHERE   M.BIZ_KAKAO_RESEND_YN = 'Y'
-			AND     M.MSG_GROUP_ID        = MMD1.MSG_GROUP_ID
+			WHERE   M2.bizKakaoResendYn = 'Y'
+			AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
 			AND     MMD1.BIZ_UMID         = BL1.CMID
 			AND     (
 					 CASE
@@ -780,143 +1129,110 @@
 					 END ) = 'F'
 			) kakaoResendFailCount
 		FROM ( 
-				SELECT MG.USER_ID ,
-				MG.MSG_GROUP_ID ,
-				MG.MSG_GROUP_CNT ,
-				MG.SMS_TXT ,
-				MG.SUBJECT ,
-				MG.REGDATE ,
-				MG.REQ_DATE ,
-				MD.RSLT_DATE ,
-				MG.CALL_FROM ,
-				MG.TOT_PRICE ,
-				MG.EACH_PRICE ,
-				MG.DEL_FLAG ,
-				MG.MSG_TYPE ,
-				MG.FILE_CNT ,
-				MG.AGENT_CODE ,
-				MG.RESERVE_YN ,
-				MG.RESERVE_C_YN ,
-				MG.CANCELDATE ,
-				MD.MSG_SEQ ,
-				MD.CALL_TO ,
-				MD.CUR_STATE ,
-				MD.RSLT_CODE ,
-				MD.RSLT_CODE2 ,
-				CASE
-					 WHEN MG.MSG_TYPE = '8'
-					 THEN '알림톡'
-					 WHEN MG.MSG_TYPE = '9'
-					 THEN '친구톡'
-				END msgTypeName ,
-				CASE
-					WHEN MG.MSG_TYPE = '8'
-					THEN '1'
-					ELSE '2'
-				END orderByCode , 
-				(
+			SELECT
+				COUNT(M.USER_ID) OVER()					AS totCnt ,
+				M.USER_ID                             AS userId ,
+				MSG_GROUP_ID                          AS msgGroupId ,
+				MSG_GROUP_CNT                         AS msgGroupCnt ,
+				SMS_TXT                               AS smsTxt ,
+				M.SUBJECT                             AS subject ,
+				DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
+				DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
+				DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
+				CALL_FROM                             AS callFrom ,
+				CALL_TO                               AS callTo ,
+				TOT_PRICE                             AS totPrice ,
+				EACH_PRICE                            AS eachPrice ,
+				CUR_STATE                             AS curState ,
+				RSLT_CODE                             AS rsltCode ,
+				RSLT_CODE2                            AS rsltCode2 ,
+				IF((RSLT_CODE != '7000'),'1','0')     AS orderByrsltCode ,
+				DEL_FLAG                              AS delFlag ,
+				M.MSG_TYPE                            AS msgType ,
+				FILE_CNT                              AS fileCnt ,
+				AGENT_CODE                            AS agentCode ,
+				RESERVE_YN                            AS reserveYn ,
+				RESERVE_C_YN                          AS reserveCYn ,
+				CANCELDATE                            AS cancelDate ,
+				msgTypeName                           AS msgTypeName ,
+				orderByCode                           AS orderByCode ,
+				RESULT                                AS msgResult ,
+				MSG_NOTICETALK_SENDER_KEY            AS msgNoticetalkSenderKey ,
+		        MSG_NOTICETALK_TMP_KEY               AS msgNoticetalkTmpKey ,
+		        MKPI.YELLOW_ID                       AS yellowId ,
+		        LTM.MBER_NM                          AS userNm ,
+				BIZ_UMID                              AS bizUmid,
+				BL.CALL_STATUS                        AS callStatus,
+				M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn
+			FROM ( 
+					SELECT MG.USER_ID ,
+					MG.MSG_GROUP_ID ,
+					MG.MSG_GROUP_CNT ,
+					MG.SMS_TXT ,
+					MG.SUBJECT ,
+					MG.REGDATE ,
+					MG.REQ_DATE ,
+					MD.RSLT_DATE ,
+					MG.CALL_FROM ,
+					MG.TOT_PRICE ,
+					MG.EACH_PRICE ,
+					MG.DEL_FLAG ,
+					MG.MSG_TYPE ,
+					MG.FILE_CNT ,
+					MG.AGENT_CODE ,
+					MG.RESERVE_YN ,
+					MG.RESERVE_C_YN ,
+					MG.CANCELDATE ,
+					MD.MSG_SEQ ,
+					MD.CALL_TO ,
+					MD.CUR_STATE ,
+					MD.RSLT_CODE ,
+					MD.RSLT_CODE2 ,
 					CASE
-						WHEN MD.RSLT_CODE = '7000'
-						THEN 'S'
-						WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
-						THEN 'W'
-						ELSE 'F'
-					END 
-				) AS result ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE = '7000'
-				)	AS successCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE = '7000'
-					AND     C.MSG_TYPE = '8'
-				)	AS atSuccessCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE = '7000'
-					AND     C.MSG_TYPE = '9'
-				)	AS ftSuccessCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE != '7000'
-					AND     C.MSG_TYPE = '8'
-				)	AS atFailCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE != '7000'
-					AND     C.MSG_TYPE = '9'
-				)	AS ftFailCount ,
-				MSG_NOTICETALK_SENDER_KEY ,
-				MSG_NOTICETALK_TMP_KEY,
-				MD.BIZ_UMID,
-				MD.BIZ_KAKAO_RESEND_YN
-			FROM    MJ_MSG_DATA MD ,
-					MJ_MSG_GROUP_DATA MG
-			WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
-				AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
-				AND MD.DEL_FLAG = 'N'
-			<isNotEmpty property="userId">
-				AND MG.USER_ID = #userId#
-			</isNotEmpty>
-				AND MG.DEL_FLAG ='N'
-				AND MG.RESERVE_C_YN = 'N'
-			)M
-			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
-			ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY 
-			AND MKPI.USER_ID = M.USER_ID
-			AND	MKPI.DELETE_YN = 'N'
-			LEFT JOIN LETTNGNRLMBER LTM
-			ON	M.USER_ID = LTM.MBER_ID
-			LEFT JOIN BIZ_LOG BL
-			ON	M.BIZ_UMID = BL.CMID
-			WHERE 1=1
-			<isNotEmpty property="searchKeyword">
-				<isEqual property="searchCondition" compareValue="" >
-					AND ( 
-						M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
-						OR   MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
-						OR   M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
-					)
-				</isEqual>
-				<isEqual property="searchCondition" compareValue="1">
-					AND M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
-				</isEqual>
-				<isEqual property="searchCondition" compareValue="2">
-					AND MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
-				</isEqual>
-				<isEqual property="searchCondition" compareValue="3">
-					AND M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
-				</isEqual>
-				
-				<isEqual property="searchCondition2" compareValue="" >
-					AND M.RESERVE_YN IN ('Y','N')
-				</isEqual>
-				<isEqual property="searchCondition2" compareValue="N">
-					AND M.RESERVE_YN = 'N'
-				</isEqual>
-				<isEqual property="searchCondition2" compareValue="Y">
-					AND M.RESERVE_YN = 'Y'
-				</isEqual>
-			</isNotEmpty>
-			
-			<isEmpty property="searchKeyword">
-				<isNotEmpty property="searchCondition">
+						 WHEN MG.MSG_TYPE = '8'
+						 THEN '알림톡'
+						 WHEN MG.MSG_TYPE = '9'
+						 THEN '친구톡'
+					END msgTypeName ,
+					CASE
+						WHEN MG.MSG_TYPE = '8'
+						THEN '1'
+						ELSE '2'
+					END orderByCode , 
+					(
+						CASE
+							WHEN MD.RSLT_CODE = '7000'
+							THEN 'S'
+							WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
+							THEN 'W'
+							ELSE 'F'
+						END 
+					) AS result ,
+					MSG_NOTICETALK_SENDER_KEY ,
+					MSG_NOTICETALK_TMP_KEY,
+					MD.BIZ_UMID,
+					MD.BIZ_KAKAO_RESEND_YN
+				FROM    MJ_MSG_DATA MD ,
+						MJ_MSG_GROUP_DATA MG
+				WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
+					AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
+					AND MD.DEL_FLAG = 'N'
+				<isNotEmpty property="userId">
+					AND MG.USER_ID = #userId#
+				</isNotEmpty>
+					AND MG.DEL_FLAG ='N'
+					AND MG.RESERVE_C_YN = 'N'
+					AND MG.MSG_TYPE = '8'
+				)M
+				LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
+				ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY 
+				AND MKPI.USER_ID = M.USER_ID
+				LEFT JOIN LETTNGNRLMBER LTM
+				ON	M.USER_ID = LTM.MBER_ID
+				LEFT JOIN BIZ_LOG BL
+				ON	M.BIZ_UMID = BL.CMID
+				WHERE 1=1
+				<isNotEmpty property="searchKeyword">
 					<isEqual property="searchCondition" compareValue="" >
 						AND ( 
 							M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
@@ -933,8 +1249,7 @@
 					<isEqual property="searchCondition" compareValue="3">
 						AND M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
 					</isEqual>
-				</isNotEmpty>
-				<isNotEmpty property="searchCondition2">
+					
 					<isEqual property="searchCondition2" compareValue="" >
 						AND M.RESERVE_YN IN ('Y','N')
 					</isEqual>
@@ -945,45 +1260,77 @@
 						AND M.RESERVE_YN = 'Y'
 					</isEqual>
 				</isNotEmpty>
-			</isEmpty>
-			
-			
-			<isNotEmpty property="msgType">
-				<isEqual property="msgType" compareValue="8">
-					AND M.MSG_TYPE = '8'
+				
+				<isEmpty property="searchKeyword">
+					<isNotEmpty property="searchCondition">
+						<isEqual property="searchCondition" compareValue="" >
+							AND ( 
+								M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+								OR   MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+								OR   M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+							)
+						</isEqual>
+						<isEqual property="searchCondition" compareValue="1">
+							AND M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+						</isEqual>
+						<isEqual property="searchCondition" compareValue="2">
+							AND MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+						</isEqual>
+						<isEqual property="searchCondition" compareValue="3">
+							AND M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+						</isEqual>
+					</isNotEmpty>
+					<isNotEmpty property="searchCondition2">
+						<isEqual property="searchCondition2" compareValue="" >
+							AND M.RESERVE_YN IN ('Y','N')
+						</isEqual>
+						<isEqual property="searchCondition2" compareValue="N">
+							AND M.RESERVE_YN = 'N'
+						</isEqual>
+						<isEqual property="searchCondition2" compareValue="Y">
+							AND M.RESERVE_YN = 'Y'
+						</isEqual>
+					</isNotEmpty>
+				</isEmpty>
+				
+				
+				<isNotEmpty property="msgType">
+					<isEqual property="msgType" compareValue="8">
+						AND M.MSG_TYPE = '8'
+					</isEqual>
+					<isEqual property="msgType" compareValue="9">
+						AND M.MSG_TYPE = '9'
+					</isEqual>
+				</isNotEmpty>
+				<isEmpty property="msgType">
+						AND M.MSG_TYPE IN ('8','9')
+				</isEmpty>
+				<isNotEmpty property="ntceBgnde">
+					<![CDATA[ 
+						AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#ntceBgnde#, '%Y-%m-%d')
+					]]>
+				</isNotEmpty>
+				<isNotEmpty property="ntceEndde">
+					<![CDATA[ 
+						AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#ntceEndde#, '%Y-%m-%d')  
+					]]>
+				</isNotEmpty>
+			GROUP BY MSG_GROUP_ID
+			ORDER BY 1=1
+			<isNotEmpty property="searchSortCnd">
+				<isEqual property="searchSortCnd" compareValue="curState">
+					, curState  $searchSortOrd$
+					, orderByrsltCode
 				</isEqual>
-				<isEqual property="msgType" compareValue="9">
-					AND M.MSG_TYPE = '9'
-				</isEqual>
+				<isNotEqual  property="searchSortCnd" compareValue="curState">
+					,$searchSortCnd$
+				</isNotEqual>
 			</isNotEmpty>
-			<isEmpty property="msgType">
-					AND M.MSG_TYPE IN ('8','9')
-			</isEmpty>
-			<isNotEmpty property="ntceBgnde">
-				<![CDATA[ 
-					AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#ntceBgnde#, '%Y-%m-%d')
-				]]>
+			<isNotEmpty property="searchSortOrd">
+				$searchSortOrd$
 			</isNotEmpty>
-			<isNotEmpty property="ntceEndde">
-				<![CDATA[ 
-					AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#ntceEndde#, '%Y-%m-%d')  
-				]]>
-			</isNotEmpty>
-		GROUP BY MSG_GROUP_ID
-		ORDER BY 1=1
-		<isNotEmpty property="searchSortCnd">
-			<isEqual property="searchSortCnd" compareValue="curState">
-				, curState  $searchSortOrd$
-				, orderByrsltCode
-			</isEqual>
-			<isNotEqual  property="searchSortCnd" compareValue="curState">
-				,$searchSortCnd$
-			</isNotEqual>
-		</isNotEmpty>
-		<isNotEmpty property="searchSortOrd">
-			$searchSortOrd$
-		</isNotEmpty>
-		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+			LIMIT  #recordCountPerPage# OFFSET #firstIndex#
+		) M2	
 	</select>	
 	
 	<!-- 알림톡 상세 리스트 조회 -->
src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
@@ -202,45 +202,70 @@
 	<!-- 전체 발송결과 조회  (그룹별)-->
 	<select id="KakaoSentDAO.selectAllKakaoSentList" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
 		SELECT
-			COUNT(M.USER_ID) OVER()               AS totMsgCnt ,
-			M.USER_ID                             AS userId ,
-			MSG_GROUP_ID                          AS msgGroupId ,
-			MSG_GROUP_CNT                         AS msgGroupCnt ,
-			SMS_TXT                               AS smsTxt ,
-			M.SUBJECT                             AS subject ,
-			DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
-			DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
-			DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
-			CALL_FROM                             AS callFrom ,
-			CALL_TO                               AS callTo ,
-			IFNULL(ADDR_NM, '-')                  AS addrNm ,
-			TOT_PRICE                             AS totPrice ,
-			EACH_PRICE                            AS eachPrice ,
-			CUR_STATE                             AS curState ,
-			RSLT_CODE                             AS rsltCode ,
-			RSLT_CODE2                            AS rsltCode2 ,
-			IF((RSLT_CODE != '7000'),'1','0')     AS orderByrsltCode ,
-			DEL_FLAG                              AS delFlag ,
-			M.MSG_TYPE                            AS msgType ,
-			FILE_CNT                              AS fileCnt ,
-			AGENT_CODE                            AS agentCode ,
-			RESERVE_YN                            AS reserveYn ,
-			RESERVE_C_YN                          AS reserveCYn ,
-			CANCELDATE                            AS cancelDate ,
-			msgTypeName                           AS msgTypeName ,
-			orderByCode                           AS orderByCode ,
-			RESULT                                AS msgResult ,
-			successCount,
-			waitCount,
-			failCount,
-			BIZ_UMID                              AS bizUmid,
-			BL.CALL_STATUS                        AS callStatus,
-			M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn,
+			M2.totMsgCnt ,
+			M2.userId ,
+			M2.msgGroupId ,
+			M2.msgGroupCnt ,
+			M2.smsTxt ,
+			M2.subject ,
+			M2.regDate ,
+			M2.reqDate ,
+			M2.rsltDate ,
+			M2.callFrom ,
+			M2.callTo ,
+			M2.addrNm ,
+			M2.totPrice ,
+			M2.eachPrice ,
+			M2.curState ,
+			M2.rsltCode ,
+			M2.rsltCode2 ,
+			M2.orderByrsltCode ,
+			M2.delFlag ,
+			M2.msgType ,
+			M2.fileCnt ,
+			M2.agentCode ,
+			M2.reserveYn ,
+			M2.reserveCYn ,
+			M2.cancelDate ,
+			M2.msgTypeName ,
+			M2.orderByCode ,
+			M2.msgResult ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     C.RSLT_CODE = '7000'
+			)	AS successCount ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     ( 
+							C.RSLT_CODE  IS NULL
+							AND C.SENT_DATE  IS NULL
+							AND C.RSLT_DATE  IS NULL
+							)
+			)	AS waitCount ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     ( 
+							C.RSLT_CODE != '7000'
+							AND C.RSLT_CODE IS NOT NULL
+						)
+			)	AS failCount ,
+			M2.bizUmid,
+			M2.callStatus,
+			M2.bizKakaoResendYn,
 			( SELECT COUNT(0)
 			FROM    BIZ_LOG BL1,
 			 MJ_MSG_DATA MMD1
-			WHERE   M.BIZ_KAKAO_RESEND_YN = 'Y'
-			AND     M.MSG_GROUP_ID        = MMD1.MSG_GROUP_ID
+			WHERE   M2.bizKakaoResendYn = 'Y'
+			AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
 			AND     MMD1.BIZ_UMID         = BL1.CMID
 			AND     (
 					 CASE
@@ -252,8 +277,8 @@
 			( SELECT COUNT(0)
 			FROM    BIZ_LOG BL1,
 			 MJ_MSG_DATA MMD1
-			WHERE   M.BIZ_KAKAO_RESEND_YN = 'Y'
-			AND     M.MSG_GROUP_ID        = MMD1.MSG_GROUP_ID
+			WHERE   M2.bizKakaoResendYn = 'Y'
+			AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
 			AND     MMD1.BIZ_UMID         = BL1.CMID
 			AND     (
 					 CASE
@@ -262,185 +287,191 @@
 						 ELSE 'F'
 					 END ) = 'F'
 			) kakaoResendFailCount
-		FROM ( 
-				SELECT MG.USER_ID ,
-				MG.MSG_GROUP_ID ,
-				MG.MSG_GROUP_CNT ,
-				MG.SMS_TXT ,
-				MG.SUBJECT ,
-				MG.REGDATE ,
-				MG.REQ_DATE ,
-				MD.RSLT_DATE ,
-				MG.CALL_FROM ,
-				MG.TOT_PRICE ,
-				MG.EACH_PRICE ,
-				MG.DEL_FLAG ,
-				MG.MSG_TYPE ,
-				MG.FILE_CNT ,
-				MG.AGENT_CODE ,
-				MG.RESERVE_YN ,
-				MG.RESERVE_C_YN ,
-				MG.CANCELDATE ,
-				MD.MSG_SEQ ,
-				MD.CALL_TO ,
-				MD.CUR_STATE ,
-				MD.RSLT_CODE ,
-				MD.RSLT_CODE2 ,
-				CASE
-					 WHEN MG.MSG_TYPE = '8'
-					 THEN '알림톡'
-					 WHEN MG.MSG_TYPE = '9'
-					 THEN '친구톡'
-				END msgTypeName ,
-				CASE
-					WHEN MG.MSG_TYPE = '8'
-					THEN '1'
-					ELSE '2'
-				END orderByCode , (
-				CASE
-					WHEN MD.RSLT_CODE = '7000'
-					THEN 'S'
-					WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
-					THEN 'W'
-					ELSE 'F'
-				END ) AS result ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE = '7000'
-				)	AS successCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     ( 
-								C.RSLT_CODE  IS NULL
-								AND C.SENT_DATE  IS NULL
-								AND C.RSLT_DATE  IS NULL
-								)
-				)	AS waitCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     ( 
-								C.RSLT_CODE != '7000'
-								AND C.RSLT_CODE IS NOT NULL
-							)
-				)	AS failCount ,
-				MSG_NOTICETALK_SENDER_KEY ,
-				MSG_NOTICETALK_TMP_KEY,
-				MD.BIZ_UMID,
-				MD.BIZ_KAKAO_RESEND_YN
-			FROM    MJ_MSG_DATA MD ,
-					MJ_MSG_GROUP_DATA MG
-			WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
-				AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
-				AND MD.DEL_FLAG = 'N'
-				AND MG.USER_ID = #userId#
-				AND MG.DEL_FLAG ='N'
-				/* JSPark 2023.03.23 => 예약건중 발송완료건도 발송결과에 노출되도록 수정 */
-				/* AND MG.RESERVE_YN = 'N' */
-				<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
+		FROM (
+			SELECT
+				COUNT(M.USER_ID) OVER()               AS totMsgCnt ,
+				M.USER_ID                             AS userId ,
+				MSG_GROUP_ID                          AS msgGroupId ,
+				MSG_GROUP_CNT                         AS msgGroupCnt ,
+				SMS_TXT                               AS smsTxt ,
+				M.SUBJECT                             AS subject ,
+				DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
+				DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
+				DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
+				CALL_FROM                             AS callFrom ,
+				CALL_TO                               AS callTo ,
+				IFNULL(ADDR_NM, '-')                  AS addrNm ,
+				TOT_PRICE                             AS totPrice ,
+				EACH_PRICE                            AS eachPrice ,
+				CUR_STATE                             AS curState ,
+				RSLT_CODE                             AS rsltCode ,
+				RSLT_CODE2                            AS rsltCode2 ,
+				IF((RSLT_CODE != '7000'),'1','0')     AS orderByrsltCode ,
+				DEL_FLAG                              AS delFlag ,
+				M.MSG_TYPE                            AS msgType ,
+				FILE_CNT                              AS fileCnt ,
+				AGENT_CODE                            AS agentCode ,
+				RESERVE_YN                            AS reserveYn ,
+				RESERVE_C_YN                          AS reserveCYn ,
+				CANCELDATE                            AS cancelDate ,
+				msgTypeName                           AS msgTypeName ,
+				orderByCode                           AS orderByCode ,
+				RESULT                                AS msgResult ,
+				BIZ_UMID                              AS bizUmid,
+				BL.CALL_STATUS                        AS callStatus,
+				M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn
+			FROM ( 
+					SELECT MG.USER_ID ,
+					MG.MSG_GROUP_ID ,
+					MG.MSG_GROUP_CNT ,
+					MG.SMS_TXT ,
+					MG.SUBJECT ,
+					MG.REGDATE ,
+					MG.REQ_DATE ,
+					MD.RSLT_DATE ,
+					MG.CALL_FROM ,
+					MG.TOT_PRICE ,
+					MG.EACH_PRICE ,
+					MG.DEL_FLAG ,
+					MG.MSG_TYPE ,
+					MG.FILE_CNT ,
+					MG.AGENT_CODE ,
+					MG.RESERVE_YN ,
+					MG.RESERVE_C_YN ,
+					MG.CANCELDATE ,
+					MD.MSG_SEQ ,
+					MD.CALL_TO ,
+					MD.CUR_STATE ,
+					MD.RSLT_CODE ,
+					MD.RSLT_CODE2 ,
+					CASE
+						 WHEN MG.MSG_TYPE = '8'
+						 THEN '알림톡'
+						 WHEN MG.MSG_TYPE = '9'
+						 THEN '친구톡'
+					END msgTypeName ,
+					CASE
+						WHEN MG.MSG_TYPE = '8'
+						THEN '1'
+						ELSE '2'
+					END orderByCode , (
+					CASE
+						WHEN MD.RSLT_CODE = '7000'
+						THEN 'S'
+						WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
+						THEN 'W'
+						ELSE 'F'
+					END ) AS result ,
+					MSG_NOTICETALK_SENDER_KEY ,
+					MSG_NOTICETALK_TMP_KEY,
+					MD.BIZ_UMID,
+					MD.BIZ_KAKAO_RESEND_YN
+				FROM    MJ_MSG_DATA MD ,
+						MJ_MSG_GROUP_DATA MG
+				WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
+					AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
+					AND MD.DEL_FLAG = 'N'
+					AND MG.USER_ID = #userId#
+					AND MG.DEL_FLAG ='N'
+					/* JSPark 2023.03.23 => 예약건중 발송완료건도 발송결과에 노출되도록 수정 */
+					/* AND MG.RESERVE_YN = 'N' */
+					<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
+					
+				<isNotEmpty property="reserveCYn">
+					AND MG.RESERVE_C_YN = #reserveCYn#
+				</isNotEmpty>
 				
-			<isNotEmpty property="reserveCYn">
-				AND MG.RESERVE_C_YN = #reserveCYn#
-			</isNotEmpty>
-			
-			<isNotEmpty property="stateType">
-				<isEqual property="stateType" compareValue="all">
-					AND MD.CUR_STATE IN ('0','1','2','3')
-				</isEqual>
-				<isEqual property="stateType" compareValue="ready">
-					AND MD.CUR_STATE = '0'
-					AND MD.RESERVE_C_YN = 'N'
-				</isEqual>
-				<isEqual property="stateType" compareValue="complete">
-					AND MD.CUR_STATE IN ('2','3')
-					AND MD.RSLT_CODE = '7000'
-					AND	MD.RESERVE_C_YN = 'N'
-				</isEqual>
-				<isEqual property="stateType" compareValue="fail">
-					AND MD.RESERVE_C_YN = 'N'
-					AND MD.RSLT_CODE != '7000'
-				</isEqual>
-			</isNotEmpty>
-			<isNotEmpty property="tabType">
-				<isEqual property="tabType" compareValue="at">
-					AND MD.MSG_TYPE = '8'
-				</isEqual>
-				<isEqual property="tabType" compareValue="ft">
-					AND MD.MSG_TYPE = '9'
-				</isEqual>
-				<isEqual property="tabType" compareValue="all">
-					AND MD.MSG_TYPE  IN ('8','9')
-				</isEqual>
-			</isNotEmpty>
-			<isEmpty property="tabType">
-					AND MD.MSG_TYPE IN ('8','9')
-			</isEmpty>
-			
-			
-			<!-- <isEmpty property="reserveYn">
-			<![CDATA[ 
-				AND MG.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
-			]]>
-			</isEmpty> -->
-			)M
-			LEFT JOIN
-			(
-				SELECT
-					ADDR_PHONE_NO
-					, ADDR_NM
-				FROM
-					MJ_ADDR
-					WHERE 1=1
-					AND MBER_ID = #userId#
-				GROUP BY ADDR_PHONE_NO
-			)MA
-			ON M.CALL_TO = MA.ADDR_PHONE_NO
-			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
-			ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY
-			AND	MKPI.DELETE_YN = 'N'
-			LEFT JOIN LETTNGNRLMBER LTM
-			ON	M.USER_ID = LTM.MBER_ID
-			LEFT JOIN BIZ_LOG BL
-			ON	M.BIZ_UMID = BL.CMID
-			WHERE 1=1 
-			<isNotEmpty property="searchKeyword">
-				<isEqual property="searchCondition" compareValue="3" >
-					AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
-				</isEqual>
-			</isNotEmpty>
-			<isNotEmpty property="startDate">
+				<isNotEmpty property="stateType">
+					<isEqual property="stateType" compareValue="all">
+						AND MD.CUR_STATE IN ('0','1','2','3')
+					</isEqual>
+					<isEqual property="stateType" compareValue="ready">
+						AND MD.CUR_STATE = '0'
+						AND MD.RESERVE_C_YN = 'N'
+					</isEqual>
+					<isEqual property="stateType" compareValue="complete">
+						AND MD.CUR_STATE IN ('2','3')
+						AND MD.RSLT_CODE = '7000'
+						AND	MD.RESERVE_C_YN = 'N'
+					</isEqual>
+					<isEqual property="stateType" compareValue="fail">
+						AND MD.RESERVE_C_YN = 'N'
+						AND MD.RSLT_CODE != '7000'
+					</isEqual>
+				</isNotEmpty>
+				<isNotEmpty property="tabType">
+					<isEqual property="tabType" compareValue="at">
+						AND MD.MSG_TYPE = '8'
+					</isEqual>
+					<isEqual property="tabType" compareValue="ft">
+						AND MD.MSG_TYPE = '9'
+					</isEqual>
+					<isEqual property="tabType" compareValue="all">
+						AND MD.MSG_TYPE  IN ('8','9')
+					</isEqual>
+				</isNotEmpty>
+				<isEmpty property="tabType">
+						AND MD.MSG_TYPE IN ('8','9')
+				</isEmpty>
+				
+				
+				<!-- <isEmpty property="reserveYn">
 				<![CDATA[ 
-					AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
+					AND MG.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
 				]]>
+				</isEmpty> -->
+				)M
+				LEFT JOIN
+				(
+					SELECT
+						ADDR_PHONE_NO
+						, ADDR_NM
+					FROM
+						MJ_ADDR
+						WHERE 1=1
+						AND MBER_ID = #userId#
+					GROUP BY ADDR_PHONE_NO
+				)MA
+				ON M.CALL_TO = MA.ADDR_PHONE_NO
+				LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
+				ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY
+				AND	MKPI.DELETE_YN = 'N'
+				LEFT JOIN LETTNGNRLMBER LTM
+				ON	M.USER_ID = LTM.MBER_ID
+				LEFT JOIN BIZ_LOG BL
+				ON	M.BIZ_UMID = BL.CMID
+				WHERE 1=1 
+				<isNotEmpty property="searchKeyword">
+					<isEqual property="searchCondition" compareValue="3" >
+						AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
+					</isEqual>
+				</isNotEmpty>
+				<isNotEmpty property="startDate">
+					<![CDATA[ 
+						AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
+					]]>
+				</isNotEmpty>
+				<isNotEmpty property="endDate">
+					<![CDATA[ 
+						AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
+					]]>
+				</isNotEmpty>
+			GROUP BY MSG_GROUP_ID
+			ORDER BY 1=1
+			<isNotEmpty property="searchSortCnd">
+				<isEqual property="searchSortCnd" compareValue="curState">
+					, curState  $searchSortOrd$
+					, orderByrsltCode
+				</isEqual>
+				<isNotEqual  property="searchSortCnd" compareValue="curState">
+					,$searchSortCnd$
+				</isNotEqual>
 			</isNotEmpty>
-			<isNotEmpty property="endDate">
-				<![CDATA[ 
-					AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
-				]]>
+			<isNotEmpty property="searchSortOrd">
+				$searchSortOrd$
 			</isNotEmpty>
-		GROUP BY MSG_GROUP_ID
-		ORDER BY 1=1
-		<isNotEmpty property="searchSortCnd">
-			<isEqual property="searchSortCnd" compareValue="curState">
-				, curState  $searchSortOrd$
-				, orderByrsltCode
-			</isEqual>
-			<isNotEqual  property="searchSortCnd" compareValue="curState">
-				,$searchSortCnd$
-			</isNotEqual>
-		</isNotEmpty>
-		<isNotEmpty property="searchSortOrd">
-			$searchSortOrd$
-		</isNotEmpty>
-		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+			LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+		) M2			
 	</select>
 	
 	
@@ -956,46 +987,71 @@
 	<!-- 전체 예약결과 조회  (그룹별)-->
 	<select id="KakaoSentDAO.selectReservKakaoSentList" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
 		SELECT
-			COUNT(M.USER_ID) OVER()               AS totMsgCnt ,
-			M.USER_ID                             AS userId ,
-			MSG_GROUP_ID                          AS msgGroupId ,
-			MSG_GROUP_CNT                         AS msgGroupCnt ,
-			SMS_TXT                               AS smsTxt ,
-			M.SUBJECT                             AS subject ,
-			DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
-			DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
-			DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
-			TIMESTAMPDIFF(MINUTE,DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T'), DATE_FORMAT(NOW(), '%Y-%m-%d %T')) AS diffMin,
-			CALL_FROM                             AS callFrom ,
-			CALL_TO                               AS callTo ,
-			IFNULL(ADDR_NM, '-')                  AS addrNm ,
-			TOT_PRICE                             AS totPrice ,
-			EACH_PRICE                            AS eachPrice ,
-			CUR_STATE                             AS curState ,
-			RSLT_CODE                             AS rsltCode ,
-			RSLT_CODE2                            AS rsltCode2 ,
-			IF((RSLT_CODE != '7000'),'1','0')     AS orderByrsltCode ,
-			DEL_FLAG                              AS delFlag ,
-			M.MSG_TYPE                            AS msgType ,
-			FILE_CNT                              AS fileCnt ,
-			AGENT_CODE                            AS agentCode ,
-			RESERVE_YN                            AS reserveYn ,
-			RESERVE_C_YN                          AS reserveCYn ,
-			CANCELDATE                            AS cancelDate ,
-			msgTypeName                           AS msgTypeName ,
-			orderByCode                           AS orderByCode ,
-			RESULT                                AS msgResult ,
-			successCount,
-			waitCount,
-			failCount,
-			BIZ_UMID                              AS bizUmid,
-			BL.CALL_STATUS                        AS callStatus,
-			M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn,
+			M2.totMsgCnt ,
+			M2.userId ,
+			M2.msgGroupId ,
+			M2.msgGroupCnt ,
+			M2.smsTxt ,
+			M2.subject ,
+			M2.regDate ,
+			M2.reqDate ,
+			M2.rsltDate ,
+			M2.diffMin,
+			M2.callFrom ,
+			M2.callTo ,
+			M2.addrNm ,
+			M2.totPrice ,
+			M2.eachPrice ,
+			M2.curState ,
+			M2.rsltCode ,
+			M2.rsltCode2 ,
+			M2.orderByrsltCode ,
+			M2.delFlag ,
+			M2.msgType ,
+			M2.fileCnt ,
+			M2.agentCode ,
+			M2.reserveYn ,
+			M2.reserveCYn ,
+			M2.cancelDate ,
+			M2.msgTypeName ,
+			M2.orderByCode ,
+			M2.msgResult ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     C.RSLT_CODE = '7000'
+			)	AS successCount ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     ( 
+							C.RSLT_CODE  IS NULL
+							AND C.SENT_DATE  IS NULL
+							AND C.RSLT_DATE  IS NULL
+							)
+			)	AS waitCount ,
+			( SELECT COUNT(0) 
+				FROM    MJ_MSG_DATA C
+				WHERE   C.DEL_FLAG     = 'N'
+				AND     C.RESERVE_C_YN = 'N'
+				AND     C.MSG_GROUP_ID = M2.msgGroupId
+				AND     ( 
+							C.RSLT_CODE != '7000'
+							AND C.RSLT_CODE IS NOT NULL
+						)
+			)	AS failCount ,
+			M2.bizUmid,
+			M2.callStatus,
+			M2.bizKakaoResendYn,
 			( SELECT COUNT(0)
 			FROM    BIZ_LOG BL1,
 			 MJ_MSG_DATA MMD1
-			WHERE   M.BIZ_KAKAO_RESEND_YN = 'Y'
-			AND     M.MSG_GROUP_ID        = MMD1.MSG_GROUP_ID
+			WHERE   M2.bizKakaoResendYn = 'Y'
+			AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
 			AND     MMD1.BIZ_UMID         = BL1.CMID
 			AND     (
 					 CASE
@@ -1007,8 +1063,8 @@
 			( SELECT COUNT(0)
 			FROM    BIZ_LOG BL1,
 			 MJ_MSG_DATA MMD1
-			WHERE   M.BIZ_KAKAO_RESEND_YN = 'Y'
-			AND     M.MSG_GROUP_ID        = MMD1.MSG_GROUP_ID
+			WHERE   M2.bizKakaoResendYn = 'Y'
+			AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
 			AND     MMD1.BIZ_UMID         = BL1.CMID
 			AND     (
 					 CASE
@@ -1017,176 +1073,183 @@
 						 ELSE 'F'
 					 END ) = 'F'
 			) kakaoResendFailCount
-		FROM ( 
-				SELECT MG.USER_ID ,
-				MG.MSG_GROUP_ID ,
-				MG.MSG_GROUP_CNT ,
-				MG.SMS_TXT ,
-				MG.SUBJECT ,
-				MG.REGDATE ,
-				MG.REQ_DATE ,
-				MD.RSLT_DATE ,
-				MG.CALL_FROM ,
-				MG.TOT_PRICE ,
-				MG.EACH_PRICE ,
-				MG.DEL_FLAG ,
-				MG.MSG_TYPE ,
-				MG.FILE_CNT ,
-				MG.AGENT_CODE ,
-				MG.RESERVE_YN ,
-				MG.RESERVE_C_YN ,
-				MG.CANCELDATE ,
-				MD.MSG_SEQ ,
-				MD.CALL_TO ,
-				MD.CUR_STATE ,
-				MD.RSLT_CODE ,
-				MD.RSLT_CODE2 ,
-				CASE
-					 WHEN MG.MSG_TYPE = '8'
-					 THEN '알림톡'
-					 WHEN MG.MSG_TYPE = '9'
-					 THEN '친구톡'
-				END msgTypeName ,
-				CASE
-					WHEN MG.MSG_TYPE = '8'
-					THEN '1'
-					ELSE '2'
-				END orderByCode , (
-				CASE
-					WHEN MD.RSLT_CODE = '7000'
-					THEN 'S'
-					WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL   AND     MD.RESERVE_C_YN = 'Y')
-					THEN 'C'
-					WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
-					THEN 'W'
-					ELSE 'F'
-				END ) AS result ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE = '7000'
-				)	AS successCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     ( 
-								C.RSLT_CODE  IS NULL
-								AND C.SENT_DATE  IS NULL
-								AND C.RSLT_DATE  IS NULL
-								)
-				)	AS waitCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     ( 
-								C.RSLT_CODE != '7000'
-								AND C.RSLT_CODE IS NOT NULL
-							)
-				)	AS failCount ,
-				MSG_NOTICETALK_SENDER_KEY ,
-				MSG_NOTICETALK_TMP_KEY,
-				MD.BIZ_UMID,
-				MD.BIZ_KAKAO_RESEND_YN
-			FROM    MJ_MSG_DATA MD ,
-					MJ_MSG_GROUP_DATA MG
-			WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
-				AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
-				AND MD.DEL_FLAG = 'N'
-				AND MG.USER_ID = #userId#
-				AND MG.DEL_FLAG ='N'
-				AND MG.RESERVE_YN = 'Y'
-			<isNotEmpty property="reserveCYn">
-				AND MG.RESERVE_C_YN = #reserveCYn#
+		FROM (
+			SELECT
+				COUNT(M.USER_ID) OVER()               AS totMsgCnt ,
+				M.USER_ID                             AS userId ,
+				MSG_GROUP_ID                          AS msgGroupId ,
+				MSG_GROUP_CNT                         AS msgGroupCnt ,
+				SMS_TXT                               AS smsTxt ,
+				M.SUBJECT                             AS subject ,
+				DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
+				DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
+				DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
+				TIMESTAMPDIFF(MINUTE,DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T'), DATE_FORMAT(NOW(), '%Y-%m-%d %T')) AS diffMin,
+				CALL_FROM                             AS callFrom ,
+				CALL_TO                               AS callTo ,
+				IFNULL(ADDR_NM, '-')                  AS addrNm ,
+				TOT_PRICE                             AS totPrice ,
+				EACH_PRICE                            AS eachPrice ,
+				CUR_STATE                             AS curState ,
+				RSLT_CODE                             AS rsltCode ,
+				RSLT_CODE2                            AS rsltCode2 ,
+				IF((RSLT_CODE != '7000'),'1','0')     AS orderByrsltCode ,
+				DEL_FLAG                              AS delFlag ,
+				M.MSG_TYPE                            AS msgType ,
+				FILE_CNT                              AS fileCnt ,
+				AGENT_CODE                            AS agentCode ,
+				RESERVE_YN                            AS reserveYn ,
+				RESERVE_C_YN                          AS reserveCYn ,
+				CANCELDATE                            AS cancelDate ,
+				msgTypeName                           AS msgTypeName ,
+				orderByCode                           AS orderByCode ,
+				RESULT                                AS msgResult ,
+				BIZ_UMID                              AS bizUmid,
+				BL.CALL_STATUS                        AS callStatus,
+				M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn
+			FROM ( 
+					SELECT MG.USER_ID ,
+					MG.MSG_GROUP_ID ,
+					MG.MSG_GROUP_CNT ,
+					MG.SMS_TXT ,
+					MG.SUBJECT ,
+					MG.REGDATE ,
+					MG.REQ_DATE ,
+					MD.RSLT_DATE ,
+					MG.CALL_FROM ,
+					MG.TOT_PRICE ,
+					MG.EACH_PRICE ,
+					MG.DEL_FLAG ,
+					MG.MSG_TYPE ,
+					MG.FILE_CNT ,
+					MG.AGENT_CODE ,
+					MG.RESERVE_YN ,
+					MG.RESERVE_C_YN ,
+					MG.CANCELDATE ,
+					MD.MSG_SEQ ,
+					MD.CALL_TO ,
+					MD.CUR_STATE ,
+					MD.RSLT_CODE ,
+					MD.RSLT_CODE2 ,
+					CASE
+						 WHEN MG.MSG_TYPE = '8'
+						 THEN '알림톡'
+						 WHEN MG.MSG_TYPE = '9'
+						 THEN '친구톡'
+					END msgTypeName ,
+					CASE
+						WHEN MG.MSG_TYPE = '8'
+						THEN '1'
+						ELSE '2'
+					END orderByCode , (
+					CASE
+						WHEN MD.RSLT_CODE = '7000'
+						THEN 'S'
+						WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL   AND     MD.RESERVE_C_YN = 'Y')
+						THEN 'C'
+						WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
+						THEN 'W'
+						ELSE 'F'
+					END ) AS result ,
+					MSG_NOTICETALK_SENDER_KEY ,
+					MSG_NOTICETALK_TMP_KEY,
+					MD.BIZ_UMID,
+					MD.BIZ_KAKAO_RESEND_YN
+				FROM    MJ_MSG_DATA MD ,
+						MJ_MSG_GROUP_DATA MG
+				WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
+					AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
+					AND MD.DEL_FLAG = 'N'
+					AND MG.USER_ID = #userId#
+					AND MG.DEL_FLAG ='N'
+					AND MG.RESERVE_YN = 'Y'
+				<isNotEmpty property="reserveCYn">
+					AND MG.RESERVE_C_YN = #reserveCYn#
+				</isNotEmpty>
+				)M
+				LEFT JOIN
+				(
+					SELECT
+						ADDR_PHONE_NO
+						, ADDR_NM
+					FROM
+						MJ_ADDR
+						WHERE 1=1
+						AND MBER_ID = #userId#
+					GROUP BY ADDR_PHONE_NO
+				)MA
+				ON M.CALL_TO = MA.ADDR_PHONE_NO
+				LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
+				ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY
+				AND	MKPI.DELETE_YN = 'N'
+				LEFT JOIN LETTNGNRLMBER LTM
+				ON	M.USER_ID = LTM.MBER_ID
+				LEFT JOIN BIZ_LOG BL
+				ON	M.BIZ_UMID = BL.CMID
+				WHERE 1=1 
+				<isNotEmpty property="stateType">
+					<isEqual property="stateType" compareValue="all">
+						AND CUR_STATE IN ('0','1','2','3')
+					</isEqual>
+					<isEqual property="stateType" compareValue="ready">
+						AND CUR_STATE = '0'
+						AND RESERVE_C_YN = 'N'
+					</isEqual>
+					<isEqual property="stateType" compareValue="complete">
+						AND CUR_STATE IN ('2','3')
+						AND	 RESERVE_C_YN = 'N'
+					</isEqual>
+					<isEqual property="stateType" compareValue="fail">
+						AND RESERVE_C_YN = 'N'
+						AND RSLT_CODE != '7000'
+					</isEqual>
+					<isEqual property="stateType" compareValue="cancel">
+						AND 	 RESERVE_C_YN = 'Y'
+					</isEqual>
+				</isNotEmpty>
+				<isNotEmpty property="tabType">
+					<isEqual property="tabType" compareValue="at">
+						AND M.MSG_TYPE = '8'
+					</isEqual>
+					<isEqual property="tabType" compareValue="ft">
+						AND M.MSG_TYPE = '9'
+					</isEqual>
+					<isEqual property="tabType" compareValue="all">
+						AND M.MSG_TYPE  IN ('8','9')
+					</isEqual>
+				</isNotEmpty>
+				<isEmpty property="tabType">
+						AND M.MSG_TYPE IN ('8','9')
+				</isEmpty>
+				<isNotEmpty property="searchKeyword">
+						AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
+				</isNotEmpty>
+				<isNotEmpty property="startDate">
+					<![CDATA[ 
+						AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
+					]]>
+				</isNotEmpty>
+				<isNotEmpty property="endDate">
+					<![CDATA[ 
+						AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
+					]]>
+				</isNotEmpty>
+			GROUP BY MSG_GROUP_ID
+			ORDER BY 1=1
+			<isNotEmpty property="searchSortCnd">
+				<isEqual property="searchSortCnd" compareValue="curState">
+					, curState  $searchSortOrd$
+					, orderByrsltCode
+				</isEqual>
+				<isNotEqual  property="searchSortCnd" compareValue="curState">
+					,$searchSortCnd$
+				</isNotEqual>
 			</isNotEmpty>
-			)M
-			LEFT JOIN
-			(
-				SELECT
-					ADDR_PHONE_NO
-					, ADDR_NM
-				FROM
-					MJ_ADDR
-					WHERE 1=1
-					AND MBER_ID = #userId#
-				GROUP BY ADDR_PHONE_NO
-			)MA
-			ON M.CALL_TO = MA.ADDR_PHONE_NO
-			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
-			ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY
-			AND	MKPI.DELETE_YN = 'N'
-			LEFT JOIN LETTNGNRLMBER LTM
-			ON	M.USER_ID = LTM.MBER_ID
-			LEFT JOIN BIZ_LOG BL
-			ON	M.BIZ_UMID = BL.CMID
-			WHERE 1=1 
-			<isNotEmpty property="stateType">
-				<isEqual property="stateType" compareValue="all">
-					AND CUR_STATE IN ('0','1','2','3')
-				</isEqual>
-				<isEqual property="stateType" compareValue="ready">
-					AND CUR_STATE = '0'
-					AND RESERVE_C_YN = 'N'
-				</isEqual>
-				<isEqual property="stateType" compareValue="complete">
-					AND CUR_STATE IN ('2','3')
-					AND	 RESERVE_C_YN = 'N'
-				</isEqual>
-				<isEqual property="stateType" compareValue="fail">
-					AND RESERVE_C_YN = 'N'
-					AND RSLT_CODE != '7000'
-				</isEqual>
-				<isEqual property="stateType" compareValue="cancel">
-					AND 	 RESERVE_C_YN = 'Y'
-				</isEqual>
+			<isNotEmpty property="searchSortOrd">
+				$searchSortOrd$
 			</isNotEmpty>
-			<isNotEmpty property="tabType">
-				<isEqual property="tabType" compareValue="at">
-					AND M.MSG_TYPE = '8'
-				</isEqual>
-				<isEqual property="tabType" compareValue="ft">
-					AND M.MSG_TYPE = '9'
-				</isEqual>
-				<isEqual property="tabType" compareValue="all">
-					AND M.MSG_TYPE  IN ('8','9')
-				</isEqual>
-			</isNotEmpty>
-			<isEmpty property="tabType">
-					AND M.MSG_TYPE IN ('8','9')
-			</isEmpty>
-			<isNotEmpty property="searchKeyword">
-					AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
-			</isNotEmpty>
-			<isNotEmpty property="startDate">
-				<![CDATA[ 
-					AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
-				]]>
-			</isNotEmpty>
-			<isNotEmpty property="endDate">
-				<![CDATA[ 
-					AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
-				]]>
-			</isNotEmpty>
-		GROUP BY MSG_GROUP_ID
-		ORDER BY 1=1
-		<isNotEmpty property="searchSortCnd">
-			<isEqual property="searchSortCnd" compareValue="curState">
-				, curState  $searchSortOrd$
-				, orderByrsltCode
-			</isEqual>
-			<isNotEqual  property="searchSortCnd" compareValue="curState">
-				,$searchSortCnd$
-			</isNotEqual>
-		</isNotEmpty>
-		<isNotEmpty property="searchSortOrd">
-			$searchSortOrd$
-		</isNotEmpty>
-		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+			LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+		) M2
 	</select>
 	
 </sqlMap>
(No newline at end of file)
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
@@ -572,6 +572,26 @@
 	
 	</delete>
 	
+	<delete id="MjonReservMsgDAO.deleteJJB01MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
+		
+		DELETE FROM MTMSG_B1_DATA
+		WHERE 1=1 
+		<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
+			#userDataList[]#
+		</iterate>
+	
+	</delete>
+	
+	<delete id="MjonReservMsgDAO.deleteJJB02MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
+		
+		DELETE FROM MTMSG_B2_DATA
+		WHERE 1=1 
+		<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
+			#userDataList[]#
+		</iterate>
+	
+	</delete>
+	
 	<select id="MjonReservMsgDAO.selectFileNmToAtchFileIdInfo" parameterClass="fileVO" resultClass="fileVO">
 		
 		SELECT ATCH_FILE_ID AS atchFileId,
@@ -663,6 +683,30 @@
 	
 	</update>
 	
+	<update id="MjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
+		
+		UPDATE MTMSG_B1_DATA
+		SET    INPUT_DATE = NOW() ,
+		       RES_DATE    = NOW()
+		WHERE 1=1 
+		<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
+			#userDataList[]#
+		</iterate>
+	
+	</update>
+	
+	<update id="MjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
+		
+		UPDATE MTMSG_B2_DATA
+		SET    INPUT_DATE = NOW() ,
+		       RES_DATE    = NOW()
+		WHERE 1=1 
+		<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
+			#userDataList[]#
+		</iterate>
+	
+	</update>
+	
 </sqlMap>  
 
 
src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
@@ -633,6 +633,30 @@
   			</isNotEmpty>		    
     </select>    	
     	
+    <select id="mberManageDAO.selectMberDelTypeGrpList" parameterClass="userSearchVO" resultClass="egovMap" remapResults="true">
+		SELECT 
+			M.deleteType
+			, CASE
+				WHEN M.deleteType = '01'	THEN '기업회원 전환'
+				WHEN M.deleteType = '02'	THEN '사용할 일이 없어서'
+				WHEN M.deleteType = '03'	THEN '문자 단가 높음'
+				WHEN M.deleteType = '04'	THEN '사이트 이용 불만'
+				WHEN M.deleteType = '05'	THEN '개인정보 유출 우려'
+				WHEN M.deleteType = '06'	THEN '다른 사이트 이용'
+				ELSE '해지사유 직접 입력'
+			END	deleteTypeName
+			, M.deleteTypeCnt 
+		FROM (
+			SELECT 
+				DELETE_TYPE AS deleteType
+				, COUNT(0) deleteTypeCnt 
+			FROM lettngnrlmber
+			WHERE MBER_STTUS = 'N'
+			GROUP BY DELETE_TYPE
+		) M
+		ORDER BY M.deleteTypeCnt DESC
+    </select>
+        	
 	<select id="mberManageDAO.selectEmailSendMberList" parameterClass="userSearchVO" resultClass="egovMap" remapResults="true">
 		SELECT
 			MBER_ID               userId
@@ -729,7 +753,8 @@
 		       A.SMISHING_YN smishingYn,
 		       A.VIP_YN vipYn,
 		       A.EXCEPT_SPAM_YN AS exceptSpamYn,
-		       A.HOTLINE_AGENT_CODE AS hotlineAgentCode
+		       A.HOTLINE_AGENT_CODE AS hotlineAgentCode,
+		       A.AT_SMISHING_YN atSmishingYn
 		FROM   LETTNGNRLMBER A
 		       LEFT JOIN MJ_CANDIDATE_INFO MCI
 		       ON     A.MBER_ID = MCI.MBER_ID
src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
@@ -1328,6 +1328,15 @@
 		WHERE  MBER_ID = #mberId#
     </select> 
     	
+    <select id="userManageDAO.selectAtSmishingYnUserInfo" parameterClass="userVO" resultClass="userVO">
+    	SELECT 
+	    	MBER_ID AS mberId, 
+			MBER_NM AS mberNm,
+    		AT_SMISHING_YN AS atSmishingYn
+		FROM   LETTNGNRLMBER
+		WHERE  MBER_ID = #mberId#
+    </select> 
+        	
 	<update id="userManageDAO.updateUserSmishingYn" parameterClass="userVO">
 		UPDATE
 			LETTNGNRLMBER
@@ -1337,6 +1346,15 @@
 			AND MBER_ID			= #mberId#
 	</update>
 		
+	<update id="userManageDAO.updateUserAtSmishingYn" parameterClass="userVO">
+		UPDATE
+			LETTNGNRLMBER
+		SET  
+			AT_SMISHING_YN	= #atSmishingYn#
+		WHERE 1=1
+			AND MBER_ID			= #mberId#
+	</update>
+			
 	<update id="userManageDAO.updateUserPrePaymentYn" parameterClass="userVO">
 		UPDATE
 			LETTNGNRLMBER
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
@@ -1182,6 +1182,45 @@
 	}
 	
 }
+
+//알림톡 스미싱의심 여부
+function fnMberAtSmishingYn(){
+	var form = document.mberManageVO;
+	var atSmishingYn = form.atSmishingYn.value;
+	
+	if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){
+		
+		$.ajax({
+	        type: "POST",
+	        url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do",
+	        data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"},
+	        dataType:'json',
+	        async: false,
+	        success: function (data, status) {
+				if (data.isSuccess) {
+					alert("변경 완료했습니다.");
+				}
+				else {
+					alert(data.msg);
+				}
+			},
+	        beforeSend: function () {
+	        	//로딩창 show
+	        	$('.loading_layer').addClass('active');
+	        }, 
+	        complete: function () {
+	        	//로딩창 hide
+	        	$('.loading_layer').removeClass('active');
+	        },
+	        error: function (e) { 
+	        	alert("에러가 발생했습니다."); console.log("ERROR : ", e); 
+	        }
+	    });
+		
+	}
+	
+}
+
 // VIP 여부
 function fnMberVIPYn(){
 	var form = document.mberManageVO;
@@ -1230,7 +1269,7 @@
 		$.ajax({
 	        type: "POST",
 	        url: "/uss/umt/user/EgovGnrlUpdateUserHotlineAgentCodeAjax.do",
-	        data: {"hotlineAgentCode" : hotlineAgentCode, "mberId" : "${mberManageVO.mberId}"},
+	        data: {"hotlineAgentCode" : hotlineAgentCode, "mberId" : "${mberManageVO.mberId}", "hotlineAgentName" : $("select[name=hotlineAgentCode] option:selected").text()},
 	        dataType:'json',
 	        async: false,
 	        success: function (data, status) {
@@ -2535,6 +2574,20 @@
 												</select>
 											</td>											
 										</tr>
+										<%-- 
+										<tr>
+											<th>스미싱 의심(카톡)</th>
+											<td>
+												<select name="atSmishingYn" id="atSmishingYn" style="width:150px;" onFocus='this.initialSelect = this.selectedIndex;' onChange="javascript:fnMberAtSmishingYn();">
+													<option value="Y" <c:if test="${mberManageVO.atSmishingYn == 'Y'}">selected="selected"</c:if>>온(On)</option>
+													<option value="N" <c:if test="${mberManageVO.atSmishingYn == 'N'}">selected="selected"</c:if>>오프(Off)</option>
+												</select>
+											</td>
+											<th></th>
+											<td>
+											</td>											
+										</tr>
+										--%>																				
 										<tr>
 											<th>전용 전송사</th>
 											<td>
@@ -2969,6 +3022,20 @@
 												</select>
 											</td>											
 										</tr>
+										<%-- 
+										<tr>
+											<th>스미싱 의심(카톡)</th>
+											<td>
+												<select name="atSmishingYn" id="atSmishingYn" style="width:150px;" onFocus='this.initialSelect = this.selectedIndex;' onChange="javascript:fnMberAtSmishingYn();">
+													<option value="Y" <c:if test="${mberManageVO.atSmishingYn == 'Y'}">selected="selected"</c:if>>온(On)</option>
+													<option value="N" <c:if test="${mberManageVO.atSmishingYn == 'N'}">selected="selected"</c:if>>오프(Off)</option>
+												</select>
+											</td>
+											<th></th>
+											<td>
+											</td>											
+										</tr>
+										--%>										
 										<tr>
 											<th>전용 전송사</th>
 											<td>
@@ -4810,27 +4877,27 @@
 					<tbody>
 						<tr>
 							<th>단문 금액</th>
-							<td><input type="text" name="shortPrice" id="shortPrice" value="<c:out value='${mberManageVO.shortPrice}'/>"/></td>
+							<td><input type="text" name="shortPrice" id="shortPrice" value="<c:out value='${shortPrice}'/>"/></td>
 						</tr>
 						<tr>
 							<th>장문 금액</th>
-							<td><input type="text" name="longPrice" id="longPrice" value="<c:out value='${mberManageVO.longPrice}'/>"/></td>
+							<td><input type="text" name="longPrice" id="longPrice" value="<c:out value='${longPrice}'/>"/></td>
 						</tr>
 						<tr>
 							<th>그림1장 금액</th>
-							<td><input type="text" name="picturePrice" id="picturePrice" value="<c:out value='${mberManageVO.picturePrice}'/>"/></td>
+							<td><input type="text" name="picturePrice" id="picturePrice" value="<c:out value='${picturePrice}'/>"/></td>
 						</tr>
 						<tr>
 							<th>그림2장 금액</th>
-							<td><input type="text" name="picture2Price" id="picture2Price" value="<c:out value='${mberManageVO.picture2Price}'/>"/></td>
+							<td><input type="text" name="picture2Price" id="picture2Price" value="<c:out value='${picture2Price}'/>"/></td>
 						</tr>
 						<tr>
 							<th>그림3장 금액</th>
-							<td><input type="text" name="picture3Price" id="picture3Price" value="<c:out value='${mberManageVO.picture3Price}'/>"/></td>
+							<td><input type="text" name="picture3Price" id="picture3Price" value="<c:out value='${picture3Price}'/>"/></td>
 						</tr>
 						<tr>
 							<th>알림톡 금액</th>
-							<td><input type="text" name="kakaoAtPrice" id="kakaoAtPrice" value="<c:out value='${mberManageVO.kakaoAtPrice}'/>"/></td>
+							<td><input type="text" name="kakaoAtPrice" id="kakaoAtPrice" value="<c:out value='${kakaoAtPrice}'/>"/></td>
 						</tr>
 					</tbody>
 				</table>
@@ -4854,7 +4921,7 @@
 					<tbody>
 						<tr>
 							<th>팩스 금액</th>
-							<td><input type="text" name="faxPrice" id="faxPrice" value="<c:out value='${mberManageVO.faxPrice}'/>"/></td>
+							<td><input type="text" name="faxPrice" id="faxPrice" value="<c:out value='${faxPrice}'/>"/></td>
 						</tr>
 					</tbody>
 				</table>
src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
@@ -295,8 +295,8 @@
 	
 }
 
-//스미싱의심 온/오프
-function fnSmishingUpdate(flag) {
+//알림톡 스미싱의심 온/오프
+function fnAtSmishingUpdate(flag) {
 	if($("input:checkbox[name='checkField']").is(":checked")==false){
 		alert("선택된 항목이 없습니다.");
 		return;
@@ -322,15 +322,15 @@
     if(checkedIds.length > 0) {
     	var msg = "";
 		if(flag == 'on') {
-			document.listForm.smishingYn.value='Y';
-			msg = "선택하신 사용자의 스미싱의심을 On 하시겠습니까?";
+			document.listForm.atSmishingYn.value='Y';
+			msg = "선택하신 사용자의 알림톡 스미싱의심을 On 하시겠습니까?";
 		} else {
-			document.listForm.smishingYn.value='N';
-			msg = "선택하신 사용자의 스미싱의심을 Off 하시겠습니까?";
+			document.listForm.atSmishingYn.value='N';
+			msg = "선택하신 사용자의 알림톡 스미싱의심을 Off 하시겠습니까?";
 		}
         if(confirm(msg)){
             document.listForm.checkedIdForDel.value=checkedIds;
-            document.listForm.action = "<c:url value='/uss/ion/msg/MsgUsersSmishingUpdate.do'/>";
+            document.listForm.action = "<c:url value='/uss/ion/msg/MsgUsersAtSmishingUpdate.do'/>";
             document.listForm.submit();
         }
     }
@@ -369,7 +369,7 @@
 	<input type="hidden" name="ntceEndde" id="ntceEndde"  value="">
 	<input type="hidden" name="adminSmsNoticeYn" value=""/>
 	<input name="checkedIdForDel" type="hidden" />
-	<input type="hidden" name="smishingYn" value=""/>
+	<input type="hidden" name="atSmishingYn" value=""/>
 	
 	<div class="contWrap">
 		<div class="pageTitle">
@@ -506,7 +506,7 @@
 								<c:out value="${result.yellowId}"/>							
 		                    </td>				
 							
-							<%-- <td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">class="smishing" style="cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
+							<%-- <td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.atSmishingYn eq 'Y'}">class="atSmishingYn" style="cursor:pointer;"</c:if><c:if test="${result.atSmishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
 								<c:out value="${result.callFrom}"/>
 							</td> --%>
 								
@@ -552,7 +552,7 @@
 								<c:out value="${result.msgTypeName}"/>
 							</td>
 							<%-- <td><c:out value="${result.conectMthdTxt}"/></td> --%>
-							<%-- <td <c:if test="${result.smishingYn eq 'Y'}">class="smishing"</c:if>>
+							<%-- <td <c:if test="${result.atSmishingYn eq 'Y'}">class="atSmishingYn"</c:if>>
 								<c:out value="${result.agentCodeTxt}"/>
 							</td> --%>
 							<%-- <td><c:out value="${result.rsltNet}"/></td> --%>
@@ -565,10 +565,10 @@
 				</table>
 			</div>
 			<div class="btnWrap" style="margin-bottom: 15px;">
-				<!-- <input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmsNotiUpdate('on'); return false;" value="법인폰 ON">
-				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmsNotiUpdate('off'); return false;" value="법인폰 OFF">
-				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmishingUpdate('on'); return false;" value="스미싱 ON">
-				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmishingUpdate('off'); return false;" value="스미싱 OFF"> -->
+			<!--  
+				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('on'); return false;" value="알림톡 스미싱 ON">
+				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('off'); return false;" value="알림톡 스미싱 OFF">
+			-->
 			</div>
 			
 			<!-- 페이지 네비게이션 시작 -->
src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgSendStatistics.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgSendStatistics.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgSendStatistics.jsp
@@ -212,7 +212,7 @@
 			<div class="tableWrap">
 				<table class="tbType1">
 					<colgroup>
-						<col style="width:4%;">
+						<col style="width:5%;">
 						<col style="width:3%;">
 						<col style="width:auto;">
 					</colgroup>
src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
@@ -77,11 +77,11 @@
 		<table class="tType4">
 			<colgroup>
 				<col style="width: 40px;">
-				<col style="width: 16%;">
-				<col style="width: 12%;">
+				<col style="width: 14%;">
+				<col style="width: 7%;">
 				<col style="width: 10%;">
+				<col style="width: 18%;">
 				<col style="width: 12%;">
-				<col style="width: 13%;">
 				<col style="width: 10%;">
 				<col style="width: 12%;">
 				<col style="width: 7%;">
src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentSFDetailListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentSFDetailListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentSFDetailListAjax.jsp
@@ -97,6 +97,7 @@
 	<input type="hidden" id="pageIndex" name="pageIndex" value=""/>
 	<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
 	<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
+	<input type="hidden" id="msgGroupId" name="msgGroupId" value="${kakaoSentVO.msgGroupId}"/>
 </form>
 
  
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
@@ -451,6 +451,14 @@
 
 $(document).ready(function (){
 	
+	// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
+	var blineCodeYn = $("#blineCode").val();
+	if(blineCodeYn != 'N' && blineCodeYn != ''){
+		$('input[name="send_adYn"]').val(['Y']);
+		$(".send_adYnN").css('display', 'none');
+		advMsgInsert();
+	}
+	
 	//미리보기 이미지 영역 숨김 처리
 	$('.preiew_img').hide();
 	$('.prePhoto').hide();
@@ -1496,6 +1504,13 @@
 		
 		//일반문자 라이오 선택해 주기
 		$("#send_adYnN").prop("checked", true);
+		
+		// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
+		var blineCodeYn = $("#blineCode").val();
+		if(blineCodeYn != 'N' && blineCodeYn != ''){
+			$('input[name="send_adYn"]').val(['Y']);
+			$(".send_adYnN").css('display', 'none');
+		}
 		
 		$('.delLi').each(function(){
 			
@@ -2948,6 +2963,14 @@
 		return false;
 	}
 	
+	var blineCodeYn = $("#blineCode").val();
+	if(blineCodeYn != 'N'){
+		if(!blineSendCheck(blineCodeYn)){	//문자온 conf-check
+			alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요.");
+			return false;
+		}
+	}
+	
 	//MJ_MSG_GROUP_DATA 누락데이터 체크
 	//if (getMsgGroupDataErrorCheck() == false) {
 	//	alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요.");
@@ -3496,7 +3519,8 @@
 		<input type="hidden" id="evnShortMsgCnt" name="evnShortMsgCnt" value="0"/><!-- 치환 이벤트 단문 건수 -->
 		<input type="hidden" id="evnLongMsgCnt" name="evnLongMsgCnt" value="0"/><!-- 치환 이벤트 장문 건수 -->
 		
-
+		<input type="hidden" id="blineCode" name="blineCode" value="<c:out value="${blineCode}"/>"/>
+		
 	<!-- <div class="top_content current" id="tab1_1"> -->
 	    <div class="heading">
 	        <h2>문자전송</h2>
@@ -3525,8 +3549,8 @@
 	                    <tr>
 	                        <th scope="row">문자분류</th>
 	                        <td class="send_cf">
-	                            <input id="send_adYnN" type="radio"name="send_adYn" value="N" checked="checked">
-	                            <label for="send_adYnN">일반</label>
+	                            <input class="send_adYnN" id="send_adYnN" type="radio"name="send_adYn" value="N" checked="checked">
+	                            <label class="send_adYnN" for="send_adYnN">일반</label>
 	                            <input id="send_adYnY" type="radio" name="send_adYn" value="Y">
 	                            <label for="send_adYnY">광고</label>
 	                        </td>
src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
@@ -857,7 +857,28 @@
 	
 	return confCheck;
 }
-
+function blineSendCheck(blineCode) {
+	
+	var confCheck = false;
+	
+	$.ajax({
+		type: "POST",
+		url: "/web/mjon/conf/selectBlineSendCheckAjax.do",
+		data: {"agentCode":blineCode},
+		dataType:'json',
+		async: false,
+		success: function (returnData, status) {
+			if(returnData.result == "fail") {
+				console.log(returnData.message);
+			}else if(returnData.result == "success"){
+				confCheck = true;
+			}
+		}
+		,error: function (e) {console.log("ERROR : ", e); }
+	});	
+	
+	return confCheck;
+}
 
 //문자발송 처리 함수
 function fn_sendMsgData(){
@@ -905,6 +926,15 @@
 		
 	}
 
+	
+	var blineCodeYn = $("#blineCode").val();
+	if(blineCodeYn != 'N'){
+		if(!blineSendCheck(blineCodeYn)){	//문자온 conf-check
+			alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요.");
+			return false;
+		}
+	}
+	
 	//MJ_MSG_GROUP_DATA 누락데이터 체크
 	//if (getMsgGroupDataErrorCheck() == false) {
 	//	alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요.");
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
@@ -595,8 +595,17 @@
 
 $(document).ready(function (){
 	
+	// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
+	var blineCodeYn = $("#blineCode").val();
+	if(blineCodeYn != 'N' && blineCodeYn != ''){
+		$('input[name="send_adYn"]').val(['Y']);
+		$(".send_adYnN").css('display', 'none');
+		advMsgInsert();
+	}
+	
 	$('.bottom_content .area_total_count').hide();
 	
+	//미리보기 이미지 영역 숨김 처리
 	$('.preiew_img').hide();
 	$('.prePhoto').hide();
 	
@@ -1685,6 +1694,13 @@
 		//일반문자 라이오 선택해 주기
 		$("#send_adYnN").prop("checked", true);
 		
+		// Bline 확연 및 라디오 버튼 클릭 이벤트 추가
+		var blineCodeYn = $("#blineCode").val();
+		if(blineCodeYn != 'N' && blineCodeYn != ''){
+			$('input[name="send_adYn"]').val(['Y']);
+			$(".send_adYnN").css('display', 'none');
+		}
+		
 		$('.delLi').each(function(){
 			
 			$(this).remove();
@@ -2675,6 +2691,13 @@
 		return false;
 	}
 	
+	var blineCodeYn = $("#blineCode").val();
+	if(blineCodeYn != 'N'){
+		if(!blineSendCheck(blineCodeYn)){	//문자온 conf-check
+			alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요.");
+			return false;
+		}
+	}
 	//MJ_MSG_GROUP_DATA 누락데이터 체크
 	//if (getMsgGroupDataErrorCheck() == false) {
 	//	alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요.");
@@ -3014,6 +3037,8 @@
 		<input type="hidden" id="evnShortMsgCnt" name="evnShortMsgCnt" value="0"/><!-- 치환 이벤트 단문 건수 -->
 		<input type="hidden" id="evnLongMsgCnt" name="evnLongMsgCnt" value="0"/><!-- 치환 이벤트 장문 건수 -->
 		
+		<input type="hidden" id="blineCode" name="blineCode" value="<c:out value="${blineCode}"/>"/>
+		
 <!-- <div class="top_content get_excel" id="tab1_2"> -->
 	<div class="heading">
         <h2>대량문자/단체문자 전송</h2>
@@ -3043,8 +3068,8 @@
                         <tr>
                             <th scope="row">문자분류</th>
                             <td class="send_cf">
-                                <input id="send_adYnN" type="radio"name="send_adYn" value="N" checked="checked">
-	                            <label for="send_adYnN">일반</label>
+                                <input class="send_adYnN" id="send_adYnN" type="radio"name="send_adYn" value="N" checked="checked">
+	                            <label class="send_adYnN" for="send_adYnN">일반</label>
 	                            <input id="send_adYnY" type="radio" name="send_adYn" value="Y">
 	                            <label for="send_adYnY">광고</label>
                             </td>
src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp
@@ -471,6 +471,29 @@
 	return confCheck;
 }
 
+function blineSendCheck(blineCode) {
+	
+	var confCheck = false;
+	
+	$.ajax({
+		type: "POST",
+		url: "/web/mjon/conf/selectBlineSendCheckAjax.do",
+		data: {"agentCode":blineCode},
+		dataType:'json',
+		async: false,
+		success: function (returnData, status) {
+			if(returnData.result == "fail") {
+				console.log(returnData.message);
+			}else if(returnData.result == "success"){
+				confCheck = true;
+			}
+		}
+		,error: function (e) {console.log("ERROR : ", e); }
+	});	
+	
+	return confCheck;
+}
+
 //문자발송 처리 함수
 function fn_sendMsgData(){
 	
@@ -515,6 +538,14 @@
 		
 	}
 	
+	var blineCodeYn = $("#blineCode").val();
+	if(blineCodeYn != 'N'){
+		if(!blineSendCheck(blineCodeYn)){	//문자온 conf-check
+			alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요.");
+			return false;
+		}
+	}
+	
 	//MJ_MSG_GROUP_DATA 누락데이터 체크
 	//if (getMsgGroupDataErrorCheck() == false) {
 	//	alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요.");
src/main/webapp/WEB-INF/jsp/web/pay/PayEstimate.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayEstimate.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayEstimate.jsp
@@ -170,7 +170,16 @@
 										</c:otherwise>
 									</c:choose>
                                 </td>
-                                <td><fmt:formatNumber value="${sList.caseNumber}" pattern=""/></td>
+                                <td>
+									<c:choose>
+										<c:when test="${sList.smsItemName eq '팩스'}">
+											<fmt:formatNumber value="${sList.caseNumber * sList.casePage}" pattern=""/> 
+										</c:when>
+										<c:otherwise>
+											<fmt:formatNumber value="${sList.caseNumber}" pattern=""/>
+										</c:otherwise>
+									</c:choose>                                
+                                </td>
                                 <td><c:out value="${sList.supplyPrice}"/></td>
                                 <td><c:out value="${sList.vatPrice}"/></td>
                                 <td><c:out value="${sList.totPrice}"/></td>
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
@@ -176,7 +176,12 @@
 		else {
 			sHtml += "    <div>" + element.unitPrice + "</div>";	
 		}
-		sHtml += "    <div>" + numberWithCommas(element.caseNumber) + "</div>";
+		if(element.smsItemName.includes('팩스')){
+			sHtml += "    <div>" + numberWithCommas(element.caseNumber * element.casePage) + "</div>";
+		}
+		else {
+			sHtml += "    <div>" + numberWithCommas(element.caseNumber) + "</div>";
+		}
 		sHtml += "    <div>" + numberWithCommas(element.supplyPrice) + "</div>";
 		sHtml += "    <div>" + numberWithCommas(element.vatPrice) + "</div>";
 		sHtml += "    <div>" + numberWithCommas(element.totVatPrice) + "</div>";
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoAllListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoAllListAjax.jsp
@@ -71,10 +71,10 @@
 		<table class="tType4">
 			<colgroup>
 				<col style="width: 40px;">
+				<col style="width: 8%;">
+				<col style="width: 13%;">
+				<col style="width: 13%;">
 				<col style="width: 7%;">
-				<col style="width: 11.5%;">
-				<col style="width: 11.5%;">
-				<col style="width: 10%;">
 				<col style="width: 90px;">
 				<col style="width: 8%;">
 				<col style="width: 10%;">
@@ -92,9 +92,6 @@
 						<input type="checkbox" id="allCheck" name="allCheck">
 					</th>
 					<th rowspan="2">발송상태
-						<div class="sort_wrap">
-							<input type="button" class="sort sortBtn" id="sort_shipmentStatus">
-						</div>
 					</th>
 					<th rowspan="2">
 						접수일자
src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab1.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab1.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab1.jsp
@@ -209,6 +209,11 @@
 							<td>성공 건수</td>
 							<td>String</td>
 						</tr>
+						<tr>
+							<th>[data].test_yn</th>
+							<td>테스트 데이터 여부</td>
+							<td>String</td>
+						</tr>
 					</tbody>
 				</table>
 
@@ -233,10 +238,12 @@
 											    <p>, "data":[</p>
 											    <div>
 												    <p>"msgGroupId":"MSGGID_0000000000000"</p>
-												    <p>, "msgType":"4"</p>
+												    <p>, "msgType":"SMS"</p>
+												    <p>, "resultCode":"0"</p>
 												    <p>, "blockCnt":"0"</p>
 												    <p>, "failCnt":"0"</p>
 												    <p>, "successCnt":"3"</p>
+												    <p>, "test_yn":null</p>
 											    </div>
 											    <p>]</p>
 											}
src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab2.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab2.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab2.jsp
@@ -219,6 +219,11 @@
 							<td>성공 건수</td>
 							<td>String</td>
 						</tr>
+						<tr>
+							<th>[data].test_yn</th>
+							<td>테스트 데이터 여부</td>
+							<td>String</td>
+						</tr>
 					</tbody>
 				</table>
 
@@ -239,20 +244,30 @@
 	                                <tr>
 	                                    <td class="padding_add">
 								            {
-											    <p>"resultCode":"0"</p>
-											    <p>, "data":[</p>
-											    <div>
-												    <p>"msgGroupIdList":[</p>
-												    <p>&nbsp;&nbsp;&nbsp; 0:"MSGGID_0000000000000"</p>
-												    <p>&nbsp;&nbsp;&nbsp; 1:"MSGGID_0000000000001"</p>
-												    <p>&nbsp;&nbsp;&nbsp; 2:"MSGGID_0000000000002"</p>
-												    <p>]</p>
-												    <p>, "msgType":"LMS"</p>
-												    <p>, "blockCnt":"0"</p>
-												    <p>, "failCnt":"0"</p>
-												    <p>, "successCnt":"3"</p>
-											    </div>
-											    <p>]</p>
+											    <p>&emsp;"resultCode":"0"</p>
+											    <p>&emsp;, "data":[</p>
+											    <p>&emsp;&emsp;"msgGroupIdList":[</p>
+											    <p>&emsp;&emsp;&emsp;{</p>
+											    <p>&emsp;&emsp;&emsp;&emsp;"MSGGID_0000000013451"</p>
+											    <p>&emsp;&emsp;&emsp;}</p>
+											    <p>&emsp;&emsp;&emsp;,{</p>
+											    <p>&emsp;&emsp;&emsp;&emsp;"MSGGID_0000000013452"</p>
+											    <p>&emsp;&emsp;&emsp;}</p>
+											    <p>&emsp;&emsp;]</p>
+											    <p>&emsp;&emsp;,"msgTypeList":[</p>
+											    <p>&emsp;&emsp;&emsp;{</p>
+											    <p>&emsp;&emsp;&emsp;&emsp;"SMS"</p>
+											    <p>&emsp;&emsp;&emsp;}</p>
+											    <p>&emsp;&emsp;&emsp;,{</p>
+											    <p>&emsp;&emsp;&emsp;&emsp;"SMS"</p>
+											    <p>&emsp;&emsp;&emsp;}</p>
+											    <p>&emsp;&emsp;]</p>
+											    <p>&emsp;&emsp;,"resultCode":"0"</p>
+											    <p>&emsp;&emsp;,"successCnt":"2"</p>
+											    <p>&emsp;&emsp;,"failCnt":"0"</p>
+											    <p>&emsp;&emsp;,"blockCnt":"0"</p>
+											    <p>&emsp;&emsp;,"test_yn":null</p>
+											    <p>&emsp;]</p>
 											}
 										</td>
 	                                </tr>
src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab3.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab3.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab3.jsp
@@ -4,11 +4,15 @@
 			
 				<p class="tType1_title">전송내역조회</p>
 				<span class="reqTxt4">
-					동일한 내용의 문자를 컴마(,)로 분기하여 동시 1천명에게 전송하실 수 있습니다.
+					최근 요청 및 처리된 전송내역을 조회하실 수 있습니다.
 					</br>
-					발신번호는 사이트내에서 미리 등록된 번호만 사용하실 수 있습니다.
+					사이트 내 전송결과 조회 페이지와 동일한 내역이 조회되며, 날짜 기준으로 조회가 가능합니다.
 					</br>
-					90byte를 초과하는 메시지 발송 시 LMS(첨부파일 없는 MMS) 형태로 자동 전환됩니다.
+					발신번호별 조회 기능은 제공이 되지 않습니다.
+					</br>
+					조회 시작일을 지정하실 수 있으며, 시작일 이전 며칠까지 조회할지 설정이 가능합니다.
+					</br>
+					조회 시 최근 발송내역 순서로 소팅됩니다.
 				</span>
 				</br>
 				</br>
@@ -103,7 +107,7 @@
 							<th>startDate</th>
 							<td>시작일자</td>
 							<td>String</td>
-							<td>O</td>
+							<td>X</td>
 						</tr>
 						<tr>
 							<th>endDate</th>
@@ -119,7 +123,6 @@
 						</tr>
 					</tbody>
 				</table>
-				<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 2Byte, 영문·숫자 1Byte를 차지.</span>
 	            
 	            
 				<ul class="clause_list">
@@ -138,13 +141,13 @@
 	                                <tr>
 	                                    <td class="padding_add">
 								            {<br />
-											    <p>"mberId":"String"</p>
-											    <p>,"accessKey":"String"</p>
-											    <p>,"page":"String"</p>
-											    <p>,"pageSize":"String"</p>
-											    <p>,"startDate":"String"</p>
-											    <p>,"endDate":"String"</p>
-											    <p>,"test_yn":"( YS | YF )"</p>
+											    <p>"mberId":"홍길동"</p>
+											    <p>,"accessKey":"XXXXXXXXXXXXXX414050694b953"</p>
+											    <p>,"page":""</p>
+											    <p>,"pageSize":""</p>
+											    <p>,"startDate":""</p>
+											    <p>,"endDate":""</p>
+											    <p>,"test_yn":""</p>
 											}
 										</td>
 	                                </tr>
@@ -186,8 +189,28 @@
 							<td>Object</td>
 						</tr>
 						<tr>
+							<th>[data].message</th>
+							<td>문자</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].next_yn</th>
+							<td>다음 페이지 여부</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].objectList</th>
+							<td>결과값 목록</td>
+							<td>Object List</td>
+						</tr>
+						<tr>
 							<th>[data].msgGroupId</th>
 							<td>메세지 그룹 ID</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].msgId</th>
+							<td>메세지 ID</td>
 							<td>String</td>
 						</tr>
 						<tr>
@@ -206,8 +229,8 @@
 							<td>String</td>
 						</tr>
 						<tr>
-							<th>[data].msgGroupCnt</th>
-							<td>문자 발송 건수</td>
+							<th>[data].callTo</th>
+							<td>수신자 번호</td>
 							<td>String</td>
 						</tr>
 						<tr>
@@ -304,32 +327,65 @@
 	                            <tbody>
 	                                <tr>
 	                                    <td class="padding_add">
-								            {
-											    <p>"resultCode":"0"</p>
-											    <p>, "data":[</p>
-											    <div>
-												    <p>"msgGroupId":"MSGGID_0000000000000"</p>
-												    <p>, "msgTypeName":"단문(SMS)"</p>
-												    <p>, "msgType":"4"</p>
-												    <p>, "callFrom":"01011112222"</p>
-												    <p>, "msgGroupCnt":"2"</p>
-												    <p>, "sCnt":"2"</p>
-												    <p>, "fCnt":"0"</p>
-												    <p>, "wCnt":"0"</p>
-												    <p>, "msgResult":"S"</p>
-												    <p>, "smsTxt":"문자 내용"</p>
-												    <p>, "subject":""</p>
-												    <p>, "reqdate":"2023-04-05 00:00:00"</p>
-												    <p>, "curState":"3"</p>
-												    <p>, "userId":"testuser"</p>
-												    <p>, "regdate":"3"</p>
-												    <p>, "successCnt":"2023-04-04 16:10:19"</p>
-												    <p>, "reserveCYn":"N"</p>
-												    <p>, "ttlCnt":"4"</p>
-												    <p>, "remainMsgCnt":"0"</p>
-												    <p>, "totMsgCnt":"3"</p>
-											    </div>
-											    <p>]</p>
+											{
+											<p>&emsp;"resultCode":"0"</p>
+											<p>&emsp;, "data":[</p>
+											<p>&emsp;&emsp;{</p>
+											<p>&emsp;&emsp;&emsp;"resultCode":"0"</p>
+											<p>&emsp;&emsp;&emsp;, "message": null</p>
+											<p>&emsp;&emsp;&emsp;, "next_yn":"n"</p>
+											<p>&emsp;&emsp;&emsp;, "msgGroupId":"MSGGID_0000000000000"</p>
+											<p>&emsp;&emsp;&emsp;, "objectList":[</p>
+											<p>&emsp;&emsp;&emsp;&emsp;{</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;"msgTypeName":"단문(SMS)"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgType":"4"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callFrom":"01011112222"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callTo":"01011112223"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupCnt":"2"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupId":"MSGGID_0000000013340"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgId":"MSGID_0000000000001"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"scnt":"2"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"fcnt":"0"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"wcnt":"0"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgResult":"S"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"smsTxt":"문자 내용 단문 예제"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"subject":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reqdate":"2023-06-13 17:48:07"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"curState":"3"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"userId":"testuser"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"regdate":"2023-06-13 17:48:07"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reserveCYn":"N"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"ttlCnt":"1"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"remainMsgCnt":40"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"totMsgCnt":"70"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;}</p>
+											<p>&emsp;&emsp;&emsp;&emsp;, {</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;"msgTypeName":"장문(LMS)"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgType":"6"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callFrom":"01011112222"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callTo":"01011112223"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupCnt":"1"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupId":"MSGGID_0000000013341"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgId":"MSGID_0000000000002"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"scnt":"1"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"fcnt":"0"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"wcnt":"0"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgResult":"S"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"smsTxt":"문자 내용 장문 예제"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"subject":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reqdate":"2023-06-02 11:46:50"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"curState":"3"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"userId":"testuser"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"regdate":"2023-06-02 11:46:49"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reserveCYn":"N"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"ttlCnt":"1"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"remainMsgCnt":"40"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"totMsgCnt":"70"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;}</p>
+											<p>&emsp;&emsp;&emsp;]</p>
+											
+											<p>&emsp;&emsp;}</p>
+											<p>&emsp;]</p>
 											}
 										</td>
 	                                </tr>
@@ -355,8 +411,8 @@
 	                                <tr>
 	                                    <td class="padding_add">
 								            {
-											    <p>"resultCode":"1040"</p>
-											    <p>,"data":"치환 데이터 오류"</p>
+											    <p>"resultCode":"3099"</p>
+											    <p>,"data":"기타 시스템 오류"</p>
 											}
 										</td>
 	                                </tr>
src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab4.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab4.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab4.jsp
@@ -4,16 +4,18 @@
 			
 				<p class="tType1_title">전송결과조회(상세)</p>
 				<span class="reqTxt4">
-					동일한 내용의 문자를 컴마(,)로 분기하여 동시 1천명에게 전송하실 수 있습니다.
+					msgGroupId를 사용하여 수신번호별 상태를 조회하실 수 있습니다.
 					</br>
-					발신번호는 사이트내에서 미리 등록된 번호만 사용하실 수 있습니다.
+					수신 전화번호별 전송상태를 조회하실 수 있으며 목록에 없거나 전송 중인 문자는 만 24시간 동안 전송 시도 중인 것입니다.
 					</br>
-					90byte를 초과하는 메시지 발송 시 LMS(첨부파일 없는 MMS) 형태로 자동 전환됩니다.
+					최종 24시간이 경과 후 조회하셔야 완료된 내역을 확인하실 수 있습니다.
 				</span>
 				</br>
 				</br>
 				
-				
+				<p class="tType1_title">
+					<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> [Request]
+				</p>
 				<ul class="clause_list">
 	                <li class="list_open on">
 	                    <div class="clause_list_head">
@@ -53,9 +55,6 @@
 	            	HTTPS 프로토콜을 사용하여 POST로 요청합니다. 
 	            </span>
 	            
-				<p class="tType1_title">
-					<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자
-				</p>
 				<table class="tType2">
 					<caption></caption>
 					<colgroup>
@@ -86,26 +85,20 @@
 							<td>O</td>
 						</tr>
 						<tr>
-							<th>callFrom</th>
-							<td>발신자 번호 (아이디에 등록되어 있는 번호)</td>
+							<th>msgGroupId</th>
+							<td>메시지그룹 ID</td>
 							<td>String</td>
 							<td>O</td>
 						</tr>
 						<tr>
-							<th>callToList</th>
-							<td>수신자 번호 (콤마(,) 기준으로 입력)</td>
+							<th>page</th>
+							<td>페이지 번호</td>
 							<td>String</td>
-							<td>O</td>
+							<td>X</td>
 						</tr>
 						<tr>
-							<th>smsTxt</th>
-							<td>메세지 내용</td>
-							<td>String (1~2,000Byte)</td>
-							<td>O</td>
-						</tr>
-						<tr>
-							<th>nameStr</th>
-							<td>메세지 내용에 [*이름*]이 있으면 치환용 이름 입력</td>
+							<th>pageSize</th>
+							<td>페이지당 출력개수</td>
 							<td>String</td>
 							<td>X</td>
 						</tr>
@@ -117,7 +110,6 @@
 						</tr>
 					</tbody>
 				</table>
-				<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 2Byte, 영문·숫자 1Byte를 차지.</span>
 	            
 	            
 				<ul class="clause_list">
@@ -136,14 +128,276 @@
 	                                <tr>
 	                                    <td class="padding_add">
 								            {<br />
-											    <p>"mberId":"String"</p>
-											    <p>,"accessKey":"String"</p>
-											    <p>,"callFrom":"String"</p>
-											    <p>,"callToList":"String"</p>
-											    <p>,"smsTxt":"String"</p>
-											    <p>,"nameStr":"String"</p>
-											    <p>,"callFrom":"String"</p>
-											    <p>,"test_yn":"( YS | YF )"</p>
+											    <p>"mberId":"홍길동"</p>
+											    <p>,"accessKey":"XXXXXXXXXXXXXX414050694b953"</p>
+											    <p>,"msgGroupId":"MSGGID_0000000011452"</p>
+											    <p>,"page":""</p>
+											    <p>,"pageSize":""</p>
+											    <p>,"test_yn":""</p>
+											}
+										</td>
+	                                </tr>
+	                            </tbody>
+	                        </table> 
+	                    </div>
+	                </li>
+	            </ul>
+				<p class="tType1_title">
+					<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> [Response]
+				</p>
+	            <span class="reqTxt4">
+	            	JSON 객체로 응답 합니다.
+	            </span>
+				<table class="tType2">
+					<caption></caption>
+					<colgroup>
+						<col style="width: 13%;">
+						<col style="width: auto;">
+						<col style="width: 20%;">
+					</colgroup>
+					<thead>
+						<tr>
+							<th>키</th>
+							<th>설명</th>
+							<th>타입</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<th>resultCode</th>
+							<td>성공 여부 ( "0" 아니면 실패 )</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>data</th>
+							<td>결과값 객체 ( 성공 : 데이터, 실패 : 메세지 )</td>
+							<td>Object</td>
+						</tr>
+						<tr>
+							<th>[data].message</th>
+							<td>문자</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].next_yn</th>
+							<td>다음 페이지 여부</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].objectList</th>
+							<td>결과값 목록</td>
+							<td>Object List</td>
+						</tr>
+						<tr>
+							<th>[data].msgGroupId</th>
+							<td>메세지 그룹 ID</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].msgId</th>
+							<td>메세지 ID</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].msgTypeName</th>
+							<td>문자 구분명(단문, 장문, 그림)</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].msgType</th>
+							<td>메세지 타입 ( 4: 단문, 5: 장문 )</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].callFrom</th>
+							<td>발신자 번호</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].callTo</th>
+							<td>수신자 번호</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].msgGroupCnt</th>
+							<td>문자 발송 건수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].sCnt</th>
+							<td>성공 건수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].fCnt</th>
+							<td>실패 건수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].wCnt</th>
+							<td>대기 건수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].msgResult</th>
+							<td>발송결과( 성공 : S, 실패 : F)</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].smsTxt</th>
+							<td>문자내용</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].subject</th>
+							<td>제목</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].reqdate</th>
+							<td>발송 일자</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].curState</th>
+							<td>전송 처리 결과값</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].userId</th>
+							<td>사용자 ID</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].regdate</th>
+							<td>등록 일자</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].reserveCYn</th>
+							<td>예약 취소 여부</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].ttlCnt</th>
+							<td>전체 요청 수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].remainMsgCnt</th>
+							<td>남은 문자 건수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].totMsgCnt</th>
+							<td>전체 문자 개수</td>
+							<td>String</td>
+						</tr>
+
+					</tbody>
+				</table>
+
+				<span class="reqTxt4">* 성공 예시</span>
+				<ul class="clause_list">
+	                <li class="list_open on">
+	                    <div class="clause_list_head">
+	                        <div class="list_head_in">
+	                            <span>Example</span>
+	                        </div>
+	                    </div>
+	                    <div class="clause_list_body">
+	                        <table class="">
+	                            <colgroup>
+	                                <col style="width: auto;">
+	                            </colgroup>
+	                            <tbody>
+	                                <tr>
+	                                    <td class="padding_add">
+											{
+											<p>&emsp;"resultCode":"0"</p>
+											<p>&emsp;, "data":[</p>
+											<p>&emsp;&emsp;{</p>
+											<p>&emsp;&emsp;&emsp;"resultCode":"0"</p>
+											<p>&emsp;&emsp;&emsp;, "message":null</p>
+											<p>&emsp;&emsp;&emsp;, "next_yn":null</p>
+											<p>&emsp;&emsp;&emsp;, "objectList":[</p>
+											<p>&emsp;&emsp;&emsp;&emsp;{</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;msgTypeName":"단문(SMS)"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgType":"4"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callFrom":"01011112222"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callTo":"01011112223"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupCnt":"2"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupId":"MSGGID_0000000013340"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgId":"MSGID_0000000000001"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"scnt":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"fcnt":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"wcnt":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgResult":"S"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"smsTxt":"문자 내용 단문 예제"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"subject":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reqdate":"2023-06-13 17:48:08"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"curState":"3"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"userId":"testuser"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"regdate":"2023-06-13 17:48:07"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reserveCYn":"N"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"ttlCnt":"10"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"remainMsgCnt":"0"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"totMsgCnt":"10"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;}</p>
+											<p>&emsp;&emsp;&emsp;&emsp;, {</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;msgTypeName":"단문(LMS)"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgType":"4"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callFrom":"01011112222"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"callTo":"01011112224"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupCnt":"2"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgGroupId":"MSGGID_0000000013340"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgId":"MSGID_0000000000002"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"scnt":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"fcnt":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"wcnt":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"msgResult":"S"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"smsTxt":"문자 내용 단문 예제"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"subject":null</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reqdate":"2023-06-13 17:48:09"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"curState":"3"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"userId":"testuser"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"regdate":"2023-06-13 17:48:07"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"reserveCYn":"N"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"ttlCnt":"10"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"remainMsgCnt":"0"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;&emsp;,"totMsgCnt":"10"</p>
+											<p>&emsp;&emsp;&emsp;&emsp;}</p>
+											<p>&emsp;&emsp;&emsp;]</p>
+											
+											<p>&emsp;&emsp;}</p>
+											<p>&emsp;]</p>
+											}
+										</td>
+	                                </tr>
+	                            </tbody>
+	                        </table> 
+	                    </div>
+	                </li>
+	            </ul>
+				<span class="reqTxt4">* 실패 예시</span>
+				<ul class="clause_list">
+	                <li class="list_open on">
+	                    <div class="clause_list_head">
+	                        <div class="list_head_in">
+	                            <span>Example</span>
+	                        </div>
+	                    </div>
+	                    <div class="clause_list_body">
+	                        <table class="">
+	                            <colgroup>
+	                                <col style="width: auto;">
+	                            </colgroup>
+	                            <tbody>
+	                                <tr>
+	                                    <td class="padding_add">
+								            {
+											    <p>"resultCode":"4099"</p>
+											    <p>,"data":"기타 시스템 오류"</p>
 											}
 										</td>
 	                                </tr>
src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab5.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab5.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendRESTAPI_infoPage3_r1_tab5.jsp
@@ -4,16 +4,18 @@
 			
 				<p class="tType1_title">발송가능건수</p>
 				<span class="reqTxt4">
-					동일한 내용의 문자를 컴마(,)로 분기하여 동시 1천명에게 전송하실 수 있습니다.
+					보유한 잔여 포인트로 발송 가능한 잔여 건수를 문자 구분(유형) 별로 조회하실 수 있습니다.
 					</br>
-					발신번호는 사이트내에서 미리 등록된 번호만 사용하실 수 있습니다.
+					SMS, LMS, MMS로 발송 시 가능한 잔여 건수이며 남은 충전금을 문자유형별로 보냈을 경우 가능한 잔여 건입니다.
 					</br>
-					90byte를 초과하는 메시지 발송 시 LMS(첨부파일 없는 MMS) 형태로 자동 전환됩니다.
+					예를 들어 단문 발송 가능 건수 : 20 , 장문 발송 가능 건수 : 7 인 경우 단문 전송 시 20건이 가능하고, 장문으로 전송 시 7건이 가능합니다.
 				</span>
 				</br>
 				</br>
 				
-				
+				<p class="tType1_title">
+					<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> [Request]
+				</p>
 				<ul class="clause_list">
 	                <li class="list_open on">
 	                    <div class="clause_list_head">
@@ -53,9 +55,6 @@
 	            	HTTPS 프로토콜을 사용하여 POST로 요청합니다. 
 	            </span>
 	            
-				<p class="tType1_title">
-					<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자
-				</p>
 				<table class="tType2">
 					<caption></caption>
 					<colgroup>
@@ -85,40 +84,8 @@
 							<td>String</td>
 							<td>O</td>
 						</tr>
-						<tr>
-							<th>callFrom</th>
-							<td>발신자 번호 (아이디에 등록되어 있는 번호)</td>
-							<td>String</td>
-							<td>O</td>
-						</tr>
-						<tr>
-							<th>callToList</th>
-							<td>수신자 번호 (콤마(,) 기준으로 입력)</td>
-							<td>String</td>
-							<td>O</td>
-						</tr>
-						<tr>
-							<th>smsTxt</th>
-							<td>메세지 내용</td>
-							<td>String (1~2,000Byte)</td>
-							<td>O</td>
-						</tr>
-						<tr>
-							<th>nameStr</th>
-							<td>메세지 내용에 [*이름*]이 있으면 치환용 이름 입력</td>
-							<td>String</td>
-							<td>X</td>
-						</tr>
-						<tr>
-							<th>test_yn</th>
-							<td>테스트 데이터 여부</td>
-							<td>String</td>
-							<td>X</td>
-						</tr>
 					</tbody>
 				</table>
-				<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 2Byte, 영문·숫자 1Byte를 차지.</span>
-	            
 	            
 				<ul class="clause_list">
 	                <li class="list_open on">
@@ -138,12 +105,146 @@
 								            {<br />
 											    <p>"mberId":"String"</p>
 											    <p>,"accessKey":"String"</p>
-											    <p>,"callFrom":"String"</p>
-											    <p>,"callToList":"String"</p>
-											    <p>,"smsTxt":"String"</p>
-											    <p>,"nameStr":"String"</p>
-											    <p>,"callFrom":"String"</p>
-											    <p>,"test_yn":"( YS | YF )"</p>
+											}
+										</td>
+	                                </tr>
+	                            </tbody>
+	                        </table> 
+	                    </div>
+	                </li>
+	            </ul>
+	            
+				<p class="tType1_title">
+					<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> [Response]
+				</p>
+	            <span class="reqTxt4">
+	            	JSON 객체로 응답 합니다.
+	            </span>
+				<table class="tType2">
+					<caption></caption>
+					<colgroup>
+						<col style="width: 13%;">
+						<col style="width: auto;">
+						<col style="width: 20%;">
+					</colgroup>
+					<thead>
+						<tr>
+							<th>키</th>
+							<th>설명</th>
+							<th>타입</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<th>resultCode</th>
+							<td>성공 여부 ( "0" 아니면 실패 )</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>data</th>
+							<td>결과값 객체 ( 성공 : 데이터, 실패 : 메세지 )</td>
+							<td>Object</td>
+						</tr>
+						<tr>
+							<th>[data].longPrice</th>
+							<td>장문 단가</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].longSendPsbltEa</th>
+							<td>장문 발송 가능 건수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].mberMoney</th>
+							<td>현재 보유 금액</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].message</th>
+							<td>문자</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].picturePrice</th>
+							<td>그림문자 단가</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].pictureSendPsbltEa</th>
+							<td>그림문자 발송 가능 건수</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].shortPrice</th>
+							<td>단문 단가</td>
+							<td>String</td>
+						</tr>
+						<tr>
+							<th>[data].shortSendPsbltEa</th>
+							<td>단문 발송 가능 건수</td>
+							<td>String</td>
+						</tr>
+					</tbody>
+				</table>
+
+				<span class="reqTxt4">* 성공 예시</span>
+				<ul class="clause_list">
+	                <li class="list_open on">
+	                    <div class="clause_list_head">
+	                        <div class="list_head_in">
+	                            <span>Example</span>
+	                        </div>
+	                    </div>
+	                    <div class="clause_list_body">
+	                        <table class="">
+	                            <colgroup>
+	                                <col style="width: auto;">
+	                            </colgroup>
+	                            <tbody>
+	                                <tr>
+	                                    <td class="padding_add">
+											{
+											<p>&emsp;"resultCode":"0"</p>
+											<p>&emsp;, "data":[</p>
+											<p>&emsp;&emsp;{</p>
+											<p>&emsp;&emsp;&emsp;"longPrice":"50"</p>
+											<p>&emsp;&emsp;&emsp;, "longSendPsbltEa": "19651"</p>
+											<p>&emsp;&emsp;&emsp;, "mberMoney": "982586.7"</p>
+											<p>&emsp;&emsp;&emsp;, "message": null</p>
+											<p>&emsp;&emsp;&emsp;, "picturePrice": "90"</p>
+											<p>&emsp;&emsp;&emsp;, "pictureSendPsbltEa": "10917"</p>
+											<p>&emsp;&emsp;&emsp;, "shortPrice": "18"</p>
+											<p>&emsp;&emsp;&emsp;, "shortSendPsbltEa": "54588"</p>
+											<p>&emsp;&emsp;}</p>
+											<p>&emsp;]</p>
+											}
+										</td>
+	                                </tr>
+	                            </tbody>
+	                        </table> 
+	                    </div>
+	                </li>
+	            </ul>
+				<span class="reqTxt4">* 실패 예시</span>
+				<ul class="clause_list">
+	                <li class="list_open on">
+	                    <div class="clause_list_head">
+	                        <div class="list_head_in">
+	                            <span>Example</span>
+	                        </div>
+	                    </div>
+	                    <div class="clause_list_body">
+	                        <table class="">
+	                            <colgroup>
+	                                <col style="width: auto;">
+	                            </colgroup>
+	                            <tbody>
+	                                <tr>
+	                                    <td class="padding_add">
+								            {
+											    <p>"resultCode":"5099"</p>
+											    <p>,"data":"기타 시스템 오류"</p>
 											}
 										</td>
 	                                </tr>
src/main/webapp/sample_mjon/jsp_example_send_msg_form_r1.jsp
--- src/main/webapp/sample_mjon/jsp_example_send_msg_form_r1.jsp
+++ src/main/webapp/sample_mjon/jsp_example_send_msg_form_r1.jsp
@@ -2,141 +2,75 @@
 <script type="text/javascript" src="./jquery-3.5.0.js"></script>
 
  	<script type="text/javascript">
-			  $(document).ready(function(){
-
-				//문자발송
-				$("#ajax_select_price").click(function(){
-
-					$("span#mgi").text("");
-					$("span#sc").text("");
-					$("span#fc").text("");
-					$("span#bc").text("");
-					$("span#mt").text("");
+		$(document).ready(function(){
+	
+			//문자발송 함수
+			$("#ajax_select_price").click(function(){
+		
+				//문자발송 결과 데이터 수신 전 기존 데이터 초기화
+				$("span#mgi").text("");
+				$("span#sc").text("");
+				$("span#fc").text("");
+				$("span#bc").text("");
+				$("span#mt").text("");
+									
+				//문자발송 API로 전송할 데이터
+				var searchWebParam = {
+					'p_mberId'			: $('#mberId').val()	//회원 아이디
+					, 'p_apiKey'		: $('#apiKey').val()	//api 키 
+					, 'p_callFrom'		: $('#callFrom').val()	//발신자 번호
+					, 'p_callToList'	: $('#callToList').val()//수신자 번호
+					, 'p_smsTxt'		: $('#smsTxt').val()	//문자 내용
+					, 'p_nameStr'		: $('#nameStr').val()	//치환용 이름
+					, 'p_testYn'		: $('#testYn').val()	//테스트 데이터 여부
+				};
 										
-					//document.updatePasswordForm.action = '/web/user/sendRESTAPI_test_r1_send.do';
-					//document.updatePasswordForm.submit();
-
-						var searchWebParam = {
-			     				'p_mberId'			: $('#mberId').val() 
-			     				, 'p_apiKey'		: $('#apiKey').val()
-			     				, 'p_callFrom'		: $('#callFrom').val()
-			     				, 'p_callToList'	: $('#callToList').val()
-			     				, 'p_smsTxt'		: $('#smsTxt').val()
-			     				, 'p_nameStr'		: $('#nameStr').val()
-			     				, 'p_testYn'		: $('#testYn').val()
-			     				//, 'p_eachPrice'		: $('#eachPrice').val()
-			     				//, 'p_sPrice'		: $('#sPrice').val()
-			     							     				
-						};
-											
-				  	//검색 API를 Ajax로 이용 하기 위한 호출
-					$.ajax({
-		     			url			:	"./jsp_example_send_msg_r1.jsp", 
-		     			//형식을 json으로 받을 것이기 때문에 지정하여 주었습니다.
-		     			dataType	:	"json",		     			 
-		     			async		: false,
-		     			type 		:	"POST",
-		     			
-		     			data : searchWebParam,
-
-						success: function (returnData, status) {
-							console.log('returnData :: ', returnData);
-							
-							if (returnData.resultCode=="0"){
-								//makeResult(returnData);
-								
-								$("span#mgi").text(returnData.data.msgGroupId);
-								$("span#sc").text(returnData.data.successCnt);
-								$("span#fc").text(returnData.data.failCnt);
-								$("span#bc").text(returnData.data.blockCnt);
-								$("span#mt").text(returnData.data.msgType);
-								
-							}	else{								
-								alert(returnData.resultCode+" : "+returnData.data);
-							}							
-							
-						},			     			
-		     			
-		     			error		:	function(request, status, error){
-		     				alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");		     				
-		     				console.log("AJAX_ERROR");
-		     			}
-		     		});						
+				//문자발송 REST API를 Ajax로 이용하기 위한 호출
+				$.ajax({
+					url			:	"./jsp_example_send_msg_r1.jsp", //요청 URL
+					dataType	: "json", //요청 값을 json으로 수신
+					async		: false,
+					type 		: "POST", //POST 방식
 					
-			 	 });			     			     	
-		     });
-
-
-			  function makeResult(p_returnData){
-				  
-				  var v_html	=	"";
-
-				  try {
-					  for (var i=0;i<p_returnData.objectList.length;i++){
-						  v_html		+=	"<tr>";				  
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].msgGroupId;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].msgTypeName;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].callFrom;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].ttlCnt;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].sCnt;					  
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].fCnt;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].wCnt;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].msgResult;
-						  v_html		+=	"</td>";
-						  
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].smsTxt.substring(1,20);
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].regdate;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].reqdate;
-						  v_html		+=	"</td>";
-						  v_html		+=	"<td>";
-						  v_html		+=	p_returnData.objectList[i].remainMsgCnt;
-						  v_html		+=	"</td>";						  
-						  v_html		+=	"</tr>";					  
-						  }
-					  
-					} catch (error) {
-					  console.error(error);
-					  // Expected output: ReferenceError: nonExistentFunction is not defined
-					  // (Note: the exact output may be browser-dependent)
+					data : searchWebParam,
+		
+					success: function (returnData, status) {
+						console.log('returnData :: ', returnData);
+						
+						if (returnData.resultCode=="0"){	//결과가 성공인 경우 결과값 노출
+							
+							$("span#mgi").text(returnData.data.msgGroupId);
+							$("span#sc").text(returnData.data.successCnt);
+							$("span#fc").text(returnData.data.failCnt);
+							$("span#bc").text(returnData.data.blockCnt);
+							$("span#mt").text(returnData.data.msgType);
+							
+						}	else{	//결과가 실패인 경우 원인 노출
+							alert(returnData.resultCode+" : "+returnData.data);
+						}
+						
+					},
+					
+					error		:	function(request, status, error){	//에러가 발생한 경우 에러 노출
+						alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");
+						console.log("AJAX_ERROR");
 					}
-
-				  v_html		+=	"";
-
-				  
-				  //$('#divResult').append("aaaaaa");		
-				  $('#dynamicTbody').html(v_html);
-			  }			  
-				  </script>
+				});
+				
+		 	 });
+		});
+	
+	  </script>
 				  
 				  
 <div class="inner">
-	<!-- send top -->
 	<div class="send_top">
 		
 		<div class="mypage_content current" id="tab5_3">
 			<div class="heading">
 				<h2><a href="./jsp_example_start_form_r1.jsp">돌아가기</a></h2>
 				<br/>
+				<!-- 문자발송 설명 및 입력 영역  시작 -->
 				<h2>문자발송(샘플-문자온)</h2>				
 				*mberId와 accessKey값은 실제 서비스시에는 jsp_example_send_msg_r1.jsp 파일에 작성하여 사용하세요
 				<br/>(샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.)
@@ -156,81 +90,73 @@
 						</div>
 					</div>
 
+					<!-- 발신자 번호 -->
 					<div class="input_list_item">
 						<div class="input_left">callFrom
 							<input type="text" class="list_inputType1" id="callFrom" maxlength="100" value="01035520132"  size="100"/>
 						</div>
 					</div>
+					
+					<!-- 수신자 번호 -->
 					<div class="input_list_item">
 						<div class="input_left">callToList
 							<input type="text" class="list_inputType1" id="callToList" maxlength="100" value="01022265487,01063170387,01011112222"  size="100"/>
 						</div>
 					</div>
+					
+					<!-- 문자 내용 -->
 					<div class="input_list_item">
 						<div class="input_left">smsTxt
 							<input type="text" class="list_inputType1" id="smsTxt" maxlength="100" value="문자 테스트~![*이름*]"  size="100"/>
 						</div>
 					</div>
+					
+					<!-- 치환용 이름 -->
 					<div class="input_list_item">
 						<div class="input_left">nameStr
 							<input type="text" class="list_inputType1" id="nameStr" maxlength="100" value="홍길동1|홍길동2|홍길동3"  size="100"/>
 						</div>
 					</div>
+					
+					<!-- 테스트 여부 -->
 					<div class="input_list_item">
 						<div class="input_left">테스트여부
 							<input type="text" class="list_inputType1" id="testYn" maxlength="100" value=""  size="100"/>(기본값 없음, YF-테스트(실패), YS-테스트(성공)
 						</div>
 					</div>
-					<!-- 
-					<div class="input_list_item">
-						<div class="input_left">eachPrice
-							<input type="text" class="list_inputType1" id="eachPrice" maxlength="100" value=""  size="100"/>(기본값 내일)
-						</div>
-					</div>		
-					<div class="input_list_item">
-						<div class="input_left">sPrice
-							<input type="text" class="list_inputType1" id="sPrice" maxlength="100" value=""  size="100"/>(기본값 내일)
-						</div>
-					</div>
-					 -->					
-
-																	
+					<!-- 문자발송 설명 및 입력 영역  끝 -->
 					<div class="mem_btnWrap2">
 						&nbsp;<button type="button" class="mem_btn3" style="width: 100%;" id="ajax_select_price" onclick="return false;">문자발송</button>
-						
 					</div>
 					
 				</div>
 			</div>
 			
+			<!-- 문자 발송 결과값 노출 영역 시작 -->
 			<div class="mem_cont_in">
 				<div class="input_list">					
 					<div class="input_list_item">
 						<div class="input_left">메세지ID : <span class="input_left" id="mgi"></span>
 						</div>
 						
-						<div class="input_left">성공수량 : <span class="input_left" id="sc"></span>							
+						<div class="input_left">성공수량 : <span class="input_left" id="sc"></span>
 						</div>
 
-						<div class="input_left">실패수량 : <span class="input_left" id="fc"></span>							
+						<div class="input_left">실패수량 : <span class="input_left" id="fc"></span>
 						</div>
 
-						<div class="input_left">block수량 : <span class="input_left" id="bc"></span>							
+						<div class="input_left">block수량 : <span class="input_left" id="bc"></span>
 						</div>
 						
-						<div class="input_left">메세지타입 : <span class="input_left" id="mt"></span>							
+						<div class="input_left">메세지타입 : <span class="input_left" id="mt"></span>
 						</div>
-																		
 					</div>
-					
 				</div>
 			</div>
-						
+			<!-- 문자발송 결과값 노출 영역 끝 -->
 			
 		</div>
-		<!--// 마이페이지 - 비밀번호 변경 -->
+
 	</div>
-	<!--// send top -->
 </div>
-<!--// content 영역 -->
 
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
@@ -19,62 +19,45 @@
 <%
 	try{
 		//기본 설정값
-		//final String encodingType = "utf-8";
 		final String encodingType 	=	"UTF-8";
 		final String boundary 		= 	"____boundary____";
 		
-		//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요
+		/******************** 전송 요청 URL  ********************/
+		//final String apiUrl		=	"http://localhost:8088/api/send/sendMsg";
+		final String apiUrl		=	"https://apidev.munjaon.co.kr:9998/api/send/sendMsg";	//개발테스트용 URL
+		//final String apiUrl		=	"https://api.munjaon.co.kr:9998/api/send/sendMsg";	//실제 서비스 URL
+		
+		//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용
 		//실제서비스용
-		//final String mberId		=	"goodgkdus";							//문자온 로그인 아이디
+		//final String mberId		=	"goodgkdus";	//문자온 로그인 아이디 
 		//final String apiKey		=	"12e749877379aa7426275414050694b953";	//발급받은 api key
 		
 		//테스트용
 		String mberId		= request.getParameter("p_mberId");			//문자온 로그인 아이디
 		String apiKey		= request.getParameter("p_apiKey");			//발급받은 api key
 	
+		/******************** 전송 정보 ********************/
+		//필수 값
+		String p_callFrom 	= request.getParameter("p_callFrom");	//발신자 번호
+		String p_callToList	= request.getParameter("p_callToList");	//수신자 번호
+		String p_smsTxt		= request.getParameter("p_smsTxt");		//문자 내용
 		
-		/**************** 문자전송하기 예제 ******************/
-		/* "result_code":결과코드,"message":결과문구, */
-		/* "msg_id":메세지ID,"error_cnt":에러갯수,"success_cnt":성공갯수 */
-		/* 동일내용 > 전송용 입니다.  
-		/******************** 인증정보 ********************/
-		//String sms_url = "https://apis.aligo.in/send/"; // 전송요청 URL
-		//String sms_url = "https://api.munjaon.co.kr:9998/api/accessTest/Test"; // 전송요청 URL
-		//String sms_url = "https://api.munjaon.co.kr:9998/api/accessKey/SendMsg"; // 전송요청 URL
-
-		final String apiUrl		=	"http://localhost:8088/api/send/sendMsg";
-// 		final String apiUrl		=	"https://apidev.munjaon.co.kr:9998/api/send/sendMsg";
+		//선택 값
+		String p_nameStr	= request.getParameter("p_nameStr");	//치환용 이름 
+		String p_testYn		= request.getParameter("p_testYn");		//테스트 데이터 여부 '', 'YF', 'YS'
 		
-		Map<String, String> params = new HashMap<String, String>();		
-		/******************** 인증정보 ********************/
+		/* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */ 
 		
-
-		//임시	-	테스트용 시작
-		//String p_mberId 	= request.getParameter("p_mberId");	//발신번호
-		//String p_accessKey	= request.getParameter("p_accessKey");	//수신번호
-		//sms.put("mberId", 		p_mberId); // SMS 아이디		
-		//sms.put("accessKey", 	p_accessKey); //인증키
-		//임시	-	테스트용 끝
-		/******************** 전송정보 ********************/
-		//전달 받은 값
-		//필수값
-		String p_callFrom 	= request.getParameter("p_callFrom");	//발신번호
-		String p_callToList	= request.getParameter("p_callToList");	//수신번호
-		String p_eachPrice	= request.getParameter("p_eachPrice");	//전송문자 개별가격
-		//String p_fileCnt	= request.getParameter("p_fileCnt");	//첨부파일갯수
-		String p_sPrice		= request.getParameter("p_sPrice");			//단문문자단가
-		//String p_totPrice	= request.getParameter("p_totPrice");	//총결제금액		
+		//String p_sPrice		= request.getParameter("p_sPrice");		//단문문자단가 
+		//String p_fileCnt	= request.getParameter("p_fileCnt");		//첨부파일갯수 
+		//String p_totPrice	= request.getParameter("p_totPrice");		//총결제금액 		
 		//String p_txtReplYn	= request.getParameter("p_txtReplYn");	//치환문자 여부	Y//N
-		//String p_txtReplYn	= "N";	//치환문자 여부	-	초기 지원안함		
-		//String p_msgType	= request.getParameter("p_msgType");	//문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡		
-		//String p_msgKind	= request.getParameter("p_msgKind");	//N-일반,A-광고,C-선거
-		//String p_msgKind	= "N";	//N-일반,A-광고,C-선거	-	초기 지원안함
-		String p_smsTxt		= request.getParameter("p_smsTxt");		//SMS용 메시지본문
-		String p_nameStr	= request.getParameter("p_nameStr");	//치환문자
-		String p_testYn		= request.getParameter("p_testYn");			//테스트데이터여부	'', 'YF', 'YS'
-				
-		//선택값
-		//String p_mmsPrice		= request.getParameter("p_mmsPrice");	//mms단가
+		//String p_txtReplYn	= "N";									//치환문자 여부	- 초기 지원안함
+		//String p_msgType	= request.getParameter("p_msgType"); 		//문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡	
+		//String p_msgKind	= request.getParameter("p_msgKind"); 		//N-일반,A-광고,C-선거
+		//String p_msgKind	= "N"; 										//N-일반,A-광고,C-선거	-	초기 지원안함
+
+		//String p_mmsPrice		= request.getParameter("p_mmsPrice"); 	//mms단가
 		//String p_mPrice		= request.getParameter("p_mPrice");		//장문문자단가
 		//String p_spamStatus	= request.getParameter("p_spamStatus");	//스팸문자 유무
 		
@@ -84,19 +67,23 @@
 		//String p_divideTime	= request.getParameter("p_divideTime");		//분할문자 간격
 		//String p_reqDate	= request.getParameter("p_reqDate");		//예약시간
 		
-		// 필수 데이터
-		params.put("mberId", 		mberId); // SMS 아이디		
-		params.put("accessKey", 	apiKey); //인증키		
-		//추가 전송 데이터
-		params.put("callFrom"	, p_callFrom);		//발신번호
-		params.put("callToList"	, p_callToList);	//수신번호
-		//params.put("eachPrice"	, p_eachPrice);		//전송문자 개별가격    
-		//params.put("sPrice"		, p_sPrice);		//단문문자단가
-		params.put("smsTxt"		, p_smsTxt);		//SMS용 메시지본문
-		params.put("nameStr"	, p_nameStr);		//페이지당 출력갯수
-		params.put("test_yn"	, p_testYn);			//테스트 여부
+		/* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */ 
+				
+		Map<String, String> params = new HashMap<String, String>();
 		
-            
+		//필수 전송 데이터
+		params.put("mberId", 		mberId); 		//회원 아이디
+		params.put("accessKey", 	apiKey); 		//인증키
+		params.put("callFrom"	, p_callFrom);		//발신자 번호
+		params.put("callToList"	, p_callToList);	//수신자 번호
+		params.put("smsTxt"		, p_smsTxt);		//문자 내용
+		
+		//선택 전송 데이터
+		params.put("nameStr"	, p_nameStr);		//치환용 이름
+		params.put("test_yn"	, p_testYn);		//테스트 데이터 여부
+		
+		
+		//REST API 전송
 		String result = "";
 		
 		MultipartEntityBuilder builder = MultipartEntityBuilder.create();
@@ -111,17 +98,15 @@
 					//전달값이 없는 경우 오류
 					try{
 						builder.addTextBody(key, params.get(key)
-								, ContentType.create("Multipart/related", encodingType));					
+						, ContentType.create("Multipart/related", encodingType));					
 					}catch(Exception ex){
 						ex.printStackTrace();
-						
-					}				
-
-				}					
+					}
+				}
 			}catch(Exception ex){
 				ex.printStackTrace();
 				
-			}				
+			}
 
 		HttpEntity entity = builder.build();
 		
@@ -146,4 +131,8 @@
 		out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}");
 	}
 	
+
+	/**************** 문자발송 Response  예제 ******************/
+	/* "result_code": 결과코드, "msgGroupId": 메세지 그룹 ID, "msgType": 메세지 타입 */
+	/* "test_yn": 테스트 데이터 여부, "successCnt": 성공 건수 , "blockCnt" : 수신거부 건수*/
 %>
(No newline at end of file)
src/main/webapp/sample_mjon/jsp_example_send_msgs_form_r1.jsp
--- src/main/webapp/sample_mjon/jsp_example_send_msgs_form_r1.jsp
+++ src/main/webapp/sample_mjon/jsp_example_send_msgs_form_r1.jsp
@@ -2,110 +2,100 @@
 <script type="text/javascript" src="./jquery-3.5.0.js"></script>
 
  	<script type="text/javascript">
-			  $(document).ready(function(){
+		$(document).ready(function(){
     
-				//대량문자발송
-				$("#ajax_select_price").click(function(){
+		//대량문자발송
+		$("#ajax_select_price").click(function(){
 
-					$("span#mgi").text("");
-					$("span#sc").text("");
-					$("span#fc").text("");
-					$("span#bc").text("");
-					$("span#mt").text("");
+			$("span#mgi").text("");
+			$("span#sc").text("");
+			$("span#fc").text("");
+			$("span#bc").text("");
+			$("span#mt").text("");
+
+			//문자발송 API로 전송할 데이터
+			var searchWebParam = {
+				'p_mberId'			: $('#mberId').val() 
+				, 'p_apiKey'		: $('#apiKey').val()
+				, 'p_callFrom'		: $('#callFrom').val()
+				, 'p_testYn'		: $('#testYn').val()
+			};
+
+			var tagId = "";
+			//전송할 데이터에 수신자, 문자내용 개수만큼 추가해주기
+			$.each($('.input_list input'), function (index, tag){
+				tagId = $(tag).attr('id');
+				if(tagId.startsWith('p_callTo') || tagId.startsWith('p_smsTxt')){
+					searchWebParam[tagId] = $(tag).val();
+				}
+			});
+		
+			//문자발송 REST API를 Ajax로 이용하기 위한 호출
+			$.ajax({
+				url			:	"./jsp_example_send_msgs_r1.jsp", //요청 URL
+				dataType	:	"json", //요청 값을 json으로 수신
+				async		: false,
+				type 		:	"POST", //POST 방식
+				
+				data : searchWebParam,
+		
+				success: function (returnData, status) {
 					
-					//document.updatePasswordForm.action = '/web/user/sendRESTAPI_test_r1_send.do';
-					//document.updatePasswordForm.submit();
-
-						var searchWebParam = {
-			     				'p_mberId'			: $('#mberId').val() 
-			     				, 'p_apiKey'		: $('#apiKey').val()
-			     				
-			     				, 'p_callFrom'		: $('#callFrom').val()
-			     				, 'p_testYn'		: $('#testYn').val()
-			     							     				
-						};
-
-					var tagId = "";
-					$.each($('.input_list input'), function (index, tag){
+					console.log('returnData : ', returnData);
+					
+					if (returnData.resultCode=="0"){	//결과가 성공인 경우 결과값 노출
+						$("span#mgi").text(returnData.data.msgGroupIdList);
+						$("span#sc").text(returnData.data.successCnt);
+						$("span#fc").text(returnData.data.failCnt);
+						$("span#bc").text(returnData.data.blockCnt);
+						$("span#mt").text(returnData.data.msgTypeList);
 						
-						tagId = $(tag).attr('id');
-						if(tagId.startsWith('p_callTo') || tagId.startsWith('p_smsTxt')){
-
-							searchWebParam[tagId] = $(tag).val();
-						}
-					});
-						
-				  	//검색 API를 Ajax로 이용 하기 위한 호출
-					$.ajax({
-		     			url			:	"./jsp_example_send_msgs_r1.jsp", 
-		     			//형식을 json으로 받을 것이기 때문에 지정하여 주었습니다.
-		     			dataType	:	"json",		     			 
-		     			async		: false,
-		     			type 		:	"POST",
-		     			
-		     			data : searchWebParam,
-
-						success: function (returnData, status) {
-							
-							console.log('returnData : ', returnData);
-							
-							if (returnData.resultCode=="0"){
-								$("span#mgi").text(returnData.data.msgGroupIdList);
-								$("span#sc").text(returnData.data.successCnt);
-								$("span#fc").text(returnData.data.failCnt);
-								$("span#bc").text(returnData.data.blockCnt);
-								$("span#mt").text(returnData.data.msgTypeList);
-								
-							}	else{								
-								alert(returnData.resultCode+" : "+returnData.data);
-							}							
-							
-						},			     			
-		     			
-		     			error		:	function(request, status, error){
-		     				alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");		     				
-		     				console.log("AJAX_ERROR");
-		     			}
-		     		});						
+					}	else{	//결과가 실패인 경우 원인 노출
+						alert(returnData.resultCode+" : "+returnData.data);
+					}
 					
-			 	 });	
+				},
+				
+				error		:	function(request, status, error){	//에러가 발생한 경우 에러 노출
+					alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");
+					console.log("AJAX_ERROR");
+				}
+			});
 
-			  	// 수신자 추가 버튼
-				$('#sendAdd').click(function(){
+		});	
 
-					
-					var nextId = $('.callTo').length+1;					
-					var textData = '<div class="input_list_item">'
-									+	'<div class="input_left">p_callTo_'+nextId+''
-									+		'<input type="text" class="list_inputType1 callTo" id="p_callTo_'+nextId+'" maxlength="100" value="">'
-									+	'</div>'
-									+'</div>'
-									+'<div class="input_list_item">'
-									+	'<div class="input_left">p_smsTxt_'+nextId+''
-									+		'<input type="text" class="list_inputType1 smsTxt" id="p_smsTxt_'+nextId+'" maxlength="100" value="">'
-									+	'</div>'
-									+'</div>'
+		  	// 수신자 추가 버튼
+			$('#sendAdd').click(function(){
+	
+				
+				var nextId = $('.callTo').length+1;					
+				var textData = '<div class="input_list_item">'
+					+	'<div class="input_left">p_callTo_'+nextId+''
+					+		'<input type="text" class="list_inputType1 callTo" id="p_callTo_'+nextId+'" maxlength="100" value="">'
+					+	'</div>'
+					+'</div>'
+					+'<div class="input_list_item">'
+					+	'<div class="input_left">p_smsTxt_'+nextId+''
+					+		'<input type="text" class="list_inputType1 smsTxt" id="p_smsTxt_'+nextId+'" maxlength="100" value="">'
+					+	'</div>'
+					+'</div>'
 					;
-					
-					$('.input_list').append(textData);
-					
+				$('.input_list').append(textData);
+				
+			});
 
-					
-				});				
-			 	 		     			     	
-		     });
+		});
 
-				  </script>
-				  
+	</script>
 				  
 <div class="inner">
-	<!-- send top -->
 	<div class="send_top">
 		
 		<div class="mypage_content current" id="tab5_3">
 			<div class="heading">
 				<h2><a href="./jsp_example_start_form_r1.jsp">돌아가기</a></h2>
-				<br/>			
+				<br/>	
+				<!-- 문자발송 설명 및 입력 영역  시작 -->
 				<h2>대량문자발송(샘플-문자온)</h2>
 				*mberId와 accessKey값은 실제 서비스시에는 jsp_example_send_msg_r1.jsp 파일에 작성하여 사용하세요
 				<br/>(샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.)
@@ -115,7 +105,6 @@
 			<div class="mem_cont_in">
 			
 					<div class="mem_btnWrap2">
-<!-- 						<button type="button" class="mem_btn3" style="width: 100%;" onclick="insertPw();">변경</button> -->
 						<button type="button" class="mem_btn3" style="width: 50%;" id="sendAdd" onclick="return false;">수신자 추가</button>
 					</div>
 																	
@@ -136,29 +125,37 @@
 						</div>
 					</div>
 
+					<!-- 발신자 번호 -->
 					<div class="input_list_item">
 						<div class="input_left">callFrom
 							<input type="text" class="list_inputType1" id="callFrom" maxlength="100" value="01035520132"  size="100"/>
 						</div>
 					</div>
+					
+					<!-- 테스트 여부 -->
 					<div class="input_list_item">
 						<div class="input_left">테스트여부
 							<input type="text" class="list_inputType1" id="testYn" maxlength="100" value=""  size="100"/>(기본값 없음, YF-테스트(실패), YS-테스트(성공)
 						</div>
 					</div>
+					
+					<!-- 수신자 번호 1-->
 					<div class="input_list_item">
 						<div class="input_left">p_callTo_1
 							<input type="text" class="list_inputType1 callTo" id="p_callTo_1" maxlength="100" value="01083584250">
 						</div>
 					</div>
+					<!-- 문자 내용 1 -->
 					<div class="input_list_item">
 						<div class="input_left">p_smsTxt_1
 							<input type="text" class="list_inputType1 smsTxt" id="p_smsTxt_1" maxlength="100" value="testMsg">
 						</div>
 					</div>
+				<!-- 문자발송 설명 및 입력 영역  끝 -->
 				</div>									
 			</div>	
 			
+			<!-- 문자 발송 결과값 노출 영역 시작 -->
 			<div class="mem_cont_in">				
 					<div class="input_list_item">
 						<div class="input_left">메세지ID : <span class="input_left" id="mgi"></span>
@@ -178,11 +175,7 @@
 																		
 					</div>					
 			</div>					
-						
+			<!-- 문자발송 결과값 노출 영역 끝 -->
 		</div>
-		<!--// 마이페이지 - 비밀번호 변경 -->
 	</div>
-	<!--// send top -->
 </div>
-<!--// content 영역 -->
-
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
@@ -18,94 +18,76 @@
 <%@ page language="java" contentType="text/html; charset=utf-8	" pageEncoding="utf-8"%>
 <%
 	try{
-		//기본 설정값
-		//final String encodingType = "utf-8";
+		//기본 설정값’
 		final String encodingType 	=	"UTF-8";
 		final String boundary 		= 	"____boundary____";
 		
-		//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요
-		//실제서비스용
-		//final String mberId		=	"goodgkdus";							//문자온 로그인 아이디
-		//final String apiKey		=	"12e749877379aa7426275414050694b953";	//발급받은 api key
+		/******************** 전송 요청 URL  ********************/
+		//String apiUrl = "http://localhost:8088/api/send/sendMsgs";
+		//final String apiUrl		=	"https://api.munjaon.co.kr:9998/api/send/sendMsg";	//실제 서비스 URL
+		String apiUrl = "https://apidev.munjaon.co.kr:9998/api/send/sendMsgs"; //개발테스트용 URL
 		
-		//테스트용
-		String mberId		= request.getParameter("p_mberId");			//문자온 로그인 아이디
-		String apiKey		= request.getParameter("p_apiKey");			//발급받은 api key
+		//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용
+		//실제서비스용
+		//final String mberId		=	"goodgkdus";	//문자온 로그인 아이디 
+		//final String apiKey		=	"12e749877379aa7426275414050694b953";		//발급받은 api key
+		
+		//테스트용
+		String mberId		= request.getParameter("p_mberId");		//문자온 로그인 아이디
+		String apiKey		= request.getParameter("p_apiKey");		//발급받은 api key
 	
+		/******************** 전송 정보  ********************/
+		//필수 값’
+		String p_callFrom 	= request.getParameter("p_callFrom");	//발신자 번호
+		String p_callTo_1	= request.getParameter("p_callTo_1");	//수신자 번호 1
+		String p_smsTxt_1	= request.getParameter("p_smsTxt_1");	//문자 내용 1
 		
-		/**************** 문자전송하기 예제 ******************/
-		/* "result_code":결과코드,"message":결과문구, */
-		/* "msg_id":메세지ID,"error_cnt":에러갯수,"success_cnt":성공갯수 */
-		/* 동일내용 > 전송용 입니다.  
-		/******************** 인증정보 ********************/
-		//String sms_url = "https://apis.aligo.in/send/"; // 전송요청 URL
-		//String sms_url = "https://api.munjaon.co.kr:9998/api/accessTest/Test"; // 전송요청 URL
-		//String sms_url = "https://api.munjaon.co.kr:9998/api/accessKey/SendMsg"; // 전송요청 URL
-		String apiUrl = "http://localhost:8088/api/send/sendMsgs"; // 전송요청 URL
+		//선택 값
+		String p_testYn		= request.getParameter("p_testYn");		//테스트 데이터 여부	'', 'YF', 'YS'
 
-// 		String apiUrl = "https://apidev.munjaon.co.kr:9998/api/send/sendMsgs"; // 전송요청 URL
+		/* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */ 
 		
-		Map<String, String> params = new HashMap<String, String>();		
-		params.put("mberId", 		mberId); // SMS 아이디		
-		params.put("accessKey", 	apiKey); //인증키		
-		/******************** 인증정보 ********************/
+		//String p_nameStr_1	= request.getParameter("p_nameStr_1");	//치환용 이름 1
+		//String p_mmsPrice		= request.getParameter("p_mmsPrice");	//mms 단가
+		//String p_mPrice		= request.getParameter("p_mPrice");		//장문문자단가
+		//String p_spamStatus	= request.getParameter("p_spamStatus");	//스팸문자 유무
 		
-
-		//임시	-	테스트용 시작
-		//String p_mberId 	= request.getParameter("p_mberId");	//발신번호
-		//String p_accessKey	= request.getParameter("p_accessKey");	//수신번호
-		//sms.put("mberId", 		p_mberId); // SMS 아이디		
-		//sms.put("accessKey", 	p_accessKey); //인증키
-		//임시	-	테스트용 끝
-		/******************** 전송정보 ********************/
-		//전달 받은 값
-		//필수값
-		String p_callFrom 	= request.getParameter("p_callFrom");	//발신번호
-		String p_callTo_1	= request.getParameter("p_callTo_1");	//수신번호
-		//String p_eachPrice	= request.getParameter("p_eachPrice");	//전송문자 개별가격
-		//String p_fileCnt	= request.getParameter("p_fileCnt");	//첨부파일갯수
-		//String p_sPrice		= request.getParameter("p_sPrice");			//단문문자단가
-		//String p_totPrice	= request.getParameter("p_totPrice");	//총결제금액		
-		//String p_txtReplYn	= request.getParameter("p_txtReplYn");	//치환문자 여부	Y//N
-		//String p_txtReplYn	= "N";	//치환문자 여부	-	초기 지원안함		
-		//String p_msgType	= request.getParameter("p_msgType");	//문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡		
-		//String p_msgKind	= request.getParameter("p_msgKind");	//N-일반,A-광고,C-선거
-		//String p_msgKind	= "N";	//N-일반,A-광고,C-선거	-	초기 지원안함
-		String p_smsTxt_1	= request.getParameter("p_smsTxt_1");		//SMS용 메시지본문
-		String p_testYn		= request.getParameter("p_testYn");			//테스트데이터여부	'', 'YF', 'YS'
-		//String p_nameStr_1	= request.getParameter("p_nameStr_1");	//치환문자
+		//String p_eachPrice	= request.getParameter("p_eachPrice");	//개별 금액
+		//String p_fileCnt	= request.getParameter("p_fileCnt");		//첨부파일갯수
+		//String p_sPrice		= request.getParameter("p_sPrice");		//단문문자단가
+		//String p_totPrice	= request.getParameter("p_totPrice");		//총결제금액		
+		//String p_txtReplYn	= request.getParameter("p_txtReplYn");	//치환문자 여부	Y//N
+		//String p_txtReplYn	= "N";									//치환문자 여부	- 초기 지원안함
+		//String p_msgType	= request.getParameter("p_msgType");		//문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡		
+		//String p_msgKind	= request.getParameter("p_msgKind");		//N-일반,A-광고,C-선거
+		//String p_msgKind	= "N";										//N-일반,A-광고,C-선거	-	초기 지원안함
+		
+		//예약문자의 경우(선택값)
+		//String p_reserveYn	= request.getParameter("p_reserveYn");	//예약문자 여부 N or Y
+		//String p_divideCnt	= request.getParameter("p_divideCnt");	//분할문자 건수
+		//String p_divideTime	= request.getParameter("p_divideTime");	//분할문자 간격
+		//String p_reqDate	= request.getParameter("p_reqDate");		//예약시간
 				
-		//선택값
-		//String p_mmsPrice		= request.getParameter("p_mmsPrice");	//mms단가
-		//String p_mPrice		= request.getParameter("p_mPrice");		//장문문자단가
-		//String p_spamStatus	= request.getParameter("p_spamStatus");	//스팸문자 유무
-		
-		//예약문자의 경우(선택값)
-		//String p_reserveYn	= request.getParameter("p_reserveYn");		//예약문자 여부 N or Y
-		//String p_divideCnt	= request.getParameter("p_divideCnt");		//분할문자 건수
-		//String p_divideTime	= request.getParameter("p_divideTime");		//분할문자 간격
-		//String p_reqDate	= request.getParameter("p_reqDate");		//예약시간
-		
-		
-		//추가 전송 데이터
+		Map<String, String> params = new HashMap<String, String>();		
+
+		//필수 전송 데이터
+		params.put("mberId", 		mberId);	//회원 아이디
+		params.put("accessKey", 	apiKey);	//인증키
 		params.put("callFrom"	, p_callFrom);		//발신번호
+		
+		//선택 전송 데이터
 		params.put("test_yn"	, p_testYn);			//테스트 여부
 		
-		//params.put("callTo_1"	, p_callTo_1);	//수신번호
-		//params.put("eachPrice"	, p_eachPrice);		//전송문자 개별가격    
-		//params.put("sPrice"		, p_sPrice);		//단문문자단가
-		//params.put("smsTxt_1"	, p_smsTxt_1);		//SMS용 메시지본문
-		
-		
-		for (int i=1;i<101;i++){
+		//전송할 데이터에 수신자, 문자내용 개수만큼 추가해주기
+		for (int i=1;i<101;i++){ //최대 수신자 100명
 			String p_callTo	=	"p_callTo_"+Integer.toString(i);
 			String p_smsTxt	=	"p_smsTxt_"+Integer.toString(i);
 			
 			String s_callTo	=	"callTo_"+Integer.toString(i);
 			String s_smsTxt	=	"smsTxt_"+Integer.toString(i);
 			
-			p_callTo_1	= request.getParameter(p_callTo);	//SMS용 메시지본문
-			p_smsTxt_1	= request.getParameter(p_smsTxt);	//SMS용 메시지본문			
+			p_callTo_1	= request.getParameter(p_callTo);
+			p_smsTxt_1	= request.getParameter(p_smsTxt);			
 		
 			
 			System.out.println("======i=====");
@@ -113,18 +95,20 @@
 			System.out.println(p_callTo_1);
 			System.out.println(p_smsTxt_1);
 			
+			
 			if (p_callTo_1 != null 
 					&& p_smsTxt_1 != null
 					&& !"".equals(p_callTo_1)
 					&& !"".equals(p_smsTxt_1)
 					){
-				params.put(s_callTo, p_callTo_1);	//수신번호
-				//params.put("eachPrice"	, p_eachPrice);		//전송문자 개별가격    
-				//params.put("sPrice"		, p_sPrice);		//단문문자단가
-				params.put(s_smsTxt, p_smsTxt_1);		//SMS용 메시지본문
+				params.put(s_callTo, p_callTo_1);	//수신자 추가
+				params.put(s_smsTxt, p_smsTxt_1);	//문자내용 추가
+			} else{
+				break;
 			}
 		}
-            
+		
+		//REST API 전송
 		String result = "";
 		
 		MultipartEntityBuilder builder = MultipartEntityBuilder.create();
@@ -136,7 +120,7 @@
 			try{
 				for(Iterator<String> i = params.keySet().iterator(); i.hasNext();){
 					String key = i.next();
-					//전달값이 없는 경우 오류
+					//전달값이 없는 경우 오류˜
 					try{
 						builder.addTextBody(key, params.get(key)
 								, ContentType.create("Multipart/related", encodingType));					
@@ -174,4 +158,7 @@
 		out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}");
 	}
 	
+	/**************** 문자발송 Response  예제 ******************/
+	/* "result_code": 결과코드, "msgGroupIdList": 메세지 그룹 ID 리스트, "msgTypeList": 메세지 타입 리스트*/
+	/* "test_yn": 테스트 데이터 여부, "successCnt": 성공 건수 , "blockCnt" : 수신거부 건수, "failCnt": 발송실패 건수*/
 %>
(No newline at end of file)
src/main/webapp/sample_mjon/jsp_example_start_form_r1.jsp
--- src/main/webapp/sample_mjon/jsp_example_start_form_r1.jsp
+++ src/main/webapp/sample_mjon/jsp_example_start_form_r1.jsp
@@ -1,102 +1,7 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <script type="text/javascript" src="./jquery-3.5.0.js"></script>
-
- 	<script type="text/javascript">
-			  $(document).ready(function(){
-    
-				//대량문자발송
-				$("#ajax_select_price").click(function(){
-
-					$("span#mgi").text("");
-					$("span#sc").text("");
-					$("span#fc").text("");
-					$("span#bc").text("");
-					$("span#mt").text("");
-					
-					//document.updatePasswordForm.action = '/web/user/sendRESTAPI_test_r1_send.do';
-					//document.updatePasswordForm.submit();
-
-						var searchWebParam = {
-			     				'p_mberId'			: $('#mberId').val() 
-			     				, 'p_apiKey'		: $('#apiKey').val()
-			     				
-			     				, 'p_callFrom'		: $('#callFrom').val()
-			     							     				
-						};
-
-					var tagId = "";
-					$.each($('.input_list input'), function (index, tag){
-						
-						tagId = $(tag).attr('id');
-						if(tagId.startsWith('p_callTo') || tagId.startsWith('p_smsTxt')){
-
-							searchWebParam[tagId] = $(tag).val();
-						}
-					});
-						
-				  	//검색 API를 Ajax로 이용 하기 위한 호출
-					$.ajax({
-		     			url			:	"/jsp_example_send_msgs_r1.jsp", 
-		     			//형식을 json으로 받을 것이기 때문에 지정하여 주었습니다.
-		     			dataType	:	"json",		     			 
-		     			async		: false,
-		     			type 		:	"POST",
-		     			
-		     			data : searchWebParam,
-
-						success: function (returnData, status) {
-							
-							if (returnData.resultCode=="0"){
-								$("span#mgi").text(returnData.data.msgGroupId);
-								$("span#sc").text(returnData.data.successCnt);
-								$("span#fc").text(returnData.data.failCnt);
-								$("span#bc").text(returnData.data.blockCnt);
-								$("span#mt").text(returnData.data.msgType);
-								
-							}	else{								
-								alert(returnData.resultCode+" : "+returnData.data);
-							}							
-							
-						},			     			
-		     			
-		     			error		:	function(request, status, error){
-		     				alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");		     				
-		     				console.log("AJAX_ERROR");
-		     			}
-		     		});						
-					
-			 	 });	
-
-			  	// 수신자 추가 버튼
-				$('#sendAdd').click(function(){
-
-					
-					var nextId = $('.callTo').length+1;					
-					var textData = '<div class="input_list_item">'
-									+	'<div class="input_left">p_callTo_'+nextId+''
-									+		'<input type="text" class="list_inputType1 callTo" id="p_callTo_'+nextId+'" maxlength="100" value="">'
-									+	'</div>'
-									+'</div>'
-									+'<div class="input_list_item">'
-									+	'<div class="input_left">p_smsTxt_'+nextId+''
-									+		'<input type="text" class="list_inputType1 smsTxt" id="p_smsTxt_'+nextId+'" maxlength="100" value="">'
-									+	'</div>'
-									+'</div>'
-					;
-					
-					$('.input_list').append(textData);
-					
-
-					
-				});				
-			 	 		     			     	
-		     });
-
-				  </script>
-				  
 				  
 <div class="inner">
-	<!-- send top -->
 	<div class="send_top">
 		
 		<div class="mypage_content current" id="tab5_3">
@@ -104,17 +9,15 @@
 				<h2>REST API(샘플-문자온)</h2>				 
 			</div>
 			<div class="heading">
-				<h2><a href="./jsp_example_send_msg_form_r1.jsp">1.문자발송</a></h2>				 
+				<!-- 메뉴별 샘플 이동 링크 -->
+				<h2><a href="./jsp_example_send_msg_form_r1.jsp">1.문자발송</a></h2>
 				<h2><a href="./jsp_example_send_msgs_form_r1.jsp">2.대량문자발송</a></h2>
 				<h2><a href="./jsp_example_hstry_form_r1.jsp">3.전체발송내역</a></h2>
 				<h2><a href="./jsp_example_hstry_detail_form_r1.jsp">4.상세발송내역</a></h2>
 				<h2><a href="./jsp_example_select_price_form_r1.jsp">5.발송가능건수</a></h2>
-			</div>			
-						
+			</div>
+			
 		</div>
-		<!--// 마이페이지 - 비밀번호 변경 -->
 	</div>
-	<!--// send top -->
 </div>
-<!--// content 영역 -->
 
Add a comment
List