From 856e1ad1d27ab89fa0f89425fcb40b79435f1628 Mon Sep 17 00:00:00 2001 From: JIWOO Date: Wed, 17 Sep 2025 15:15:13 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20>=20=EC=B9=B4?= =?UTF-8?q?=EC=B9=B4=EC=98=A4=ED=86=A1=20=EC=A0=84=EC=86=A1=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20>=20=EC=83=81=EC=84=B8=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20-=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=A1=B0=EC=9D=B8=EC=97=90=20=EC=A1=B0=EA=B1=B4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 3c675e5..7f930a6 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 @@ -3242,6 +3242,17 @@ )M LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI ON M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY AND MKPI.USER_ID = M.USER_ID + AND MKPI.PROFILE_ID = ( + SELECT + PROFILE_ID + FROM + MJ_KAKAO_PROFILE_INFO + WHERE + USER_ID = M.USER_ID + AND SENDER_KEY = M.MSG_NOTICETALK_SENDER_KEY + ORDER BY DELETE_YN ASC, LAST_UPDT_PNTTM DESC + LIMIT 1 + ) LEFT JOIN LETTNGNRLMBER LTM ON M.USER_ID = LTM.MBER_ID WHERE 1=1 From 81c735def0ebd2589b6574183d7b06575263fecc Mon Sep 17 00:00:00 2001 From: JIWOO Date: Wed, 24 Sep 2025 14:31:16 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9A=B0=20-=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=20>=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=ED=8C=9D=EC=97=85=20>=20=EC=B5=9C?= =?UTF-8?q?=EA=B7=BC=20=EC=B9=B4=EC=B9=B4=EC=98=A4=ED=86=A1=20=EC=A0=84?= =?UTF-8?q?=EC=86=A1=20=EB=82=B4=EC=97=AD=20=EC=A1=B0=ED=9A=8C=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itn/let/mjo/msg/service/MjonMsgVO.java | 14 +- .../msgdata/service/MjonMsgDataService.java | 3 +- .../msgdata/service/impl/MjonMsgDataDAO.java | 5 +- .../service/impl/MjonMsgDataServiceImpl.java | 5 + .../uss/umt/web/EgovUserManageController.java | 71 ++--- .../sqlmap/let/msg/MjonMsgData_SQL_mysql.xml | 108 ++++++- .../cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp | 286 ++++++------------ 7 files changed, 246 insertions(+), 246 deletions(-) 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 d73c3b4..6474e52 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java @@ -284,7 +284,6 @@ public class MjonMsgVO extends ComDefaultVO{ private String totFWPriceSum; private String resultLogUpdtPnttm; - private int successCount; // 문자발송 성공건수 private int callRejectionCount; // 번호도용 문자차단 서비스로 착신거절 오류 수 private String callbackYn; // 번호도용 문자차단 서비스로 인한 발송실패 문자알림 여부(N:미알림, Y:알림) private String userCallbackYn; @@ -315,5 +314,18 @@ public class MjonMsgVO extends ComDefaultVO{ private List mjonMsgSendVOList = new ArrayList<>(); private String rsltCodeMsgTxt; //전송사 결과 코드 내용 + + + private int waitCount; //대기 건수 + private int successCount; // 문자발송 성공건수 + private int failCount; //실패 건수 + private int kakaoResendWaitCount; //대체문자 대기 건수 + private int kakaoResendSuccCount; //대체문자 성공 건수 + private int kakaoResendFailCount; //대체문자 실패 건수 + private String[] msgTypeList; //발송 타입 리스트 + + private String selectType; //조회 타입 ex) complete : 전송완료 + private String yellowId; //채널아이디 + private String yellowIdYn; //채널아이디 여부 } 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 d5e4c1a..d6d2f2e 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java @@ -190,7 +190,8 @@ public interface MjonMsgDataService { public MjonMsgReturnVO sendSysMsgData(MjonMsgVO mjonMsgVO, HttpServletRequest request) throws Exception; - + //mj_msg_data 테이블의 msg_result 컬럼을 이용한 발송건수 조회 쿼리 + public List selectSendListByResultCode(MjonMsgVO mjonMsgVO) throws Exception; } 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 9f59ab1..919fe1a 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 @@ -462,7 +462,10 @@ public class MjonMsgDataDAO extends EgovAbstractDAO { return totalInsertedCount; // 처리된 전체 데이터 수 반환 } - + @SuppressWarnings("unchecked") + public List selectSendListByResultCode(MjonMsgVO mjonMsgVO) throws Exception{ + return (List) list("mjonMsgDAO.selectSendListByResultCode",mjonMsgVO); + } public Timestamp convertToTimestamp(String reqDate) { try { 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 bde8f50..bfbe76d 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 @@ -5147,5 +5147,10 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return returnVO; } + + @Override + public List selectSendListByResultCode(MjonMsgVO mjonMsgVO) throws Exception { + return mjonMsgDataDAO.selectSendListByResultCode(mjonMsgVO); + } } diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index d3e44d0..41b77d0 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -1471,61 +1471,32 @@ public class EgovUserManageController { model.addAttribute("channelIdCnt", channelIdCnt); model.addAttribute("resultKakaoChannelIDList", resultKakaoChannelIDList); - /* - * 알림톡/친구톡 최근 발송내역 리스트 불러오기 - */ - - KakaoVO sendKakaoVO = new KakaoVO(); - //sendKakaoVO.setSearchCondition2("N");//예약건은 제외하기 - sendKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 - sendKakaoVO.setUserId(reqMberManageVO.getMberId()); - // 문자발송 완료건은 모두 보이도록 처리 - //kakaoVO.setMsgType("8"); - sendKakaoVO.setSearchSortCnd("reqDate"); - sendKakaoVO.setSearchSortOrd("desc"); - sendKakaoVO.setFirstIndex(0); - sendKakaoVO.setPageType("sand"); - List kakaoResultList = new ArrayList(); - //kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO); - - /*250620 - 회원 정보 팝업 내 최근 알림톡/친구톡 전송 내역을 조회하는 임시 쿼리 - * 기존 쿼리 성능으로 인하여 회원 정보 팝업 오픈 시 간헐적으로 에러 발생 - * 임시 쿼리는 화면에 필요한 최소한의 정보만 조회하며, USER_ID를 제외한 조건은 하드코딩 처리 - * DB 개선 작업 이후 알림톡/친구톡 관련 조회 공통 쿼리 생성 예정 - * */ - sendKakaoVO.setReserveYn("N"); - kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserListTemp(sendKakaoVO); + /* 카카오 전송 완료, 예약 조회 */ + /* 전송완료, 예약 공통 set */ + MjonMsgVO kakaoListVO = new MjonMsgVO(); + kakaoListVO.setUserId(reqMberManageVO.getMberId()); + kakaoListVO.setReserveCYn("N"); + kakaoListVO.setRecordCountPerPage(3); + kakaoListVO.setFirstIndex(0); + kakaoListVO.setYellowIdYn("Y"); + String[] msgTypeList = {"8","9"}; + kakaoListVO.setMsgTypeList(msgTypeList); + /* 전송완료 set*/ + kakaoListVO.setSelectType("reqDateLast3M"); //발송일시가 지금부터 지난 3개월 + kakaoListVO.setSearchSortCnd("REQ_DATE"); + kakaoListVO.setSearchSortOrd("DESC"); + List kakaoResultList = mjonMsgDataService.selectSendListByResultCode(kakaoListVO); model.addAttribute("kakaoResultList", kakaoResultList); - /* - * 알림톡/친구톡 예약발송 리스트 불러오기 - */ - - KakaoVO reserveKakaoVO = new KakaoVO(); - reserveKakaoVO.setReserveYn("Y"); //예약건만 조회 - reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기 - reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 - reserveKakaoVO.setUserId(reqMberManageVO.getMberId()); - // 문자발송 완료건은 모두 보이도록 처리 - //kakaoVO.setMsgType("8"); - reserveKakaoVO.setSearchSortCnd("reqDate"); - reserveKakaoVO.setSearchSortOrd("desc"); - reserveKakaoVO.setFirstIndex(0); - reserveKakaoVO.setPageType("sand"); - List kakaoReserveList = new ArrayList(); - //kakaoReserveList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(reserveKakaoVO); - - /*250620 - 회원 정보 팝업 내 최근 알림톡/친구톡 전송 내역을 조회하는 임시 쿼리 - * 기존 쿼리 성능으로 인하여 회원 정보 팝업 오픈 시 간헐적으로 에러 발생 - * 임시 쿼리는 화면에 필요한 최소한의 정보만 조회하며, USER_ID를 제외한 조건은 하드코딩 처리 - * DB 개선 작업 이후 알림톡/친구톡 관련 조회 공통 쿼리 생성 예정 - * */ - sendKakaoVO.setReserveYn("Y"); - kakaoReserveList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserListTemp(sendKakaoVO); + /* 예약 set */ + kakaoListVO.setReserveYn("Y"); + kakaoListVO.setSelectType("reqDateNext3M"); //발송일시가 지금부터 다음 3개월 + kakaoListVO.setSearchSortCnd("REQ_DATE"); + kakaoListVO.setSearchSortOrd("ASC"); + List kakaoReserveList = mjonMsgDataService.selectSendListByResultCode(kakaoListVO); model.addAttribute("kakaoReserveList", kakaoReserveList); - /* * 알림톡 지연처리 알림톡 내용 불러오기(30분 지연처리된 알림톡 내역 불러오기) */ 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 90b788a..397bee6 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 @@ -8688,7 +8688,113 @@ GROUP BY M.msgGroupId order by M.reqDate desc - + + diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp index cd5b109..897b44d 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp @@ -4723,102 +4723,59 @@ function fnInputSmsTxt(){ - - - - - - - 알림톡 - - - 친구톡 - - - - - - - - - - - -<%-- ${fnc:setStrToDataFormatter(kakaoResultList.regDate, 'MM-dd HH:mm') } --%> - - - - - - - - - - - - - - [예약]
-
- - -
- - - - - [발송취소]
- - [예약]
-
- - -
-
- - [예약취소]
- - -
- - [예약]
- - -
- - - - -
-
-
- - - - - - - - - -
- -
- -
-
-
-
- - - - - - - % - -
+ + + + + + 알림톡 + + + 친구톡 + + + - + + + + + + + + + + [예약]
+
+ + + [발송취소] + + + + + + + +
+ +
+ +
+
+ + + + + + % +
- 카카오톡 발송 내역이 없습니다. + 카카오톡 전송 내역이 없습니다.
@@ -4841,10 +4798,6 @@ function fnInputSmsTxt(){ - - - - @@ -4855,112 +4808,61 @@ function fnInputSmsTxt(){ 채널ID 내용 발송 - 성공 - 발송(대) - 성공(대) - 성공율 - - - - - - - 알림톡 - - - 친구톡 - - - - - - - - - - - <%-- ${fnc:setStrToDataFormatter(kakaoReserveList.regDate, 'MM-dd HH:mm') } --%> - - - - - - - - - - - - - - - [예약]
-
- - -
- - - - - [발송취소]
- - [예약]
-
- - -
-
- - [예약취소]
- - -
- - [예약]
- - -
- - - - -
-
-
- - - - - - - - - - -
- -
- -
-
-
-
- - - - - - % - -
+ + + + + + 알림톡 + + + 친구톡 + + + - + + + + + + + + + + [예약]
+
+ + + [발송취소] + + + + + + + +
+ +
+ +
+
+ + +
- 카카오톡 발송 내역이 없습니다. + 카카오톡 예약 내역이 없습니다.
From 67202b2a9bdcdd12e589474f61aea7baa3bfa757 Mon Sep 17 00:00:00 2001 From: JIWOO Date: Wed, 24 Sep 2025 14:53:00 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9A=B0=20>=20VO?= =?UTF-8?q?=EB=82=B4=20=EB=8C=80=EC=B2=B4=EB=AC=B8=EC=9E=90=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=EB=AA=85=20=EC=B6=A9=EB=8F=8C=EB=A1=9C=20=EC=9D=B8?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EB=B3=80=EC=88=98=EB=AA=85=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD.=20kakaoResend=20>=20resend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java | 10 +++++----- .../sqlmap/let/msg/MjonMsgData_SQL_mysql.xml | 12 ++++++------ .../jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) 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 6474e52..98ee387 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java @@ -317,15 +317,15 @@ public class MjonMsgVO extends ComDefaultVO{ private int waitCount; //대기 건수 - private int successCount; // 문자발송 성공건수 + private int successCount; //문자발송 성공건수 private int failCount; //실패 건수 - private int kakaoResendWaitCount; //대체문자 대기 건수 - private int kakaoResendSuccCount; //대체문자 성공 건수 - private int kakaoResendFailCount; //대체문자 실패 건수 + private int resendWaitCount; //대체문자 대기 건수 + private int resendSuccCount; //대체문자 성공 건수 + private int resendFailCount; //대체문자 실패 건수 private String[] msgTypeList; //발송 타입 리스트 - private String selectType; //조회 타입 ex) complete : 전송완료 + private String selectType; //조회 타입 ex) reqDateLast3M : 발송일이 지난 3개월간 private String yellowId; //채널아이디 private String yellowIdYn; //채널아이디 여부 } 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 397bee6..c56d176 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 @@ -8708,9 +8708,9 @@ , MMD.waitCount AS waitCount , MMD.successCount AS successCount , MMD.failCount AS failCount - , MMD.kakaoResendWaitCount AS kakaoResendWaitCount - , MMD.kakaoResendSuccCount AS kakaoResendSuccCount - , MMD.kakaoResendFailCount AS kakaoResendFailCount + , MMD.resendWaitCount AS resendWaitCount + , MMD.resendSuccCount AS resendSuccCount + , MMD.resendFailCount AS resendFailCount , MKPI.YELLOW_ID AS yellowId @@ -8779,9 +8779,9 @@ , SUM(CASE WHEN MSG_RESULT = '00' THEN 1 ELSE 0 END) AS waitCount , SUM(CASE WHEN MSG_RESULT = '10' THEN 1 ELSE 0 END) AS successCount , SUM(CASE WHEN MSG_RESULT = '20' THEN 1 ELSE 0 END) AS failCount - , SUM(CASE WHEN MSG_RESULT = '30' THEN 1 ELSE 0 END) AS kakaoResendWaitCount - , SUM(CASE WHEN MSG_RESULT = '40' THEN 1 ELSE 0 END) AS kakaoResendSuccCount - , SUM(CASE WHEN MSG_RESULT = '50' THEN 1 ELSE 0 END) AS kakaoResendFailCount + , SUM(CASE WHEN MSG_RESULT = '30' THEN 1 ELSE 0 END) AS resendWaitCount + , SUM(CASE WHEN MSG_RESULT = '40' THEN 1 ELSE 0 END) AS resendSuccCount + , SUM(CASE WHEN MSG_RESULT = '50' THEN 1 ELSE 0 END) AS resendFailCount FROM MJ_MSG_DATA GROUP BY diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp index 1df6ef5..c4c72f6 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp @@ -4772,8 +4772,8 @@ function fnInputSmsTxt(){ - - + + % From 09f53b298865c8f94adf8f8e13791ef9750bf75b Mon Sep 17 00:00:00 2001 From: JIWOO Date: Wed, 24 Sep 2025 18:01:29 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9A=B0=20-=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=20>=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=ED=8C=9D=EC=97=85=20>=20=EC=B5=9C?= =?UTF-8?q?=EA=B7=BC=20=EC=B9=B4=EC=B9=B4=EC=98=A4=ED=86=A1=20>=20?= =?UTF-8?q?=EC=98=88=EC=95=BD=EB=AA=A9=EB=A1=9D=20=EC=97=AD=EC=88=9C?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/itn/let/uss/umt/web/EgovUserManageController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index 41b77d0..de478d7 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -19,6 +19,7 @@ import java.security.spec.RSAPublicKeySpec; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Iterator; @@ -1495,6 +1496,7 @@ public class EgovUserManageController { kakaoListVO.setSearchSortCnd("REQ_DATE"); kakaoListVO.setSearchSortOrd("ASC"); List kakaoReserveList = mjonMsgDataService.selectSendListByResultCode(kakaoListVO); + Collections.reverse(kakaoReserveList); //조회된 3건들은 발송일 내림차순으로 변경 model.addAttribute("kakaoReserveList", kakaoReserveList); /* From cd972badf779670c7e735b84976fc88e6a91806e Mon Sep 17 00:00:00 2001 From: JIWOO Date: Mon, 29 Sep 2025 14:11:52 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9A=B0=20-=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=EB=AA=85(=EB=B0=9C=EC=8B=A0=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84)=20=EC=A1=B0=EC=9D=B8=20=EC=9B=90=EB=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml | 11 ----------- 1 file changed, 11 deletions(-) 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 7f930a6..3c675e5 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 @@ -3242,17 +3242,6 @@ )M LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI ON M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY AND MKPI.USER_ID = M.USER_ID - AND MKPI.PROFILE_ID = ( - SELECT - PROFILE_ID - FROM - MJ_KAKAO_PROFILE_INFO - WHERE - USER_ID = M.USER_ID - AND SENDER_KEY = M.MSG_NOTICETALK_SENDER_KEY - ORDER BY DELETE_YN ASC, LAST_UPDT_PNTTM DESC - LIMIT 1 - ) LEFT JOIN LETTNGNRLMBER LTM ON M.USER_ID = LTM.MBER_ID WHERE 1=1 From d9b1e413770a96dc3a55aee2f0db2ceb1a316cdf Mon Sep 17 00:00:00 2001 From: ijunho Date: Fri, 17 Oct 2025 12:01:43 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=EC=8A=A4=EC=BC=80=EC=A5=B4=EB=9F=AC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itn/let/schdlr/service/SchedulerUtil.java | 475 ------------------ 1 file changed, 475 deletions(-) diff --git a/src/main/java/itn/let/schdlr/service/SchedulerUtil.java b/src/main/java/itn/let/schdlr/service/SchedulerUtil.java index a5bda66..9e6b590 100644 --- a/src/main/java/itn/let/schdlr/service/SchedulerUtil.java +++ b/src/main/java/itn/let/schdlr/service/SchedulerUtil.java @@ -45,479 +45,4 @@ import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock; @EnableSchedulerLock(defaultLockAtMostFor = "PT30S") // Scheduler Lock 사용 가능 설정 (기본 30초동안 Lock) public class SchedulerUtil { - @Resource(name = "SchdlrManageService") - private SchdlrManageService schdlrManageService; - - @Resource (name = "MailTemplateService") - private MailTemplateService mailTemplateService; - - @Resource (name = "userManageService") - private EgovUserManageService egovUserManageService; - - @Resource(name = "hackIpService") - private HackIpService hackIpService; - - @Resource(name = "mjonMsgService") - private MjonMsgService mjonMsgService; - - @Resource(name = "KakaoStatisticsService") - private KakaoStatisticsService kakaoStatisticsService; - - @Resource(name = "propertiesService") - protected EgovPropertyService propertyService; - - @Resource(name = "conectStatsService") - private EgovConectStatsService conectStatsService; - - /** 알림전송 Util */ - @Resource(name = "mjonNoticeSendUtil") - private MjonNoticeSendUtil mjonNoticeSendUtil; - - @Resource(name = "faxAdmService") - private FaxAdmService faxAdmService; - - @Resource(name = "LetterService") - private LetterService letterService; - - @Resource(name="MjonMsgDataDAO") - private MjonMsgDataDAO mjonMsgDataDAO; - - /** 설정값 가져오기 */ - @Value("#{globalSettings['Globals.Env']}") - private String GlobalsEnv; - - private static final String ONE_MIN = "PT1M"; // 1분동안 LOCK - - /* - * 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다. - * */ - // Schdule Lock (10분동안) - @Scheduled(cron = "0 0/10 * * * ?") - @SchedulerLock(name = "runScenarioOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runScenarioOneTime() throws Exception { - - // do something... - try { - System.out.println("=============SchedulerUtil=====runScenarioOneTime =============>"); - System.out.println("=============SchedulerUtil=====runScenarioOneTime =============>"); - System.out.println("=============SchedulerUtil=====runScenarioOneTime =============>"); - System.out.println("=============SchedulerUtil=====runScenarioOneTime =============>"); - System.out.println("=============SchedulerUtil=====runScenarioOneTime =============>"); - - //문자 환불, 팩스 환불 - - - PayBack(""); - - /* - // 문자 환불 - schdlrManageService.msgFailPayBack(); - * */ - - - // do something... - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - /* - * 매일 5시20분 20초에 31일전 데이터에서 환불 대상을 찾아서 환불 한다. - * */ - @Scheduled(cron = "20 25 5 * * ?") - @SchedulerLock(name = "runScenarioOneTimeOneByDay", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runScenarioOneTimeOneByDay() throws Exception { - - // do something... - try { - System.out.println("=============EgovSysLogScheduling=====runScenarioOneTimeOneByDay =============>"); - //문자 환불, 팩스 환불 - PayBack("ONE"); - - /* - // 문자 환불 - schdlrManageService.msgFailPayBack(); - * */ - - - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // Schdule Lock (2분동안) - //세틀뱅크 자동 충전 배치 - @Scheduled(cron = "0 0/2 * * * ?") - @SchedulerLock(name = "runVacsChargeOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runVacsChargeOneTime() throws Exception { - - System.out.println("=============EgovSysLogScheduling=====runVacsChargeOneTime =============>"); - // do something... - try { - - schdlrManageService.vacsAutoCharge(); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 매일 오전 4시마다 실행 ex) 04:00 - // 휴면회원으로 지정 - @Scheduled(cron = "0 0 4 * * *") - @SchedulerLock(name = "runMemberDormantUpdate", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runMemberDormantUpdate() throws Exception { - - System.out.println("=============EgovSysLogScheduling=====runMemberDormantUpdate =============>"); - try { - - mailTemplateService.setMemberDormantUpdate(); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 매일 오전 8시마다 실행 ex) 08:00 - // 휴면회원 메일발송 - @Scheduled(cron = "0 0 8 * * *") - @SchedulerLock(name = "runMailSendMemberDormant", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runMailSendMemberDormant() throws Exception { - - System.out.println("=============EgovSysLogScheduling=====runMailSendMemberDormant =============>"); - try { - - mailTemplateService.mailSendMemberDormant(); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 매일 오전 10시마다 실행 ex) 10:00 - // 휴면회원 SMS발송 - @Scheduled(cron = "0 0 10 * * *") - @SchedulerLock(name = "runSmsSendMemberDormant", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runSmsSendMemberDormant() throws Exception { - - System.out.println("=============EgovSysLogScheduling=====runSmsSendMemberDormant =============>"); - try { - - mailTemplateService.smsSendMemberDormant(); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 매일 오전 5시마다 실행 ex) 05:00 - // 문자 우선순위 랜덤 업데이트 All - @Scheduled(cron = "0 0 5 * * *") - @SchedulerLock(name = "runLetterPriorityUpdateAll", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runLetterPriorityUpdateAll() throws Exception { - - System.out.println("=============EgovSysLogScheduling=====runLetterPriorityUpdateAll =============>"); - try { - - letterService.updateLetterPriorityAll(); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 매달 1일 0시 10분 실행 - // "0 10 0 1 * *" - // 매달 3일 6시 40분 실행 - // "0 40 18 3 * *" - // 매일 오전 1시 1분 0초 - // "0 1 1 * * *" -// @Scheduled(cron = "0 * * * * *") // 1분마다 실행(TEST) - @Scheduled(cron = "0 1 0 1 * *") // 매달 1일 0시 1분 실행 - @SchedulerLock(name = "runUserCashByAutoCashUpdate", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runUserCashByAutoCashUpdate() throws Exception { - //System.out.println("AutoCash Start"); - - // 후불제회원 Cash충전 - //egovUserManageService.updateUserCashByAutoCash(); - - //System.out.println("AutoCash End"); - - try { - - System.out.println("AutoCash Start"); - - // 후불제회원 Cash충전 - egovUserManageService.updateUserCashByAutoCash(); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - - // 트래픽 감시 스케줄러 - // 3분마다 실행 - @Scheduled(cron = "0 0/3 * * * ?") - @SchedulerLock(name = "highTrafficIgnoreIpInsert", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void highTrafficIgnoreIpInsert() throws Exception { - - //5분 내 300회 이상 접속로그가 있는 경우 차단아이피 등록 - //hackIpService.selectHighTrafficNotIgnoreIp(); - - try { - System.out.println("=============EgovSysLogScheduling=====highTrafficIgnoreIpInsert =============>"); - - - //5분 내 300회 이상 접속로그가 있는 경우 차단아이피 등록 - hackIpService.selectHighTrafficNotIgnoreIp(); - - - // do something... - - }catch(Exception ex) { - ex.printStackTrace(); - } - - } - - // AGENT별 SMS LMS MMS 발송건수 , 카카오 알림톡 발송건수 통계 스케쥴러 - @Scheduled(cron = "0 10 1 * * *") // 매일 새벽1시 10분 실행 - @SchedulerLock(name = "insertAgentSmsCountStat", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void agentSmsCountStatInsert() throws Exception { - try { - System.out.println("=============EgovSysLogScheduling=====insertAgentSmsCountStat scheduler RUN (YESTERDAY) =============>"); - int minusDate =EgovDateUtil.dayMinusToInt("yyyyMMdd", 1); - int minusSevenDays =EgovDateUtil.dayMinusToInt("yyyyMMdd", 7); - - // 전일 문자발송 건 통계 insert - MjonMsgStatVO mjonMsgStatVO = new MjonMsgStatVO(); - mjonMsgStatVO.setStatStartDate(minusSevenDays); - mjonMsgStatVO.setStatEndDate(minusDate); - mjonMsgService.insertAgentSmsCountStat(mjonMsgStatVO); - - // 전일 알림톡발송 건 통계 insert - MjonKakaoAtStatVO kakaoAtStatVO = new MjonKakaoAtStatVO(); - kakaoAtStatVO.setStatStartDate(minusSevenDays); - kakaoAtStatVO.setStatEndDate(minusDate); - kakaoStatisticsService.insertKakaoAtCountStat(kakaoAtStatVO); - - // 전일 알림톡발송 건 통계 insert - FaxStatVO faxStatVO = new FaxStatVO(); - faxStatVO.setStatStartDate(minusSevenDays); - faxStatVO.setStatEndDate(minusDate); - faxAdmService.insertFaxCountStat(faxStatVO); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // AGENT별 SMS 발송건수 통계 스케쥴러 - @Scheduled(cron = "0 5,35 * * * *") // 5,35분마다 실행 - @SchedulerLock(name = "insertAgentSmsCountStatByMinute", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void agentSmsCountStatByMinuteInsert() throws Exception { - try { - System.out.println("=============EgovSysLogScheduling=====insertAgentSmsCountStatByMinute =============>"); - - int nowDate =EgovDateUtil.nowDateToInt("yyyyMMdd"); - - // 당일 문자발송 건 통계 insert - MjonMsgStatVO mjonMsgStatVO = new MjonMsgStatVO(); - mjonMsgStatVO.setStatStartDate(nowDate); - mjonMsgStatVO.setStatEndDate(nowDate); - mjonMsgService.insertAgentSmsCountStat(mjonMsgStatVO); - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // AGENT별 Kakao 발송건수 통계 스케쥴러 - //@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 { - System.out.println("=============EgovSysLogScheduling=====insertAgentKakaoCountStatByMinute =============>"); - - int nowDate =EgovDateUtil.nowDateToInt("yyyyMMdd"); - - // 당일 알림톡발송 건 통계 insert - MjonKakaoAtStatVO kakaoAtStatVO = new MjonKakaoAtStatVO(); - kakaoAtStatVO.setStatStartDate(nowDate); - kakaoAtStatVO.setStatEndDate(nowDate); - kakaoStatisticsService.insertKakaoAtCountStat(kakaoAtStatVO); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // AGENT별 Fax 발송건수 통계 스케쥴러 - @Scheduled(cron = "0 15,45 * * * *") // 15,45분마다 실행 - @SchedulerLock(name = "insertAgentFaxCountStatByMinute", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void agentFaxCountStatByMinuteInsert() throws Exception { - try { - System.out.println("=============EgovSysLogScheduling=====insertAgentFaxCountStatByMinute =============>"); - - int nowDate =EgovDateUtil.nowDateToInt("yyyyMMdd"); - - // 전일 카톡발송 건 통계 insert - FaxStatVO faxStatVO = new FaxStatVO(); - faxStatVO.setStatStartDate(nowDate); - faxStatVO.setStatEndDate(nowDate); - faxAdmService.insertFaxCountStat(faxStatVO); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 대시보드 어제/오늘 접속현황 & 접속통계 - @Scheduled(cron = "0 1 0 * * *") // 매일 새벽0시 1분 실행 - @SchedulerLock(name = "insertDashBoardStat", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void dashBoardStatInsert() throws Exception { - try { - System.out.println("=============EgovSysLogScheduling=====dashBoardStatInsert =============>"); - // 어제날짜 - Calendar calendar = new GregorianCalendar(); - SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd"); - - String yesterdayDate = SDF.format(calendar.getTime()); - calendar.add(Calendar.DATE, -1); - yesterdayDate = SDF.format(calendar.getTime()); - - StatsVO yesterdayStatsVO = new StatsVO(); - yesterdayStatsVO.setStatDate(yesterdayDate); - - // 대시보드 인서트 Logic - conectStatsService.insertDashBoardStatLogic(yesterdayStatsVO); - - // 대시보드 업데이트 Logic - conectStatsService.updateDashBoardStatLogic(yesterdayStatsVO); - - - // 오늘날짜 - Date nowDate = new Date(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String strNowDate = simpleDateFormat.format(nowDate); - - StatsVO statsVO = new StatsVO(); - statsVO.setStatDate(strNowDate); - - // 대시보드 인서트 Logic - conectStatsService.insertDashBoardStatLogic(statsVO); - - // 대시보드 업데이트 Logic - conectStatsService.updateDashBoardStatLogic(statsVO); - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 대시보드 어제/오늘 접속현황 & 접속통계 - @Scheduled(cron = "0 20,50 * * * *") // 20,50분마다 실행 - @SchedulerLock(name = "updateDashBoardStat", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void dashBoardStatUpdate() throws Exception { - - try { - System.out.println("=============EgovSysLogScheduling=====DashBoardStatUpdate =============>"); - // 오늘날짜 - Date nowDate = new Date(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String strNowDate = simpleDateFormat.format(nowDate); - - StatsVO statsVO = new StatsVO(); - statsVO.setStatDate(strNowDate); - - // 대시보드 인서트 Logic - conectStatsService.insertDashBoardStatLogic(statsVO); - - // 대시보드 업데이트 Logic - conectStatsService.updateDashBoardStatLogic(statsVO); - - - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - // 이용약관 메일발송 - @Scheduled(cron = "0 */15 * * * *") // 15분마다 실행 - @SchedulerLock(name = "sendTermsEmail", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void TermsEmailSend() throws Exception { - - try { - System.out.println("=============EgovSysLogScheduling=====TermsEmailSend =============>"); - - // 이용약관 회원 전체발송 - mjonNoticeSendUtil.userAllTermsEmailSend(); - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - @Bean - public LockProvider lockProvider(DataSource dataSource) { - return new JdbcTemplateLockProvider(dataSource); - } - - @Scheduled(cron = "0 0/3 * * * ?") // 3분마다 실행 - @SchedulerLock(name = "runKakaoOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) - public void runKakaoOneTime() throws Exception { - - // do something... - try { - System.out.println("=============SchedulerUtil=====runKakaoOneTime =============>"); - schdlrManageService.kakaoFailPayBack(); - }catch(Exception ex) { - ex.printStackTrace(); - } - } - - //환불 실행 - private void PayBack(String p_type) throws Exception { - - - // 문자 환불 - schdlrManageService.payBack_advc(p_type); - - /* - if ("ONE".equals(p_type)) { //하루에 한번만 31일 대상으로 실행 - schdlrManageService.msgFailPayBackOneByDay(); - }else { - // 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다. - //어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14 - //schdlrManageService.msgFailPayBack(); - - List msgFailList = mjonMsgDataDAO.selectMsgSentFailList(); - - long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간 - System.out.println("== msgFailList =============> : "+ msgFailList.size()); - for(MjonMsgVO vo : msgFailList) { - - try { - mjonMsgDataDAO.updateMsgSentFailPayBack(vo); - }catch(Exception ex) { - System.out.println("=============SchedulerUtil=====PayBack Catch =============>"); - System.out.println(vo.getUserId()+" : "+ vo.getMsgGroupId() +" : "+ vo.getUserData()); - ex.printStackTrace(); - } - - } - long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간 - long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위) - System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초"); - } - - */ - System.out.println("==== faxFailPayBack ===="); - // 팩스 환불 - schdlrManageService.faxFailPayBack(); - - } }