diff --git a/src/main/java/itn/let/kakao/admin/statistics/web/KakaoStatisticsController.java b/src/main/java/itn/let/kakao/admin/statistics/web/KakaoStatisticsController.java index 318c5344..23a4835c 100644 --- a/src/main/java/itn/let/kakao/admin/statistics/web/KakaoStatisticsController.java +++ b/src/main/java/itn/let/kakao/admin/statistics/web/KakaoStatisticsController.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.let.kakao.admin.kakaoAt.service.MjonKakaoAtStatVO; @@ -61,4 +62,31 @@ public class KakaoStatisticsController { return "/uss/ion/kakaoat/KakaoAtSendStatistics"; } + // 알림톡 발송 통계 + @RequestMapping(value = "/uss/ion/kakao/insertKakaoAtCountStatApiAjax.do") + public ModelAndView insertKakaoAtCountStatApiAjax( + @ModelAttribute("kakaoAtStatVO") MjonKakaoAtStatVO kakaoAtStatVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + boolean isSuccess = true; + String msg = ""; + + try { + + kakaoStatisticsService.insertKakaoAtCountStat(kakaoAtStatVO); + + } + catch(Exception e) { + isSuccess = false; + msg = e.getMessage(); + } + + modelAndView.addObject("isSuccess", isSuccess); + modelAndView.addObject("msg", msg); + + return modelAndView; + } + } diff --git a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java index 2a8132f4..f17cfdb7 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java @@ -82,6 +82,9 @@ public interface MjonMsgService { // 금일 예약발송 건수 int selectMjonMsgGroupCntSum(MjonMsgVO mjonMsgVO) throws Exception; + // 스미싱의심 미처리 + int selectMjonMsgDelayCnt(MjonMsgVO mjonMsgVO) throws Exception; + int selectSendBlockPhonNumCheck(MjonMsgVO mjonMsgVO) throws Exception; //전송사 문자 발송 결과 코드 정보 전체 불러오기 diff --git a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java index db045d04..3f02c58a 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java @@ -192,8 +192,14 @@ public class MjonMsgVO extends ComDefaultVO{ private int mmsGroupFWCntSum; // mms 실패대기(건) private int mmsTotFWPriceSum; // mms 실패대기(금액) + private String searchDelayMsgYn; - + public String getSearchDelayMsgYn() { + return searchDelayMsgYn; + } + public void setSearchDelayMsgYn(String searchDelayMsgYn) { + this.searchDelayMsgYn = searchDelayMsgYn; + } public int getSmsGroupSCntSum() { return smsGroupSCntSum; } diff --git a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java index f4104a35..a61fcdd2 100644 --- a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java +++ b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java @@ -198,6 +198,11 @@ public class MjonMsgDAO extends EgovAbstractDAO { return (int) select("mjonMsgDAO.selectMjonMsgGroupCntSum", mjonMsgVO); } + // 스미싱의심 미처리 + public int selectMjonMsgDelayCnt(MjonMsgVO mjonMsgVO) throws Exception{ + return (int) select("mjonMsgDAO.selectMjonMsgDelayCnt", mjonMsgVO); + } + public int selectSendBlockPhonNumCheck(MjonMsgVO mjonMsgVO) throws Exception{ return (int) select("mjonMsgDAO.selectSendBlockPhonNumCheck", mjonMsgVO); } diff --git a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java index 20bff342..f9db7422 100644 --- a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java +++ b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java @@ -415,6 +415,12 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM return mjonMsgDAO.selectMjonMsgGroupCntSum(mjonMsgVO); } + // 스미싱의심 미처리 + @Override + public int selectMjonMsgDelayCnt(MjonMsgVO mjonMsgVO) throws Exception { + return mjonMsgDAO.selectMjonMsgDelayCnt(mjonMsgVO); + } + @Override public int selectSendBlockPhonNumCheck(MjonMsgVO mjonMsgVO) throws Exception{ return mjonMsgDAO.selectSendBlockPhonNumCheck(mjonMsgVO); diff --git a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java index fe30c976..7b13544c 100644 --- a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java +++ b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java @@ -265,6 +265,40 @@ public class MjonMsgController { } + // 스미싱의심 미처리 + @RequestMapping(value = "/uss/ion/msg/selectDelayMsgCountAjax.do") + public ModelAndView selectDelayMsgCountAjax( + @ModelAttribute("mjonMsgVO") MjonMsgVO mjonMsgVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + boolean isSuccess = true; + String msg = ""; + int delayMsgCnt = 0; + + // 로그인VO에서 사용자 정보 가져오기 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String admId = loginVO == null ? "" : loginVO.getId(); + + try{ + + delayMsgCnt = mjonMsgService.selectMjonMsgDelayCnt(mjonMsgVO); + + } + catch(Exception e) { + isSuccess = false; + msg = e.getMessage(); + } + + modelAndView.addObject("isSuccess", isSuccess); + modelAndView.addObject("msg", msg); + modelAndView.addObject("delayMsgCnt", delayMsgCnt); + modelAndView.addObject("admId", admId); + + return modelAndView; + } + /** * 문자전송 리스트 스미싱 on off 처리 * @param searchVO diff --git a/src/main/java/itn/let/schdlr/service/SchedulerUtil.java b/src/main/java/itn/let/schdlr/service/SchedulerUtil.java index 5ff6523d..563ca444 100644 --- a/src/main/java/itn/let/schdlr/service/SchedulerUtil.java +++ b/src/main/java/itn/let/schdlr/service/SchedulerUtil.java @@ -322,7 +322,9 @@ public class SchedulerUtil { } // AGENT별 Kakao 발송건수 통계 스케쥴러 - @Scheduled(cron = "0 10,40 * * * *") // 10,40분마다 실행 + //@Scheduled(cron = "0 10,40 * * * *") // 10,40분마다 실행 + //@Scheduled(cron = "0 47 * * * *") // 47분마다 실행 + @Scheduled(cron = "0 57 23 * * *") @SchedulerLock(name = "insertAgentKakaoCountStatByMinute", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) public void agentKakaoCountStatByMinuteInsert() throws Exception { try { diff --git a/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml index 9f3ce322..3082d111 100644 --- a/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml @@ -694,7 +694,7 @@ , B.SMS_TXT , B.SUBJECT , B.REGDATE - , B.REQ_DATE + , A.REQ_DATE , A.RSLT_DATE , B.CALL_FROM , B.TOT_PRICE @@ -1900,38 +1900,24 @@ ) AS result , ( SELECT COUNT(0) FROM MJ_MSG_DATA C - WHERE C.RESERVE_C_YN = 'N' - AND C.MSG_GROUP_ID = MG.MSG_GROUP_ID + INNER JOIN MJ_MSG_GROUP_DATA CG + ON C.MSG_GROUP_ID = CG.MSG_GROUP_ID + WHERE CG.RESERVE_C_YN = 'N' + AND CG.MSG_GROUP_ID = MG.MSG_GROUP_ID AND C.RSLT_CODE = '7000' ) AS successCount , ( SELECT COUNT(0) FROM MJ_MSG_DATA C - WHERE C.RESERVE_C_YN = 'N' - AND C.MSG_GROUP_ID = MG.MSG_GROUP_ID + INNER JOIN MJ_MSG_GROUP_DATA CG + ON C.MSG_GROUP_ID = CG.MSG_GROUP_ID + WHERE CG.RESERVE_C_YN = 'N' + AND CG.MSG_GROUP_ID = MG.MSG_GROUP_ID AND C.RSLT_CODE = '7000' - AND C.MSG_TYPE = '8' + AND CG.MSG_TYPE = '8' ) AS atSuccessCount , - ( SELECT COUNT(0) - FROM MJ_MSG_DATA C - WHERE C.RESERVE_C_YN = 'N' - AND C.MSG_GROUP_ID = MG.MSG_GROUP_ID - AND C.RSLT_CODE = '7000' - AND C.MSG_TYPE = '9' - ) AS ftSuccessCount , - ( SELECT COUNT(0) - FROM MJ_MSG_DATA C - WHERE C.RESERVE_C_YN = 'N' - AND C.MSG_GROUP_ID = MG.MSG_GROUP_ID - AND IFNULL(C.RSLT_CODE, '') != '7000' - AND C.MSG_TYPE = '8' - ) AS atFailCount , - ( SELECT COUNT(0) - FROM MJ_MSG_DATA C - WHERE C.RESERVE_C_YN = 'N' - AND C.MSG_GROUP_ID = MG.MSG_GROUP_ID - AND IFNULL(C.RSLT_CODE, '') != '7000' - AND C.MSG_TYPE = '9' - ) AS ftFailCount , + 0 AS ftSuccessCount , + 0 AS atFailCount , + 0 AS ftFailCount , MSG_NOTICETALK_SENDER_KEY , MSG_NOTICETALK_TMP_KEY, MD.BIZ_UMID, diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoStatistics_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoStatistics_SQL_Mysql.xml index daf91c9d..58e5171c 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoStatistics_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoStatistics_SQL_Mysql.xml @@ -108,10 +108,12 @@ ,bkp.BIZ_KAKAO_AT_PRICE FROM MJ_MSG_DATA md + INNER JOIN MJ_MSG_GROUP_DATA mgd + ON md.MSG_GROUP_ID = mgd.MSG_GROUP_ID LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp - ON md.MSG_GROUP_ID = bkp.MSG_GROUP_ID + ON mgd.MSG_GROUP_ID = bkp.MSG_GROUP_ID WHERE - md.MSG_TYPE = '8' + mgd.MSG_TYPE = '8' AND md.RESERVE_C_YN = 'N' AND md.SENT_DATE >= DATE_FORMAT(#statStartDate#, '%Y-%m-%d') AND DATE_FORMAT(#statStandardDate#, '%Y-%m-%d') > md.SENT_DATE 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 ad371fab..6679cd37 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 @@ -601,6 +601,21 @@ + + + + + + " > - " > +  ~ - - " > + + " > + diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoAtSendStatistics.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoAtSendStatistics.jsp index bae5b6a2..4990f952 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoAtSendStatistics.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoAtSendStatistics.jsp @@ -96,6 +96,43 @@ form.submit(); } + + // 오늘날짜 + function getTodayDate() { + var today = new Date(); + + var year = today.getFullYear(); + var month = ('0' + (today.getMonth() + 1)).slice(-2); + var day = ('0' + today.getDate()).slice(-2); + + var dateString = year + month + day; + + return dateString; + } + + // 당일 데이터 업데이트 + function setTodayUpdate() { + var url = "/uss/ion/kakao/insertKakaoAtCountStatApiAjax.do?statStartDate=" + getTodayDate() + "&statEndDate=" + getTodayDate(); + + $.ajax({ + type: "POST", + url: url, + data: {}, + dataType:'json', + async: true, + success: function (data) { + if (data.isSuccess) { + location.reload(); + } + else { + alert("Msg : " + data.msg); + } + }, + error: function (e) { + alert("ERROR : " + JSON.stringify(e)); + } + }); + }