From 474063728b1a1f966dc3304a4546f3ba8e958acf Mon Sep 17 00:00:00 2001 From: itn Date: Fri, 6 Oct 2023 16:16:38 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=9E=AC=EC=A0=84=EC=86=A1?= =?UTF-8?q?=20=EA=B0=9C=EB=B0=9C=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/MjonMsgCampainDataController.java | 5 + .../msgdata/service/MjonMsgDataService.java | 9 +- .../mjo/msgdata/service/MjonMsgDataVO.java | 65 +++++++++++ .../msgdata/service/impl/MjonMsgDataDAO.java | 12 ++ .../service/impl/MjonMsgDataServiceImpl.java | 13 ++- .../msgdata/web/MjonMsgDataController.java | 82 ++++++++++++++ .../sqlmap/let/msg/MjonMsgData_SQL_mysql.xml | 50 ++++++++ .../jsp/web/msgcampain/MsgDataView.jsp | 107 ++++++++++++++++++ .../WEB-INF/jsp/web/msgdata/MsgDataView.jsp | 105 +++++++++++++++++ .../jsp/web/msgsent/MsgSentAllListAjax.jsp | 15 +++ .../WEB-INF/jsp/web/msgsent/MsgSentView.jsp | 40 ++++++- 11 files changed, 500 insertions(+), 3 deletions(-) diff --git a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java index 7eb06978..4445266a 100644 --- a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java +++ b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java @@ -279,6 +279,11 @@ public class MjonMsgCampainDataController { } model.addAttribute("letterVO", letterVO); + // 문자 재전송 New + model.addAttribute("msgResendAllFlag", searchVO.getMsgResendAllFlag()); + model.addAttribute("msgResendAllGroupId", searchVO.getMsgResendAllGroupId()); + model.addAttribute("msgResendAllAdvertiseYn", searchVO.getMsgResendAllAdvertiseYn()); + return "web/msgcampain/MsgDataView"; } diff --git a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java index b57e44a8..f85c0057 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java @@ -157,5 +157,12 @@ public interface MjonMsgDataService { public List selectPayUserWithKakaoList(MjonMsgVO mjonMsgVO) throws Exception; - public List selectPayUserWithKakaoSumList(MjonMsgVO mjonMsgVO) throws Exception; + public List selectPayUserWithKakaoSumList(MjonMsgVO mjonMsgVO) throws Exception; + + // 문자 그룹정보 => 재전송용 + public MjonMsgDataVO selectMjMsgGroupInfoByResend(MjonMsgDataVO mjonMsgDataVO) throws Exception; + + // 문자 상세정보 => 재전송용 + public List selectMjMsgListByResend(MjonMsgDataVO mjonMsgDataVO) throws Exception; + } 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 524c8d53..e4cb9175 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java @@ -60,6 +60,71 @@ public class MjonMsgDataVO extends UserDefaultVO{ private String userIp; //사용자 아이피 정보 private String refundYn; //문자전송 실패시 환불처리 완료 여부 + + private String msgGroupId; + private String filePath1; //그림이미지1 경로 + private String filePath2; //그림이미지2 경로 + private String filePath3; //그림이미지3 경로 + private String callFrom; + private String callTo; + private String msgResendAllFlag; + private String msgResendAllGroupId; + private String msgResendAllAdvertiseYn; + + 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; + } public String getCodeId() { return codeId; diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java index e40d7874..e7291b58 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java @@ -329,4 +329,16 @@ public class MjonMsgDataDAO extends EgovAbstractDAO { public List selectPayUserWithKakaoSumList(MjonMsgVO mjonMsgVO) throws Exception{ return (List) list("mjonMsgDAO.selectPayUserWithKakaoSumList",mjonMsgVO); } + + // 문자 그룹정보 => 재전송용 + public MjonMsgDataVO selectMjMsgGroupInfoByResend(MjonMsgDataVO mjonMsgDataVO) throws Exception{ + return (MjonMsgDataVO) select("MjonMsgDataDAO.selectMjMsgGroupInfoByResend", mjonMsgDataVO); + } + + // 문자 상세정보 => 재전송용 + @SuppressWarnings("unchecked") + public List selectMjMsgListByResend(MjonMsgDataVO mjonMsgDataVO) throws Exception{ + return (List) list("MjonMsgDataDAO.selectMjMsgListByResend", mjonMsgDataVO); + } + } diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index a25c3e86..c63824e3 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java @@ -2279,5 +2279,16 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M @Override public List selectPayUserWithKakaoSumList(MjonMsgVO mjonMsgVO) throws Exception { return mjonMsgDataDAO.selectPayUserWithKakaoSumList(mjonMsgVO); - } + } + + // 문자 그룹정보 => 재전송용 + public MjonMsgDataVO selectMjMsgGroupInfoByResend(MjonMsgDataVO mjonMsgDataVO) throws Exception{ + return mjonMsgDataDAO.selectMjMsgGroupInfoByResend(mjonMsgDataVO); + } + + // 문자 상세정보 => 재전송용 + public List selectMjMsgListByResend(MjonMsgDataVO mjonMsgDataVO) throws Exception{ + return mjonMsgDataDAO.selectMjMsgListByResend(mjonMsgDataVO); + } + } 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 0eb3f0a7..7260fd20 100644 --- a/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java +++ b/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java @@ -398,6 +398,11 @@ public class MjonMsgDataController { } + // 문자 재전송 New + model.addAttribute("msgResendAllFlag", searchVO.getMsgResendAllFlag()); + model.addAttribute("msgResendAllGroupId", searchVO.getMsgResendAllGroupId()); + model.addAttribute("msgResendAllAdvertiseYn", searchVO.getMsgResendAllAdvertiseYn()); + }catch(Exception ex) { ex.printStackTrace(); @@ -5865,4 +5870,81 @@ public class MjonMsgDataController { return rtnValue; } + @RequestMapping(value= {"/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do"}) + public ModelAndView selectMjMsgGroupInfoByResendAjax( + MjonMsgDataVO mjonMsgDataVO, + HttpServletRequest request, + ModelMap model) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + boolean isSuccess = true; + String msg = ""; + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + try { + if(userId.equals("")) { + isSuccess = false; + msg = "로그인이 필요합니다."; + } + else { + mjonMsgDataVO.setUserId(userId); + mjonMsgDataVO.setMsgGroupId(mjonMsgDataVO.getMsgResendAllGroupId()); + mjonMsgDataVO = mjonMsgDataService.selectMjMsgGroupInfoByResend(mjonMsgDataVO); + } + } + catch(Exception e) { + isSuccess = false; + msg = e.getMessage(); + } + + modelAndView.addObject("isSuccess", isSuccess); + modelAndView.addObject("msg", msg); + modelAndView.addObject("result", mjonMsgDataVO); + + return modelAndView; + } + + @RequestMapping(value= {"/web/mjon/msgdata/selectMjMsgListByResendAjax.do"}) + public ModelAndView selectMjMsgListByResendAjax( + MjonMsgDataVO mjonMsgDataVO, + HttpServletRequest request, + ModelMap model) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + boolean isSuccess = true; + String msg = ""; + List resultList = null; + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + try { + if(userId.equals("")) { + isSuccess = false; + msg = "로그인이 필요합니다."; + } + else { + mjonMsgDataVO.setUserId(userId); + mjonMsgDataVO.setMsgGroupId(mjonMsgDataVO.getMsgResendAllGroupId()); + resultList = mjonMsgDataService.selectMjMsgListByResend(mjonMsgDataVO); + } + } + catch(Exception e) { + isSuccess = false; + msg = e.getMessage(); + } + + modelAndView.addObject("isSuccess", isSuccess); + modelAndView.addObject("msg", msg); + modelAndView.addObject("resultList", resultList); + + 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 b7e5e5c8..e1cd9f42 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 @@ -7248,5 +7248,55 @@ )FN1 ORDER BY msgGroupId DESC + + + + + + 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 aae7d989..efd9e061 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp @@ -20,6 +20,10 @@ var tableAddr = null; //주소록 불러오기 팝업 Tabulator 변수 var loginVO = '${loginVO}'; var popCustomScrT=0; // 맞춤제작 요청 JSPark => 2023.02.21 추가 +var msgResendAllFlag = "${msgResendAllFlag}"; +var msgResendAllGroupId = "${msgResendAllGroupId}"; +var msgResendAllAdvertiseYn = "${msgResendAllAdvertiseYn}"; + $(document).ready(function(){ //문자 발송 화면 폼 불러오기 listMsgDataView(); @@ -50,8 +54,102 @@ $(document).ready(function(){ // 맞춤제작 요청 JSPark => 2023.02.21 추가 //맞춤제작 등록 Popup //customPopup(); + }); +//문자 그룹정보 => 재전송용 +function getMjMsgGroupInfoByResend() { + $.ajax({ + type: "POST", + url: "/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do", + data: {"msgResendAllGroupId" : msgResendAllGroupId}, + dataType:'json', + async: false, + success: function (data) { + if(data.isSuccess == true){ + //data.result.callFrom; + //data.result.subject; + //data.result.smsTxt; + //data.result.filePath1; + //data.result.filePath2; + //data.result.filePath3; + + // 발신번호 + var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); + if ($.trim(removeDash(data.result.callFrom)) != reCallFrom) { + alert("선택된 발신번호가 이전에 발송한 발신번호가 아닙니다.\n발신번호를 확인해주세요.") + } + + /* + // 제목 + if (data.result.subject != null && data.result.subject != "") { + $('.msg_title').addClass('active'); + $("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기 + $('.textbox').show(); + $("#mmsSubject").val(data.result.subject); + } + + var reSmsTxt = data.result.smsTxt.replaceAll("
", "\n"); //줄발꿈문자 변환하기 + // 문자내용 + if(reSmsTxt != null){ + $("#smsTxtArea").val(reSmsTxt); + fnByteString(reSmsTxt); + } + */ + + } 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: true, + success: function (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])}); + } + + if(tableData.length > 0){ + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 + + totRows = tableL.getRows().length; + updateTotCnt(totRows); //전체 데이터 갯수 구하기 + + //결제 금액 구하기 + totalPriceSum(totRows); + } + + } else { + //alert("Message : " + msg); + } + }, + error: function (e) { + //alert("저장에 실패하였습니다."); + //console.log("ERROR : ", e); + } + }); +} + function listMsgDataView(){ var sendData = $(document.searchForm).serializeArray() ; @@ -77,6 +175,15 @@ function listMsgDataView(){ fnAddrSet(moveAddrFlag, addrIdList); } + // 문자 재전송 New + if (msgResendAllFlag == "Y") { + // 문자 그룹정보 => 재전송용 + getMjMsgGroupInfoByResend(); + + // 문자 상세정보 => 재전송용 + getMjMsgListByResend(); + } + }); 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 a6c86e43..f2fd2030 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp @@ -20,6 +20,10 @@ var tableAddr = null; //주소록 불러오기 팝업 Tabulator 변수 var loginVO = '${loginVO}'; var popCustomScrT=0; // 맞춤제작 요청 JSPark => 2023.02.21 추가 +var msgResendAllFlag = "${msgResendAllFlag}"; +var msgResendAllGroupId = "${msgResendAllGroupId}"; +var msgResendAllAdvertiseYn = "${msgResendAllAdvertiseYn}"; + $(document).ready(function(){ var tsMoreSampleYn = "${moreSampleYn}"; var tsMainImgFlag = "${mainImgVO.mainImgFlag}"; @@ -79,6 +83,99 @@ $(document).ready(function(){ //customPopup(); }); +// 문자 그룹정보 => 재전송용 +function getMjMsgGroupInfoByResend() { + $.ajax({ + type: "POST", + url: "/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do", + data: {"msgResendAllGroupId" : msgResendAllGroupId}, + dataType:'json', + async: false, + success: function (data) { + if(data.isSuccess == true){ + //data.result.callFrom; + //data.result.subject; + //data.result.smsTxt; + //data.result.filePath1; + //data.result.filePath2; + //data.result.filePath3; + + // 발신번호 + var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); + if ($.trim(removeDash(data.result.callFrom)) != reCallFrom) { + alert("선택된 발신번호가 이전에 발송한 발신번호가 아닙니다.\n발신번호를 확인해주세요.") + } + + /* + // 제목 + if (data.result.subject != null && data.result.subject != "") { + $('.msg_title').addClass('active'); + $("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기 + $('.textbox').show(); + $("#mmsSubject").val(data.result.subject); + } + + var reSmsTxt = data.result.smsTxt.replaceAll("
", "\n"); //줄발꿈문자 변환하기 + // 문자내용 + if(reSmsTxt != null){ + $("#smsTxtArea").val(reSmsTxt); + fnByteString(reSmsTxt); + } + */ + + } 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) { + 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])}); + } + + if(tableData.length > 0){ + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 + + totRows = tableL.getRows().length; + updateTotCnt(totRows); //전체 데이터 갯수 구하기 + + //결제 금액 구하기 + totalPriceSum(totRows); + } + + } else { + //alert("Message : " + msg); + } + }, + error: function (e) { + //alert("저장에 실패하였습니다."); + //console.log("ERROR : ", e); + } + }); +} + function listMsgDataView(){ @@ -268,6 +365,14 @@ function listMsgDataView(){ fnAddrSet(moveAddrFlag, addrIdList); } + // 문자 재전송 New + if (msgResendAllFlag == "Y") { + // 문자 그룹정보 => 재전송용 + getMjMsgGroupInfoByResend(); + + // 문자 상세정보 => 재전송용 + getMjMsgListByResend(); + } }); 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 64f93ec6..c3536e38 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp @@ -136,9 +136,21 @@ $(document).ready(function(){ + + + + + + + + + + + + @@ -194,6 +206,9 @@ $(document).ready(function(){ + <%-- + + --%> diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp index 0560defa..40743e55 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp @@ -704,6 +704,40 @@ function infoPop(pageUrl){ document.popForm.target = "infoPop"; document.popForm.submit(); } + +//문자 재전송 +function fnMjMsgReSendAll(msgGroupId, replaceCnt, electionCnt, advertisementCnt) { + if (replaceCnt > 0) { + alert("치환문자는 재전송 불가합니다."); + } + else { + var title = ""; + if (electionCnt > 0) { + title = "선거문자발송"; + } + else { + title = "문자발송"; + } + + if (confirm(title + " 화면으로 이동합니다.\n문자내용, 받는사람 확인후 발송해주세요.")) { + var form = document.reSendAllForm; + form.msgResendAllFlag.value = "Y"; + form.msgResendAllGroupId.value = msgGroupId; + if (electionCnt > 0) { + form.action="/web/mjon/msgcampain/selectMsgDataView.do"; + } + else { + if (advertisementCnt > 0) { + // 광고문자 + form.msgResendAllAdvertiseYn.value = "Y"; + } + form.action="/web/mjon/msgdata/selectMsgDataView.do"; + } + form.submit(); + } + } +} +
@@ -1046,4 +1080,8 @@ function infoPop(pageUrl){
- \ No newline at end of file +
+ + + +
\ No newline at end of file