From 46993e81ad611509b3abc06a6c2fa31043d757af Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 18 Dec 2024 15:08:20 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=A0=84=EC=86=A1=20?= =?UTF-8?q?=EB=8B=A8=EB=AC=B8,=20=EB=8C=80=EB=9F=89=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=ED=95=A9=EC=B9=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mjo/msgdata/service/MjonMsgDataVO.java | 324 +-- .../msgdata/web/MjonMsgDataController.java | 241 ++- .../jsp/web/msgdata/MsgDataSMLView.jsp | 11 +- .../WEB-INF/jsp/web/msgdata/MsgDataView.jsp | 1789 +---------------- .../web/msgdata/excel/MsgExcelDataView.jsp | 15 +- src/main/webapp/js/web/msgdata/init.js | 81 + src/main/webapp/js/web/msgdata/msgDataView.js | 1717 ++++++++++++++++ src/main/webapp/publish/js/content.js | 10 + 8 files changed, 2074 insertions(+), 2114 deletions(-) create mode 100644 src/main/webapp/js/web/msgdata/init.js create mode 100644 src/main/webapp/js/web/msgdata/msgDataView.js diff --git a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java index 10c9854a..e4704a72 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java @@ -4,7 +4,11 @@ import java.util.Date; import java.util.List; import itn.let.uss.umt.service.UserDefaultVO; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class MjonMsgDataVO extends UserDefaultVO{ /** @@ -73,325 +77,7 @@ public class MjonMsgDataVO extends UserDefaultVO{ private String msgResendAllReplaceYn; private String atchFiles; - public String getMsgResendAllReplaceYn() { - return msgResendAllReplaceYn; - } - public void setMsgResendAllReplaceYn(String msgResendAllReplaceYn) { - this.msgResendAllReplaceYn = msgResendAllReplaceYn; - } - public String getAtchFiles() { - return atchFiles; - } - public void setAtchFiles(String atchFiles) { - this.atchFiles = atchFiles; - } - public String getMsgGroupId() { - return msgGroupId; - } - public void setMsgGroupId(String msgGroupId) { - this.msgGroupId = msgGroupId; - } - public String getFilePath1() { - return filePath1; - } - public void setFilePath1(String filePath1) { - this.filePath1 = filePath1; - } - public String getFilePath2() { - return filePath2; - } - public void setFilePath2(String filePath2) { - this.filePath2 = filePath2; - } - public String getFilePath3() { - return filePath3; - } - public void setFilePath3(String filePath3) { - this.filePath3 = filePath3; - } - public String getCallFrom() { - return callFrom; - } - public void setCallFrom(String callFrom) { - this.callFrom = callFrom; - } - public String getCallTo() { - return callTo; - } - public void setCallTo(String callTo) { - this.callTo = callTo; - } - public String getMsgResendAllFlag() { - return msgResendAllFlag; - } - public void setMsgResendAllFlag(String msgResendAllFlag) { - this.msgResendAllFlag = msgResendAllFlag; - } - public String getMsgResendAllGroupId() { - return msgResendAllGroupId; - } - public void setMsgResendAllGroupId(String msgResendAllGroupId) { - this.msgResendAllGroupId = msgResendAllGroupId; - } - public String getMsgResendAllAdvertiseYn() { - return msgResendAllAdvertiseYn; - } - public void setMsgResendAllAdvertiseYn(String msgResendAllAdvertiseYn) { - this.msgResendAllAdvertiseYn = msgResendAllAdvertiseYn; - } + private String tabDision; - public String getCodeId() { - return codeId; - } - public void setCodeId(String codeId) { - this.codeId = codeId; - } - public String getCode() { - return code; - } - public void setCode(String code) { - this.code = code; - } - public String getCodeNm() { - return codeNm; - } - public void setCodeNm(String codeNm) { - this.codeNm = codeNm; - } - public String getSort() { - return sort; - } - public void setSort(String sort) { - this.sort = sort; - } - public String getUserId() { - return userId; - } - public void setUserId(String userId) { - this.userId = userId; - } - public String getEsntl_id() { - return esntl_id; - } - public void setEsntl_id(String esntl_id) { - this.esntl_id = esntl_id; - } - public String getMsgId() { - return msgId; - } - public void setMsgId(String msgId) { - this.msgId = msgId; - } - public String getLetterId() { - return letterId; - } - public void setLetterId(String letterId) { - this.letterId = letterId; - } - public List getMsgIdList() { - return msgIdList; - } - public void setMsgIdList(List msgIdList) { - this.msgIdList = msgIdList; - } - public List getMsgSeqList() { - return msgSeqList; - } - public void setMsgSeqList(List msgSeqList) { - this.msgSeqList = msgSeqList; - } - public String getSubject() { - return subject; - } - public void setSubject(String subject) { - this.subject = subject; - } - public String getMmsSubject() { - return mmsSubject; - } - public void setMmsSubject(String mmsSubject) { - this.mmsSubject = mmsSubject; - } - public String getSmsTxt() { - return smsTxt; - } - public void setSmsTxt(String smsTxt) { - this.smsTxt = smsTxt; - } - public String getSmsLen() { - return smsLen; - } - public void setSmsLen(String smsLen) { - this.smsLen = smsLen; - } - public String[] getImgFileId() { - return imgFileId; - } - public void setImgFileId(String[] imgFileId) { - this.imgFileId = imgFileId; - } - public String getAtchFileId1() { - return atchFileId1; - } - public void setAtchFileId1(String atchFileId1) { - this.atchFileId1 = atchFileId1; - } - public String getAtchFileId2() { - return atchFileId2; - } - public void setAtchFileId2(String atchFileId2) { - this.atchFileId2 = atchFileId2; - } - public String getAtchFileId3() { - return atchFileId3; - } - public void setAtchFileId3(String atchFileId3) { - this.atchFileId3 = atchFileId3; - } - public List getAtchFileList() { - return atchFileList; - } - public void setAtchFileList(List atchFileList) { - this.atchFileList = atchFileList; - } - public Date getRegdate() { - return regdate; - } - public void setRegdate(Date regdate) { - this.regdate = regdate; - } - public String getMyMsgStDt() { - return myMsgStDt; - } - public void setMyMsgStDt(String myMsgStDt) { - this.myMsgStDt = myMsgStDt; - } - public String getMyMsgEndDt() { - return myMsgEndDt; - } - public void setMyMsgEndDt(String myMsgEndDt) { - this.myMsgEndDt = myMsgEndDt; - } - public String getPageType() { - return pageType; - } - public void setPageType(String pageType) { - this.pageType = pageType; - } - public String getMsgType() { - return msgType; - } - public void setMsgType(String msgType) { - this.msgType = msgType; - } - public String getMsgKind() { - return msgKind; - } - public void setMsgKind(String msgKind) { - this.msgKind = msgKind; - } - public String getMsgResendFlag() { - return msgResendFlag; - } - public void setMsgResendFlag(String msgResendFlag) { - this.msgResendFlag = msgResendFlag; - } - public String getCustomImgFlag() { - return customImgFlag; - } - public void setCustomImgFlag(String customImgFlag) { - this.customImgFlag = customImgFlag; - } - public String getMainImgFlag() { - return mainImgFlag; - } - public void setMainImgFlag(String mainImgFlag) { - this.mainImgFlag = mainImgFlag; - } - public String getMainLetterFlag() { - return mainLetterFlag; - } - public void setMainLetterFlag(String mainLetterFlag) { - this.mainLetterFlag = mainLetterFlag; - } - public String getMainMoreSamFlag() { - return mainMoreSamFlag; - } - public void setMainMoreSamFlag(String mainMoreSamFlag) { - this.mainMoreSamFlag = mainMoreSamFlag; - } - - public String getMainLetterTypeFlag() { - return mainLetterTypeFlag; - } - public void setMainLetterTypeFlag(String mainLetterTypeFlag) { - this.mainLetterTypeFlag = mainLetterTypeFlag; - } - public String getHeaderMsgSearchFlag() { - return headerMsgSearchFlag; - } - public void setHeaderMsgSearchFlag(String headerMsgSearchFlag) { - this.headerMsgSearchFlag = headerMsgSearchFlag; - } - public String getMoveAddrFlag() { - return moveAddrFlag; - } - public void setMoveAddrFlag(String moveAddrFlag) { - this.moveAddrFlag = moveAddrFlag; - } - public String getMoveAddrAllFlag() { - return moveAddrAllFlag; - } - public void setMoveAddrAllFlag(String moveAddrAllFlag) { - this.moveAddrAllFlag = moveAddrAllFlag; - } - public List getAddrIdList() { - return addrIdList; - } - public void setAddrIdList(List addrIdList) { - this.addrIdList = addrIdList; - } - public String getFileSn() { - return fileSn; - } - public void setFileSn(String fileSn) { - this.fileSn = fileSn; - } - public String getFileStreCours() { - return fileStreCours; - } - public void setFileStreCours(String fileStreCours) { - this.fileStreCours = fileStreCours; - } - public String getStreFileNm() { - return streFileNm; - } - public void setStreFileNm(String streFileNm) { - this.streFileNm = streFileNm; - } - public String getFileExtsn() { - return fileExtsn; - } - public void setFileExtsn(String fileExtsn) { - this.fileExtsn = fileExtsn; - } - public String getStrImgPath() { - return strImgPath; - } - public void setStrImgPath(String strImgPath) { - this.strImgPath = strImgPath; - } - public String getUserIp() { - return userIp; - } - public void setUserIp(String userIp) { - this.userIp = userIp; - } - public String getRefundYn() { - return refundYn; - } - public void setRefundYn(String refundYn) { - this.refundYn = refundYn; - } } diff --git a/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java b/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java index a454c346..699f1d93 100644 --- a/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java +++ b/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java @@ -424,7 +424,8 @@ public class MjonMsgDataController { model.addAttribute("msgResendAllGroupId", searchVO.getMsgResendAllGroupId()); model.addAttribute("msgResendAllAdvertiseYn", searchVO.getMsgResendAllAdvertiseYn()); model.addAttribute("msgResendAllReplaceYn", searchVO.getMsgResendAllReplaceYn()); - + + model.addAttribute("tabDision", "tab01"); }catch(Exception ex) { ex.printStackTrace(); @@ -696,7 +697,8 @@ public class MjonMsgDataController { model.addAttribute("resultPhoList", resultPhoList); paginationInfo.setTotalRecordCount( resultPhoList.size()> 0 ? ((Long)((EgovMap)resultPhoList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); - + + model.addAttribute("tabDision", searchVO.getTabDision()); return "web/msgdata/MsgDataSMLView"; } @@ -794,7 +796,236 @@ public class MjonMsgDataController { * @throws Exception */ @RequestMapping(value= {"/web/mjon/msgdata/excel/selectMsgExcelDataView.do"}) - public String selectMsgExcelDataView(@ModelAttribute("searchVO") MjonMsgDataVO searchVO, CateCode cateCode, ModelMap model) throws Exception{ + public String selectMsgExcelDataView(@ModelAttribute("searchVO") MjonMsgDataVO searchVO, + @ModelAttribute("cateCodeVO") CateCode cateCode, + HttpServletRequest request, + ModelMap model, + RedirectAttributes redirectAttributes) throws Exception{ + + try { + + /* + * 문자 샘플 검색어에 한글,영문,숫자, 공백을 제외한 문자가 포함된 경우 + * 검색이 안되도록 조치함. + * 2023.05.02 우영두 + * + * */ + String keyword = searchVO.getSearchKeyword(); + if(keyword != null) { + + keyword = URLDecoder.decode(keyword, "UTF-8"); + keyword = keyword.replaceAll("[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9 ]", ""); + + if(!keyword.equals("")) { + + System.out.println("==========================잘못된 접근 경로 정보 시작=========================================="); + System.out.println("1. 접근 IP 정보 ::: " + request.getRemoteAddr()); + + System.out.println("전달 파라미터 값 "); + Set keySet = request.getParameterMap().keySet(); + int paramCnt = 2; + for(String key: keySet) { + System.out.println(paramCnt + ". " +key + " : " + request.getParameter(key)); + paramCnt++; + } + + System.out.println("==========================잘못된 접근 경로 정보 종료=========================================="); + + redirectAttributes.addFlashAttribute("message", "잘못된 검색어입니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/web/main/mainPage.do"); + return redirectUrlMaker.getRedirectUrl(); + + } + + } + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + model.addAttribute("loginVO", loginVO); + + String categoryType = cateCode.getCateType(); + + if(categoryType == null) { + + categoryType = "N"; + + } + + // 문자 카테고리 리스트 불러오기 + //List cateConfList = letterService.selectCateConfWithList(categoryType); + //2뎁스 카테고리만 조회하게 수정 + List cateConfList = letterService.selectCateConfTwoDepthWithList(categoryType); + model.addAttribute("cateCodeList", cateConfList); + + // 문자 해쉬태그 리스트 불러오기 + String msgType = "M"; //문자발송, 선거문자에서만 보여질 해시 태그리스트를 불러온다. + List hashTagList = letterService.selectHashTagWithList(msgType); + model.addAttribute("hashTagList", hashTagList); + + // 문자 리스트 불러오기 + LetterVO letterVO = new LetterVO(); + if(letterVO.getPageUnit() != 10) { + letterVO.setPageUnit(letterVO.getPageUnit()); + } + + letterVO.setLetterType(searchVO.getMsgType()); + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(letterVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(letterVO.getPageUnit()); + paginationInfo.setPageSize(letterVO.getPageSize()); + + letterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + letterVO.setLastIndex(paginationInfo.getLastRecordIndex()); + letterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + + List resultPhoList = mjonMsgDataService.selectPhotoLetterList(letterVO); + + model.addAttribute("resultPhoList", resultPhoList); + paginationInfo.setTotalRecordCount( resultPhoList.size()> 0 ? ((Long)((EgovMap)resultPhoList.get(0)).get("totCnt")).intValue() : 0); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("letterVO", letterVO); + + //System.out.println(letterVO.getLetterType()); + + //발송결과 문자 재전송에서 넘어오는 경우 파마리터 전달 + List temp = searchVO.getMsgSeqList(); + + if(temp != null) { + + model.addAttribute("reSendMsgVO", searchVO); + + } + + //주소록에서 선택시 넘어오는 파라미터 + if("Y".equals(searchVO.getMoveAddrFlag())) { + model.addAttribute("addrVO", searchVO); + } + + //주소록에서 선택시 넘어오는 파라미터 + if("Y".equals(searchVO.getMoveAddrAllFlag())) { + AddrVO addrVO = new AddrVO(); + + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + if(userId != "") { + addrVO.setMberId(userId); + } + addrVO.setRecordCountPerPage(100000); + addrVO.setFirstIndex(0); + addrVO.setSearchAddrGrpId(request.getParameter("searchAddrGrpId")); + addrVO.setSearchCondition(request.getParameter("searchCondition")); + addrVO.setSearchKeyword(request.getParameter("searchKeyword")); + addrVO.setStartKeyword(request.getParameter("startKeyword")); + List addrList = addrService.selectAddrList(addrVO); + + List addrIdList = new ArrayList(); + for(AddrVO item : addrList) { + addrIdList.add(item.getAddrId()); + } + + searchVO.setAddrIdList(addrIdList); + searchVO.setMoveAddrFlag("Y"); + + model.addAttribute("addrVO", searchVO); + } + + + + //맞춤문자에서 이미지 선택시 넘어오는 파라미터 + if("Y".equals(searchVO.getCustomImgFlag())) { + + model.addAttribute("customImgVO", searchVO); + + } + + //메인화면에서 이미지 선택시 넘어오는 파라미터 + if("Y".equals(searchVO.getMainImgFlag())) { + + model.addAttribute("mainImgVO", searchVO); + + } + + //메인화면 인기문자(단/장문) 선택시 넘어오는 파라미터 + if("Y".equals(searchVO.getMainLetterFlag())) { + + MjonMsgDataVO mainLetterVO = mjonMsgDataService.selectLetterCnById(searchVO); + mainLetterVO.setMainLetterFlag(searchVO.getMainLetterFlag()); + //기존 문자내용에서 줄바꿈 문자를 태그로 변환해줌 - 사용자 화면단의 스크립트에서 오류 발생 방지 + mainLetterVO.setSmsTxt(mainLetterVO.getSmsTxt().replace("\r\n", "
") + .replace("\r", "
") + .replace("\n", "
") + .replace("\n\r", "
") + .replace("\"", "\\\"") + .replace("\'", "\\'")); + model.addAttribute("mainLetterVO", mainLetterVO); + + } + + //메인화면 더많은 샘플 보기 선택시 넘어오는 파라미터 + if("Y".equals(searchVO.getMainMoreSamFlag())) { + + model.addAttribute("moreSampleYn", searchVO.getMainMoreSamFlag()); + + } + + //헤더 문자검색에서 넘어오는 파라미터 + if("Y".equals(searchVO.getHeaderMsgSearchFlag())){ + + //공인 IP 구하기 + String userIp = EgovClntInfo.getClntIP(request); + //java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://api.ipify.org").openStream(), "UTF-8").useDelimiter("\\A"); + //userIp = s.next(); + + System.out.println(userIp); + System.out.println(searchVO.getSearchKeyword()); + + + + //기존 검색된 단어가 있는지 체크 + int searchWordCnt = mjonMsgDataService.selectMsgSearchWordCnt(searchVO); + + if(searchWordCnt > 0) { + + searchVO.setUserIp(userIp); + //기존 검색어가 있는 경우 검색 카운트만 증가시켜 준다. + mjonMsgDataService.updateMsgSearchWordCnt(searchVO); + + }else { + + searchVO.setUserIp(userIp); + //문자검색어 디비 저장처리 + int resultCnt = mjonMsgDataService.insertMsgSearchWordInfo(searchVO); + + } + + //문자검색 인기검색어 4개 불러오기 + List resultSearchWordList = mjonMsgDataService.selectMsgSearchWordList(searchVO); + + model.addAttribute("resultSearchWordList", resultSearchWordList); + model.addAttribute("headerMsgSearchVO", searchVO); + + } + + // 문자 재전송 New + model.addAttribute("msgResendAllFlag", searchVO.getMsgResendAllFlag()); + model.addAttribute("msgResendAllGroupId", searchVO.getMsgResendAllGroupId()); + model.addAttribute("msgResendAllAdvertiseYn", searchVO.getMsgResendAllAdvertiseYn()); + model.addAttribute("msgResendAllReplaceYn", searchVO.getMsgResendAllReplaceYn()); + + model.addAttribute("tabDision", "tab02"); + + }catch(Exception ex) { + ex.printStackTrace(); + + } + + return "web/msgdata/MsgDataView"; + } + + @RequestMapping(value= {"/web/mjon/msgdata/excel/selectMsgExcelDataView_backup.do"}) + public String selectMsgExcelDataView_backup(@ModelAttribute("searchVO") MjonMsgDataVO searchVO, CateCode cateCode, ModelMap model) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; @@ -822,13 +1053,13 @@ public class MjonMsgDataController { if(letterVO.getPageUnit() != 10) { letterVO.setPageUnit(letterVO.getPageUnit()); } - + /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(letterVO.getPageIndex()); paginationInfo.setRecordCountPerPage(letterVO.getPageUnit()); paginationInfo.setPageSize(letterVO.getPageSize()); - + letterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); letterVO.setLastIndex(paginationInfo.getLastRecordIndex()); letterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp index 9076d8cf..1fdcbb91 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -19,6 +19,11 @@ $(document).ready(function(){ + console.log(' + $(#tabDision).val() : ',$('#tabDision').val()) + if($('#tabDision').val() == 'tab02'){ + $('#send_adYnY').prop('checked', true); // 상태 변경 및 이벤트 발생 + advMsgInsert(); + } //받는사람 연락처 내용 처리 //Tabulator AJAX Data Loading @@ -3881,9 +3886,13 @@ function getMjMsgSentListAll(pageNo) { "/> + "/> +
-

문자전송

+

+ ${tabDision eq 'tab01' ? '문자전송' : (tabDision eq 'tab02' ? '대량문자/단체문자 발송' : '')} +

diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp index 7a44d85f..589255cc 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp @@ -6,1783 +6,10 @@ + + @@ -1852,10 +79,11 @@ function popScrCloseSetting(){
    -
  • -
  • - - +
  • + +
  • +
  • +
@@ -2173,3 +401,6 @@ function popScrCloseSetting(){ +
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp index 51f8a204..535a8927 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp @@ -33,7 +33,7 @@ $(document).ready(function(){ } //그림문자 샘플 탭 활성화 시키기 - TabType2($('.tabType2 li').eq(1), '2'); +// TabType2($('.tabType2 li').eq(1), '2'); // 맞춤제작 요청 JSPark => 2023.02.21 추가 //맞춤제작 등록 Popup @@ -1682,21 +1682,16 @@ function popScrCloseSetting(){
  • -
  • -
- - - + +
- - -
+
@@ -1758,7 +1753,7 @@ function popScrCloseSetting(){
-
+
<%-- 전체 diff --git a/src/main/webapp/js/web/msgdata/init.js b/src/main/webapp/js/web/msgdata/init.js new file mode 100644 index 00000000..c9740a71 --- /dev/null +++ b/src/main/webapp/js/web/msgdata/init.js @@ -0,0 +1,81 @@ + +var _regExp1 = /(^02.{0}|^01.{1}|^[0-9]{3})-?([0-9]{3,4})-?([0-9]{4})$/; + +var imgFilePath = []; // 최종 선택한 이미지 경로 저장 변수 +var imgFileId = []; // 최종 선택한 파일 아이디 저장 변수 +var templateYn = []; // 템플릿 사용 여부 저장 변수 +var tableL = null; //좌측 받는 사람 주소록 Tabulator 변수 +var tableR = null; //우측 주소록 불러오기 Tabulator 변수 +var tableAddr = null; //주소록 불러오기 팝업 Tabulator 변수 + +var loginVO = '${loginVO}'; + +var popCustomScrT=0; // 맞춤제작 요청 JSPark => 2023.02.21 추가 +var msgResendAllFlag = "${msgResendAllFlag}"; +var msgResendAllGroupId = "${msgResendAllGroupId}"; +var msgResendAllAdvertiseYn = "${msgResendAllAdvertiseYn}"; +var msgResendAllReplaceYn = "${msgResendAllReplaceYn}"; + +$(document).ready(function(){ + var tsMoreSampleYn = "${moreSampleYn}"; + var tsMainImgFlag = "${mainImgVO.mainImgFlag}"; + var tsMainLetterFlag = "${mainLetterVO.mainLetterFlag}"; + + //메인화면에서 샘플 더보기로 왔을 시 문자타입, 카테고리 세팅 + if(tsMoreSampleYn == 'Y'){ + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; + } + //메인화면에서 그림문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 + if(tsMainImgFlag == 'Y'){ + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; + } + //메인화면에서 단문장문 문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 + if(tsMainLetterFlag == 'Y'){ + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; + } + + + //문자 발송 화면 폼 불러오기 + listMsgDataView(); + + //최 하단 문자 샘플 탭 리스트 내용 불러오기 + fnLetterListAjax(1); + + //최 하단 그림문자 탭 리스트 내용 불러오기 + fnPhotoListAjax(1); + + // 내보관함 리스트 로그인이 완료된 경우에만 로드되도록 + if(loginVO != "" && loginVO != null){ + //최 하단 내문자함 탭 리스트 내용 불러오기 + fnMyMsgListAjax(1); + } + + //그림문자 샘플 탭 활성화 시키기 + + // var tabDision = '${tabDision}'; + // console.log('tabDision : ', tabDision); + // TabType1_advc($('.tabType1 li').eq(1)); + // TabType2($('.tabType2 li').eq(1), '2'); + + //document.ready 마지막에 그림문자를 조회하기 때문에 letterForm.letterType이 P로 고정되는데, 메인에서 왔을 경우 letterType을 다시 원복하기 위한 작업 + if(tsMoreSampleYn == 'Y'){ + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; + } + if(tsMainImgFlag == 'Y'){ + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; + } + if(tsMainLetterFlag == 'Y'){ + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; + } + + // 맞춤제작 요청 JSPark => 2023.02.21 추가 + //맞춤제작 등록 Popup + //customPopup(); +}); + diff --git a/src/main/webapp/js/web/msgdata/msgDataView.js b/src/main/webapp/js/web/msgdata/msgDataView.js new file mode 100644 index 00000000..0398bdc9 --- /dev/null +++ b/src/main/webapp/js/web/msgdata/msgDataView.js @@ -0,0 +1,1717 @@ + + +/** + * 20241218 advc 이호영 + * @기존 MsgDataView.jsp에 있는 js를 가져와서 분기 처리중 + * - document.ready는 init.js로 이동함 + * + * + */ + +// 문자 그룹정보 => 재전송용 +function getMjMsgGroupInfoByResend() { + $.ajax({ + type: "POST", + url: "/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do", + data: {"msgResendAllGroupId" : msgResendAllGroupId}, + dataType:'json', + async: false, + success: function (data) { + //alert(JSON.stringify(data)); + if(data.isSuccess == true){ + var msgData = data.resultMsgInfo; + var fileData = data.resultMsgAddPhotoInfo; + + // 발신번호 + var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); + if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) { + alert("발신번호가 이전에 발송한 번호가 아닙니다.\n발신번호를 확인해주세요.") + } + + var smsTxt = msgData.smsTxt; + var subject = msgData.subject; + var fileId = ""; + var filePath = ""; + var len = fileData.length; + + // 기존 내용 지워주기 + //$(".btnReset").trigger("click"); + $('.delLi').each(function(){ + $(this).remove(); + }); + + $('.preBoxF').each(function(){ + $(this).remove(); + }); + + $('#imgCnt').val(0); + + // 기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기 + imgFilePath = []; + imgFileId = []; + + // 문자제목 + if (msgData.subject != null && msgData.subject != "") { + $('.msg_title').addClass('active'); + $("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기 + $('.textbox').show(); + $("#mmsSubject").val(subject); + } + + // 문자내용 + if (smsTxt.indexOf("(광고)") == 0) { + $('#send_adYnY').prop('checked', true); + + //광고 상하단 내용 넣어주기 + advMsgInsert(); + + // 광고 기본정보 제거 + smsTxt = $.trim(smsTxt.replace("(광고)", "")); + var smsTxtLastIdxCnt = smsTxt.lastIndexOf("무료거부"); + if (smsTxtLastIdxCnt != -1) { + smsTxt = $.trim(smsTxt.substring(0, smsTxtLastIdxCnt)); + } + } + $('#smsTxtArea').val(smsTxt); + + // 첨부 이미지가 있는경우 이미지 처리해주기 + if(len > 0) { + for(var i=0; i < len; i++) { + var num = i + 1; + var imgId = fileData[i].atchFileId; + var imgSn = fileData[i].fileSn; + var fileStreCours = fileData[i].fileStreCours; + var streFileNm = fileData[i].streFileNm; + var fileExtsn = fileData[i].fileExtsn; + + /* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */ + var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn; + myMsgImageControl(imgSrc, "edit_n", "Template", imgId); + } + + fnByteString($('#smsTxtArea').val()); + } + else { + fnByteString($('#smsTxtArea').val()); + } + + // 문자전송 상단으로 이동 + var sendOfT=$('.send_top').offset().top; + $('html,body').stop().animate({'scrollTop':sendOfT-60},250); + + } else { + //alert("Message : " + msg); + } + }, + error: function (e) { + //alert("저장에 실패하였습니다."); + //console.log("ERROR : ", e); + } + }); +} + +// 문자 상세정보 => 재전송용 +function getMjMsgListByResend() { + $.ajax({ + type: "POST", + url: "/web/mjon/msgdata/selectMjMsgListByResendAjax.do", + data: {"msgResendAllGroupId" : msgResendAllGroupId}, + dataType:'json', + async: false, + success: function (data) { + console.log('data : ', data); + if(data.isSuccess == true){ + var listCnt = data.resultList.length; + + //수신자 처리 변수 + var callToList = []; //수신자 처리 리스트 + var tableData = []; //수신자 tabulator 처리 변수 + + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 + callToList[i] = data.resultList[i].callTo; + tableData.push({phone: removeDash(callToList[i])}); + } + + console.log('tableData : ', tableData); + if(tableData.length > 0){ + + // 데이터 추가 + setTimeout(() => { + tableL.addData(dupliPhoneData(tableData)); + totRows = tableL.getRows().length; + console.log('totRows : ', totRows); + updateTotCnt(totRows); //전체 데이터 갯수 구하기 + + //결제 금액 구하기 + totalPriceSum(totRows); + }, 0); // 초기화 직후에 실행 + } + + } else { + //alert("Message : " + msg); + } + }, + error: function (e) { + //alert("저장에 실패하였습니다."); + //console.log("ERROR : ", e); + } + }); +} + +// 문자발송 URL Move +function goMsgUrlMove() { + document.location.href = "/web/mjon/msgdata/selectMsgDataView.do"; +} + +function listMsgDataView(){ + + var sendData = $(document.goPageAjax).serializeArray() ; + console.log('sendData : ', sendData) + $(".contentArea").load("/web/mjon/msgdata/selectMsgDataSMLViewAjax.do", sendData ,function(response, status, xhr){ + + //문자 재전송 및 주소록 전달 처리를 위해 사용 + $("#msgForm").ready(function(){ //문자 내용 폼이 로드된 후 실행 + + //헤더 문자검색 결과 처리 + var headerMsgSearchFlag = '${headerMsgSearchVO.headerMsgSearchFlag}'; + + if(headerMsgSearchFlag == 'Y'){ + + var letterType = '${headerMsgSearchVO.msgType}'; + var form = document.letterForm; + var searchKeyword = '${headerMsgSearchVO.searchKeyword}'; + form.letterType.value = letterType; + form.searchKeyword.value = searchKeyword; + + if(letterType == 'P'){ + + //최 하단 그림문자 탭 리스트 내용 불러오기 + fnPhotoListAjax(1); + + //문자 샘플 탭 활성화 시키기 + TabType2($('.tabType2 li').eq(1), '2'); + //하단 리스트 탭으로 이동 시키기 + var offset = $('.tabType2').offset(); + $('html').animate({scrollTop : offset.top}, 400); + + }else if(letterType == 'L' || letterType == 'S' ){ + + //문자 샘플 탭 활성화 시키기 + TabType2($('.tabType2 li').eq(0), '1'); + + //최 하단 문자 샘플 탭 리스트 내용 불러오기 + fnLetterListAjax(1); + if(letterType == 'S'){ + + $('.tDep1_letType a').eq(0).addClass('on'); + $('.tDep1_letType a:last-child').removeClass('on'); + + }else{ + + $('.tDep1_letType a').eq(0).removeClass('on'); + $('.tDep1_letType a:last-child').addClass('on'); + + } + + //하단 리스트 탭으로 이동 시키기 + var offset = $('.tabType2').offset(); + $('html').animate({scrollTop : offset.top}, 400); + + } + + + } + + + //메인화면 더많은 샘플보기 버튼 선택시 처리 + var moreSamFlag = '${moreSampleYn}'; + + if(moreSamFlag == 'Y'){ + + //문자 샘플 탭 활성화 시키기 + var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; + var letterTab = '0'; + var cateNo = "${cateCodeVO.cateNo}"; + if(mainLetterTypeFlag == 'P'){ + TabType2($('.tabType2 li').eq(1), '2'); + }else{ + TabType2($('.tabType2 li').eq(letterTab), '1'); + } + //장문 일 시 tDep1_letType 탭 세팅 + if(mainLetterTypeFlag == 'L'){ + $('.tDep1_letType a').removeClass('on'); + $('.tDep1_letType a').eq(1).addClass('on'); + } + + //카테고리 탭 활성화 처리 + if(mainLetterTypeFlag == 'P'){ //그림문자 샘플로 이동 왔을 시 + $('.tDep2_cateCode').find('.on').removeClass('on'); + $('.tDep2_cateCode a').each(function(index){ + if($(this).attr('value') == cateNo){ + $(this).addClass('on'); + } + }) + } + if(mainLetterTypeFlag != 'P'){ //단문,장문 샘플로 왔을 시 + $('.tDep1_cateCode').find('.on').removeClass('on'); + $('.tDep1_cateCode a').each(function(index){ + if($(this).attr('value') == cateNo){ + $(this).addClass('on'); + } + }) + } + + + //하단 리스트 탭으로 이동 시키기 + var offset = $('.tabType2').offset(); + $('html').animate({scrollTop : offset.top}, 400); + + + } + + + //메인화면 그림문자 이미지 선택시 처리 + var mainImgFlag = '${mainImgVO.mainImgFlag}'; + if(mainImgFlag == 'Y'){ + //카테고리 처리 + var cateNo = "${cateCodeVO.cateNo}"; + $('.tDep2_cateCode').find('.on').removeClass('on'); + $('.tDep2_cateCode a').each(function(index){ + if($(this).attr('value') == cateNo){ + $(this).addClass('on'); + } + }) + + + var atchFileId = '${mainImgVO.atchFileId1}'; + var fileSn = '${mainImgVO.fileSn}'; + var strImgPath = '${mainImgVO.strImgPath}'; + + fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); + + } + + //메인화면 인기문자 메세지 선택시 처리 + var mainLetterFlag = '${mainLetterVO.mainLetterFlag}'; + if(mainLetterFlag == 'Y'){ + var letterTab = '0'; + //문자샘플 활성화 처리 + TabType2($('.tabType2 li').eq(0), '1'); + //단문,장문 탭 활성화 처리 + var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; + if(mainLetterTypeFlag == 'L'){ + $('.tDep1_letType a').removeClass('on'); + $('.tDep1_letType a').eq(1).addClass('on'); + } + //카테고리 활성화 처리 + var cateNo = "${cateCodeVO.cateNo}"; + $('.tDep1_cateCode').find('.on').removeClass('on'); + $('.tDep1_cateCode a').each(function(index){ + if($(this).attr('value') == cateNo){ + $(this).addClass('on'); + } + }) + var smsTxt = '${mainLetterVO.smsTxt}'; + if(smsTxt != null){ + + smsTxt = smsTxt.replaceAll("
", "\n"); //줄발꿈문자 변환하기 + $("#smsTxtArea").val(smsTxt); + fnByteString(smsTxt); + + } + + } + + //맞춤제작 내보관함 이미지 선택시 처리 + var customImgFlag = '${customImgVO.customImgFlag}'; + if(customImgFlag == 'Y'){ + + var atchFileId = '${customImgVO.atchFileId1}'; + var fileSn = '${customImgVO.fileSn}'; + var strImgPath = '${customImgVO.strImgPath}'; + + fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); + + } + + //문자 재전송 처리 + var msgResendFlag = '${reSendMsgVO.msgResendFlag}'; + var msgSeqList = []; + msgSeqList = '${reSendMsgVO.msgSeqList}'; + if(msgSeqList.length > 0){ + + fnMsgResend(msgResendFlag, msgSeqList); + + } + + //주소록에서 주소를 전송한 경우 처리 + var moveAddrFlag = '${addrVO.moveAddrFlag}'; + var addrIdList = []; + addrIdList = '${addrVO.addrIdList}'; + if(addrIdList.length > 0) { + fnAddrSet(moveAddrFlag, addrIdList); + } + + // 문자 재전송 New + if (msgResendAllFlag == "Y") { + if (msgResendAllReplaceYn != "Y") { + // 문자 그룹정보 => 재전송용 + getMjMsgGroupInfoByResend(); + } + + // 문자 상세정보 => 재전송용 + getMjMsgListByResend(); + } + + }); + + }).slideDown(); +} + +function fnCustomImgSendMsg(atchFileId, fileSn, filePath){ + + + var imgId = ""; + var imgSrc = ""; + + /* imgSrc = filePath.replace("/usr/local/tomcat_mjon/webapps/mjon",""); */ + /* imgSrc = filePath; */ + imgId = atchFileId; + + imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + atchFileId + '&fileSn=' + fileSn; + + myMsgImageControl(imgSrc, "edit_n", "Template", imgId); + +} + +function fnMsgResend(msgResendFlag, msgSeqList){ + + if(msgResendFlag == 'Y'){ // 문자재전송에서 넘어오는 경우 + + var form = document.msgResendForm; + form.msgSeqList.value = msgSeqList; + + var data = new FormData(form); + url = "/web/mjon/msgdata/selectReSendMsgDataListAjax.do"; + + $.ajax({ + type: "POST", + url: url, + data: data, + dataType:'json', + async: false, + processData: false, + contentType: false, + cache: false, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + if("fail"==returnData.result){ + + alert(returnData.message); + return false; + + }else if("loginFail"==returnData.result){ + + alert(returnData.message); + return false; + + }else if(returnData.resultListCnt == '0'){ + + alert("재전송 문자내용이 없습니다."); + return false; + + }else{ + + var data = returnData; + var listCnt = returnData.resultListCnt; + var photoInfo = returnData.resultMsgPhotoInfo; + //수신자 처리 변수 + var callToList = []; //수신자 처리 리스트 + var tableData = []; //수신자 tabulator 처리 변수 + + //var subject = data.resultList[0].subject; //제목 + //var smsTxt = data.resultList[0].smsTxt; //문자내용 + //var fileCnt = data.resultList[0].fileCnt; //그림문자 이미지 갯수 + //var filePath1 = data.resultList[0].fileType1; //이미지1 파일 경로 + //var filePath2 = data.resultList[0].fileType2; //이미지2 파일 경로 + //var filePath3 = data.resultList[0].fileType3; //이미지3 파일 경로 + //var atchFileId1 = photoInfo.atchFileId1; //이미지1 파일 번호 + //var atchFileId2 = photoInfo.atchFileId2; //이미지2 파일 번호 + //var atchFileId3 = photoInfo.atchFileId3; //이미지3 파일 번호 + + + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 + + callToList[i] = data.resultList[i].callTo; + tableData.push({phone: removeDash(callToList[i])}); + + } + + if(tableData.length > 0){ + + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 + + //totRows = tableL.getRows().length; + //updateTotCnt(totRows); //전체 데이터 갯수 구하기 + + //결제 금액 구하기 + //totalPriceSum(totRows); + + } + + return false; + + } + + } else if(status== 'fail'){ + alert(returnData.message); + } + }, + error: function (e) { alert("문자 재전송 번호 등록에 실패하였습니다."); console.log("ERROR : ", e); } + }); + + } + +} + + +function fnAddrSet(moveAddrFlag, addrIdList){ + + if(moveAddrFlag == 'Y'){ // 주소록에서 넘어오는 경우 + + var form = document.moveAddrForm; + form.addrIdList.value = addrIdList; + + var data = new FormData(form); + url = "/web/mjon/addr/selectAddrDataListAjax.do"; + + $.ajax({ + type: "POST", + url: url, + data: data, + dataType:'json', + async: true, + processData: false, + contentType: false, + cache: false, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + if("fail"==returnData.result){ + + alert(returnData.message); + return false; + + }else if("loginFail"==returnData.result){ + + alert(returnData.message); + return false; + + }else if(returnData.resultListCnt == '0'){ + + alert("전달된 주소록이 없습니다."); + return false; + + }else{ + + var listCnt = returnData.resultListCnt; + + //수신자 처리 변수 + var tableData = []; //수신자 tabulator 처리 변수 + + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 + + tableData.push({ + name: returnData.resultList[i].addrNm + ,phone: removeDash(returnData.resultList[i].addrPhoneNo) + ,rep1: returnData.resultList[i].addrInfo1 + ,rep2: returnData.resultList[i].addrInfo2 + ,rep3: returnData.resultList[i].addrInfo3 + ,rep4: returnData.resultList[i].addrInfo4 + }); + + } + + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 + + totRows = tableL.getRows().length; + updateTotCnt(totRows); //전체 데이터 갯수 구하기 + + //결제 금액 구하기 + totalPriceSum(totRows); + + return false; + + } + + } else if(status== 'fail'){ + alert(returnData.message); + } + }, + error: function (e) { + alert("주소록 가져오기에 실패하였습니다."); + console.log("ERROR : ", e); + }, + beforeSend : function(xmlHttpRequest) { + //로딩창 show + $('.loading_layer').addClass('active'); + }, + complete : function(xhr, textStatus) { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + }); + + } + +} + +function fnLetterListAjax(index){ + var form = document.letterForm; + var letterType = form.letterType.value; + + if($('.tDep1_letType a').eq(0).hasClass('on')) { + form.letterType.value='S'; + } else if ($('.tDep1_letType a').eq(1).hasClass('on')) { + form.letterType.value='L'; + } + + //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 + if(form.searchKeyword.value != '') { + form.categoryCode.value = ""; + form.hashTag.value = ""; + + $('.tDep1_cateCode').find('.on').removeClass('on'); + $('.tDep1_cateCode').find('.cateAll').addClass('on'); + $('.tDep1_hashTag').find('.on').removeClass('on'); + $('.tDep1_hashTag').find('.hashAll').addClass('on'); + }else{ + //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 + var strTagTxt = $('.tDep1_hashTag').find('.on').text().replace("#",""); + if(strTagTxt == "전체"){ + form.hashTag.value = ""; + }else{ + form.hashTag.value = strTagTxt; + } + } + + form.pageIndex.value = index; + form.letterType.value = letterType; + var sendData = $(document.letterForm).serializeArray(); + //하위 카테고리 + $("#tDep1_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ + if(document.letterForm.searchKeyword.value == ''){ + $('.bottom_content .area_total_count').hide(); + } + if(form.hashTag.value != ''){ + if($('#letterLoad .nodata_box').length > 0){ + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); + } + } + + }); + //문자샘플 + $("#letterLoad").load("/web/mjon/msgdata/selectLetterDataListAjax.do", sendData ,function(response, status, xhr){ + if(document.letterForm.searchKeyword.value == ''){ + $('.bottom_content .area_total_count').hide(); + } + if(form.hashTag.value != ''){ + if($('#letterLoad .nodata_box').length > 0){ + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); + } + } + + }); + +} + +function fnPhotoListAjax(index){ + var form = document.letterForm; + //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 + if(form.searchKeyword.value != '') { + form.categoryCode.value = ""; + form.hashTag.value = ""; + + $('.tDep2_cateCode').find('.on').removeClass('on'); + $('.tDep2_cateCode').find('.cateAll').addClass('on'); + $('.tDep2_hashTag').find('.on').removeClass('on'); + $('.tDep2_hashTag').find('.hashAll').addClass('on'); + }else{ + //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 + var strTagTxt = $('.tDep2_hashTag').find('.on').text().replace("#",""); + if(strTagTxt == "전체"){ + form.hashTag.value = ""; + }else{ + form.hashTag.value = strTagTxt; + } + } + form.letterType.value = 'P'; + form.pageIndex.value = index; + var sendData = $(document.letterForm).serializeArray(); + //하위 카테고리 + $("#tDep2_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ + if(document.letterForm.searchKeyword.value == ''){ + $('.bottom_content .area_total_count').hide(); + } + if(form.hashTag.value != ''){ + if($('#letterLoad .nodata_box').length > 0){ + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); + } + } + + }); + + $("#photoLoad").load("/web/mjon/msgdata/selectPhotoDataListAjax.do", sendData ,function(response, status, xhr){ + photoLayerView(); + if(document.letterForm.searchKeyword.value == ''){ + $('.bottom_content .area_total_count').hide(); + } + if(form.hashTag.value != ''){ + if($('#photoLoad .nodata_box').length > 0){ + $('#photoLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); + } + } + }); + +} + +function fnMyMsgListAjax(index){ + + if(loginVO == "" || loginVO == null){ + //alert("로그인 후 사용이 가능합니다."); + location.href="/web/user/login/login.do"; + return false; + }else{ + document.myMsgForm.pageIndex.value = index; + var sendData = $(document.myMsgForm).serializeArray(); + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ + /* $(".msg_cont").mCustomScrollbar({ + axis: 'y', + scrollbarPosition: "inside", + theme: "dark", + autoHideScrollbar: false + }); */ + + }); + } +} + +function fnMyMsgSearchListAjax(index){ + + document.myMsgForm.pageIndex.value = index; + var sendData = $(document.myMsgForm).serializeArray(); + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ + + /* $(".msg_cont").mCustomScrollbar({ + axis: 'y', + scrollbarPosition: "inside", + theme: "dark", + autoHideScrollbar: false + }); */ + + }); + +} + +function fnMsgExcelDataView(){ + + /* var sendData = $(document.searchForm).serializeArray() ; + + //엑셀 문자 탭 활성화 시키기 + TabType1($('.tabType1 li').eq(1), '2'); + + $(".contentExcelArea").load("/web/mjon/msgdata/selectMsgExcelDataViewAjax.do", sendData ,function(response, status, xhr){ + }); */ + + location.href="/web/mjon/msgdata/excel/selectMsgExcelDataView.do"; + +} + +function fnMsgDataView(){ + + location.href="/web/mjon/msgdata/selectMsgDataView.do"; + +} + + +function fn_saveMyMsg(){ // 내 문자 보관함 저장 + + var form = document.msgForm; + var myImgFileId = []; //신규 이미지 추가 파일 Id 저장 변수 + var adverYn = $("input[name='send_adYn']:checked").val(); //광고 체크여부 + + /* + 이미지 에디터를 사용하여 추가한 경우 이미지 업로드 처리 - 단 에디터에서 템플릿을 선택한 경우는 업로드안함 + 신규 이미지 추가를 한 경우만 이미지 파일 업로드 처리함 + */ + $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { + + if($("#delLi"+idx).hasClass("Template")){ //이미지 에디터 템플릿 이미지 선택 여부 확인 + templateYn.push("Y"); + } else { + templateYn.push("N"); + } + + if($(el).hasClass("edit_y")) { //에디터를 사용했고 + //이미지 변환 + const imgBase64 = $(el).attr("src"); + const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 + + + let array = []; + for (let i = 0; i < decodImg.length; i++) { + array.push(decodImg.charCodeAt(i)); + } + + const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); + const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; + let formData = new FormData(); + formData.append('file', file, fileName); + + $.ajax({ + type: 'post', + url: '/web/mjon/msgdata/insertEditImageAjax.do', + cache: false, + data: formData, + dataType:'json', + processData: false, + contentType: false, + async: false, + success: function (returnData, status) { + if(status == 'success'){ + // imgFilePath 에 배열로 담아주기(이미지 순서대로) + //console.log(imgFilePath); + //imgFilePath.push(returnData.filefullPath); + myImgFileId.push(returnData.atchFileId); + + } else if(status== 'fail'){ + alert(returnData.message); + } + }, + error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } + }); + + } else { + //에디터 안거친 템플릿 이미지면 바로 src 때림 + imgFilePath.push($(el).attr("src")); + } + }); + + if(myImgFileId.length > 0 && imgFileId.length > 0){ //기존 샘플 이미지와 이미지 에디터 둘다 사용한 경우 + + var tempImgId = []; + + tempImgId.push(myImgFileId); + tempImgId.push(imgFileId); + form.imgFileId.value = tempImgId; + + }else if(myImgFileId.length > 0){ //이미지 에디터에서 신규 등록한 이미지 + + form.imgFileId.value = myImgFileId; + + }else{ //샘플 이미지 선택만 했을경우(이미지 에디터 사용 안했을때) + + form.imgFileId.value = imgFileId; + } + + //광고 문자 내용 합쳐주기 + if(adverYn == 'Y'){ + + var adTxt = $('.ad_txt').text(); + var denyTxt = $('.deny_txt').text(); + var smsTxt = form.smsTxtArea.value; + + //var adverTxt = adTxt + '\n\n' + smsTxt + '\n\n' + denyTxt; + var adverTxt = smsTxt; + form.smsTxt.value = adverTxt; + + }else{ + + var smsTxt = form.smsTxtArea.value; + form.smsTxt.value = smsTxt; + + } + + //문자 종류 설정(S:단문 , L:장문 , P:그림) + var photoSts = $('.delLi').length; + var conLeng = conByteLeng(form.smsTxt.value); // 내용 문자 입력 바이트 수 계산하기 + + if(photoSts > 0){ + + form.msgType.value = 'P'; + + }else if(conLeng > 90){ + + form.msgType.value = 'L'; + + }else{ + + form.msgType.value = 'S'; + + } + + if(photoSts == '0' && conLeng == '0'){ + + alert("문자내용을 입력해 주세요."); + return false; + + } + + var data = new FormData(form); + url = "/web/mjon/msgdata/insertMyMsgDataAjax.do"; + + $.ajax({ + type: "POST", + url: url, + data: data, + dataType:'json', + async: false, + processData: false, + contentType: false, + cache: false, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + if("fail"==returnData.result){ + + alert(returnData.message); + return false; + + }else{ + + alert("내 문자함에 저장되었습니다."); + + //내 문자함 탭 활성화 시키기 + TabType2($('.tabType2 li').eq(3), '4'); + var offset = $('.tabType2').offset(); + $('html, body').animate({scrollTop : offset.top-140}, 400); + + //최 하단 내문자함 탭 리스트 내용 불러오기 + var sendData = $(document.myMsgForm).serializeArray(); + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ + }); + + } + + } else if(status== 'fail'){ + alert(returnData.message); + } + }, + error: function (e) { alert("문자 저장에 실패하였습니다."); console.log("ERROR : ", e); } + }); + +} + +//내 문자함으로 탭이동 +function fnGoMyMsg(){ + + //내 문자함 탭 활성화 시키기 + TabType2($('.tabType2 li').eq(3), '4'); + + var offset = $('.tabType2').offset(); + $('html, body').animate({scrollTop : offset.top-140}, 400); + +} + + +// MJ_MSG_GROUP_DATA 누락데이터 체크 +function getMsgGroupDataErrorCheck() { + var isError = false; + + $.ajax({ + type: "POST", + url: "/web/mjon/msgdata/selectMsgGroupNotExistInfoAjax.do", + data: {}, + dataType:'json', + async: false, + success: function (data) { + if (data.isSuccess) { + if (data.isError == true) { + isError = true; + } + } + }, + error: function (e) { + + } + }); + + return isError; +} + +function checkConf() { + var confCheck = false; + + $.ajax({ + type: "POST", + url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do", + data: {}, + 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 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(){ + + // 타블레이터 호출 + var $selectedData = tableL.getData(); // 데이터 가져오기 + + if(!checkConf()){ //문자온 conf-check + alert("현재 문자 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요."); + return false; + } + + var form = document.msgForm; + var totPriceOnly = stringReplaceAll(form.totPrice.value, ",", ""); + var userMoneyOnly = stringReplaceAll(form.myPrice.value, ",", ""); + + // test 주석 + if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){ + alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다."); + return false; + } + + // 폼 유효성 검사 + if (!validateForm(form)) return false; + + var spamStatus = false; + var exceptSpamYn = $("#exceptSpamYn").val(); //금지어 필터링 예외 여부 - N 일 경우만 스팸 검사를 진행 + + + var blineCodeYn = $("#blineCode").val(); + if(blineCodeYn != 'N'){ + if(!blineSendCheck(blineCodeYn)){ //문자온 conf-check + alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요."); + return false; + } + } + + if($selectedData.length > 300000){ + alert("30만건까지 발송이 가능합니다.\n받는사람 목록을 확인해주세요."); + return false; + } + + + + if(!confirm("문자를 전송하시겠습니까?")){ + return false; + } + + //총 결제금액 천단위 콤마 삭제 후 전송 + var totPrice = form.totPrice.value; + form.totPrice.value = totPrice.replace(",",""); + + + //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. + //이벤트 캐시가 부족한 경우 이벤트 캐시로 발송 가능한 만큼만 이벤트 금액으로 발송 처리해줌. + //이 후 나머지 발송 건수는 이벤트 캐시가 아닌 일반 단가로 발송 처리를 진행 함. + var eventStatus = form.eventStatus.value; + + if(eventStatus == 'Y'){ //이벤트 진행 대상자이면 문자종류에 이벤트로 구분 + + form.eventYn.value = "Y"; //이벤트문자 종류 설정 + + } + + var eventRemainCash = parseFloat(form.eventRemainCash.value); + console.log('eventStatus : ', eventStatus); + + if(eventStatus == 'Y' + && parseFloat(eventRemainCash) < parseFloat(totPriceOnly)) + { + console.log('eventRemainCash : ', eventRemainCash); + if(!confirm("고객님의 이벤트 캐시 잔액(" + eventRemainCash + "원) 부족으로 요청하신 문자("+numberWithCommas($selectedData.length)+"건)를 모두 발송할 수 없습니다. 이벤트 캐시 초과 건에 대해서는 일반 단가를 적용하여 발송하시겠습니까?")){ + return false; + } + } + + console.log(' !!! imgFilePath : ', imgFilePath); + + // img 처리 영역 + imgFilePath = []; + $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { + if($("#delLi"+idx).hasClass("Template")){ + templateYn.push("Y"); + } else { + templateYn.push("N"); + } + + if($(el).hasClass("edit_y")) { + //이미지 변환 + const imgBase64 = $(el).attr("src"); + const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 + + + let array = []; + for (let i = 0; i < decodImg.length; i++) { + array.push(decodImg.charCodeAt(i)); + } + + const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); + const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; + let formData = new FormData(); + formData.append('file', file, fileName); + + $.ajax({ + type: 'post', + url: '/web/mjon/msgdata/insertEditImageAjax.do', + cache: false, + data: formData, + dataType:'json', + processData: false, + contentType: false, + async: false, + success: function (returnData, status) { + if(status == 'success'){ + console.log('returnData : ',returnData) + // imgFilePath 에 배열로 담아주기(이미지 순서대로) + //console.log(imgFilePath); + imgFilePath.push(returnData.filefullPath); + imgFileId.push(returnData.atchFileId); + + } else if(status== 'fail'){ + alert(returnData.message); + } + }, + error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } + }); + + } else { + if(imgFilePath.length != imgFileId.length){ + //에디터 안거친 템플릿 이미지면 바로 src 때림 + imgFilePath.push($(el).attr("src")); + } + } + }); + + + //form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 + form.templateYnAdvc.value = templateYn; + console.log('imgFilePath : ', imgFilePath); + console.log('imgFilePath : ', JSON.stringify(imgFilePath)); + console.log('imgFileId : ', imgFileId); + console.log('imgFileId : ', JSON.stringify(imgFileId)); + form.imgFilePathAdvc.value = imgFilePath; + form.imgFileIdAdvc.value = imgFileId; +// form.imgFilePath.value = JSON.stringify(imgFilePath).replace(/\\/g, ''); +// form.imgFileId.value = JSON.stringify(imgFileId).replace(/\\/g, ''); + form.callFrom.value = removeDash($('#callFromList').val()); // 발신번호 대쉬(-) 문자 없애주기 + + //광고 종류 설정 + var adverYn = $("input[name='send_adYn']:checked").val(); + if(adverYn == 'Y'){ + form.msgKind.value = "A"; //광고문자 종류 설정 + }else{ + form.msgKind.value = "N"; //일반문자 종류 설정 + } + + // 예약 확인 + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 + form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 + + if(reserYn == 'Y'){ + + var date = $(".resDate").val();//form.msgResDate.value; + var hour = form.msgResHour.value; + var min = form.msgResMin.value; + + if(date == ""){ + + alert("예약전송 날짜를 선택해 주세요."); + return false; + + }else{ + + var now = new Date(); + var reqDate = date + " " + hour + ":" + min + ":00"; + var gapDate = getGapDayTime(date, hour, min); + + if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜. + alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요."); + return false; + }else{ + form.reqDate.value = reqDate; //예약일자 파라미터 저장 + } + } + + }else{ + + form.reqDate.value = ""; + + } + + + + //발송 Ajax 호출해주기 + sendMsgAjax_advc(); +} + + +// 선택된 데이터의 길이에 따라 예상 시간 계산 함수 +function calculateEstimatedTime(selectedCount) { + //기준값 + // const processTimePerBatch = 130; // 130초 + + + // 30만건 기준 10분으로 기준을 잡아서 + // 시간계산함 + const processTimePerBatch = 600; + const batchSize = 300000; + + // 1건당 처리 시간 + const timePerRecord = processTimePerBatch / batchSize; + + // 예상 시간 계산 + const estimatedTimeInSeconds = selectedCount * timePerRecord; + + return estimatedTimeInSeconds.toFixed(2); +} + + + + +function sendMsgAjax_advc(){ + // 타블레이터 호출 + var $selectedData = tableL.getData(); // 데이터 가져오기 + + // 폼 데이터를 배열로 직렬화 + var form = $('#msgForm'); + var formDataArray = form.serializeArray(); + + // 배열을 객체로 변환 + var formData = {}; + $.each(formDataArray, function(index, field) { + formData[field.name] = field.value; + }); + + // 빈 값 제거 + removeEmptyValues(formData); + + // 선택된 데이터 추가 + formData["mjonMsgSendVOList"] = $selectedData; + + // JSON 데이터 확인 +// console.log("최종 formData:", JSON.stringify(formData)); + + + var url = "/web/mjon/msgdata/sendMsgDataAjax_advc.do"; + // 시작 시간 + const startTime = new Date(); + + + // 프로그래스파 시간을 위한 계산 + var estimtedTime = calculateEstimatedTime($selectedData.length); + console.log('estimtedTime : ', estimtedTime); + + + $.ajax({ + type: "POST", + url: url, + data: JSON.stringify(formData), + contentType: 'application/json', + dataType: 'json', + success: function (data) { + + // 요청 종료 시간 및 경과 시간 계산 + const endTime = new Date(); + const elapsed = (endTime - startTime) / 1000; // 밀리초 -> 초로 변환 + console.log('AJAX 요청 성공, 경과 시간 : ', elapsed); + if (elapsed >= 60) { + const minutes = Math.floor(elapsed / 60); // 분 계산 + const seconds = Math.floor(elapsed % 60); // 초 계산 + console.log('AJAX 요청 성공, 경과 시간 : ' + minutes + '분 ' + seconds + '초'); + } else { + console.log('AJAX 요청 성공, 경과 시간 : ' + elapsed + '초'); + } + + + + console.log('data : ', data); + /* message:"특정문구 일괄변환 치환문자 데이터가 없습니다." + status:"BAD_REQUEST" */ + + var status = data.status; + if("OK" == status){ + + var smsCnt = Number(data.object.resultSts); + var blockCnt = Number(data.object.resultBlockSts); + + if((smsCnt + blockCnt) == 0){ + + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.
다시 시도해주세요.
* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지
또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); + $('.mask').addClass('on'); + + }else{ + + $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + //예약발송 건의 경우 결과 팝업 문구 변경 + + var reserYn = $("input[name=reserYn]:checked").val(); + var resText = (reserYn === 'Y') ? '예약' : '발송'; + /* + if(reserYn == 'Y') + { + resText = "예약"; + } + else + { + resText = "발송"; + } + */ + $('.pop_msg_success .msg_text').html(resText+" 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
문자가 "+resText+" 되었습니다."); + + $('.mask').addClass('on'); + + } + + + }else if("BAD_REQUEST" == status){ + + alert(data.message); + return false; + + }else if("UNAUTHORIZED" == status){ + + alert(data.message); + //문자발송 URL Move + goMsgUrlMove(); + return false; + + }else if("NO_CONTENT" == status){ + + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + $('.pop_msg_fails .msg_text').html(returnData.message); + $('.mask').addClass('on'); + + } + + }, + beforeSend : function(xmlHttpRequest) { + // 프로그래스 바 실행 + // 프로그래스 바 실행 + progressStart(estimtedTime); + //로딩창 show +// $('.loading_layer').addClass('active'); + }, + complete : function(xhr, textStatus) { + + // 프로그래스 바 종료 + // 프로그래스 바 종료 + progressComplete();; +// 로딩창 hide +// $('.loading_layer').removeClass('active'); + }, + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } + }); + +} + +//폼 유효성 검사 함수 +function validateForm(form) { + + // 타블레이터 호출 + var $selectedData = tableL.getData(); // 데이터 가져오기 + + if($selectedData.length < 1){ + alert("받는사람 내역을 입력해주세요."); + return false; + } + + + if(form.callFromList.value == ""){ + + alert("발신번호를 입력해 주세요."); + return false; + + } + + if (form.title_status.value === 'N') { + form.mmsSubject.value = ""; + } else if (getSpacialStringChk(form.mmsSubject.value)) { + alert("문자 제목에는 치환문자(엑셀 내 *이름*, *1*, *2*, *3*, *4* 등)를 사용하실 수 없습니다."); + return false; + } + + //문자제목에 이모지가 있는지 체크 + var titleStatusYn = $("input[name='title_status']:checked").val(); + if(titleStatusYn == 'Y') { + if(!emojiCheck(form.mmsSubject.value)) return false; + } + + // 문자내용에 이모지가 있는지 체크 + var strCont = form.smsTxtArea.value; + if (!emojiCheck(strCont)) return false; + + var rtnStr = strChinJpnCheck(strCont); + if(rtnStr.length > 0){ + alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다."); + } + + if (imgFilePath.length === 0 && !form.smsTxtArea.value) { + alert("문자내용을 입력해 주세요."); + return false; + } + return true; +} + +//이벤트가 아닌 일반 개별 단가 셋팅해주기 +function getNorEachPrice(evnMsgType){ + + var norEachPrice = 0; + var evnImgCnt = $("#imgCnt").val(); + + //일반 단가로 변경해주기 + if(evnMsgType == '4'){ + + norEachPrice = $("#norsPrice").val(); + console.log("norEachPrice Short::: "+norEachPrice); + + }else if(evnMsgType == '6'){ + + if(evnImgCnt == 0){//장문 가격 + + norEachPrice = $("#normPrice").val(); + console.log("norEachPrice Long ::: "+norEachPrice); + + }else if(evnImgCnt == 1){ + + norEachPrice = $("#norpPrice").val(); + console.log("norEachPrice p1 ::: "+norEachPrice); + + }else if(evnImgCnt == 2){ + + norEachPrice = $("#norp2Price").val(); + console.log("norEachPrice p2 ::: "+norEachPrice); + + }else if(evnImgCnt == 3){ + + norEachPrice = $("#norp3Price").val(); + console.log("norEachPrice p3 ::: "+norEachPrice); + + } + + } + + return norEachPrice; +} + +//빈 값이나 null 값을 제거하는 함수 +function removeEmptyValues(obj) { + Object.keys(obj).forEach(function(key) { + if (obj[key] === null || obj[key] === '') { + delete obj[key]; + } + }); +} + + +function sendMsgAjax(paramSmsCnt, paramBlockCnt){ + var form = document.msgForm; + var reserYn = $("#reserveYn").val(); + + var data = new FormData(form); + url = "/web/mjon/msgdata/sendMsgDataAjax.do"; + + $.ajax({ + type: "POST", + url: url, + data: data, + dataType:'json', + async: true, + processData: false, + contentType: false, + cache: false, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + if("fail" == returnData.result){ + + alert(returnData.message); + return false; + + }else if("loginFail" == returnData.result){ + + alert(returnData.message); + return false; + + }else if("smsLengFail" == returnData.result){ + + alert(returnData.message); + return false; + + }else if("imgSourceFail" == returnData.result){ + + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + $('.pop_msg_fails .msg_text').html(returnData.message); + $('.mask').addClass('on'); + + }else if("spamKeyWordFail" == returnData.result){//스팸 및 스미싱 단어가 들어간 문자 발송시 회원 이용정지 처리 + + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + $('.pop_msg_spam .msg_text').html(returnData.message); + $('.mask').addClass('on'); + + }else if("statusFail" == returnData.result){ + + alert(returnData.message); + //문자발송 URL Move + goMsgUrlMove(); + return false; + + }else{ + + var smsCnt = Number(returnData.resultSts); + var blockCnt = Number(returnData.resultBlockSts); + + smsCnt = Number(smsCnt) + Number(paramSmsCnt); + blockCnt = Number(blockCnt) + Number(paramBlockCnt); + + if((smsCnt + blockCnt) == 0){ + + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.
다시 시도해주세요.
* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지
또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); + $('.mask').addClass('on'); + + }else{ + + $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + //예약발송 건의 경우 결과 팝업 문구 변경 + if(reserYn == 'Y'){ + $('.pop_msg_success .msg_text').html("예약 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
문자가 예약 되었습니다."); + }else{ + $('.pop_msg_success .msg_text').html("발송 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
문자가 발송 되었습니다."); + } + + $('.mask').addClass('on'); + + } + + } + + } else if(status== 'fail'){ + alert(returnData.message); + } + }, + beforeSend : function(xmlHttpRequest) { + //로딩창 show + $('.loading_layer').addClass('active'); + }, + complete : function(xhr, textStatus) { + //로딩창 hide + $('.loading_layer').removeClass('active'); + }, + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } + }); + +} + +function linkPage(pageNo){ + fnLetterListAjax(pageNo); +} + + +function linkPhoPage(pageNo){ + fnPhotoListAjax(pageNo); +} + +function myMsgPage(pageNo){ + fnMyMsgListAjax(pageNo); +} + +function fnMyMsgCheckDelete(){ + + var msgId = []; + if($("input:checkbox[name='myMsgDel']").is(":checked")==false){ + alert("선택된 항목이 없습니다."); + return; + } + + $("input:checkbox[name='myMsgDel']:checked").each(function(index){ + + msgId[index] = $(this).val(); + + }); + + if(msgId.length > 0){ + + document.myMsgForm.msgIdList.value = msgId; + var sendData = $(document.myMsgForm).serializeArray(); + + $("#myMsgLoad").load("/web/mjon/msgdata/deleteMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ + + //문자 내용 스크롤 적용 + /* $(".msg_cont").mCustomScrollbar({ + axis: 'y', + scrollbarPosition: "inside", + theme: "dark", + autoHideScrollbar: false + }); */ + + }); + + }else{ + + alert("삭제할 문자를 선택해 주세요."); + return false; + + } + +} + +//문자 샘플 2줄, 4줄 보기 기능 +function fnLPageUnit(){ + + var form = document.letterForm; + var pageUnit = form.LPageUnit.value; + + form.pageUnit.value = pageUnit; + fnLetterListAjax(1); + +} + +//그림문자 샘플 2줄, 4줄 보기 기능 +function fnPhPageUnit(){ + + var form = document.letterForm; + var pageUnit = form.PhPageUnit.value; + + form.pageUnit.value = pageUnit; + fnPhotoListAjax(1); + +} + +//내문자함 2줄 4줄보기 기능 +function fnMsgPageUnit(){ + + var form = document.myMsgForm; + var pageUnit = form.msgPageUnit.value; + + form.pageUnit.value = pageUnit; + fnMyMsgListAjax(1); + +} + +function fnMyMsgSearchListOrd(){ + + var form = document.myMsgForm; + var sortOrd = form.searchSortOrd.value; + + if(sortOrd == 'desc'){ + + form.searchSortOrd.value = 'asc'; + $('#sortCnd').text('등록순'); + + }else{ + + form.searchSortOrd.value = 'desc'; + $('#sortCnd').text('최근순'); + + } + + //내문자함 내용 검색하기 + fnMyMsgSearchListAjax(1); + +} + +function msgSuccessClose(obj){ + $(obj).closest('.pop_msg_success').attr('style',''); + //문자발송 URL Move + goMsgUrlMove(); + $('html').scrollTop(0); +} + +function msgFailsClose(obj){ + $(obj).closest('.pop_msg_fails').attr('style',''); +} + +function msgSpamClose(obj){ + $(obj).closest('.pop_msg_spam').attr('style',''); + //location.href="/web/uat/uia/actionLogout.do"; +} + +function msgResultLink(){ + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 + if(reserYn == 'Y'){ + + location.href="/web/mjon/reservmsg/selectReservMsgView.do"; + + }else{ + + location.href="/web/mjon/msgsent/selectMsgSentView.do"; + + } + +} + +//START +//맞춤제작 요청 JSPark => 2023.02.21 추가 +//맞춤제작 등록 Popup +function customPopup(){ + $("#customPopup").load("/web/mjon/custom/selectMsgCustomPopupAjax.do", "" ,function(response, status, xhr){ + popupImgList(1); + }); +} + +function openMsgCustomPopup() { + if(loginVO == "" || loginVO == null){ + alert("로그인 후 이용이 가능합니다."); + return false; + } else { + $("#customPopupOpen").trigger("click"); + } + $("#customType04").hide(); + popCustomScrT=$(window).scrollTop(); + popScrTarget(); +} + +$(window).on('load',function(){ + setTimeout(function(){ + popScrTarget(); + },500); +}); + +function popScrTarget(){ + var closeTarget=$('.custom_layer .tooltip-close'); + closeTarget.attr('onclick','popScrCloseSetting();'); +} + +function popScrCloseSetting(){ + setTimeout(function(){ + $(window).scrollTop(popCustomScrT); + },1); +} +//END \ No newline at end of file diff --git a/src/main/webapp/publish/js/content.js b/src/main/webapp/publish/js/content.js index 6c821544..81d09511 100644 --- a/src/main/webapp/publish/js/content.js +++ b/src/main/webapp/publish/js/content.js @@ -610,6 +610,16 @@ function wrapWindowByMask(item){ },250); } +// 문자보내기 tab 버튼 - send_top +function TabType1_advc(obj) { + var $tab = $(obj).closest("li"); + $tab.addClass("active"); + $tab.find("button").attr("title", "선택됨"); + $tab.siblings("li.tab").removeClass("active"); + $tab.siblings("li.tab").find("button").removeAttr("title"); + + +} // 문자보내기 tab 버튼 - send_top function TabType1(obj, tabId) {