diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java index a05f3b9f..39152735 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java @@ -14,12 +14,18 @@ import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msg.service.impl.MjonMsgDAO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; +import itn.let.mjo.msgholiday.service.impl.MsgHolidayDAO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.pay.service.MjonPayVO; +import itn.let.sym.site.service.JoinSettingVO; +import itn.let.sym.site.service.impl.SiteManagerDAO; @Service("kakaoAlimTalkService") public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements KakaoAlimTalkService{ @@ -33,6 +39,12 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements @Resource(name="kakaoAlimTalkDAO") private KakaoAlimTalkDAO kakaoAlimTalkDAO; + @Resource(name="siteManagerDAO") + SiteManagerDAO siteManagerDAO; + + @Resource(name="MsgHolidayDAO") + private MsgHolidayDAO msgHolidayDAO; + @Resource(name = "egovMjonMsgIdGnrService") private EgovIdGnrService idgenMsgId; @@ -95,6 +107,52 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements //카카오 알림톡 전송 리스트 List kakaoAtSandList = new ArrayList(); + + //야간스미싱 알림여부 정보 불러오기 + JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail(); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + System.out.println("++++++++++++++++++ holiSmishingNoti ::: "+holiSmishingNoti); + //스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수 + boolean spamSmishingPassStatus = false; //야간스미싱 알림여부가 활성화인 경우 false, 비활성화인경우 true 값을 가지도록 한다. + + //야간스미싱알리 여부가 비활성화 인경우 무조건 문자를 즉시 보내도록 한다. + //현재는 평일, 주말, 휴일 상관없이 N 이면 30분 딜레이 없이 발송 처리하도록 함. + if(holiSmishingNoti.equals("N")) { + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + System.out.println("+++++++++ 스미싱을 패스 시킬건지 ::: "+smishingAlarmPassSts); + + spamSmishingPassStatus = smishingAlarmPassSts; + } + + String atSmishingYn = kakaoVO.getAtSmishingYn(); + + if(spamSmishingPassStatus) { + atSmishingYn = "N"; + } + + System.out.println("++++++++++++++++ spamSmishingPassStatus ::: "+spamSmishingPassStatus); /** 카카오 알림톡 전송 리스트 생성 (시작)-------------------------------------------*/ for(int i = 0; i < callToCnt; i++) { @@ -159,7 +217,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements } - if(kakaoVO.getAtSmishingYn().equals("Y")) { + if(atSmishingYn.equals("Y")) { String sandDate = ""; if(kakaoVO.getDivideChk().equals("Y")) { @@ -293,7 +351,14 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements mjonMsgVO.setBefCash(kakaoVO.getBefCash()); mjonMsgVO.setBefPoint(kakaoVO.getBefPoint()); mjonMsgVO.setKakaoSubMagOrgnlTxt(kakaoVO.getKakaoSubMagOrgnlTxt()); - mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn()); + + //야간 스미싱 알림 비활성화인 경우 딜레이처리 안하도록 함 20240722 우영두 수정 + if(spamSmishingPassStatus) { + mjonMsgVO.setAtDelayYn("N"); + }else { + mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn()); + } + if(kakaoVO.getBizJsonYn().equals("Y")) { @@ -311,6 +376,20 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements if(msgGroupDataCnt < 1) { mjonMsgDAO.insertGroupMsgData(mjonMsgVO); kakaoAlimTalkDAO.insertKakaoSendPrice(kakaoVO); + + + try { + + //야간 스미싱 알림이 비활성화 이고 스팸 또는 스미싱 의심 상태일 경우 문자정보 별도 저장처리 - 20240722 우영두 추가 + if(spamSmishingPassStatus && kakaoVO.getAtSmishingYn().equals("Y")) { + mjonMsgDAO.insertSpamPassMsgData(mjonMsgVO); + } + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++++++++ spamSmishingPassStatus 알림톡 야간 스미싱 알림 데이터 입력 오류 발생 !!!!"); + } + + }else { mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO); } diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java index 91a4b60d..46feb662 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java @@ -769,11 +769,18 @@ public class KakaoAlimTalkSendController { JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); - // SLACK 체크 - if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { - //Slack으로 메세지 전송 처리 - MjonCommon comm = new MjonCommon(); - comm.getAdminKakaoAtSandSlack(kakaoVO); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + //야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리 + if(holiSmishingNoti.equals("Y")) { + + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + comm.getAdminKakaoAtSandSlack(kakaoVO); + } + } } diff --git a/src/main/java/itn/let/mjo/mjocommon/MjonHolidayApi.java b/src/main/java/itn/let/mjo/mjocommon/MjonHolidayApi.java new file mode 100644 index 00000000..71f24e95 --- /dev/null +++ b/src/main/java/itn/let/mjo/mjocommon/MjonHolidayApi.java @@ -0,0 +1,234 @@ +package itn.let.mjo.mjocommon; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.springframework.stereotype.Component; + +import com.ibm.icu.text.SimpleDateFormat; + +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; + +@Component +public class MjonHolidayApi { + + public List getYearHolidayApiData(MsgHolidayVO msgHolidayVO) throws Exception{ + + try { + + String sendUrl = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo?"; + String numOfRows = "100"; + String serviceKey = "J8QXC%2BtOGvxwmH8blG7nmqIq%2B0MrkNrxTo1PCmFMRdtSldlGN8vWDW2NpZ2om8k9LctZT6oubfFt5dMmbEDeoA%3D%3D"; + String solYear = msgHolidayVO.getSearchHoliYear(); + String frstRegisterId = msgHolidayVO.getFrstRegisterId(); + + + String strUrl = sendUrl + "&solYear=" + solYear + "&numOfRows=" + numOfRows + "&serviceKey=" + serviceKey; + + HttpClient httpClient = HttpClientBuilder.create().build(); + HttpGet httpGet = new HttpGet(strUrl); + httpGet.addHeader("Content-type", "application/json"); + httpGet.addHeader("Accept", "application/json"); + + HttpResponse response = httpClient.execute(httpGet); + + String result = ""; + String statusCode = Integer.toString(response.getStatusLine().getStatusCode()); + + if(statusCode.equals("200")) { + + result = EntityUtils.toString(response.getEntity()); + + result = new String(result.getBytes("iso-8859-1"));//한글 깨짐 현상이 있어서 변환 해줌. + //System.out.println(result); + JSONParser parser = new JSONParser(); + Object obj = parser.parse(result); + JSONObject object = (JSONObject) obj; + + Object objResp = parser.parse(object.get("response").toString()); + JSONObject objectResp = (JSONObject) objResp; + + Object objBody = parser.parse(objectResp.get("body").toString()); + JSONObject objectBody = (JSONObject) objBody; + + Object objItems = parser.parse(objectBody.get("items").toString()); + JSONObject objectItems = (JSONObject) objItems; + + JSONArray objItemArr = (JSONArray) objectItems.get("item"); + + List msgHolidayVoList = new ArrayList(); + + for(Object tmpObj : objItemArr) { + + JSONObject tmpObject = (JSONObject) tmpObj; + MsgHolidayVO tmpMsgHolidayVO = new MsgHolidayVO(); + + String isHoli = tmpObject.get("isHoliday").toString(); + String holiNm = tmpObject.get("dateName").toString(); + String holiDate = tmpObject.get("locdate").toString(); + + + if(isHoli.equals("Y")) { + + tmpMsgHolidayVO.setHolidayNm(holiNm); + tmpMsgHolidayVO.setHolidayDate(holiDate); + tmpMsgHolidayVO.setHolidayType("1"); + tmpMsgHolidayVO.setApiType("Y"); + tmpMsgHolidayVO.setFrstRegisterId(frstRegisterId); + tmpMsgHolidayVO.setLastUpdusrId(frstRegisterId); + + msgHolidayVoList.add(tmpMsgHolidayVO); + + } + + + } + + return msgHolidayVoList; + + }else { + return null; + } + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++ getYearHolidayApiData Method Error!!!!" + e); + return null; + } + + } + + + public boolean getHolidaySmishingPassStatus(List resultAlarmList, List resultHolidayList) throws Exception{ + + boolean holiCompareSts = false; //공휴일 일치 날자가 있는지 여부 + boolean smishingAlarmPassSts = false; //스미싱 알람 Pass 시킬건지 여부 + + //현재 날짜의 요일 구하기 + Date currentDate = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + int month = calendar.get(Calendar.MONTH); + int day = calendar.get(Calendar.DATE); + + calendar.setTime(currentDate); + + // 3. 텍스트 요일 구하기 (숫자) + int dayOfWeekNumber = calendar.get(Calendar.DAY_OF_WEEK); + // 4. 요일 출력 - 1은 일요일, 7은 토요일 + //System.out.println(dayOfWeekNumber); // 7 + + + //월에 대한 자릿수 처리 : 10미만은 앞에 0을 추가해주어 자릿수 맞춰준다. + String strMonth = ""; + if((month +1) < 10) { + strMonth = "0" + Integer.toString(month +1); + }else { + strMonth = Integer.toString(month + 1); + } + + String strNowDate = year + "-" + strMonth + "-" + day; + + for(MsgHolidayVO holiVO : resultHolidayList) { + + String holiDate = holiVO.getHolidayDate(); + + if(strNowDate.equals(holiDate)) { + + //System.out.println("공휴일이 동일한 날이 있습니다."); + holiCompareSts = true; + break; + } + + } + + + for(MsgAlarmSetVO alarmVO : resultAlarmList) { + + String alarmType = alarmVO.getAlarmType(); + String startTime = alarmVO.getAlarmStart(); + String sDate = strNowDate + " " + startTime; + + String endTime = alarmVO.getAlarmEnd(); + String eDate = strNowDate + " " + endTime; + + Date nowDate = currentDate; + Date startDate = sdf.parse(sDate); + Date endDate = sdf.parse(eDate); + + //평일인 경우 비교 + if(dayOfWeekNumber > 1 && dayOfWeekNumber < 7 ) { + + if(alarmType.equals("W")) { + + int copStart = nowDate.compareTo(startDate); + int copEnd = nowDate.compareTo(endDate); + + if(copStart > 0 && copEnd < 0) { + + //System.out.println("평일 알림 일정 해당시간에 포함됩니다."); + smishingAlarmPassSts = true; + break; + + } + + } + + }else { + + //주말인 경우 비교 + if(alarmType.equals("E")) { + + int copStart = nowDate.compareTo(startDate); + int copEnd = nowDate.compareTo(endDate); + + if(copStart > 0 && copEnd < 0) { + + //System.out.println("주말 알림 일정 해당시간에 포함됩니다."); + smishingAlarmPassSts = true; + break; + + } + + } + + } + + //공휴일인 경우 비교 + if(alarmType.equals("H")) { + + if(holiCompareSts) {//오늘 날짜가 공휴일이면 실행 + + int copStart = nowDate.compareTo(startDate); + int copEnd = nowDate.compareTo(endDate); + + if(copStart > 0 && copEnd < 0) { + + //System.out.println("공휴일 알림 일정 해당시간에 포함됩니다."); + smishingAlarmPassSts = true; + break; + + } + + } + + } + + } + + return smishingAlarmPassSts; + } + +} 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 f17cfdb7..7503e1f9 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java @@ -231,4 +231,9 @@ public interface MjonMsgService { MjonMsgVO selectApiSttstList(MjonMsgVO mjonMsgVO) throws Exception; + int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception; + + List selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception; + + void updateHoliMsgResultYn(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 10638620..473f8863 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java @@ -208,6 +208,8 @@ public class MjonMsgVO extends ComDefaultVO{ private String bookmarkYn = "N"; + private String cancelResultYn = ""; //야간스미싱 알림에 따른 관리자 결과(회원이용정지 또는 문자발송 취소) 처리 여부 N:미처리, Y:처리완료 + public String getSearchDelayMsgYn() { return searchDelayMsgYn; } @@ -1646,4 +1648,10 @@ public class MjonMsgVO extends ComDefaultVO{ public void setBookmarkYn(String bookmarkYn) { this.bookmarkYn = bookmarkYn; } + public String getCancelResultYn() { + return cancelResultYn; + } + public void setCancelResultYn(String cancelResultYn) { + this.cancelResultYn = cancelResultYn; + } } 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 a61fcdd2..5108b0ac 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 @@ -94,6 +94,10 @@ public class MjonMsgDAO extends EgovAbstractDAO { insert("mjonMsgDAO.insertGroupMsgData", mjonMsgVO); } + public void insertSpamPassMsgData(MjonMsgVO mjonMsgVO) throws Exception{ + insert("mjonMsgDAO.insertSpamPassMsgData", mjonMsgVO); + } + public void updateMsgGroupDataForTotCntSum(MjonMsgVO mjonMsgVO) { update("mjonMsgDAO.updateMsgGroupDataForTotCntSum",mjonMsgVO); @@ -504,4 +508,18 @@ public class MjonMsgDAO extends EgovAbstractDAO { return (MjonMsgVO)select("mjonMsgDAO.selectApiSttstList", mjonMsgVO); } + public int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception{ + + return (int) select("mjonMsgDAO.selectCallFromNumberChk", mjonMsgVO); + } + + @SuppressWarnings("unchecked") + public List selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception{ + return (List)list("mjonMsgDAO.selectMjonHoliMsgList", mjonMsgVO); + } + + public void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception{ + update("mjonMsgDAO.updateHoliMsgResultYn", 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 77adb54d..c9e979bb 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 @@ -31,6 +31,7 @@ import itn.let.mjo.pay.service.impl.MjonPayDAO; import itn.let.mjo.reservmsg.service.MjonResvMsgVO; import itn.let.mjo.reservmsg.service.impl.MjonReservMsgDAO; import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uat.uia.service.impl.MberManageDAO; import itn.let.uss.umt.service.AdmProcHstryVO; import itn.let.uss.umt.service.impl.AdmProcHstryDAO; @@ -64,6 +65,10 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM @Resource(name="MjonReservMsgDAO") private MjonReservMsgDAO mjonReservMsgDAO; + /** mberManageDAO */ + @Resource(name="mberManageDAO") + private MberManageDAO mberManageDAO; + @Resource(name="mjonPayDAO") private MjonPayDAO mjonPayDAO; @@ -1158,4 +1163,21 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM public MjonMsgVO selectApiSttstList(MjonMsgVO mjonMsgVO) throws Exception { return mjonMsgDAO.selectApiSttstList(mjonMsgVO); } + + @Override + public int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception{ + + return mjonMsgDAO.selectCallFromNumberChk(mjonMsgVO); + } + + @Override + public List selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception{ + return mjonMsgDAO.selectMjonHoliMsgList(mjonMsgVO); + } + + @Override + public void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception{ + mjonMsgDAO.updateHoliMsgResultYn(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 50ed83ae..b552db23 100644 --- a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java +++ b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java @@ -72,6 +72,8 @@ import itn.let.mjo.msgsent.service.MjonMsgRecvTestVO; import itn.let.mjo.msgsent.service.MjonMsgSentTestService; import itn.let.mjo.msgsent.service.MjonMsgSentTestVO; import itn.let.mjo.pay.service.MjonPayService; +import itn.let.mjo.payva.service.VacsVactService; +import itn.let.mjo.payva.service.VacsVactVO; import itn.let.mjo.reservmsg.service.MjonReservMsgService; import itn.let.mjo.reservmsg.service.MjonResvMsgVO; import itn.let.sts.com.StatsVO; @@ -161,6 +163,10 @@ public class MjonMsgController { @Resource(name = "EgovFileMngService") private EgovFileMngService fileService; + //전용계좌 서비스 + @Resource(name = "vacsVactService") + private VacsVactService vacsVactService; + //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] sendMsgExcelValue ={ {"0" ,"번호" , "1" , "" }, @@ -1174,10 +1180,10 @@ public class MjonMsgController { } /** - * 문자전송 리스트 + * 문자예약전송 리스트 * @param searchVO * @param model - * @return uss/ion/msg/ReserveNumberList.do(에약 문자리스트) + * @return /uss/ion/msg/ReserveNumberList.do(예약 문자리스트) * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/ReserveNumberList.do"}) @@ -1245,6 +1251,267 @@ public class MjonMsgController { } + + /** + * 야간 스미싱 문자전송 리스트 + * @param searchVO + * @param model + * @return uss/ion/msg/selectHoliMsgList.do + * @throws Exception + */ + @RequestMapping(value= {"/uss/ion/msg/selectHoliMsgList.do"}) + public String selectHoliMsgList(@ModelAttribute("searchVO") MjonMsgVO searchVO, + HttpServletRequest request , + ModelMap model) throws Exception{ + //value 값 가져오기 +// String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); + paginationInfo.setPageSize(searchVO.getPageSize()); + + searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + searchVO.setSearchSortCnd("FRST_REGIST_PNTTM"); + searchVO.setSearchSortOrd("desc"); + } + + + /* + * 2024.01.26 우영두 변경 + * 기존 한달전 시작일자 지정에서 하루전으로 변경 + * 데이터 양이 너무 많이 검색되어 하루전으로 변경해 달라는 기획팀 요청 + * */ + String toDay = MJUtil.getTodayDate(); //오늘 + String beforeMonthDay = MJUtil.getBefore1DayDate(); //하루 전 + if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { + searchVO.setNtceBgnde(beforeMonthDay); + searchVO.setNtceEndde(toDay); + } + + List resultList = new ArrayList(); + resultList = mjonMsgService.selectMjonHoliMsgList(searchVO); + model.addAttribute("resultList", resultList); + + //문자발송 실패 결과 코드정보 리스트 불러오기 + MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); + List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); + + model.addAttribute("resultMsgCodeList", resultMsgCodeList); + + paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + return "/uss/ion/msg/SendHoliMsgList"; + + } + + /** + * 야간 스미싱 문자전송 사용자 이용정지 및 예약문자 취소 처리 + * @param searchVO + * @param model + * @return uss/ion/msg/updateUserMsgData.do + * @throws Exception + */ + @RequestMapping(value= {"/uss/ion/msg/updateUserMsgData.do"}) + public String updateUserMsgData(@RequestParam("checkedIdForDel") String checkedIdForUpt, + HttpServletRequest request , + ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String adminId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + //파라미터 데이터 파싱해주기 + String[] splitCheckId = checkedIdForUpt.split(","); + + if(splitCheckId != null && splitCheckId.length > 0) { + + for(String checkId : splitCheckId) { + + if(checkId != null && checkId.length() > 0) { //개별 데이터에 대해서 예약 문자 취소 및 회원 이용정지 + + String[] splitUserMsg = checkId.split("§"); + + if(splitUserMsg != null && splitUserMsg.length > 0) { + + MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO(); + + + String mberId = splitUserMsg[0]; + String msgGroupId = splitUserMsg[1]; + String reserveYn = splitUserMsg[2]; + + mjonResvMsgVO.setUserId(mberId);//회원 아이디 + mjonResvMsgVO.setMsgGroupId(msgGroupId);//취소 문자 그룹 아이디 + + if(reserveYn.equals("Y")) { + + int count = mjonMsgService.deleteMsgDelaySendCancelData(mjonResvMsgVO); + + } + + MberManageVO mberManageVO = new MberManageVO(); + + //이용자 상태를 변경하는 관리자 아이디 입력 + mberManageVO.setMberSttusUpdusrId(adminId); + mberManageVO.setMberId(mberId); + + //회원 정보 조회 + MberManageVO resultMberVO = mberManageService.selectMber(mberId); + + if(resultMberVO != null) { //회원 정보가 있으면 + + //회원상태가 이용정지 상태가 아니면 + if(!resultMberVO.getMberSttus().equals("B")) { + + //회원 상태 변경하기 + int resultCnt = 0; + mberManageVO.setMberSttus("B"); //이용정지 상태로 변경 + mberManageVO.setSmiMemo("야간 스미싱의심 문자 발송으로 이용정지 처리"); + resultCnt = mberManageService.updateUserMsttus(mberManageVO); + + if(resultCnt > 0) { + + if(mberManageVO.getMberSttus().equals("B")) { //회원 이용정지를 시키는 경우 가상계좌도 함께 해지 시킨다. + + //가상계좌 보유 여부 체크 + //대상 리스트 가져오기 + VacsVactVO vacsVactVO = new VacsVactVO(); + vacsVactVO.setMberId(mberId); + List myBankList = vacsVactService.selectBankAccountByUserId(vacsVactVO); //내가 할당받은 전용계좌 리스트 받아오기 + + int vacsCnt = myBankList.size(); + + //가상계좌 해지 처리 + if(vacsCnt > 0) { + + for(int i=0; i < vacsCnt; i++) { + + String acctNo = myBankList.get(i).getAcctNo(); + + VacsVactVO vacsVO = new VacsVactVO(); + vacsVO.setMberId(mberId); //회원 아이디 + //계좌 해지일자 생성 + Date now = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String closeDate = sdf.format(now); + vacsVO.setCloseIl(closeDate); //해지일자 + vacsVO.setAcctNo(acctNo); //해지계좌번호 + + //계좌 상태 셋팅 0: 미할당, 1:할당, 9: 해지 + vacsVO.setAcctSt("9"); + int blockCnt = vacsVactService.updateVacsAccountUsrBlock(vacsVO); + + } + + } + + } + + // 관리자 메모 + String memo = ""; + memo = "회원상태 변경 : 이용정지, 사유 : 야간 스미싱의심 문자 발송으로 이용정지 처리"; + mberManageVO.setMberId(mberId); + mberManageVO.setMemoCn(memo); + mberManageVO.setFrstRegisterId(adminId); + mberManageService.insertMberMemo(mberManageVO); + + } + } + + }//회원 이용정지 처리 종료 + + //야간스미싱 알림 상태 처리 완료로 변경 + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + mjonMsgVO.setUserId(mberId); //사용자 아이디 + mjonMsgVO.setMsgGroupId(msgGroupId); //문자 발송 그룹 아이디 + mjonMsgVO.setLastUpdusrId(adminId); //변경 관리자 아이디 + mjonMsgService.updateHoliMsgResultYn(mjonMsgVO); + + + } + + } + + } + + } + + } catch (Exception e) { + System.out.println("++++++++++++ updateUserMsgData Controller Error !!! "); + } + + return "redirect:/uss/ion/msg/selectHoliMsgList.do"; + + } + + + + /** + * 야간 스미싱 문자전송 사용자 이용정지 및 예약문자 취소 처리 + * @param searchVO + * @param model + * @return /uss/ion/msg/updateMsgStatusData.do + * @throws Exception + */ + @RequestMapping(value= {"/uss/ion/msg/updateMsgStatusData.do"}) + public String updateMsgStatusData(@RequestParam("checkedIdForDel") String checkedIdForUpt, + HttpServletRequest request , + ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String adminId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + //파라미터 데이터 파싱해주기 + String[] splitCheckId = checkedIdForUpt.split(","); + + if(splitCheckId != null && splitCheckId.length > 0) { + + for(String checkId : splitCheckId) { + + if(checkId != null && checkId.length() > 0) { //개별 데이터에 대해서 알림 미처리 문자에 대한 상태값만 완료로 변경, 회원이용정지 및 예약문자취소는 처리 안함 + + String[] splitUserMsg = checkId.split("§"); + + if(splitUserMsg != null && splitUserMsg.length > 0) { + + String mberId = splitUserMsg[0]; + String msgGroupId = splitUserMsg[1]; + + //야간스미싱 알림 상태 처리 완료로 변경 + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + mjonMsgVO.setUserId(mberId); //사용자 아이디 + mjonMsgVO.setMsgGroupId(msgGroupId); //문자 발송 그룹 아이디 + mjonMsgVO.setLastUpdusrId(adminId); //변경 관리자 아이디 + mjonMsgService.updateHoliMsgResultYn(mjonMsgVO); + + } + + } + + } + + } + + } catch (Exception e) { + System.out.println("++++++++++++ updateMsgStatusData Controller Error !!! "); + } + + return "redirect:/uss/ion/msg/selectHoliMsgList.do"; + + } + + + /** * 문자전송 리스트 * @param searchVO 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 e6fe846c..9c2577d6 100644 --- a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java +++ b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java @@ -69,6 +69,7 @@ import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgcampain.service.MjonCandidateService; @@ -77,6 +78,9 @@ import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; import itn.let.mjo.msgdata.service.PhoneVO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.spammsg.service.MjonSpamMsgService; @@ -172,6 +176,9 @@ public class MjonMsgCampainDataController { @Resource(name = "mberGrdService") MberGrdService mberGrdService; + @Resource(name = "MsgHolidayService") + private MsgHolidayService msgHolidayService; + private static final Logger logger = LoggerFactory.getLogger(MjonMsgCampainDataController.class); /** @@ -2006,6 +2013,18 @@ public class MjonMsgCampainDataController { mjonMsgVO.setUserId(userId); + //발신번호가 등록된 유효한 번호인지 확인 + int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO); + + if(sendCallFromCnt < 1) { + + modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다."); + modelAndView.addObject("result", "loginFail"); + modelAndView.addObject("resultSts", resultSts); + return modelAndView; + + } + /** * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 * 현재 로그인 세션도 만료 처리함 @@ -3174,16 +3193,52 @@ public class MjonMsgCampainDataController { // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + // SMS 체크 if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { getAdminPhoneSendMsgData(mjonMsgVO); } - // SLACK 체크 - if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { - //Slack으로 메세지 전송 처리 - MjonCommon comm = new MjonCommon(); - comm.getAdminSandSlack(mjonMsgVO); + //야간 스미싱의심 알림이 활성화 되어있는 경우 + if(holiSmishingNoti.equals("Y")) { + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + } + }else {//야간스미싱 알림 비활성화인 경우 - 알림일정에 포함되지 않으면 슬랙 발송 처리(알림일정에 포함되면 슬랙발송 X - 알림 비활성화이기 때문에 발송X) + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송 + + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + + } + } } diff --git a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainHGDataController.java b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainHGDataController.java index 716e35cb..17726f3f 100644 --- a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainHGDataController.java +++ b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainHGDataController.java @@ -41,6 +41,7 @@ import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgcampain.service.MjonCandidateService; @@ -48,6 +49,9 @@ import itn.let.mjo.msgcampain.service.MjonCandidateVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.spammsg.service.MjonSpamMsgService; import itn.let.mjo.symbol.service.MjonSymbolService; @@ -143,6 +147,8 @@ public class MjonMsgCampainHGDataController { @Resource(name = "mberGrdService") MberGrdService mberGrdService; + @Resource(name = "MsgHolidayService") + private MsgHolidayService msgHolidayService; /** * 선거 문자 대량 발송 화면 @@ -578,6 +584,18 @@ public class MjonMsgCampainHGDataController { mjonMsgVO.setUserId(userId); + //발신번호가 등록된 유효한 번호인지 확인 + int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO); + + if(sendCallFromCnt < 1) { + + modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다."); + modelAndView.addObject("result", "loginFail"); + modelAndView.addObject("resultSts", resultSts); + return modelAndView; + + } + /** * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 * 현재 로그인 세션도 만료 처리함 @@ -873,6 +891,8 @@ public class MjonMsgCampainHGDataController { System.out.println("++++++++++++++ 중복제거 후 리스트 갯수 ::: "+addrDupListLen); + mjonMsgVO.setTotalCallCnt(addrDupListLen); + //수신자 총 수 * 단가 를 통해 총 결제 금액 계산 int tmpTotCallCnt = addrDupListLen; //mjonMsgVO.getCallToList().length; float tmpTotPrice = tmpTotCallCnt * tmpEachPrice; @@ -1082,17 +1102,53 @@ public class MjonMsgCampainHGDataController { // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + // SMS 체크 if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { MjonMsgCampainDataController mcdController = new MjonMsgCampainDataController(); mcdController.getAdminPhoneSendMsgData(mjonMsgVO); } - // SLACK 체크 - if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { - //Slack으로 메세지 전송 처리 - MjonCommon comm = new MjonCommon(); - comm.getAdminSandSlack(mjonMsgVO); + //야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리 + if(holiSmishingNoti.equals("Y")) { + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + } + }else {//야간스미싱 알림 비활성화인 경우 - 알림일정에 포함되지 않으면 슬랙 발송 처리(알림일정에 포함되면 슬랙발송 X - 알림 비활성화이기 때문에 발송X) + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송 + + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + + } + } } diff --git a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainTWDataController.java b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainTWDataController.java index 838763ae..2ffc385c 100644 --- a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainTWDataController.java +++ b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainTWDataController.java @@ -64,6 +64,7 @@ import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgcampain.service.MjonCandidateService; @@ -73,6 +74,9 @@ import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; import itn.let.mjo.msgdata.service.PhoneVO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.spammsg.service.MjonSpamMsgService; import itn.let.mjo.symbol.service.MjonSymbolService; @@ -167,6 +171,9 @@ public class MjonMsgCampainTWDataController { @Resource(name = "mberGrdService") MberGrdService mberGrdService; + @Resource(name = "MsgHolidayService") + private MsgHolidayService msgHolidayService; + private static final Logger logger = LoggerFactory.getLogger(MjonMsgCampainTWDataController.class); /** @@ -930,6 +937,18 @@ public class MjonMsgCampainTWDataController { mjonMsgVO.setUserId(userId); + //발신번호가 등록된 유효한 번호인지 확인 + int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO); + + if(sendCallFromCnt < 1) { + + modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다."); + modelAndView.addObject("result", "loginFail"); + modelAndView.addObject("resultSts", resultSts); + return modelAndView; + + } + /** * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 * 현재 로그인 세션도 만료 처리함 @@ -2057,17 +2076,53 @@ public class MjonMsgCampainTWDataController { // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + // SMS 체크 if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { MjonMsgCampainDataController mjonCampDataController = new MjonMsgCampainDataController(); mjonCampDataController.getAdminPhoneSendMsgData(mjonMsgVO); } - // SLACK 체크 - if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { - //Slack으로 메세지 전송 처리 - MjonCommon comm = new MjonCommon(); - comm.getAdminSandSlack(mjonMsgVO); + //야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리 + if(holiSmishingNoti.equals("Y")) { + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + } + }else {//야간스미싱 알림 비활성화인 경우 - 알림일정에 포함되지 않으면 슬랙 발송 처리(알림일정에 포함되면 슬랙발송 X - 알림 비활성화이기 때문에 발송X) + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송 + + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + + } + } } 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 ec9eed32..6fd0b26b 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 @@ -20,6 +20,7 @@ import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msg.service.impl.MjonMsgDAO; import itn.let.mjo.msgagent.service.MjonMsgAgentStsService; @@ -28,10 +29,14 @@ import itn.let.mjo.msgagent.service.impl.MjonMsgAgentStsDAO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; +import itn.let.mjo.msgholiday.service.impl.MsgHolidayDAO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.pay.service.impl.MjonPayDAO; import itn.let.sym.site.service.JoinSettingVO; +import itn.let.sym.site.service.impl.SiteManagerDAO; import itn.let.uat.uia.web.SendLogVO; import itn.let.uss.umt.service.MberManageVO; @@ -50,6 +55,12 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M @Resource(name="mjonMsgAgentStsDAO") private MjonMsgAgentStsDAO mjonMsgAgentStsDAO; + @Resource(name="siteManagerDAO") + SiteManagerDAO siteManagerDAO; + + @Resource(name="MsgHolidayDAO") + private MsgHolidayDAO msgHolidayDAO; + @Resource(name = "egovMjonMsgIdGnrService") private EgovIdGnrService idgenMsgId; @@ -152,6 +163,42 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M MberManageVO userInfo = mjonMsgDataDAO.selectMberManageInfo(mjonMsgVO.getUserId()); String hotlineAgentCode = userInfo.getHotlineAgentCode(); + //야간스미싱 알림여부 정보(관리자 알림관리 상태 정보를 모두 불러옴) 불러오기 20240722 우영두 추가 + JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail(); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + //스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수 + boolean spamSmishingPassStatus = false; //야간스미싱 알림여부가 활성화인 경우 false, 비활성화인경우 true 값을 가지도록 한다. + + //스팸, 스미싱 상태인 경우에만 true 처리 + //야간스미싱알리 여부가 비활성화 인경우 무조건 문자를 즉시 보내도록 한다. + //스미싱 알림 일정에 등록된 날짜와 시간에 포함되면 30분 딜레이 없이 발송 처리하도록 함. + if(holiSmishingNoti.equals("N")) { + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + spamSmishingPassStatus = smishingAlarmPassSts; + } + //전용 전송사가 지정되어 있으면 실행 if(!hotlineAgentCode.equals("00")) { @@ -310,6 +357,15 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } + //야간 스미싱 알림여부가 비활성인 경우 스팸, 스미싱, 딜레이 값을 모두 N 으로 처리 + if(spamSmishingPassStatus && (spamStatus.equals("Y") || smishingYn.equals("Y"))) { + + spamStatus = "N"; + smishingYn = "N"; + delayYn = "N"; + + } + if(!mjonMsgVO.getReserveYn().equals("N")) {//예약문자인 경우 시간 셋팅 @@ -786,6 +842,17 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } mjonMsgDAO.insertGroupMsgData(mjonMsgVO); + try { + + //야간 스미싱 알림이 비활성화 이고 스팸 또는 스미싱 의심 상태일 경우 문자정보 별도 저장처리 - 20240722 우영두 추가 + if(spamSmishingPassStatus && (mjonMsgVO.getSpamStatus().equals("Y") || mjonMsgVO.getSmishingYn().equals("Y"))) { + mjonMsgDAO.insertSpamPassMsgData(mjonMsgVO); + } + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++++++++ spamSmishingPassStatus 문자전송 야간 스미싱 알림 데이터 입력 오류 발생 !!!!"); + } + }else { mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO); } @@ -2372,6 +2439,43 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M MberManageVO userInfo = mjonMsgDataDAO.selectMberManageInfo(mjonMsgVO.getUserId()); String hotlineAgentCode = userInfo.getHotlineAgentCode(); + //야간스미싱 알림여부 정보 불러오기 + JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail(); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + System.out.println("++++++++++++++++++ holiSmishingNoti ::: "+holiSmishingNoti); + //스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수 + boolean spamSmishingPassStatus = false; //야간스미싱 알림여부가 활성화인 경우 false, 비활성화인경우 true 값을 가지도록 한다. + + //스팸, 스미싱 상태인 경우에만 true 처리 + //야간스미싱알리 여부가 비활성화 인경우 무조건 문자를 즉시 보내도록 한다. + //스미싱 알림 일정에 등록된 날짜와 시간에 포함되면 30분 딜레이 없이 발송 처리하도록 함. + if(holiSmishingNoti.equals("N")) { + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + spamSmishingPassStatus = smishingAlarmPassSts; + } + //전용 전송사가 지정되어 있으면 실행 if(!hotlineAgentCode.equals("00")) { @@ -2530,6 +2634,15 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } + //야간 스미싱 알림여부가 비활성인 경우 스팸, 스미싱, 딜레이 값을 모두 N 으로 처리 + if(spamSmishingPassStatus && (spamStatus.equals("Y") || smishingYn.equals("Y"))) { + + spamStatus = "N"; + smishingYn = "N"; + delayYn = "N"; + + } + if(!mjonMsgVO.getReserveYn().equals("N")) {//예약문자인 경우 시간 셋팅 @@ -3013,6 +3126,29 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } mjonMsgDAO.insertGroupMsgData(mjonMsgVO); + try { + + //야간 스미싱 알림이 비활성화 이고 스팸 또는 스미싱 의심 상태일 경우 문자정보 별도 저장처리 - 20240722 우영두 추가 + if(spamSmishingPassStatus && (mjonMsgVO.getSpamStatus().equals("Y") || mjonMsgVO.getSmishingYn().equals("Y"))) { + + System.out.println(mjonMsgVO.getMsgGroupId()); + System.out.println(mjonMsgVO.getMsgGroupCnt()); + System.out.println(mjonMsgVO.getUserId()); + System.out.println(mjonMsgVO.getSmsTxt()); + System.out.println(mjonMsgVO.getReqDate()); + System.out.println(mjonMsgVO.getCallFrom()); + System.out.println(mjonMsgVO.getMsgType()); + System.out.println(mjonMsgVO.getReserveYn()); + System.out.println(mjonMsgVO.getTotalCallCnt()); + + mjonMsgDAO.insertSpamPassMsgData(mjonMsgVO); + + } + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++++++++ spamSmishingPassStatus HG 대량 선거 문자전송 야간 스미싱 알림 데이터 입력 오류 발생 !!!!"); + } + }else { mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO); } 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 16b49177..574c51e3 100644 --- a/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java +++ b/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java @@ -79,12 +79,16 @@ import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; import itn.let.mjo.msgdata.service.PhoneVO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; import itn.let.mjo.msgsent.service.MjonMsgSentService; import itn.let.mjo.msgsent.service.MjonMsgSentVO; import itn.let.mjo.pay.service.MjonPayService; @@ -181,6 +185,9 @@ public class MjonMsgDataController { @Resource(name = "MjonMsgSentService") private MjonMsgSentService mjonMsgSentService; + @Resource(name = "MsgHolidayService") + private MsgHolidayService msgHolidayService; + private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); /** @@ -2112,6 +2119,20 @@ public class MjonMsgDataController { mjonMsgVO.setUserId(userId); + //발신번호가 등록된 유효한 번호인지 확인 + int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO); + System.out.println(sendCallFromCnt); + + if(sendCallFromCnt < 1) { + + modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다."); + modelAndView.addObject("result", "loginFail"); + modelAndView.addObject("resultSts", resultSts); + return modelAndView; + + } + + /** * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 * 현재 로그인 세션도 만료 처리함 @@ -3022,20 +3043,55 @@ public class MjonMsgDataController { // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + // SMS 체크 if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { getAdminPhoneSendMsgData(mjonMsgVO); } - // SLACK 체크 - if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { - //Slack으로 메세지 전송 처리 - MjonCommon comm = new MjonCommon(); - comm.getAdminSandSlack(mjonMsgVO); + //야간 스미싱의심 알림이 활성화 되어있는 경우 + if(holiSmishingNoti.equals("Y")) { + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + } + }else {//야간스미싱 알림 비활성화인 경우 - 알림일정에 포함되지 않으면 슬랙 발송 처리(알림일정에 포함되면 슬랙발송 X - 알림 비활성화이기 때문에 발송X) + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송 + + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + + } + } } - } catch (Exception e) { throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e); } diff --git a/src/main/java/itn/let/mjo/msgholiday/service/MsgAlarmSetVO.java b/src/main/java/itn/let/mjo/msgholiday/service/MsgAlarmSetVO.java new file mode 100644 index 00000000..c1924e62 --- /dev/null +++ b/src/main/java/itn/let/mjo/msgholiday/service/MsgAlarmSetVO.java @@ -0,0 +1,66 @@ +package itn.let.mjo.msgholiday.service; + +import java.util.List; + +import itn.let.uss.umt.service.UserDefaultVO; + +public class MsgAlarmSetVO extends UserDefaultVO{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + private int alarmId; //알림 아이디 + private String alarmType; //알림 종류(W: 평일, E:주말, H:공휴일) + private String alarmStart; //알림 시작 시간 + private String alarmEnd; //알림 종료 시간 + private String useYn; //알림 사용여부(Y: 사용, N: 미사용) + + private String alarmIds; + private List alarmIdList; //알림 아이디 리스트 + + public int getAlarmId() { + return alarmId; + } + public void setAlarmId(int alarmId) { + this.alarmId = alarmId; + } + public String getAlarmType() { + return alarmType; + } + public void setAlarmType(String alarmType) { + this.alarmType = alarmType; + } + public String getAlarmStart() { + return alarmStart; + } + public void setAlarmStart(String alarmStart) { + this.alarmStart = alarmStart; + } + public String getAlarmEnd() { + return alarmEnd; + } + public void setAlarmEnd(String alarmEnd) { + this.alarmEnd = alarmEnd; + } + public String getUseYn() { + return useYn; + } + public void setUseYn(String useYn) { + this.useYn = useYn; + } + public String getAlarmIds() { + return alarmIds; + } + public void setAlarmIds(String alarmIds) { + this.alarmIds = alarmIds; + } + public List getAlarmIdList() { + return alarmIdList; + } + public void setAlarmIdList(List alarmIdList) { + this.alarmIdList = alarmIdList; + } + +} diff --git a/src/main/java/itn/let/mjo/msgholiday/service/MsgHolidayService.java b/src/main/java/itn/let/mjo/msgholiday/service/MsgHolidayService.java new file mode 100644 index 00000000..4d4e374b --- /dev/null +++ b/src/main/java/itn/let/mjo/msgholiday/service/MsgHolidayService.java @@ -0,0 +1,34 @@ +package itn.let.mjo.msgholiday.service; + +import java.util.List; + +public interface MsgHolidayService { + + //공휴일 정보 입력하기 + public int insertHolidayData(List msgHolidayVO) throws Exception; + + //공휴일 리스트 정보 조회하기 + public List selectMsgHolidayList(MsgHolidayVO msgHolidayVO) throws Exception; + + //공휴일 상세정보 조회하기 + public MsgHolidayVO selectHolidayDetail(MsgHolidayVO msgHolidayVO) throws Exception; + + //공휴일 정보 수정하기 + public int updateHolidayData(MsgHolidayVO msgHolidayVO) throws Exception; + + //공휴일 정보 삭제하기 + public int deleteHolidayData(MsgHolidayVO msgHolidayVO) throws Exception; + + //알림 일정 추가하기 + public int insertAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception; + + //알림 일정 리스트 정보 조회하기 + public List selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception; + + //알림 일정 상태정보 수정하기 + public int updateAlarmSettingDataUseYn(MsgAlarmSetVO msgAlarmSetVO) throws Exception; + + //알림 일정 삭제처리 + public int deleteAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception; + +} diff --git a/src/main/java/itn/let/mjo/msgholiday/service/MsgHolidayVO.java b/src/main/java/itn/let/mjo/msgholiday/service/MsgHolidayVO.java new file mode 100644 index 00000000..8a90cebe --- /dev/null +++ b/src/main/java/itn/let/mjo/msgholiday/service/MsgHolidayVO.java @@ -0,0 +1,82 @@ +package itn.let.mjo.msgholiday.service; + +import java.util.List; + +import itn.let.uss.umt.service.UserDefaultVO; + +public class MsgHolidayVO extends UserDefaultVO{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + private int holidayId; + private String holidayNm; + private String holidayDate; + private String holidayType; + private String apiType; + + private String searchHoliYear; + + private String ntceBgnde; + private String ntceEndde; + + private List holidayIdList; + + public int getHolidayId() { + return holidayId; + } + public void setHolidayId(int holidayId) { + this.holidayId = holidayId; + } + public String getHolidayNm() { + return holidayNm; + } + public void setHolidayNm(String holidayNm) { + this.holidayNm = holidayNm; + } + public String getHolidayDate() { + return holidayDate; + } + public void setHolidayDate(String holidayDate) { + this.holidayDate = holidayDate; + } + public String getHolidayType() { + return holidayType; + } + public void setHolidayType(String holidayType) { + this.holidayType = holidayType; + } + public String getApiType() { + return apiType; + } + public void setApiType(String apiType) { + this.apiType = apiType; + } + public String getSearchHoliYear() { + return searchHoliYear; + } + public void setSearchHoliYear(String searchHoliYear) { + this.searchHoliYear = searchHoliYear; + } + public String getNtceBgnde() { + return ntceBgnde; + } + public void setNtceBgnde(String ntceBgnde) { + this.ntceBgnde = ntceBgnde; + } + public String getNtceEndde() { + return ntceEndde; + } + public void setNtceEndde(String ntceEndde) { + this.ntceEndde = ntceEndde; + } + public List getHolidayIdList() { + return holidayIdList; + } + public void setHolidayIdList(List holidayIdList) { + this.holidayIdList = holidayIdList; + } + +} diff --git a/src/main/java/itn/let/mjo/msgholiday/service/impl/MsgHolidayDAO.java b/src/main/java/itn/let/mjo/msgholiday/service/impl/MsgHolidayDAO.java new file mode 100644 index 00000000..6d17f463 --- /dev/null +++ b/src/main/java/itn/let/mjo/msgholiday/service/impl/MsgHolidayDAO.java @@ -0,0 +1,62 @@ +package itn.let.mjo.msgholiday.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; + +@Repository("MsgHolidayDAO") +public class MsgHolidayDAO extends EgovAbstractDAO{ + + + //기존 동일 년도의 공휴일 정보 조회 및 삭제 처리 + public int deleteDuplicateHolidayApiData(MsgHolidayVO msgHolidayVO) throws Exception{ + + return update("MsgHolidayDAO.deleteDuplicateHolidayApiData", msgHolidayVO); + } + + + //신규 api 공휴일 데이터 추가 + public int insertHolidayData(List msgHolidayVO) throws Exception{ + + return update("MsgHolidayDAO.insertHolidayData", msgHolidayVO); + + } + + @SuppressWarnings("unchecked") + public List selectMsgHolidayList(MsgHolidayVO msgHolidayVO) throws Exception{ + return (List) list("MsgHolidayDAO.selectMsgHolidayList",msgHolidayVO); + } + + public MsgHolidayVO selectHolidayDetail(MsgHolidayVO msgHolidayVO) throws Exception{ + return (MsgHolidayVO) select("MsgHolidayDAO.selectHolidayDetail", msgHolidayVO); + } + + public int updateHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{ + return update("MsgHolidayDAO.updateHolidayData",msgHolidayVO); + } + + public int deleteHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{ + return update("MsgHolidayDAO.deleteHolidayData", msgHolidayVO); + } + + public int insertAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return update("MsgHolidayDAO.insertAlarmSettingData", msgAlarmSetVO); + } + + @SuppressWarnings("unchecked") + public List selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return (List) list("MsgHolidayDAO.selectAlarmSettingList", msgAlarmSetVO); + } + + public int updateAlarmSettingDataUseYn(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return update("MsgHolidayDAO.updateAlarmSettingDataUseYn", msgAlarmSetVO); + } + + public int deleteAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return update("MsgHolidayDAO.deleteAlarmSettingData", msgAlarmSetVO); + } +} diff --git a/src/main/java/itn/let/mjo/msgholiday/service/impl/MsgHolidayServiceImpl.java b/src/main/java/itn/let/mjo/msgholiday/service/impl/MsgHolidayServiceImpl.java new file mode 100644 index 00000000..699473e5 --- /dev/null +++ b/src/main/java/itn/let/mjo/msgholiday/service/impl/MsgHolidayServiceImpl.java @@ -0,0 +1,79 @@ +package itn.let.mjo.msgholiday.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; + +@Service("MsgHolidayService") +public class MsgHolidayServiceImpl extends EgovAbstractServiceImpl implements MsgHolidayService{ + + @Resource(name="MsgHolidayDAO") + private MsgHolidayDAO msgHolidayDAO; + + + @Override + public int insertHolidayData(List msgHolidayVO) throws Exception{ + + //기존 데이터에 같은 해의 API로 입력된 공휴일 정보가 있으면 삭제처리를 먼저 해준다. + MsgHolidayVO tmpMsgHolidayVO = new MsgHolidayVO(); + String searchHoliYear = msgHolidayVO.get(0).getHolidayDate().substring(0,4); + String apiType = msgHolidayVO.get(0).getApiType(); + + //공공데이터 포털에서 공휴일을 받아오는 경우 기존에 등록된 공휴일 정보를 삭제 후 등록해준다. + if(apiType.equals("Y")) { + + tmpMsgHolidayVO.setSearchHoliYear(searchHoliYear); + msgHolidayDAO.deleteDuplicateHolidayApiData(tmpMsgHolidayVO); + + } + + return msgHolidayDAO.insertHolidayData(msgHolidayVO); + } + + @Override + public List selectMsgHolidayList(MsgHolidayVO msgHolidayVO) throws Exception{ + return msgHolidayDAO.selectMsgHolidayList(msgHolidayVO); + } + + @Override + public MsgHolidayVO selectHolidayDetail(MsgHolidayVO msgHolidayVO) throws Exception{ + return msgHolidayDAO.selectHolidayDetail(msgHolidayVO); + } + + @Override + public int updateHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{ + return msgHolidayDAO.updateHolidayData(msgHolidayVO); + } + + @Override + public int deleteHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{ + return msgHolidayDAO.deleteHolidayData(msgHolidayVO); + } + + @Override + public int insertAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return msgHolidayDAO.insertAlarmSettingData(msgAlarmSetVO); + } + + @Override + public List selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO); + } + + @Override + public int updateAlarmSettingDataUseYn(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return msgHolidayDAO.updateAlarmSettingDataUseYn(msgAlarmSetVO); + } + + @Override + public int deleteAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + return msgHolidayDAO.deleteAlarmSettingData(msgAlarmSetVO); + } +} diff --git a/src/main/java/itn/let/mjo/msgholiday/web/MsgHolidayController.java b/src/main/java/itn/let/mjo/msgholiday/web/MsgHolidayController.java new file mode 100644 index 00000000..43b13862 --- /dev/null +++ b/src/main/java/itn/let/mjo/msgholiday/web/MsgHolidayController.java @@ -0,0 +1,642 @@ +package itn.let.mjo.msgholiday.web; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import itn.com.cmm.LoginVO; +import itn.com.cmm.util.MJUtil; +import itn.com.cmm.util.RedirectUrlMaker; +import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.mail.service.StatusResponse; +import itn.let.mjo.mjocommon.MjonHolidayApi; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; + +@Controller +public class MsgHolidayController { + + @Resource(name = "MsgHolidayService") + private MsgHolidayService msgHolidayService; + + @Autowired + MjonHolidayApi mjonHolidayApi; + + /** + * 공휴일 관리 리스트 화면 + * @param searchVO + * @param model + * @return "/let/mjo/holiday/selectHolidayList.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/selectHolidayList.do") + public String selectHolidayList(@ModelAttribute("searchVO") MsgHolidayVO searchVO, + ModelMap model) throws Exception{ + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); + paginationInfo.setPageSize(searchVO.getPageSize()); + + searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + searchVO.setSearchSortCnd("holidayDate"); + searchVO.setSearchSortOrd("desc"); + } + + /* + * 2024.01.26 우영두 변경 + * 기존 한달전 시작일자 지정에서 하루전으로 변경 + * 데이터 양이 너무 많이 검색되어 하루전으로 변경해 달라는 기획팀 요청 + * */ + String toDay = MJUtil.getTodayDate(); //오늘 + String endDay = ""; + + + if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { + searchVO.setNtceBgnde(toDay); + + //현재년도의 12월 31일로 종료일을 셋팅 + Calendar cal = Calendar.getInstance(); + String year = Integer.toString(cal.get(Calendar.YEAR)); + + endDay = year +"-"+"12-31"; + searchVO.setNtceEndde(endDay); + } + + List resultList = msgHolidayService.selectMsgHolidayList(searchVO); + + model.addAttribute("resultList", resultList); + + paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MsgHolidayVO)resultList.get(0)).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + return "/holiday/MsgHolidayList"; + + } + + /** + * 공휴일 관리 리스트 삭제 처리 + * @param String + * @param model + * @return "/let/mjo/holiday/deleteHolidayList.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/deleteHolidayList.do") + public String deleteHolidayList(@RequestParam("checkedIdForDel") String checkedIdForUpt, + ModelMap model) throws Exception{ + + try { + + String[] idArr = checkedIdForUpt.split(","); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + List idList = Arrays.asList(idArr); + + msgHolidayVO.setHolidayIdList(idList); + + int resultCnt = msgHolidayService.deleteHolidayData(msgHolidayVO); + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++ deleteHolidayList Error !!! "); + } + + return "redirect:/let/mjo/holiday/selectHolidayList.do"; + } + + /** + * 공휴일 관리 공공데이터 포털에서 공휴일 정보 받아오기 API + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/getHolidayApiDataAjax.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/getHolidayApiDataAjax.do") + public String getHolidayApiDataAjax(MsgHolidayVO msgHolidayVO, RedirectAttributes redirectAttributes) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do"); + return redirectUrlMaker.getRedirectUrl(); + + } + + String searchHoliYear = msgHolidayVO.getSearchHoliYear(); + + if(searchHoliYear == null) {//년도 파라미터가 없으면 현재 년도를 넘겨준다. + + Calendar cal = Calendar.getInstance(); + String year = Integer.toString(cal.get(Calendar.YEAR)); + + msgHolidayVO.setSearchHoliYear(year); + + } + + //공휴일 등록요청한 아이디를 셋팅 + msgHolidayVO.setFrstRegisterId(userId); + + //공공데이터 포털에서 공휴일 API를 통하여 정보를 받아온다. + List msgHolidayList = mjonHolidayApi.getYearHolidayApiData(msgHolidayVO); + + int resultCnt = msgHolidayService.insertHolidayData(msgHolidayList); + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++ getHolidayApiDataAjax Controller Error!!!! " + e); + redirectAttributes.addFlashAttribute("message", "오류가 발생하였습니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + redirectAttributes.addFlashAttribute("message", "공휴일 등록이 완료 되었습니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + /** + * 공휴일 관리 공휴일 정보 등록 팝업 화면 + * @param MsgHolidayVO + * @param model + * @return "/uss/umt/holiday/selectHolidayModifyPopupAjax.do" + * @throws Exception + */ + @RequestMapping("/uss/umt/holiday/selectHolidayModifyPopupAjax.do") + public String selectHolidayModifyPopupAjax(MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ + + String toDay = MJUtil.getTodayDate(); //오늘 + msgHolidayVO.setHolidayDate(toDay); + + model.addAttribute("result", msgHolidayVO); + + return "/holiday/popup/MsgHolidayModifyPopup"; + } + + /** + * 공휴일 관리 공휴일 정보 신규 등록 처리 + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/insertHolidayRegistAjax.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/insertHolidayRegistAjax.do") + public ResponseEntity insertHolidayRegistAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.UNAUTHORIZED + , "로그인을 하셔야 이용 가능합니다." + , LocalDateTime.now() + ) + ); + + } + + //공공데이터 포털이 아닌 일반 등록 타입으로 등록해 준다. + msgHolidayVO.setApiType("N"); + msgHolidayVO.setFrstRegisterId(userId); + + //캘린더에서 넘어오는 날짜에서 하이픈을 삭제해준다. + String holidayDate = msgHolidayVO.getHolidayDate().replace("-", ""); + msgHolidayVO.setHolidayDate(holidayDate); + + List msgHolidayList = new ArrayList(); + + msgHolidayList.add(msgHolidayVO); + + int resultCnt = msgHolidayService.insertHolidayData(msgHolidayList); + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++ insertHolidayRegistAjax Controller Error!!!! "); + return ResponseEntity.ok( + new StatusResponse(HttpStatus.BAD_REQUEST + , "공휴일 등록 중 오류가 발생하였습니다.." + , LocalDateTime.now() + ) + ); + } + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.OK + , "공휴일 등록을 완료하였습니다." + , LocalDateTime.now() + ) + ); + } + + /** + * 공휴일 관리 공휴일 정보 신규 등록 처리 + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/insertHolidayRegistAjax.do" + * @throws Exception + */ + @RequestMapping("/uss/umt/holiday/selectHolidayDetailPopupAjax.do") + public String selectHolidayDetailPopupAjax(MsgHolidayVO msgHolidayVO, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do"); + return redirectUrlMaker.getRedirectUrl(); + + } + + MsgHolidayVO resultVO = msgHolidayService.selectHolidayDetail(msgHolidayVO); + + model.addAttribute("result", resultVO); + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++ selectHolidayDetailPopupAjax Error !!!! "); + redirectAttributes.addFlashAttribute("message", "오류가 발생하였습니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + return "/holiday/popup/MsgHolidayModifyPopup"; + } + + + /** + * 공휴일 관리 공휴일 정보 수정 처리 + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/updateHolidayDataAjax.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/updateHolidayDataAjax.do") + public ResponseEntity updateHolidayDataAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.UNAUTHORIZED + , "로그인을 하셔야 이용 가능합니다." + , LocalDateTime.now() + ) + ); + + } + + //공공데이터 포털이 아닌 일반 등록 타입으로 등록해 준다. + msgHolidayVO.setApiType("N"); + msgHolidayVO.setLastUpdusrId(userId); + + //캘린더에서 넘어오는 날짜에서 하이픈을 삭제해준다. + String holidayDate = msgHolidayVO.getHolidayDate().replace("-", ""); + msgHolidayVO.setHolidayDate(holidayDate); + + int resultCnt = msgHolidayService.updateHolidayData(msgHolidayVO); + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++ updateHolidayDataAjax Controller Error!!!! "); + return ResponseEntity.ok( + new StatusResponse(HttpStatus.BAD_REQUEST + , "공휴일 수정 중 오류가 발생하였습니다.." + , LocalDateTime.now() + ) + ); + } + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.OK + , "공휴일 수정을 완료하였습니다." + , LocalDateTime.now() + ) + ); + } + + /** + * 공휴일 관리 공휴일 정보 삭제 처리(상세 팝업화면에서 삭제 요청시 처리) + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/deleteHolidayDataAjax.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/deleteHolidayDataAjax.do") + public ResponseEntity deleteHolidayDataAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.UNAUTHORIZED + , "로그인을 하셔야 이용 가능합니다." + , LocalDateTime.now() + ) + ); + + } + + List idList = new ArrayList(); + + String holiId = Integer.toString(msgHolidayVO.getHolidayId()); + + idList.add(holiId); + + msgHolidayVO.setHolidayIdList(idList); + int resultCnt = msgHolidayService.deleteHolidayData(msgHolidayVO); + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++ deleteHolidayDataAjax Controller Error!!!! "); + return ResponseEntity.ok( + new StatusResponse(HttpStatus.BAD_REQUEST + , "공휴일 삭제 중 오류가 발생하였습니다.." + , LocalDateTime.now() + ) + ); + } + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.OK + , "공휴일이 삭제 되었습니다." + , LocalDateTime.now() + ) + ); + } + + /** + * 관리자 알림 설정 - 야간스미싱알림 설정 팝업 화면 + * @param MsgHolidayVO + * @param model + * @return "/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do" + * @throws Exception + */ + @RequestMapping("/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do") + public String selectAlarmSettingPopupAjax(MsgAlarmSetVO msgAlarmSetVO, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do"); + return redirectUrlMaker.getRedirectUrl(); + + } + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(msgAlarmSetVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(msgAlarmSetVO.getPageUnit()); + paginationInfo.setPageSize(msgAlarmSetVO.getPageSize()); + + msgAlarmSetVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + msgAlarmSetVO.setLastIndex(paginationInfo.getLastRecordIndex()); + msgAlarmSetVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if("".equals(msgAlarmSetVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + msgAlarmSetVO.setSearchSortCnd("ALARM_START"); + msgAlarmSetVO.setSearchSortOrd("desc"); + } + + List resultList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + model.addAttribute("resultList", resultList); + model.addAttribute("msgAlarmSetVO", msgAlarmSetVO); + + paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MsgAlarmSetVO)resultList.get(0)).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++ selectAlarmSettingPopupAjax Error !!!! "); + } + + return "/holiday/alarmset/MsgHolidayAlarmSettingListPop"; + } + + /** + * 관리자 알림 설정 - 야간스미싱알림 일정 추가 처리 + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/alarmSet/insertAlarmSettinDataAjax.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/alarmSet/insertAlarmSettingDataAjax.do") + public ResponseEntity insertAlarmSettingDataAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO, ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.UNAUTHORIZED + , "로그인을 하셔야 이용 가능합니다." + , LocalDateTime.now() + ) + ); + + } + + //등록자 아이디 셋팅 + msgAlarmSetVO.setFrstRegisterId(userId); + + int resultCnt = msgHolidayService.insertAlarmSettingData(msgAlarmSetVO); + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++ insertAlimSettingDataAjax Controller Error!!!! "); + return ResponseEntity.ok( + new StatusResponse(HttpStatus.BAD_REQUEST + , "알림 일정 등록 중 오류가 발생하였습니다.." + , LocalDateTime.now() + ) + ); + } + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.OK + , "알림 일정이 등록 되었습니다." + , LocalDateTime.now() + ) + ); + } + + /** + * 관리자 알림 설정 - 야간스미싱알림 일정 사용상태 변경 + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do") + public ResponseEntity updateAlarmSettingDataUseYnAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO, ModelMap model) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.UNAUTHORIZED + , "로그인을 하셔야 이용 가능합니다." + , LocalDateTime.now() + ) + ); + + } + + + System.out.println(msgAlarmSetVO.getAlarmId()); + System.out.println(msgAlarmSetVO.getUseYn()); + msgAlarmSetVO.setLastUpdusrId(userId); + + int resultCnt = msgHolidayService.updateAlarmSettingDataUseYn(msgAlarmSetVO); + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++ updateAlarmSettingDataUseYnAjax Controller Error!!!! "); + return ResponseEntity.ok( + new StatusResponse(HttpStatus.BAD_REQUEST + , "사용여부 변경 중 오류가 발생하였습니다.." + , LocalDateTime.now() + ) + ); + } + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.OK + , "변경이 완료 되었습니다." + , LocalDateTime.now() + ) + ); + } + + /** + * 관리자 알림 설정 - 야간스미싱알림 일정 삭제 처리 + * @param MsgHolidayVO + * @param model + * @return "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do" + * @throws Exception + */ + @RequestMapping("/let/mjo/holiday/alarmSet/deleteAlarmSettingDataAjax.do") + public ResponseEntity deleteAlarmSettingDataAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO) throws Exception{ + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.UNAUTHORIZED + , "로그인을 하셔야 이용 가능합니다." + , LocalDateTime.now() + ) + ); + + } + + String[] splitId = msgAlarmSetVO.getAlarmIds().split(","); + + List idList = Arrays.asList(splitId); + + msgAlarmSetVO.setAlarmIdList(idList); + + int resultCnt = msgHolidayService.deleteAlarmSettingData(msgAlarmSetVO); + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++ deleteAlarmSettingDataAjax Controller Error!!!! " + e); + return ResponseEntity.ok( + new StatusResponse(HttpStatus.BAD_REQUEST + , "사용여부 변경 중 오류가 발생하였습니다.." + , LocalDateTime.now() + ) + ); + } + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.OK + , "변경이 완료 되었습니다." + , LocalDateTime.now() + ) + ); + } + + @RequestMapping("/let/mjo/holiday/alarmSet/selectAlarmSettingDataCheckAjax.do") + public ResponseEntity selectAlarmSettingDataCheckAjax() throws Exception{ + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + System.out.println("+++++++++ 스미싱을 패스 시킬건지 ::: "+smishingAlarmPassSts); + + return ResponseEntity.ok( + new StatusResponse(HttpStatus.OK + , "변경이 완료 되었습니다." + , LocalDateTime.now() + ) + ); + } + +} diff --git a/src/main/java/itn/let/mjo/test/web/TestController.java b/src/main/java/itn/let/mjo/test/web/TestController.java index 607ae395..fe74160d 100644 --- a/src/main/java/itn/let/mjo/test/web/TestController.java +++ b/src/main/java/itn/let/mjo/test/web/TestController.java @@ -78,10 +78,14 @@ import itn.let.mjo.apikey.service.ApiKeyMngService; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.payva.service.VacsVactService; import itn.let.mjo.payva.service.VacsVactVO; @@ -196,6 +200,9 @@ public class TestController { @Autowired CheckNoServiceCommon checkNoServiceCommon; + @Autowired + MjonHolidayApi mjonHolidayApi; + @Resource(name = "egovSiteManagerService") private EgovSiteManagerService egovSiteManagerService; @@ -223,6 +230,9 @@ public class TestController { @Resource (name = "userManageService") private EgovUserManageService egovUserManageService; + @Resource(name = "MsgHolidayService") + private MsgHolidayService msgHolidayService; + private static final Logger logger = LoggerFactory.getLogger(TestController.class); ///////////////////////////////////////////////////////////////////////////////////////// @@ -1029,6 +1039,22 @@ public class TestController { try { + //회원 정보 중 금지어 예외 항목에 대해서 스팸 필터링 처리 유무 적용 - 20240820 우영두 + MberManageVO mberManageVO = new MberManageVO(); + + //회원정보 불러오기 + mberManageVO = mberManageService.selectMber(mjonMsgVO.getMberId()); + + //스팸 필터링 예외처리 여부 값 - (온: Y, 오프 : N) 온 일때 스미싱의심 예외 되도록 적용 + String exceptSpamYn = mberManageVO.getExceptSpamYn(); + + if(exceptSpamYn.equals("Y")) {//스팸 필터링 예외 온 일 경우 리턴 처리 + + modelAndView.addObject("result", "clear"); + return modelAndView; + + } + List resultSpamTxt = mjonMsgDataService.selectSpamKeywordList(); String spmFilterTxt = ""; if(resultSpamTxt == null) {//스팸 체크리스트가 없는 경우 @@ -2109,12 +2135,47 @@ public class TestController { JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); - // SLACK 체크 - if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { - //Slack으로 메세지 전송 처리 - MjonCommon comm = new MjonCommon(); - System.out.println("slack noti"); - comm.getAdminSandSlack(mjonMsgVO); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + //야간 스미싱의심 알림이 활성화 되어있는 경우 + if(holiSmishingNoti.equals("Y")) { + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + System.out.println("slack noti"); + comm.getAdminSandSlack(mjonMsgVO); + } + }else {//야간스미싱 알림 비활성화인 경우 - 알림일정에 포함되지 않으면 슬랙 발송 처리(알림일정에 포함되면 슬랙발송 X - 알림 비활성화이기 때문에 발송X) + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송 + + MjonCommon comm = new MjonCommon(); + comm.getAdminSandSlack(mjonMsgVO); + + } + } } @@ -3289,6 +3350,5 @@ public class TestController { } } - - + } diff --git a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java index 0fe89cea..8dc3b39d 100644 --- a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java +++ b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java @@ -48,6 +48,7 @@ public class JoinSettingVO { private String emailNoti; //관리자 이메일 알림 여부 private String slackNoti; //관리자 SLACK 알림 여부 private String smishingNoti; //첫결제(카드제외) 스미싱의심 알림 여부 + private String holiSmishingNoti; //야간 스미싱알림 여부 public String getSmishingNoti() { return smishingNoti; @@ -215,6 +216,14 @@ public class JoinSettingVO { public void setFaxPrice(float faxPrice) { this.faxPrice = faxPrice; + } + + public String getHoliSmishingNoti() { + return holiSmishingNoti; + } + + public void setHoliSmishingNoti(String holiSmishingNoti) { + this.holiSmishingNoti = holiSmishingNoti; } } diff --git a/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-holiday.xml b/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-holiday.xml new file mode 100644 index 00000000..217461e0 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-holiday.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/holiday/MsgHolidayData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/holiday/MsgHolidayData_SQL_mysql.xml new file mode 100644 index 00000000..529eab4d --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/holiday/MsgHolidayData_SQL_mysql.xml @@ -0,0 +1,213 @@ + + + + + + + + + INSERT INTO MJ_HOLIDAY + (HOLIDAY_NM, + HOLIDAY_DATE, + HOLIDAY_TYPE, + API_TYPE, + FRST_REGIST_PNTTM, + FRST_REGISTER_ID, + LAST_UPDT_PNTTM, + LAST_UPDUSR_ID + )VALUES + + ( + #[].holidayNm#, + #[].holidayDate#, + #[].holidayType#, + #[].apiType#, + NOW(), + #[].frstRegisterId#, + NOW(), + #[].lastUpdusrId# + ) + + + + + + + + + + DELETE + FROM MJ_HOLIDAY + WHERE HOLIDAY_ID IN + ( SELECT HOLIDAY_ID + FROM MJ_HOLIDAY + WHERE API_TYPE = 'Y' + AND HOLIDAY_DATE LIKE CONCAT(#searchHoliYear#,'%') + ) + + + + + + UPDATE MJ_HOLIDAY + SET HOLIDAY_NM = #holidayNm#, + HOLIDAY_DATE = #holidayDate#, + HOLIDAY_TYPE = #holidayType#, + LAST_UPDUSR_ID = #lastUpdusrId# + WHERE HOLIDAY_ID = #holidayId# + + + + + + DELETE FROM MJ_HOLIDAY + WHERE 1=1 + + + #holidayIdList[]# + + + + + + + + INSERT + INTO MJ_SPAMPASS_ALARM + ( + ALARM_TYPE, + ALARM_START, + ALARM_END, + FRST_REGIST_PNTTM, + FRST_REGISTER_ID, + LAST_UPDT_PNTTM, + LAST_UPDUSR_ID + ) + VALUES + ( #alarmType# + , #alarmStart# + , #alarmEnd# + , NOW() + , #frstRegisterId# + , NOW() + , #frstRegisterId# + ) + + + + + + + + UPDATE MJ_SPAMPASS_ALARM SET + USE_YN = #useYn#, + LAST_UPDT_PNTTM = NOW(), + LAST_UPDUSR_ID = #lastUpdusrId# + WHERE ALARM_ID = #alarmId# + + + + + + DELETE FROM MJ_SPAMPASS_ALARM + WHERE 1=1 + + + #alarmIdList[]# + + + + + + + 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 832a3c7d..b70160c9 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 @@ -2302,6 +2302,39 @@ ) + + + INSERT + INTO MJ_SPAMPASS_MSG + ( + MSG_GROUP_ID, + USER_ID, + REQ_DATE, + SMS_TXT, + MSG_GROUP_CNT, + CALL_FROM, + MSG_TYPE, + RESERVE_YN, + FRST_REGIST_PNTTM, + LAST_UPDT_PNTTM + ) + VALUES + ( + #msgGroupId# + , #userId# + , #reqDate# + , #smsTxt# + , #totalCallCnt# + , #callFrom# + , #msgType# + , #reserveYn# + , NOW() + , NOW() + + ) + + + UPDATE MJ_MSG_GROUP_DATA @@ -7517,5 +7550,271 @@ + + + + + + + UPDATE MJ_SPAMPASS_MSG + SET CANCEL_RESULT_YN = 'Y' + , LAST_UPDUSR_ID = #lastUpdusrId# + , LAST_UPDT_PNTTM = NOW() + WHERE USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + diff --git a/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml index 3dba239c..e9004017 100644 --- a/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/sym/site/EgovSiteManage_SQL_Mysql.xml @@ -956,6 +956,7 @@ IFNULL(EMAIL_NOTI, 'N') AS emailNoti, IFNULL(SLACK_NOTI, 'N') AS slackNoti, IFNULL(SMISHING_NOTI, 'N') AS smishingNoti, + IFNULL(HOLI_SMISHING_NOTI, 'N') AS holiSmishingNoti, LAST_UPDUSR_ID AS lasUpdusrId, LAST_UPDT_PNTTM AS lastUpdtPnttm FROM MJ_MBER_SETTING @@ -972,6 +973,7 @@ ,EMAIL_NOTI = #emailNoti# ,SLACK_NOTI = #slackNoti# ,SMISHING_NOTI = #smishingNoti# + ,HOLI_SMISHING_NOTI = #holiSmishingNoti# ,LAST_UPDUSR_ID = #lasUpdusrId# ,LAST_UPDT_PNTTM = NOW() diff --git a/src/main/webapp/WEB-INF/jsp/holiday/MsgHolidayList.jsp b/src/main/webapp/WEB-INF/jsp/holiday/MsgHolidayList.jsp new file mode 100644 index 00000000..79d2322e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/holiday/MsgHolidayList.jsp @@ -0,0 +1,400 @@ +<%-- + Class Name : MsgHolidayList.jsp + Description : 공휴일 관리 리스트 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2024.07.29 우영두 최초 생성 + + author : 공통서비스 개발팀 장동한 + since : 2009.09.16 + + Copyright (C) 2009 by MOPAS All right reserved. +--%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> +<% pageContext.setAttribute("newLineChar", "\r\n"); %> +<% pageContext.setAttribute("newLineChar2", "\n"); %> +<% + response.setHeader("Cache-Control","no-store"); + response.setHeader("Pragma","no-cache"); + response.setDateHeader("Expires",0); + if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); +%> + + + +공휴일 관리 조회 + + + + + + + +
+ + + " /> + " /> + + + + + + +
+
+
+

공휴일 관리

+

공휴일 등록 관리

+
+
+
+
+ + + + + " > + + + ~ + + " + > + + + + 타임아웃 아이콘 + +
+

+ + + + + +
+
+

+ 총 건 + + (예약발송 : 건) + +

+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
번호공휴일명휴일일자휴일종류등록일자등록자
+ " title="Check " type="checkbox"/> + + + + + + + + + + '); return false;"> + + + + + + + + 법정 공휴일 + + + 임시 공휴일 + + + 기타 + + + + + + +
+
+
+ + +
+ + +
+
    + +
+
+
+ +
+
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/holiday/alarmset/MsgHolidayAlarmSettingListPop.jsp b/src/main/webapp/WEB-INF/jsp/holiday/alarmset/MsgHolidayAlarmSettingListPop.jsp new file mode 100644 index 00000000..22bc138d --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/holiday/alarmset/MsgHolidayAlarmSettingListPop.jsp @@ -0,0 +1,675 @@ +<%-- + Class Name : MsgHolidayAlarmSettingListPop.jsp + Description : 야간 스미싱알림 일정 등록관리 팝업 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2024.07.31 우영두 최초 생성 + + author : 우영두 + since : 2022.07.01 + + Copyright (C) 2009 by MOPAS All right reserved. +--%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> +<% pageContext.setAttribute("newLineChar", "\r\n"); %> +<% pageContext.setAttribute("newLineChar2", "\n"); %> +<% + response.setHeader("Cache-Control","no-store"); + response.setHeader("Pragma","no-cache"); + response.setDateHeader("Expires",0); + if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); +%> + + + +스미싱의심 알림 설정 관리 + + + + + + + + + + + + + + + + + +
+
+
+
Loading
+
+
+
+ + +
+
+ +

야간 스미싱의심 알림 일정 관리

+ +
+
+
+ + + + + 부터 + + + + + + 까지 + + + + + +
+
+

+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
번호구분시작시간종료시간사용여부
+ " title="Check " type="checkbox"/> + + + + + + + + + + + + 평일 + + + 주말 + + + 공휴일 + + + + + + + + + + 사용 중 + + + + ','Y');" value="사용" style="width:55px;"/> + + + + + + + ','N');" value="미사용"/> + + + 미사용 + + +
+
+
+ + +
+ + +
+
    + +
+
+
+ +
+
+
+ + diff --git a/src/main/webapp/WEB-INF/jsp/holiday/popup/MsgHolidayModifyPopup.jsp b/src/main/webapp/WEB-INF/jsp/holiday/popup/MsgHolidayModifyPopup.jsp new file mode 100644 index 00000000..8c78aa58 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/holiday/popup/MsgHolidayModifyPopup.jsp @@ -0,0 +1,443 @@ +<%-- + Class Name : MsgHolidayModifyPopup.jsp + Description : 공휴일 등록 팝업 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2024.07.29 우영두 최초 생성 + + author : 우영두 + since : 2022.07.01 + + Copyright (C) 2009 by MOPAS All right reserved. +--%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> +<% pageContext.setAttribute("newLineChar", "\r\n"); %> +<% pageContext.setAttribute("newLineChar2", "\n"); %> +<% + response.setHeader("Cache-Control","no-store"); + response.setHeader("Pragma","no-cache"); + response.setDateHeader("Expires",0); + if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); +%> + + + +공휴일 등록 + + + + + + + + + + + + + + + + +
+
+
+
Loading
+
+
+
+ + + + +
+
+ +

공휴일 등록

+ +
+
+ + + + + + + + + + + + + + + + + + + +
휴일명 + +
휴일 일자 + + + + + +
휴일 구분 + +
+
+ + + + + + + + + + +
+
+
+
+ + diff --git a/src/main/webapp/WEB-INF/jsp/sym/site/adminNotiDetail.jsp b/src/main/webapp/WEB-INF/jsp/sym/site/adminNotiDetail.jsp index 3b8f55b1..55272be9 100644 --- a/src/main/webapp/WEB-INF/jsp/sym/site/adminNotiDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/sym/site/adminNotiDetail.jsp @@ -6,9 +6,34 @@ - - 관리자 알림 관리 - +
@@ -73,6 +111,17 @@ + + + 스미싱의심 알림 여부 + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendHoliMsgList.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendHoliMsgList.jsp new file mode 100644 index 00000000..ab82993f --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendHoliMsgList.jsp @@ -0,0 +1,705 @@ +<%-- + Class Name : SendHoliMsgList.jsp + Description : 야간 스미싱의심 알림 제한 발송 내역 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2024.07.24 우영두 최초 생성 + + author : 공통서비스 개발팀 장동한 + since : 2009.09.16 + + Copyright (C) 2009 by MOPAS All right reserved. +--%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> +<% pageContext.setAttribute("newLineChar", "\r\n"); %> +<% pageContext.setAttribute("newLineChar2", "\n"); %> +<% + response.setHeader("Cache-Control","no-store"); + response.setHeader("Pragma","no-cache"); + response.setDateHeader("Expires",0); + if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); +%> + + + +알림 미처리 문자예약 조회 + + + + + + + +
+ + + + + " /> + " /> + + + + + + + +
+
+
+

알림 미처리 문자 조회

+

스미싱의심 알림 비활성화로 인해 발송된 문자리스트 현황을 파악할 수 있습니다.

+
+
+
+
+ + + + + " > + + + ~ + + " + > + + + + 타임아웃 아이콘 + +
+

+ + + <%-- --%> + + + + + + + +
+
+

+ 총 건 + + (예약발송 : 건) + +

+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + <%-- + + --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
번호아이디회원상태발신번호발송건수요청시간예약여부내용타입방식등록일자처리상태
+ " title="Check " type="checkbox"/> + + style="color: #0000FF; cursor:pointer;"> + + + + + + + style="color: #0000FF; cursor:pointer;"> + '); return false;"> + + () + + style="color: #0000FF; cursor:pointer;"> + + + 일반 + + + 탈퇴 + + + 이용정지 + + + 기타(${result.mberSttus}) + + + style="color: #0000FF; cursor:pointer;"style="cursor:pointer;"> + + + + style="color: #0000FF; cursor:pointer;"style="cursor:pointer;"> + + + + + + + + (%) + + + style="color: #0000FF; cursor:pointer;"style="cursor:pointer;"> + + style="color: #0000FF; cursor:pointer;"> + + + 예약 + <%-- + (취소) + --%> + + + 즉시 + + + style="color: #0000FF;"> + + + + + 내용없음 + + + 그림문자 + + +
+ + + + + + + + + +
+
+ +

+
+ + + + + + + + + + + +
+
+ + +
+
+
+
style="color: #0000FF; cursor:pointer;"> + + + SMS + + + LMS + + + MMS + + + 알림톡 + + + + + + style="color: #0000FF; cursor:pointer;"> + + + API + + + WEB + + + style="color: #0000FF; cursor:pointer;"> + + style="color: #0000FF; cursor:pointer;"> + + + 처리완료 + + + 이용정지 + + + 예약취소 + + + 미처리 + + + +
+
+
+ + +
+ + +
+
    + +
+
+
+ +
+
+
+
+ + + +
+ +
+ +
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgDetailList.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgDetailList.jsp index 34075d5d..b4ac83b9 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgDetailList.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgDetailList.jsp @@ -105,6 +105,10 @@ function goList() { frm.action ='/uss/ion/msg/NewUserSendMsgList.do'; } + if(detailType == "sendHoliMsgList") { + frm.action ='/uss/ion/msg/selectHoliMsgList.do'; + } + frm.submit(); } diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfViewPhone.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfViewPhone.jsp index 4f5dc648..fb0a93ef 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfViewPhone.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfViewPhone.jsp @@ -17,10 +17,10 @@ <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> <% - response.setHeader("Cache-Control","no-store"); - response.setHeader("Pragma","no-cache"); - response.setDateHeader("Expires",0); - if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Cache-Control","no-store"); + response.setHeader("Pragma","no-cache"); + response.setDateHeader("Expires",0); + if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); %> @@ -35,7 +35,7 @@ html { overflow-x: hidden; overflow-y: auto; -} +} @@ -45,141 +45,141 @@ html { @@ -188,247 +188,247 @@ function setRejectAreaHide() {
-
-

발신번호 신청 정보

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
발신번호대표담당자회원구분인증방식인증자인증여부다운로드
${phoneNumber}${userName}${managerNm} - - - 기업 - - - 개인 - - - - - - - - 당사 - - - 대표 - - - 직원 - - - 타사 - - - 본인 - - - 타인 - - - - - 없음 - - - - - - 휴대폰 - - - 서류 - - - - - - - - - - - - - - - - - - 발신번호 차단 - - - 인증요청 - - - - - - - -
-
+
+

발신번호 신청 정보

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
발신번호대표담당자회원구분인증방식인증자인증여부다운로드
${phoneNumber}${userName}${managerNm} + + + 기업 + + + 개인 + + + + + + + + 당사 + + + 대표 + + + 직원 + + + 타사 + + + 본인 + + + 타인 + + + + + 없음 + + + + + + 휴대폰 + + + 서류 + + + + + + + + + + + + + + + + + + 발신번호 차단 + + + 인증요청 + + + + + + + +
+
-

- -
-

승인에 필요한 서류

-
-
- - - - - - - - - - - - -
${requiredDocuments} - - - - -
-
- - - - +

+ +
+

승인에 필요한 서류

+
+
+ + + + + + + + + + + + +
${requiredDocuments} + + + + +
+
+ + + + - -
- - - - - - - - - - - - - - -
-
+ +
+ + + + + + + + + + + + + + +
+
- -
- PDF 뷰어에서 지원하지 않는 형식의 파일입니다. 첨부파일 다운로드후 확인해주세요. -
-
- + +
+ PDF 뷰어에서 지원하지 않는 형식의 파일입니다. 첨부파일 다운로드후 확인해주세요. +
+
+ -
- -  Page: /   - - -
-
+
+ +  Page: /   + + +
+


@@ -458,95 +458,101 @@ function setRejectAreaHide() { - \ No newline at end of file + // Initial/first page rendering + renderPage(pageNum); + }); + \ No newline at end of file