From 3f323ca9f5aaee0d2d131d832e59a7e79380e072 Mon Sep 17 00:00:00 2001 From: itn Date: Wed, 11 Oct 2023 15:26:59 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=20=EC=9E=AC=EC=A0=84?= =?UTF-8?q?=EC=86=A1=20=EA=B8=B0=EB=8A=A5=20=EC=9E=91=EC=97=85=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mjo/msgdata/service/MjonMsgDataVO.java | 9 +- .../msgdata/web/MjonMsgDataController.java | 19 +++- .../sqlmap/let/msg/MjonMsgData_SQL_mysql.xml | 63 +++++++------- .../jsp/web/msgcampain/MsgDataView.jsp | 80 +++++++++++++---- .../jsp/web/msgdata/MsgDataSMLView.jsp | 78 +++++++++-------- .../WEB-INF/jsp/web/msgdata/MsgDataView.jsp | 87 +++++++++++++++---- .../jsp/web/msgsent/MsgSentAllListAjax.jsp | 9 +- 7 files changed, 236 insertions(+), 109 deletions(-) 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 e4cb9175..d4039d1c 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java @@ -70,7 +70,14 @@ public class MjonMsgDataVO extends UserDefaultVO{ private String msgResendAllFlag; private String msgResendAllGroupId; private String msgResendAllAdvertiseYn; - + private String atchFiles; + + public String getAtchFiles() { + return atchFiles; + } + public void setAtchFiles(String atchFiles) { + this.atchFiles = atchFiles; + } public String getMsgGroupId() { return msgGroupId; } 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 7260fd20..5a64c335 100644 --- a/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java +++ b/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java @@ -5881,6 +5881,7 @@ public class MjonMsgDataController { boolean isSuccess = true; String msg = ""; + List resultMsgAddPhotoInfo = null; LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); @@ -5894,6 +5895,21 @@ public class MjonMsgDataController { mjonMsgDataVO.setUserId(userId); mjonMsgDataVO.setMsgGroupId(mjonMsgDataVO.getMsgResendAllGroupId()); mjonMsgDataVO = mjonMsgDataService.selectMjMsgGroupInfoByResend(mjonMsgDataVO); + if (mjonMsgDataVO != null) { + String[] atchFiles = mjonMsgDataVO.getAtchFiles().split("\\^"); + if (atchFiles.length >= 1) { + mjonMsgDataVO.setAtchFileId1(atchFiles[0]); + } + if (atchFiles.length >= 2) { + mjonMsgDataVO.setAtchFileId2(atchFiles[1]); + } + if (atchFiles.length >= 3) { + mjonMsgDataVO.setAtchFileId3(atchFiles[2]); + } + } + + //문자함 리스트의 첨부이미지 정보 불러오기 + resultMsgAddPhotoInfo = mjonMsgDataService.selectMsgAddPhotoInfo(mjonMsgDataVO); } } catch(Exception e) { @@ -5903,7 +5919,8 @@ public class MjonMsgDataController { modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); - modelAndView.addObject("result", mjonMsgDataVO); + modelAndView.addObject("resultMsgInfo", mjonMsgDataVO); + modelAndView.addObject("resultMsgAddPhotoInfo", resultMsgAddPhotoInfo); return modelAndView; } diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index e1cd9f42..95074c6b 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -7255,37 +7255,42 @@ CALL_FROM AS callFrom , SUBJECT AS subject , SMS_TXT AS smsTxt - , ( - SELECT - IFNULL(FILE_PATH1, '') - FROM MJ_MSG_DATA + ,( + SELECT + CONCAT( + ( + IF(B.FILE_PATH1 IS NOT NULL, (SELECT + ATCH_FILE_ID + FROM LETTNFILEDETAIL + WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH1, '/', -1)) + LIMIT 1), '') + ) + ,'^', + ( + IF(B.FILE_PATH2 IS NOT NULL, (SELECT + ATCH_FILE_ID + FROM LETTNFILEDETAIL + WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH2, '/', -1)) + LIMIT 1), '') + ) + ,'^', + ( + IF(B.FILE_PATH3 IS NOT NULL, (SELECT + ATCH_FILE_ID + FROM LETTNFILEDETAIL + WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH3, '/', -1)) + LIMIT 1), '') + )) + FROM + MJ_MSG_DATA B WHERE - USER_ID = #userId# - AND MSG_GROUP_ID = #msgGroupId# - LIMIT 1 - ) filePath1 - , ( - SELECT - IFNULL(FILE_PATH2, '') - FROM MJ_MSG_DATA - WHERE - USER_ID = #userId# - AND MSG_GROUP_ID = #msgGroupId# - LIMIT 1 - ) filePath2 - , ( - SELECT - IFNULL(FILE_PATH3, '') - FROM MJ_MSG_DATA - WHERE - USER_ID = #userId# - AND MSG_GROUP_ID = #msgGroupId# - LIMIT 1 - ) filePath3 - FROM MJ_MSG_GROUP_DATA + B.MSG_GROUP_ID = A.MSG_GROUP_ID + LIMIT 1 + ) AS atchFiles + FROM MJ_MSG_GROUP_DATA A WHERE - USER_ID = #userId# - AND MSG_GROUP_ID = #msgGroupId# + A.USER_ID = #userId# + AND A.MSG_GROUP_ID = #msgGroupId# LIMIT 1 diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp index efd9e061..cca02674 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp @@ -66,39 +66,83 @@ function getMjMsgGroupInfoByResend() { dataType:'json', async: false, success: function (data) { + //alert(JSON.stringify(data)); if(data.isSuccess == true){ - //data.result.callFrom; - //data.result.subject; - //data.result.smsTxt; - //data.result.filePath1; - //data.result.filePath2; - //data.result.filePath3; - + var msgData = data.resultMsgInfo; + var fileData = data.resultMsgAddPhotoInfo; + // 발신번호 var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); - if ($.trim(removeDash(data.result.callFrom)) != reCallFrom) { + if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) { alert("선택된 발신번호가 이전에 발송한 발신번호가 아닙니다.\n발신번호를 확인해주세요.") } - /* - // 제목 - if (data.result.subject != null && data.result.subject != "") { + 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(data.result.subject); + $("#mmsSubject").val(subject); } - var reSmsTxt = data.result.smsTxt.replaceAll("
", "\n"); //줄발꿈문자 변환하기 // 문자내용 - if(reSmsTxt != null){ - $("#smsTxtArea").val(reSmsTxt); - fnByteString(reSmsTxt); + // 선거 기본정보 제거 + 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(smsTxt); + } + else { + fnByteString(smsTxt); + } + + // 문자전송 상단으로 이동 + var sendOfT=$('.send_top').offset().top; + $('html,body').stop().animate({'scrollTop':sendOfT-60},250); } else { - alert("Message : " + msg); + //alert("Message : " + msg); } }, error: function (e) { 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 dc9d38fe..cd6b91b3 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -511,44 +511,7 @@ $(document).ready(function (){ }); - function advMsgInsert(){ - - var advStr = '

(광고)

'; - var advDenyStr = '

무료거부 0808800858

'; - - var preAdvStr = '

(광고)

'; - var preAdvDenyStr = '

무료거부 0808800858

'; - - //광고 및 무료수신거부 텍스트 추가 - if ($('input[name=send_adYn]:checked').val() == 'Y'){ - - //문자 내용에 광고 문자 추가해주기 - $(advStr).insertBefore('textarea[name=smsTxtArea]'); - $(advDenyStr).insertBefore('div[name=afterDeny]'); - - //미리보기에 광고 문자 추가해주기 - $(preAdvStr).insertBefore('.none_txt'); - $(preAdvDenyStr).insertAfter('.realtime'); - - //$('#smsTxtArea').val(advStr + "\r\n" + contents + "\r\n" + advDenyStr); - - - }else{ //광고 및 무료수신거부 텍스트 삭제 - - //문자내용 광고문자 삭제하기 - $('.ad_txt').remove(); - $('.deny_txt').remove(); - - //미리보기 광고 문자 삭제하기 - $('.ad_tit').remove(); - $('.deny_receipt').remove(); - - } - - //문자 바이트수 계산하기 - fnByteString($('#smsTxtArea').val()); - - } + //문자 내용 입력시 바이트수 계산하기 @@ -1954,7 +1917,46 @@ $(document).ready(function (){ $('.send_btn .btnType:first-child').html('예약하기'); }); }); + +function advMsgInsert(){ + var advStr = '

(광고)

'; + var advDenyStr = '

무료거부 0808800858

'; + + var preAdvStr = '

(광고)

'; + var preAdvDenyStr = '

무료거부 0808800858

'; + + //광고 및 무료수신거부 텍스트 추가 + if ($('input[name=send_adYn]:checked').val() == 'Y'){ + + //문자 내용에 광고 문자 추가해주기 + $(advStr).insertBefore('textarea[name=smsTxtArea]'); + $(advDenyStr).insertBefore('div[name=afterDeny]'); + + //미리보기에 광고 문자 추가해주기 + $(preAdvStr).insertBefore('.none_txt'); + $(preAdvDenyStr).insertAfter('.realtime'); + + //$('#smsTxtArea').val(advStr + "\r\n" + contents + "\r\n" + advDenyStr); + + + }else{ //광고 및 무료수신거부 텍스트 삭제 + + //문자내용 광고문자 삭제하기 + $('.ad_txt').remove(); + $('.deny_txt').remove(); + + //미리보기 광고 문자 삭제하기 + $('.ad_tit').remove(); + $('.deny_receipt').remove(); + + } + + //문자 바이트수 계산하기 + fnByteString($('#smsTxtArea').val()); + +} + //문자 바이트수 계산하기 함수 function fnByteString(contents){ var totalByte = 0; 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 f2fd2030..50d9ddfc 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp @@ -92,39 +92,90 @@ function getMjMsgGroupInfoByResend() { dataType:'json', async: false, success: function (data) { + //alert(JSON.stringify(data)); if(data.isSuccess == true){ - //data.result.callFrom; - //data.result.subject; - //data.result.smsTxt; - //data.result.filePath1; - //data.result.filePath2; - //data.result.filePath3; - + var msgData = data.resultMsgInfo; + var fileData = data.resultMsgAddPhotoInfo; + // 발신번호 var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); - if ($.trim(removeDash(data.result.callFrom)) != reCallFrom) { + if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) { alert("선택된 발신번호가 이전에 발송한 발신번호가 아닙니다.\n발신번호를 확인해주세요.") } - /* - // 제목 - if (data.result.subject != null && data.result.subject != "") { + 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(data.result.subject); + $("#mmsSubject").val(subject); } - var reSmsTxt = data.result.smsTxt.replaceAll("
", "\n"); //줄발꿈문자 변환하기 // 문자내용 - if(reSmsTxt != null){ - $("#smsTxtArea").val(reSmsTxt); - fnByteString(reSmsTxt); + if (smsTxt.lastIndexOf("(광고)") != -1) { + $('#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(smsTxt); + } + else { + fnByteString(smsTxt); + } + + // 문자전송 상단으로 이동 + var sendOfT=$('.send_top').offset().top; + $('html,body').stop().animate({'scrollTop':sendOfT-60},250); } else { - alert("Message : " + msg); + //alert("Message : " + msg); } }, error: function (e) { diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp index c3536e38..c956704b 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp @@ -136,12 +136,13 @@ $(document).ready(function(){ - - - + + + + @@ -207,7 +208,7 @@ $(document).ready(function(){ <%-- - + --%>