From 3153e6886e5be293a40c6e6c41fd8dedf3c22de5 Mon Sep 17 00:00:00 2001 From: hylee Date: Tue, 1 Aug 2023 10:34:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:pms-#3305=20=EB=B0=9C=EC=86=A1=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20/=20=EC=98=88=EC=95=BD=EA=B4=80=EB=A6=AC=EC=97=90?= =?UTF-8?q?=20api=20=EC=8B=A0=EC=B2=AD=20=EC=95=88=ED=95=9C=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=EC=9D=80=20=EB=85=B8=EC=B6=9C=20=EC=95=88=EB=90=98?= =?UTF-8?q?=EA=B2=8C=20=EC=B2=98=EB=A6=AC=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/sent/web/KakaoSentController.java | 1 + .../mjo/apikey/service/ApiKeyMngService.java | 2 + .../mjo/apikey/service/impl/ApiKeyMngDAO.java | 4 + .../service/impl/ApiKeyMngServiceImpl.java | 5 + .../mjo/msgsent/service/MjonMsgSentCntVO.java | 46 ++ .../mjo/msgsent/service/MjonMsgSentVO.java | 9 + .../service/impl/MjonMsgSentServiceImpl.java | 2 + .../msgsent/web/MjonMsgSentController.java | 134 +++- .../reservmsg/service/MjonMsgReservCntVO.java | 56 ++ .../mjo/reservmsg/service/MjonResvMsgVO.java | 11 + .../web/MjonReservMsgController.java | 111 ++- .../uia/web/EgovMypageRESTAPIController.java | 2 +- .../let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml | 10 + .../sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml | 9 +- .../sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml | 16 +- .../webapp/WEB-INF/jsp/web/api/appMgmt.jsp | 7 + .../WEB-INF/jsp/web/api/top_tepMenu.jsp | 85 ++- .../jsp/web/msgsent/MsgSentAllListAjax.jsp | 8 + .../web/msgsent/MsgSentCompleteListAjax.jsp | 8 + .../jsp/web/msgsent/MsgSentFailListAjax.jsp | 8 + .../jsp/web/msgsent/MsgSentReadyListAjax.jsp | 8 + .../WEB-INF/jsp/web/msgsent/MsgSentView.jsp | 703 +++++++++--------- .../reservedmsg/ReservedMsgAllListAjax.jsp | 35 +- .../reservedmsg/ReservedMsgCancelListAjax.jsp | 11 +- .../ReservedMsgCompleteListAjax.jsp | 12 +- .../reservedmsg/ReservedMsgReadyListAjax.jsp | 16 +- .../jsp/web/reservedmsg/ReservedMsgView.jsp | 443 +++++------ src/main/webapp/publish/api_admin1.html | 6 +- src/main/webapp/publish/textingmsg_2022.html | 12 + 29 files changed, 1126 insertions(+), 654 deletions(-) create mode 100644 src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentCntVO.java create mode 100644 src/main/java/itn/let/mjo/reservmsg/service/MjonMsgReservCntVO.java diff --git a/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java b/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java index 62f26551..411c98da 100644 --- a/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java +++ b/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java @@ -162,6 +162,7 @@ public class KakaoSentController { //전체 발송 리스트 불러오기 List resultAllSentList = kakaoSentService.selectAllKakaoSentList(kakaoSentVO); + System.out.println("??"); model.addAttribute("resultAllSentList", resultAllSentList); model.addAttribute("resultAllSentCnt", resultAllSentList.size()); diff --git a/src/main/java/itn/let/mjo/apikey/service/ApiKeyMngService.java b/src/main/java/itn/let/mjo/apikey/service/ApiKeyMngService.java index 0803bbb8..9ef6698c 100644 --- a/src/main/java/itn/let/mjo/apikey/service/ApiKeyMngService.java +++ b/src/main/java/itn/let/mjo/apikey/service/ApiKeyMngService.java @@ -37,5 +37,7 @@ public interface ApiKeyMngService { //REST API 신청상태 public List selectApiKeyApplyStatus(ApiKeyVO apiKeyVO) throws Exception; + + public int selectMberApiKeyChk(ApiKeyVO apiKeyVO) throws Exception; } \ No newline at end of file diff --git a/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngDAO.java b/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngDAO.java index 1cecc81e..df4835a9 100644 --- a/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngDAO.java +++ b/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngDAO.java @@ -55,5 +55,9 @@ public class ApiKeyMngDAO extends EgovComAbstractDAO{ public List selectApiKeyApplyStatus(ApiKeyVO apiKeyVO){ return (List) list("ApiKeyMngDAO.selectApiKeyApplyStatus", apiKeyVO); } + + public int selectMberApiKeyChk(ApiKeyVO apiKeyVO) { + return (int) select("ApiKeyMngDAO.selectMberApiKeyChk", apiKeyVO); + } } \ No newline at end of file diff --git a/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngServiceImpl.java b/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngServiceImpl.java index a7688141..0c43e249 100644 --- a/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngServiceImpl.java +++ b/src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngServiceImpl.java @@ -41,6 +41,11 @@ public class ApiKeyMngServiceImpl extends EgovAbstractServiceImpl implements Api return apiKeyMngDAO.selectMberApiKeyList(apiKeyVO); } + @Override + public int selectMberApiKeyChk(ApiKeyVO apiKeyVO) throws Exception { + return apiKeyMngDAO.selectMberApiKeyChk(apiKeyVO); + } + @Override public void deleteApiKey(ApiKeyVO apiKeyVO) throws Exception { apiKeyMngDAO.deleteApiKey(apiKeyVO); diff --git a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentCntVO.java b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentCntVO.java new file mode 100644 index 00000000..70e67714 --- /dev/null +++ b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentCntVO.java @@ -0,0 +1,46 @@ +package itn.let.mjo.msgsent.service; + +import itn.let.uss.umt.service.UserDefaultVO; + +public class MjonMsgSentCntVO extends UserDefaultVO{ + + private static final long serialVersionUID = 1L; + + + + + // 각 통계별 총 건수 + public int totCnt;// 전체 건수 + + // 각 통계별 성공, 실패 건수 처리 + public int waitCnt;// 전체 대기 건수 + public int succCnt;// 전체 성공 건수 + public int failCnt;// 전체 실패 건수 + + + public int getTotCnt() { + return totCnt; + } + public void setTotCnt(int totCnt) { + this.totCnt = totCnt; + } + public int getWaitCnt() { + return waitCnt; + } + public void setWaitCnt(int waitCnt) { + this.waitCnt = waitCnt; + } + public int getSuccCnt() { + return succCnt; + } + public void setSuccCnt(int succCnt) { + this.succCnt = succCnt; + } + public int getFailCnt() { + return failCnt; + } + public void setFailCnt(int failCnt) { + this.failCnt = failCnt; + } + +} diff --git a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java index 004ace73..2ce09912 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java +++ b/src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java @@ -76,6 +76,8 @@ public class MjonMsgSentVO extends UserDefaultVO{ private String msgId; //문자아이디 private String atchFiles; // 그림문자 파일정보 + + private String sendKind; // 그림문자 파일정보 public String getAtchFiles() { return atchFiles; @@ -420,6 +422,13 @@ public class MjonMsgSentVO extends UserDefaultVO{ public void setDelayCompleteYn(String delayCompleteYn) { this.delayCompleteYn = delayCompleteYn; } + public String getSendKind() { + return sendKind; + } + public void setSendKind(String sendKind) { + this.sendKind = sendKind; + } + } diff --git a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java index 0fdd02a7..46f61440 100644 --- a/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java @@ -72,10 +72,12 @@ public class MjonMsgSentServiceImpl extends EgovAbstractServiceImpl implements if(listType.equals("groupList")) {//전송건별 리스트 불러오기 resultList = mjonMsgSentDAO.selectAllMsgSentList(mjonMsgSentVO); + System.out.println("====="); }else {//개인별 리스트 불러오기 resultList = mjonMsgSentDAO.selectAllPrivateMsgSentList(mjonMsgSentVO); + System.out.println("===================="); } diff --git a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java index 1639c254..7928a599 100644 --- a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java +++ b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java @@ -7,6 +7,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; +import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -40,6 +41,9 @@ import itn.let.mjo.addr.service.AddrGroupService; import itn.let.mjo.addr.service.AddrGroupVO; import itn.let.mjo.addr.service.AddrService; import itn.let.mjo.addr.service.AddrVO; +import itn.let.mjo.apikey.service.ApiKeyMngService; +import itn.let.mjo.apikey.service.ApiKeyVO; +import itn.let.mjo.msgsent.service.MjonMsgSentCntVO; import itn.let.mjo.msgsent.service.MjonMsgSentService; import itn.let.mjo.msgsent.service.MjonMsgSentVO; @@ -67,6 +71,11 @@ public class MjonMsgSentController { @Resource(name = "KakaoSentService") private KakaoSentService kakaoSentService; + + //api key 정보 + @Resource(name = "apiKeyMngService") + private ApiKeyMngService apiKeyMngService; + private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentController.class); @@ -91,7 +100,6 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll mjonMsgSentVO.setUserId(userId); - /* //전체 발송 건수 통계 불러오기 mjonMsgSentVO.setMsgType(""); @@ -119,31 +127,83 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll //전체 발송 건수 통계 불러오기 mjonMsgSentVO.setMsgType(""); List totalMsgCnt = mjonMsgSentService.selectDetailMsgSentCntMix(mjonMsgSentVO); - model.addAttribute("totalMsgCnt", totalMsgCnt); - - List smsMsgCnt = new ArrayList(); - List lmsMsgCnt = new ArrayList(); - List mmsMsgCnt = new ArrayList(); + // H:홈페이지, A:API 로 sms, lms, mms 나누는 영역 + List H_totalMsgCnt = totalMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List H_smsMsgCnt = new ArrayList(); + List H_lmsMsgCnt = new ArrayList(); + List H_mmsMsgCnt = new ArrayList(); - totalMsgCnt.forEach(t->{ + List A_totalMsgCnt = totalMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + List A_smsMsgCnt = new ArrayList(); + List A_lmsMsgCnt = new ArrayList(); + List A_mmsMsgCnt = new ArrayList(); + + System.out.println(" ::H_totalMsgCnt :: "+ H_totalMsgCnt.size()); + System.out.println(" ::A_totalMsgCnt :: "+ A_totalMsgCnt.size()); + + H_totalMsgCnt.forEach(t->{ if (Integer.parseInt(t.getFilePath1())>0) { - smsMsgCnt.add(t); + H_smsMsgCnt.add(t); } else if (Integer.parseInt(t.getFilePath2())>0) { - lmsMsgCnt.add(t); + H_lmsMsgCnt.add(t); } else if (Integer.parseInt(t.getFilePath3())>0) { - mmsMsgCnt.add(t); + H_mmsMsgCnt.add(t); } }); - //단문 성공건, 실패건 불러오기 - model.addAttribute("smsMsgCnt", smsMsgCnt); + A_totalMsgCnt.forEach(t->{ + if (Integer.parseInt(t.getFilePath1())>0) { + A_smsMsgCnt.add(t); + } else if (Integer.parseInt(t.getFilePath2())>0) { + A_lmsMsgCnt.add(t); + } else if (Integer.parseInt(t.getFilePath3())>0) { + A_mmsMsgCnt.add(t); + } + }); + + + /* + * 홈페이지에서 보낸 데이터 LIST + * SEND_KIND = "H" + * */ + // 전체 영역 + model.addAttribute("H_allSentCntVO", this.getResultCntProc(H_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("H_smsSentCntVO", this.getResultCntProc(H_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_lmsSentCntVO", this.getResultCntProc(H_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_mmsSentCntVO", this.getResultCntProc(H_mmsMsgCnt)); + + + /* ==================================================================================== */ + + + /* + * 홈페이지에서 보낸 데이터 LIST + * SEND_KIND = "A" + * */ + // 전체 영역 + model.addAttribute("A_allSentCntVO", this.getResultCntProc(A_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("A_smsSentCntVO", this.getResultCntProc(A_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_lmsSentCntVO", this.getResultCntProc(A_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_mmsSentCntVO", this.getResultCntProc(A_mmsMsgCnt)); + + + + /* + a.mber_nm LIKE CONCAT('%',#searchKeyword#,'%') + + */ + ApiKeyVO apiKeyVO = new ApiKeyVO(); + apiKeyVO.setMberId(userId); + model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false); - //장문 성공건, 실패건 불러오기 - model.addAttribute("lmsMsgCnt", lmsMsgCnt); - //그림문자 성공건, 실패건 불러오기 - model.addAttribute("mmsMsgCnt", mmsMsgCnt); // 검색 리스트 불러오기 @@ -171,8 +231,48 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll return "web/msgsent/MsgSentView"; } + - /** + /** + * @methodName : getResultCntProc + * @author : 이호영 + * @date : 2023.07.26 + * @description : MsgSentView.jsp에서 JSTL로 계산하는 것을 JAVA로 분리 + * @param msgCnt + * @param smsMsgCnt + * @param lmsMsgCnt + * @param mmsMsgCnt + * @return + */ + private MjonMsgSentCntVO getResultCntProc(List msgCnt) { +// MjonMsgSentCntVO mjonSentCntVO = new MjonMsgSentCntVO(); + MjonMsgSentCntVO cntVO = new MjonMsgSentCntVO(); + + + /* + * 전체 통계 + * */ + // 전체 대기 갯수 + cntVO.setWaitCnt(msgCnt.stream() + .filter(f->"W".equals(f.getMsgResultSts())) + .mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum()); + // 전체 성공 갯수 + cntVO.setSuccCnt(msgCnt.stream() + .filter(f->"S".equals(f.getMsgResultSts())) + .mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum()); + // 전체 실패 갯수 + cntVO.setFailCnt(msgCnt.stream() + .filter(f->"F".equals(f.getMsgResultSts())) + .mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum()); + + // 전체 갯수 구하기 + cntVO.setTotCnt(cntVO.getWaitCnt() + cntVO.getSuccCnt() + cntVO.getFailCnt()); + + + return cntVO; + } + + /** * 발송관리 탭 리스트 화면 * @param searchVO * @param model diff --git a/src/main/java/itn/let/mjo/reservmsg/service/MjonMsgReservCntVO.java b/src/main/java/itn/let/mjo/reservmsg/service/MjonMsgReservCntVO.java new file mode 100644 index 00000000..d34e3adf --- /dev/null +++ b/src/main/java/itn/let/mjo/reservmsg/service/MjonMsgReservCntVO.java @@ -0,0 +1,56 @@ +package itn.let.mjo.reservmsg.service; + +import itn.let.uss.umt.service.UserDefaultVO; + +public class MjonMsgReservCntVO extends UserDefaultVO{ + + private static final long serialVersionUID = 1L; + + + + + // 각 통계별 총 건수 + public int totCnt;// 전체 건수 + + // 각 통계별 성공, 실패 건수 처리 + public int waitCnt;// 대기 건수 + public int succCnt;// 성공 건수 + public int failCnt;// 실패 건수 + public int cnclCnt;// 예약취소 건수 + + + public int getTotCnt() { + return totCnt; + } + public void setTotCnt(int totCnt) { + this.totCnt = totCnt; + } + public int getWaitCnt() { + return waitCnt; + } + public void setWaitCnt(int waitCnt) { + this.waitCnt = waitCnt; + } + public int getSuccCnt() { + return succCnt; + } + public void setSuccCnt(int succCnt) { + this.succCnt = succCnt; + } + public int getFailCnt() { + return failCnt; + } + public void setFailCnt(int failCnt) { + this.failCnt = failCnt; + } + public int getCnclCnt() { + return cnclCnt; + } + public void setCnclCnt(int cnclCnt) { + this.cnclCnt = cnclCnt; + } + + + + +} diff --git a/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java b/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java index 0247f9ce..74102782 100644 --- a/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java +++ b/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java @@ -57,6 +57,8 @@ public class MjonResvMsgVO extends UserDefaultVO{ private int orderByCode; // 문자타입 정렬번호 private String strReqDate; // 문자열 타입 발송시간 + private String sendKind; // 문자열 타입 발송시간 + public int getOrderByCode() { return orderByCode; } @@ -297,4 +299,13 @@ public class MjonResvMsgVO extends UserDefaultVO{ public void setReserveYn(String reserveYn) { this.reserveYn = reserveYn; } + public String getSendKind() { + return sendKind; + } + public void setSendKind(String sendKind) { + this.sendKind = sendKind; + } + + + } diff --git a/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java b/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java index b63dafe5..b5110638 100644 --- a/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java +++ b/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java @@ -8,6 +8,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; +import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -42,6 +43,11 @@ import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.kakao.user.sent.service.KakaoSentService; import itn.let.kakao.user.sent.service.KakaoSentVO; +import itn.let.mjo.apikey.service.ApiKeyMngService; +import itn.let.mjo.apikey.service.ApiKeyVO; +import itn.let.mjo.msgsent.service.MjonMsgSentCntVO; +import itn.let.mjo.msgsent.service.MjonMsgSentVO; +import itn.let.mjo.reservmsg.service.MjonMsgReservCntVO; import itn.let.mjo.reservmsg.service.MjonReservMsgService; import itn.let.mjo.reservmsg.service.MjonResvMsgVO; @@ -63,6 +69,10 @@ public class MjonReservMsgController { @Resource(name = "KakaoSentService") private KakaoSentService kakaoSentService; + + //api key 정보 + @Resource(name = "apiKeyMngService") + private ApiKeyMngService apiKeyMngService; private static final Logger logger = LoggerFactory.getLogger(MjonReservMsgController.class); @@ -91,24 +101,77 @@ public class MjonReservMsgController { //전체 발송 건수 통계 불러오기 mjonResvMsgVO.setMsgType(""); List totalMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO);//mjonReservMsgService.selectTotalMsgCnt(mjonResvMsgVO); + + List H_totalMsgCnt = totalMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_totalMsgCnt = totalMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + model.addAttribute("totalMsgCnt", totalMsgCnt); //단문 성공건, 실패건 불러오기 mjonResvMsgVO.setMsgType("4"); List smsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO); + + List H_smsMsgCnt = smsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_smsMsgCnt = smsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + model.addAttribute("smsMsgCnt", smsMsgCnt); //장문 성공건, 실패건 불러오기 mjonResvMsgVO.setMsgType("6"); mjonResvMsgVO.setFileCnt("0"); List lmsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO); + + List H_lmsMsgCnt = lmsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_lmsMsgCnt = lmsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); model.addAttribute("lmsMsgCnt", lmsMsgCnt); //그림문자 성공건, 실패건 불러오기 mjonResvMsgVO.setMsgType("6"); mjonResvMsgVO.setFileCnt("1"); List mmsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO); + + + List H_mmsMsgCnt = mmsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_mmsMsgCnt = mmsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); model.addAttribute("mmsMsgCnt", mmsMsgCnt); + + + + /* + * 홈페이지에서 보낸 데이터 LIST + * SEND_KIND = "H" + * */ + // 전체 영역 + model.addAttribute("H_allSentCntVO", this.getResultCntProc(H_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("H_smsSentCntVO", this.getResultCntProc(H_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_lmsSentCntVO", this.getResultCntProc(H_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_mmsSentCntVO", this.getResultCntProc(H_mmsMsgCnt)); + + + /* ==================================================================================== */ + + + /* + * 홈페이지에서 보낸 데이터 LIST + * SEND_KIND = "A" + * */ + // 전체 영역 + model.addAttribute("A_allSentCntVO", this.getResultCntProc(A_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("A_smsSentCntVO", this.getResultCntProc(A_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_lmsSentCntVO", this.getResultCntProc(A_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_mmsSentCntVO", this.getResultCntProc(A_mmsMsgCnt)); + + ApiKeyVO apiKeyVO = new ApiKeyVO(); + apiKeyVO.setMberId(userId); + model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false); + +// model.addAttribute("mmsMsgCnt", mmsMsgCnt); // 검색 리스트 불러오기 if(mjonResvMsgVO.getPageUnit() != 10) { @@ -155,6 +218,52 @@ public class MjonReservMsgController { return "web/reservedmsg/ReservedMsgView"; } + + + /** + * @methodName : getResultCntProc + * @author : 이호영 + * @date : 2023.07.26 + * @description : MsgSentView.jsp에서 JSTL로 계산하는 것을 JAVA로 분리 + * @param msgCnt + * @param smsMsgCnt + * @param lmsMsgCnt + * @param mmsMsgCnt + * @return + */ + private MjonMsgReservCntVO getResultCntProc(List msgCnt) { +// MjonMsgSentCntVO mjonSentCntVO = new MjonMsgSentCntVO(); + MjonMsgReservCntVO cntVO = new MjonMsgReservCntVO(); + + + /* + * 전체 통계 + * */ + // 대기 갯수 + cntVO.setWaitCnt(msgCnt.stream() + .filter(f->"W".equals(f.getMsgResultSts())) + .mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum()); + // 성공 갯수 + cntVO.setSuccCnt(msgCnt.stream() + .filter(f->"S".equals(f.getMsgResultSts())) + .mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum()); + // 실패 갯수 + cntVO.setFailCnt(msgCnt.stream() + .filter(f->"F".equals(f.getMsgResultSts())) + .mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum()); + // 예약취소 갯수 + cntVO.setCnclCnt(msgCnt.stream() + .filter(f->"C".equals(f.getMsgResultSts())) + .mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum()); + + // 전체 갯수 구하기 + cntVO.setTotCnt(cntVO.getWaitCnt() + cntVO.getSuccCnt() + cntVO.getFailCnt() + cntVO.getCnclCnt()); + + + return cntVO; + } + + /** * 예약관리 탭 리스트 화면 * @param searchVO @@ -164,7 +273,7 @@ public class MjonReservMsgController { */ @RequestMapping(value= {"/web/mjon/reservmsg/selectReservMsgListViewAjax.do"}) public String selectReservMsgListViewAjax(@ModelAttribute("searchVO") MjonResvMsgVO mjonResvMsgVO, ModelMap model) throws Exception{ - + //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageRESTAPIController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageRESTAPIController.java index 11fb25dd..997dcab6 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageRESTAPIController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageRESTAPIController.java @@ -195,7 +195,7 @@ public class EgovMypageRESTAPIController{ List resultList = new ArrayList(); resultList = apiKeyMngService.selectApiKeyApplyStatus(apiKeyVO); - + System.out.println("============="); if (resultList.size()>0) { model.addAttribute("apiVO", resultList.get(0)); diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml index 20170890..f6b1c0c8 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml @@ -83,6 +83,16 @@ LIMIT #recordCountPerPage# OFFSET #firstIndex# + + diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml index e409bae6..bdc4822d 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml @@ -41,6 +41,7 @@ , A0.RSLT_CODE AS rsltCode , A0.RSLT_CODE2 AS rsltCode2 , A0.AGENT_CODE AS agentCode + , A0.SEND_KIND AS sendKind FROM ( SELECT A.MSG_ID @@ -48,6 +49,7 @@ , A.MSG_SEQ , A.CUR_STATE , A.SENT_DATE + , B.SEND_KIND , ( CASE WHEN A.RESERVE_C_YN = 'Y' @@ -214,6 +216,7 @@ AGENT_CODE AS agentCode, RESERVE_C_YN AS reserveCYn, CANCELDATE AS cancelDate, + SEND_KIND as sendKind, CASE WHEN RESERVE_C_YN = 'Y' THEN '예약취소' @@ -253,7 +256,8 @@ MGD.CANCELDATE, MD.CUR_STATE, MD.RSLT_CODE, - MD.RSLT_CODE2 + MD.RSLT_CODE2, + MGD.SEND_KIND FROM mj_msg_data MD INNER JOIN MJ_MSG_GROUP_DATA MGD ON MD.MSG_GROUP_ID = MGD.MSG_GROUP_ID @@ -322,6 +326,9 @@ AND CALL_FROM = #searchKeyword# + + AND SEND_KIND = #searchCondition_01# + = DATE_FORMAT(#startDate#, '%Y-%m-%d') diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml index cfcc99cc..cda1d231 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml @@ -25,8 +25,8 @@ , sum(if(A0.tab1=0,0,1)) as filePath1 /* 단문여부 */ , sum(if(A0.tab2=0,0,1)) as filePath2 /* 장문여부 */ - , sum(if(A0.tab3=0,0,1)) as filePath3 /* 그림여부 */ - + , sum(if(A0.tab3=0,0,1)) as filePath3 /* 그림여부 */ + , SEND_KIND as sendKind FROM( SELECT A.MSG_ID @@ -39,7 +39,7 @@ , A.RSLT_CODE2 , A.AGENT_CODE , B.EACH_PRICE - + , B.SEND_KIND , if (A.MSG_TYPE= '4' AND B.MSG_TYPE= '4' ,'01','00') AS tab1 , if (A.MSG_TYPE= '6' AND B.MSG_TYPE= '6' AND B.FILE_CNT = '0' @@ -264,6 +264,7 @@ , msgTypeName AS msgTypeName , orderByCode AS orderByCode , RESULT AS msgResult + , sendKind AS sendKind FROM ( SELECT B.USER_ID @@ -287,6 +288,10 @@ , A.CUR_STATE , A.RSLT_CODE , A.RSLT_CODE2 + , CASE + WHEN B.SEND_KIND = 'H' THEN 'WEB' + ELSE 'API' + END as sendKind , CASE WHEN B.MSG_TYPE = '6' AND B.FILE_CNT > 0 @@ -394,6 +399,9 @@ AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%') + + AND sendKind = #searchCondition_01# + = DATE_FORMAT(#startDate#, '%Y-%m-%d') @@ -462,6 +470,7 @@ , CANCELDATE AS cancelDate , MSG_ID AS msgId , RESULT AS msgResult + , sendKind FROM (SELECT MGD.USER_ID @@ -487,6 +496,7 @@ , MD.CUR_STATE , MD.RSLT_CODE , MD.RSLT_CODE2 + , CASE WHEN MGD.SEND_KIND = 'H' THEN 'WEB' ELSE 'API' END as sendKind ,() AS RESULT FROM mj_msg_data MD diff --git a/src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp b/src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp index 050474c9..cb020ce0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp @@ -4,6 +4,7 @@ <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> + +
" />
diff --git a/src/main/webapp/WEB-INF/jsp/web/api/top_tepMenu.jsp b/src/main/webapp/WEB-INF/jsp/web/api/top_tepMenu.jsp index 7be7eef3..0aa9fb9c 100644 --- a/src/main/webapp/WEB-INF/jsp/web/api/top_tepMenu.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/api/top_tepMenu.jsp @@ -7,31 +7,94 @@ $(document).ready(function(){ // 현재 url 추출 var url = window.location.pathname; -// console.log(url); // 현재 url에서 uri만 추출 var lastPart = url.split('/').pop(); -// console.log(lastPart); + + /* * top 메뉴중 onclick에 있는 uri을 가져와 * 현재 호출된 페이지와 uri와 비교해서 맞다면 * active로 활성화 시킴 */ $('.tabType4 .tab').each(function(index) { - var onclickAttr = $(this).children("button").attr("onclick"); -// console.log("Button " + (index + 1) + " onclick: " + onclickAttr); - if(onclickAttr.indexOf(lastPart) > -1){ + var idAttr = $(this).children("button").attr("id"); + idAttr += '.do'; + + if(idAttr.indexOf(lastPart) > -1){ $(this).addClass('active'); } }); - + + // 페이지 이동 이벤트 + $('.goPage').click(function(){ + // 신청/관리는 기업회원 체크해야함 + if($(this).attr('id') == 'appMgmt'){ + // 기업회원 체크 + if(usrDeptChk()){ + location.href=$(this).data('info'); + } + }else{ + location.href=$(this).data('info'); + } + }); }); +// 기업회원 체크 +function usrDeptChk(){ + + var usrDept = '${LoginVO.dept}'; + + //카카오 알림톡 기업회원 전용체크 + if(usrDept != 'c'){ + + //기업회원 전용 메세지 팝업 띄워주기 + $('#btnDeptPop').click(); + + return false; + }else{ + return true; + } +} + +// 튤팁에서 취소 클릭 시 이벤트 +function customPopup(){ + // 현재 url 추출 + var url = window.location.pathname; + // 현재 url에서 uri만 추출 + var lastPart = url.split('/').pop(); + + // URL을 치고 들어왔을 경우 '문자 API소개' 페이지로 이동 + if('appMgmt.do'.indexOf(lastPart) > -1){ + location.href=''; + } +} + + - + + + +
+ +
+ +
    -
  • -
  • -
  • -
  • +
  • +
  • +
  • +
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 23ab4318..4588cb2d 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp @@ -104,6 +104,11 @@ $(document).ready(function(){ + 발송방식 +
+ +
+ 내용 받는사람
@@ -172,6 +177,9 @@ $(document).ready(function(){

+ +

${resultAllSentList.sendKind }

+ diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp index e08b7052..a2338d70 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp @@ -97,6 +97,11 @@ $(document).ready(function(){
+ 발송방식 +
+ +
+ 내용 받는사람
@@ -164,6 +169,9 @@ $(document).ready(function(){

+ + ${resultAllSentList.sendKind } + diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp index f0d906a7..80655790 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp @@ -95,6 +95,11 @@ $(document).ready(function(){
+ 발송방식 +
+ +
+ 내용 받는사람
@@ -152,6 +157,9 @@ $(document).ready(function(){

+ + ${resultAllSentList.sendKind } + diff --git a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp index 28ff7955..bc44b2c3 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp @@ -97,6 +97,11 @@ $(document).ready(function(){
+ 발송방식 +
+ +
+ 내용 받는사람
@@ -164,6 +169,9 @@ $(document).ready(function(){

+ + ${resultAllSentList.sendKind } + 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 61b33eb4..0560defa 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp @@ -374,15 +374,15 @@ function fnDeleteAddrNo(listType){ url = "/web/mjon/msgsent/deleteAddrNoDataAjax.do"; $.ajax({ - type: "POST", - url: url, - data: data, - dataType:'json', - async: false, - processData: false, - contentType: false, - cache: false, - success: function (returnData, status) { + 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){ @@ -410,8 +410,8 @@ function fnDeleteAddrNo(listType){ alert(returnData.message); } }, - error: function (e) { alert("주소록 삭제에 실패하였습니다."); console.log("ERROR : ", e); } - }); + error: function (e) { alert("주소록 삭제에 실패하였습니다."); console.log("ERROR : ", e); } + }); } @@ -456,15 +456,15 @@ function fnAddBlockNo(listType){ url = "/web/mjon/msgsent/insertAddBlockNoDataAjax.do"; $.ajax({ - type: "POST", - url: url, - data: data, - dataType:'json', - async: false, - processData: false, - contentType: false, - cache: false, - success: function (returnData, status) { + 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){ @@ -492,8 +492,8 @@ function fnAddBlockNo(listType){ alert(returnData.message); } }, - error: function (e) { alert("수신거부번호 등록에 실패하였습니다."); console.log("ERROR : ", e); } - }); + error: function (e) { alert("수신거부번호 등록에 실패하였습니다."); console.log("ERROR : ", e); } + }); //} @@ -541,35 +541,35 @@ function fnMsgSFDetailList(msgGroupId, resultType){ form.resultType.value = resultType; //만들려는 팝업의 크기 - var popup_wid = '1280'; - var popup_ht = '700'; + var popup_wid = '1280'; + var popup_ht = '700'; - var popup_left = (window.screen.width / 2) - (popup_wid / 2); - var popup_top =(window.screen.height / 2) - (popup_ht / 2); + var popup_left = (window.screen.width / 2) - (popup_wid / 2); + var popup_top =(window.screen.height / 2) - (popup_ht / 2); - $("#resPopForm").attr("target","msgSFDetailPop"); - - window.open('', 'msgSFDetailPop', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top ); - $("#resPopForm").attr({"action":"/web/mjon/msgsent/selectMsgSFDetailListAjax.do", "method":"post"}).submit(); + $("#resPopForm").attr("target","msgSFDetailPop"); + + window.open('', 'msgSFDetailPop', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top ); + $("#resPopForm").attr({"action":"/web/mjon/msgsent/selectMsgSFDetailListAjax.do", "method":"post"}).submit(); } /* 사용내역서 클릭 시 내역서 새창 팝업 오픈 */ function fnShowPrintPopup(tabType, type) { - //만들려는 팝업의 크기 - var popup_wid = '840'; - var popup_ht = '900'; + //만들려는 팝업의 크기 + var popup_wid = '840'; + var popup_ht = '900'; - var popup_left = (window.screen.width / 2) - (popup_wid / 2); - var popup_top =(window.screen.height / 2) - (popup_ht / 2); + var popup_left = (window.screen.width / 2) - (popup_wid / 2); + var popup_top =(window.screen.height / 2) - (popup_ht / 2); - $("#tabType").val(tabType); - $("#searchForm").attr("target","msgSentPrint"); - - window.open('', 'msgSentPrint', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top +',scrollbars=1'); - $("#searchForm").attr({"action":"/web/mjon/msgsent/printMsgSentDataAjax.do", "method":"post"}).submit(); - + $("#tabType").val(tabType); + $("#searchForm").attr("target","msgSentPrint"); + + window.open('', 'msgSentPrint', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top +',scrollbars=1'); + $("#searchForm").attr({"action":"/web/mjon/msgsent/printMsgSentDataAjax.do", "method":"post"}).submit(); + } function addrGroupDuplCnt() { @@ -582,15 +582,15 @@ function addrGroupDuplCnt() { var url = "/web/addr/selectDuplAddrGroupNameAjax.do"; $.ajax({ - async: false, + async: false, type: "post", - url: url, - data: data, - dataType:"JSON", + url: url, + data: data, + dataType:"JSON", // contentType: false, // processData: false, - cache: false, - success: function (returnData, status) { + cache: false, + success: function (returnData, status) { if("dupl"==returnData.result1) { flag = false; } @@ -646,15 +646,15 @@ function fnAddAddrNo(){ url = "/web/mjon/msgsent/insertAddAddrGrpDataAjax.do"; $.ajax({ - type: "POST", - url: url, - data: data, - dataType:'json', - async: false, - processData: false, - contentType: false, - cache: false, - success: function (returnData, status) { + 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){ @@ -684,8 +684,8 @@ function fnAddAddrNo(){ alert(returnData.message); } }, - error: function (e) { alert("주소록 등록에 실패하였습니다."); console.log("ERROR : ", e); } - }); + error: function (e) { alert("주소록 등록에 실패하였습니다."); console.log("ERROR : ", e); } + }); }else{ alert("등록할 문자를 선택해 주세요."); @@ -713,9 +713,9 @@ function infoPop(pageUrl){
- +
@@ -730,12 +730,12 @@ function infoPop(pageUrl){

선택된 발송내역 전화번호를 그룹으로 등록합니다.

-
그룹이름
-
- - -
-
+
그룹이름
+
+ + +
+
-
- -
+
+ +
-
-
-

발송결과

- - -
+
+
+

발송결과

+ + +
-
+
<%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentTopMentTap.jsp" %>
- <%--
-

- 보낸결과는 이동통신사의 결과값을 기반으로 표시되며, 최대 6개월간의 발송내역만 확인하실 수 있습니다.

-

- 전송내역이 필요한 경우 기간(6개월) 내에 다운로드하여 주시기 바랍니다.

-

- 보낸결과는 이동통신사 및 수신자 등의 사정으로 발송이 지연된 경우 결과가 다소 늦게 확인될 수 있습니다.

-

- 받는사람 기준으로 전송건별(묶음), 개인별(건) 상세조회가 가능합니다.

-

- 단문문자는 최대 24시간, 장문 및 그림문자는 최대 72시간까지 결과값이 수신되지 않은 경우 실패(비과금) 처리됩니다.

-

- 정상 수신인데도 불구하고 문자를 받지 못한 경우에는 “이통사별스팸차단서비스(버튼)” 안내를 확인하시기 바랍니다.

-

- 발송건 전체가 오류 처리되는 경우 번호도용 차단서비스에 가입되어 있을 수 있습니다. “번호도용 차단서비스(버튼)” 안내를 참고하시기 바랍니다.

-

- 보낸결과는 삭제 시 복구가 불가하오니 반드시 유의하시기 바랍니다.

-
- - -
-
--%> -
- - - " /> + <%--
+

- 보낸결과는 이동통신사의 결과값을 기반으로 표시되며, 최대 6개월간의 발송내역만 확인하실 수 있습니다.

+

- 전송내역이 필요한 경우 기간(6개월) 내에 다운로드하여 주시기 바랍니다.

+

- 보낸결과는 이동통신사 및 수신자 등의 사정으로 발송이 지연된 경우 결과가 다소 늦게 확인될 수 있습니다.

+

- 받는사람 기준으로 전송건별(묶음), 개인별(건) 상세조회가 가능합니다.

+

- 단문문자는 최대 24시간, 장문 및 그림문자는 최대 72시간까지 결과값이 수신되지 않은 경우 실패(비과금) 처리됩니다.

+

- 정상 수신인데도 불구하고 문자를 받지 못한 경우에는 “이통사별스팸차단서비스(버튼)” 안내를 확인하시기 바랍니다.

+

- 발송건 전체가 오류 처리되는 경우 번호도용 차단서비스에 가입되어 있을 수 있습니다. “번호도용 차단서비스(버튼)” 안내를 참고하시기 바랍니다.

+

- 보낸결과는 삭제 시 복구가 불가하오니 반드시 유의하시기 바랍니다.

+
+ + +
+
--%> + + + + " /> " /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-

전체

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
-
-
-

단문(SMS)

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
-
-
-

장문(LMS)

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
-
-
-

그림(MMS)

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
-
-
-
-
- 기간선택 -
- - ~ - -
- - - - - - -
-
- <%-- - --%> - - - - -
-
-
-
- -
    -
  • -
  • -
  • -
  • -
-
- -
- -
-
    -
  • -
  • -
  • -
  • -
  • -
-
- 받는사람(전송건별) - - 받는사람(개인별) -
받는사람(전송건별)
-
-
- -
-
- + + +
+
+
+
+

전체

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
+
+
+
+

단문(SMS)

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
+
+
+
+

장문(LMS)

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
+
+
+
+

그림(MMS)

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
+
+
+ + + + + +
+
+
+ 기간선택 +
+ + ~ + +
+ + + + + + +
+
+ <%-- + --%> + + + + + + + + +
+
+
+
+ +
    +
  • +
  • +
  • +
  • +
+
+ +
+ +
+
    +
  • +
  • +
  • +
  • +
  • +
+
+ 받는사람(전송건별) + + 받는사람(개인별) +
받는사람(전송건별)
+
+
+ +
+
+ +
-
-
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp index ecc7941b..7c4931ec 100644 --- a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp @@ -69,19 +69,19 @@ $(document).ready(function(){
- - - - - -<%-- --%> - - - - - - - + + + + + + + + + + + + + @@ -118,6 +118,12 @@ $(document).ready(function(){ --> + @@ -229,6 +235,9 @@ $(document).ready(function(){

--%> + diff --git a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp index b144e4b4..fb195796 100644 --- a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp @@ -73,7 +73,7 @@ $(document).ready(function(){ -<%-- --%> + @@ -111,6 +111,12 @@ $(document).ready(function(){ --> + @@ -185,6 +191,9 @@ $(document).ready(function(){

--%> + diff --git a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp index f95c88b2..69b1f80f 100644 --- a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp @@ -74,7 +74,8 @@ $(document).ready(function(){ -<%-- --%> + + @@ -116,6 +117,12 @@ $(document).ready(function(){ --> + @@ -188,6 +195,9 @@ $(document).ready(function(){

--%> + diff --git a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp index f540e137..89ea37bf 100644 --- a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp @@ -85,12 +85,13 @@ function fnSearch(pageNo){ -<%-- --%> - + + + - + @@ -116,6 +117,12 @@ function fnSearch(pageNo){ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-

전체

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
예약취소
-
-
-
-
-
-
-

단문(SMS)

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
예약취소
-
-
-
-
-
-
-

장문(LMS)

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
예약취소
-
-
-
-
-
-
-

그림(MMS)

-

-
-
-
-
대기
-
-
-
-
성공
-
-
-
-
실패
-
-
-
-
예약취소
-
-
-
-
-
+
+
+
+
+

전체

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+
+
+
+
+

단문(SMS)

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+
+
+
+
+

장문(LMS)

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+
+
+
+
+

그림(MMS)

+ +

+
+
+

WEB

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+ +
+

API

+
+
대기
+
+
+
+
성공
+
+
+
+
실패
+
+
+
+
예약취소
+
+
+
+
+
+
+ +
@@ -680,15 +638,24 @@ function infoPop(pageUrl){
-
+
+ + + + - <%-- --%>
diff --git a/src/main/webapp/publish/api_admin1.html b/src/main/webapp/publish/api_admin1.html index 6de8417e..1c2724c8 100644 --- a/src/main/webapp/publish/api_admin1.html +++ b/src/main/webapp/publish/api_admin1.html @@ -202,7 +202,7 @@
- - +
diff --git a/src/main/webapp/publish/textingmsg_2022.html b/src/main/webapp/publish/textingmsg_2022.html index 06586c13..77bf9b2c 100644 --- a/src/main/webapp/publish/textingmsg_2022.html +++ b/src/main/webapp/publish/textingmsg_2022.html @@ -1,3 +1,15 @@ + +
+ + + +
+ 발송방식 +
+ +
+
내용 +

+
+ 발송방식 +
+ +
+
내용 +

+
+ 발송방식 +
+ +
+
내용 +

+
+ 발송방식 +
+ +
+
발송방식 +
+ +
+
+ ${resultAllSentList.sendKind } +