야간 스미싱 알림기능 개발 완료

This commit is contained in:
rosewiper 2024-08-20 14:46:32 +09:00
parent a48c4b22dc
commit 45d7b704f7
32 changed files with 5310 additions and 473 deletions

View File

@ -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;
@ -96,6 +108,52 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
//카카오 알림톡 전송 리스트
List<KakaoVO> kakaoAtSandList = new ArrayList<KakaoVO>();
//야간스미싱 알림여부 정보 불러오기
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<MsgAlarmSetVO> 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<MsgHolidayVO> 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());
//야간 스미싱 알림 비활성화인 경우 딜레이처리 안하도록 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);
}

View File

@ -769,12 +769,19 @@ public class KakaoAlimTalkSendController {
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
//야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
comm.getAdminKakaoAtSandSlack(kakaoVO);
}
}
}
} catch (Exception e) {

View File

@ -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<MsgHolidayVO> 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<MsgHolidayVO> msgHolidayVoList = new ArrayList<MsgHolidayVO>();
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<MsgAlarmSetVO> resultAlarmList, List<MsgHolidayVO> 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;
}
}

View File

@ -231,4 +231,9 @@ public interface MjonMsgService {
MjonMsgVO selectApiSttstList(MjonMsgVO mjonMsgVO) throws Exception;
int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception;
List<MjonMsgVO> selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception;
void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception;
}

View File

@ -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;
}
}

View File

@ -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<MjonMsgVO> selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception{
return (List<MjonMsgVO>)list("mjonMsgDAO.selectMjonHoliMsgList", mjonMsgVO);
}
public void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception{
update("mjonMsgDAO.updateHoliMsgResultYn", mjonMsgVO);
}
}

View File

@ -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<MjonMsgVO> selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception{
return mjonMsgDAO.selectMjonHoliMsgList(mjonMsgVO);
}
@Override
public void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception{
mjonMsgDAO.updateHoliMsgResultYn(mjonMsgVO);
}
}

View File

@ -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<MjonMsgVO> resultList = new ArrayList<MjonMsgVO>();
resultList = mjonMsgService.selectMjonHoliMsgList(searchVO);
model.addAttribute("resultList", resultList);
//문자발송 실패 결과 코드정보 리스트 불러오기
MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO();
List<MjonMsgResultCodeVO> 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<VacsVactVO> 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

View File

@ -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,17 +3193,53 @@ public class MjonMsgCampainDataController {
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
getAdminPhoneSendMsgData(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<MsgAlarmSetVO> 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<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
}

View File

@ -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,18 +1102,54 @@ 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);
}
//야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리
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<MsgAlarmSetVO> 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<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
}

View File

@ -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,18 +2076,54 @@ 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);
}
//야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리
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<MsgAlarmSetVO> 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<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
}

View File

@ -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<MsgAlarmSetVO> 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<MsgHolidayVO> 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<MsgAlarmSetVO> 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<MsgHolidayVO> 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);
}

View File

@ -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,19 +3043,54 @@ public class MjonMsgDataController {
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
getAdminPhoneSendMsgData(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<MsgAlarmSetVO> 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<MsgHolidayVO> 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);

View File

@ -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;
}
}

View File

@ -0,0 +1,34 @@
package itn.let.mjo.msgholiday.service;
import java.util.List;
public interface MsgHolidayService {
//공휴일 정보 입력하기
public int insertHolidayData(List<MsgHolidayVO> msgHolidayVO) throws Exception;
//공휴일 리스트 정보 조회하기
public List<MsgHolidayVO> 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<MsgAlarmSetVO> selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception;
//알림 일정 상태정보 수정하기
public int updateAlarmSettingDataUseYn(MsgAlarmSetVO msgAlarmSetVO) throws Exception;
//알림 일정 삭제처리
public int deleteAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception;
}

View File

@ -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;
}
}

View File

@ -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> msgHolidayVO) throws Exception{
return update("MsgHolidayDAO.insertHolidayData", msgHolidayVO);
}
@SuppressWarnings("unchecked")
public List<MsgHolidayVO> selectMsgHolidayList(MsgHolidayVO msgHolidayVO) throws Exception{
return (List<MsgHolidayVO>) 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<MsgAlarmSetVO> selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return (List<MsgAlarmSetVO>) 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);
}
}

View File

@ -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> 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<MsgHolidayVO> 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<MsgAlarmSetVO> 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);
}
}

View File

@ -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<MsgHolidayVO> 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<String> 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<MsgHolidayVO> 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<StatusResponse> 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<MsgHolidayVO> msgHolidayList = new ArrayList<MsgHolidayVO>();
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<StatusResponse> 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<StatusResponse> 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<String> idList = new ArrayList<String>();
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<MsgAlarmSetVO> 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<StatusResponse> 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<StatusResponse> 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<StatusResponse> 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<String> 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<StatusResponse> selectAlarmSettingDataCheckAjax() throws Exception{
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> 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<MsgHolidayVO> 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()
)
);
}
}

View File

@ -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<String> resultSpamTxt = mjonMsgDataService.selectSpamKeywordList();
String spmFilterTxt = "";
if(resultSpamTxt == null) {//스팸 체크리스트가 없는 경우
@ -2109,6 +2135,10 @@ public class TestController {
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
//야간 스미싱의심 알림이 활성화 되어있는 경우
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
@ -2116,6 +2146,37 @@ public class TestController {
System.out.println("slack noti");
comm.getAdminSandSlack(mjonMsgVO);
}
}else {//야간스미싱 알림 비활성화인 경우 - 알림일정에 포함되지 않으면 슬랙 발송 처리(알림일정에 포함되면 슬랙발송 X - 알림 비활성화이기 때문에 발송X)
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> 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<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
@ -3290,5 +3351,4 @@ public class TestController {
}
}

View File

@ -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;
@ -217,4 +218,12 @@ public class JoinSettingVO {
this.faxPrice = faxPrice;
}
public String getHoliSmishingNoti() {
return holiSmishingNoti;
}
public void setHoliSmishingNoti(String holiSmishingNoti) {
this.holiSmishingNoti = holiSmishingNoti;
}
}

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<sqlMap resource="egovframework/sqlmap/let/holiday/MsgHolidayData_SQL_mysql.xml"/>
</sqlMapConfig>

View File

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="UTF-8"?><!--
수정일 수정자 수정내용
========= ======= =================================================
2024.07.29 우영두
-->
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMap namespace="Holiday">
<typeAlias alias="msgHolidayVO" type="itn.let.mjo.msgholiday.service.MsgHolidayVO"/>
<typeAlias alias="msgAlarmSetVO" type="itn.let.mjo.msgholiday.service.MsgAlarmSetVO"/>
<insert id="MsgHolidayDAO.insertHolidayData" parameterClass="java.util.List">
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
<iterate conjunction=",">
(
#[].holidayNm#,
#[].holidayDate#,
#[].holidayType#,
#[].apiType#,
NOW(),
#[].frstRegisterId#,
NOW(),
#[].lastUpdusrId#
)
</iterate>
</insert>
<select id="MsgHolidayDAO.selectMsgHolidayList" parameterClass="msgHolidayVO" resultClass="msgHolidayVO">
SELECT COUNT(HOLIDAY_ID) OVER() AS totCnt,
HOLIDAY_ID AS holidayId,
HOLIDAY_NM AS holidayNm,
DATE_FORMAT(HOLIDAY_DATE, '%Y-%m-%d') AS holidayDate,
HOLIDAY_TYPE AS holidayType,
DATE_FORMAT(FRST_REGIST_PNTTM, '%Y-%m-%d %T') AS frstRegistPnttm,
FRST_REGISTER_ID AS frstRegisterId,
DATE_FORMAT(LAST_UPDT_PNTTM, '%Y-%m-%d %T') AS lastUpdtPnttm,
LAST_UPDUSR_ID AS lastUpdusrID
FROM MJ_HOLIDAY
WHERE 1=1
<isNotEmpty property="searchKeyword">
AND ( HOLIDAY_NM LIKE CONCAT('%', #searchKeyword#, '%') )
</isNotEmpty>
<isNotEmpty property="holidayType">
<isEqual property="holidayType" compareValue="1">
AND HOLIDAY_TYPE = 1
</isEqual>
<isEqual property="holidayType" compareValue="2">
AND HOLIDAY_TYPE = 2
</isEqual>
<isEqual property="holidayType" compareValue="3">
AND HOLIDAY_TYPE = 3
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchHoliYear">
AND HOLIDAY_DATE LIKE CONCAT(#searchHoliYear#,'%')
</isNotEmpty>
<isNotEmpty property="ntceBgnde">
AND HOLIDAY_DATE BETWEEN DATE_FORMAT(#ntceBgnde#, '%Y%m%d') AND DATE_FORMAT(#ntceEndde#, '%Y%m%d')
</isNotEmpty>
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<select id="MsgHolidayDAO.selectHolidayDetail" parameterClass="msgHolidayVO" resultClass="msgHolidayVO">
SELECT HOLIDAY_ID AS holidayId,
HOLIDAY_NM AS holidayNm,
DATE_FORMAT(HOLIDAY_DATE, '%Y-%m-%d') AS holidayDate,
HOLIDAY_TYPE AS holidayType,
DATE_FORMAT(FRST_REGIST_PNTTM, '%Y-%m-%d %T') AS frstRegistPnttm,
FRST_REGISTER_ID AS frstRegisterId,
DATE_FORMAT(LAST_UPDT_PNTTM, '%Y-%m-%d %T') AS lastUpdtPnttm,
LAST_UPDUSR_ID AS lastUpdusrID
FROM MJ_HOLIDAY
WHERE HOLIDAY_ID = #holidayId#
</select>
<delete id="MsgHolidayDAO.deleteDuplicateHolidayApiData" parameterClass="msgHolidayVO">
DELETE
FROM MJ_HOLIDAY
WHERE HOLIDAY_ID IN
( SELECT HOLIDAY_ID
FROM MJ_HOLIDAY
WHERE API_TYPE = 'Y'
AND HOLIDAY_DATE LIKE CONCAT(#searchHoliYear#,'%')
)
</delete>
<update id="MsgHolidayDAO.updateHolidayData" parameterClass="msgHolidayVO">
UPDATE MJ_HOLIDAY
SET HOLIDAY_NM = #holidayNm#,
HOLIDAY_DATE = #holidayDate#,
HOLIDAY_TYPE = #holidayType#,
LAST_UPDUSR_ID = #lastUpdusrId#
WHERE HOLIDAY_ID = #holidayId#
</update>
<delete id="MsgHolidayDAO.deleteHolidayData" parameterClass="msgHolidayVO">
DELETE FROM MJ_HOLIDAY
WHERE 1=1
<isNotEmpty property="holidayIdList">
<iterate prepend="AND HOLIDAY_ID IN " open="(" close=")" conjunction="," property="holidayIdList">
#holidayIdList[]#
</iterate>
</isNotEmpty>
</delete>
<insert id="MsgHolidayDAO.insertAlarmSettingData" parameterClass="msgAlarmSetVO">
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#
)
</insert>
<select id="MsgHolidayDAO.selectAlarmSettingList" parameterClass="msgAlarmSetVO" resultClass="msgAlarmSetVO">
SELECT COUNT(ALARM_ID) OVER() AS totCnt,
ALARM_ID AS alarmId,
ALARM_TYPE AS alarmType,
ALARM_START AS alarmStart,
ALARM_END AS alarmEnd,
USE_YN AS useYn,
DATE_FORMAT(FRST_REGIST_PNTTM, '%Y-%m-%d %T') AS frstRegistPnttm,
FRST_REGISTER_ID AS frstRegisterId,
DATE_FORMAT(LAST_UPDT_PNTTM, '%Y-%m-%d %T') AS lastRegistPnttm,
LAST_UPDUSR_ID AS lastUpdusrId
FROM MJ_SPAMPASS_ALARM
WHERE 1=1
<isNotEmpty property="useYn">
AND USE_YN = #useYn#
</isNotEmpty>
ORDER BY 1=1
, ALARM_TYPE ASC
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<update id="MsgHolidayDAO.updateAlarmSettingDataUseYn" parameterClass="msgAlarmSetVO">
UPDATE MJ_SPAMPASS_ALARM SET
USE_YN = #useYn#,
LAST_UPDT_PNTTM = NOW(),
LAST_UPDUSR_ID = #lastUpdusrId#
WHERE ALARM_ID = #alarmId#
</update>
<delete id="MsgHolidayDAO.deleteAlarmSettingData" parameterClass="msgAlarmSetVO">
DELETE FROM MJ_SPAMPASS_ALARM
WHERE 1=1
<isNotEmpty property="alarmIdList">
<iterate prepend="AND ALARM_ID IN " open="(" close=")" conjunction="," property="alarmIdList">
#alarmIdList[]#
</iterate>
</isNotEmpty>
</delete>
</sqlMap>

View File

@ -2302,6 +2302,39 @@
)
</insert>
<insert id="mjonMsgDAO.insertSpamPassMsgData" parameterClass="mjonMsgVO">
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()
)
</insert>
<update id="mjonMsgDAO.updateGroupMsgData" parameterClass="mjonMsgVO">
UPDATE MJ_MSG_GROUP_DATA
@ -7517,5 +7550,271 @@
</select>
<select id="mjonMsgDAO.selectCallFromNumberChk" parameterClass="mjonMsgVO" resultClass="Integer">
SELECT COUNT(USER_ID) FROM MJ_PHONE_MEMBER
WHERE USER_ID = #userId#
AND PHM_TYPE = '01'
AND PHONE_NUMBER = #callFrom#
</select>
<select id="mjonMsgDAO.selectMjonHoliMsgList" parameterClass="mjonMsgVO" resultClass="mjonMsgVO">
SELECT M.totCnt,
M.userId,
M.userNm,
M.msgGroupId,
M.reqDate,
M.reqFullDate,
M.smsTxt,
M.callFrom,
M.msgType,
M.msgTypeTxt,
M.reserveYn,
M.reserveCYn,
M.msgGroupCnt,
M.sendKind,
M.cancelResultYn,
M.frstRegistPnttm,
M.adminSmsNoticeYn,
M.smishingYn,
M.atSmishingYn,
M.mberSttus,
(SELECT COUNT(0)
FROM MJ_MSG_DATA B
WHERE B.RESERVE_C_YN = 'N'
AND B.MSG_GROUP_ID = M.msgGroupId
AND (
CASE
WHEN B.AGENT_CODE = '01'
AND
(
B.RSLT_CODE = '100'
AND
(
B.RSLT_CODE2 = '0'
)
)
THEN 'S'
WHEN B.AGENT_CODE = '02'
AND
(
B.RSLT_CODE = '0'
)
THEN 'S'
WHEN B.AGENT_CODE = '03'
AND
(
B.RSLT_CODE = '100' OR B.RSLT_CODE = '101' OR B.RSLT_CODE = '110' OR B.RSLT_CODE = '800'
)
THEN 'S'
WHEN B.AGENT_CODE = '04'
AND
(
B.RSLT_CODE = '4100' OR B.RSLT_CODE = '6600'
)
THEN 'S'
WHEN B.AGENT_CODE = '05'
AND
(
B.RSLT_CODE = '1000' OR B.RSLT_CODE = '1001'
)
THEN 'S'
WHEN B.AGENT_CODE = '07'
AND
(
B.RSLT_CODE = '6' OR B.RSLT_CODE = '1000'
)
THEN 'S'
WHEN B.AGENT_CODE = '08'
AND
(
B.RSLT_CODE = '1000' OR B.RSLT_CODE = '1001'
)
THEN 'S'
WHEN B.AGENT_CODE = '09'
AND
(
B.RSLT_CODE = '1000' OR B.RSLT_CODE = '1001'
)
THEN 'S'
ELSE 'F'
END) = 'S'
)
AS successCount,
(SELECT COUNT(0)
FROM MJ_MSG_DATA B
WHERE B.RESERVE_C_YN = 'N'
AND B.MSG_GROUP_ID = M.msgGroupId
AND (
CASE
WHEN B.AGENT_CODE = '01'
AND
(
B.RSLT_CODE = '410'
AND
(
B.RSLT_CODE2 = 'c'
)
)
THEN 'E'
WHEN B.AGENT_CODE = '02'
AND
(
B.RSLT_CODE = '1027' OR B.RSLT_CODE = '1030'
)
THEN 'E'
WHEN B.AGENT_CODE = '03'
AND B.RSLT_CODE = '508'
THEN 'E'
WHEN B.AGENT_CODE = '04'
AND
(
B.RSLT_CODE = '4432' OR B.RSLT_CODE = '4433' OR B.RSLT_CODE = '6628' OR B.RSLT_CODE = '6629'
)
THEN 'E'
WHEN B.AGENT_CODE = '05'
AND
(
B.RSLT_CODE = '2404' OR B.RSLT_CODE = '3404' OR B.RSLT_CODE = '6404'
)
THEN 'E'
WHEN B.AGENT_CODE = '07'
AND B.RSLT_CODE = '9013'
THEN 'E'
WHEN B.AGENT_CODE = '08'
AND
(
B.RSLT_CODE = '2404' OR B.RSLT_CODE = '3404' OR B.RSLT_CODE = '6404'
)
THEN 'E'
WHEN B.AGENT_CODE = '09'
AND
(
B.RSLT_CODE = '2404' OR B.RSLT_CODE = '3404' OR B.RSLT_CODE = '6404'
)
THEN 'E'
ELSE 'ETC'
END) = 'E'
)
AS callRejectionCount
FROM ( SELECT COUNT(msm.SPAMPASS_ID) OVER() AS totCnt,
mmgd.USER_ID AS userId,
lmb.MBER_NM AS userNm,
mmgd.MSG_GROUP_ID AS msgGroupId,
DATE_FORMAT(mmgd.REQ_DATE, '%Y-%m-%d %H:%i' ) AS reqDate ,
DATE_FORMAT(mmgd.REQ_DATE, '%Y-%m-%d %H:%i' ) AS reqFullDate ,
mmgd.SMS_TXT AS smsTxt ,
mmgd.CALL_FROM AS callFrom ,
mmgd.MSG_TYPE AS msgType ,
D.CODE_NM AS msgTypeTxt,
mmgd.RESERVE_YN AS reserveYn ,
mmgd.RESERVE_C_YN AS reserveCYn ,
mmgd.MSG_GROUP_CNT AS msgGroupCnt ,
mmgd.SEND_KIND AS sendKind,
msm.CANCEL_RESULT_YN AS cancelResultYn,
DATE_FORMAT(msm.FRST_REGIST_PNTTM, '%Y-%m-%d %H:%i' ) AS frstRegistPnttm,
lmb.ADMIN_SMS_NOTICE_YN AS adminSmsNoticeYn,
lmb.SMISHING_YN AS smishingYn,
lmb.AT_SMISHING_YN AS atSmishingYn,
lmb.SPAM_YN AS spamYn,
lmb.MBER_STTUS AS mberSttus
FROM MJ_SPAMPASS_MSG msm
INNER JOIN LETTNGNRLMBER lmb
ON msm.USER_ID = lmb.MBER_ID
INNER JOIN MJ_MSG_GROUP_DATA mmgd
ON msm.MSG_GROUP_ID = mmgd.MSG_GROUP_ID
LEFT JOIN
( SELECT CODE_NM ,
CODE ,
CODE_DC
FROM LETTCCMMNDETAILCODE
WHERE USE_AT = 'Y'
AND CODE_ID = 'ITN022'
)
D
ON mmgd.MSG_TYPE = D.CODE
/** 메세지타입 */
WHERE DATE_FORMAT(msm.FRST_REGIST_PNTTM, '%Y-%m-%d') BETWEEN #ntceBgnde# AND #ntceEndde#
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="" >
AND (
mmgd.USER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
OR mmgd.CALL_FROM LIKE CONCAT('%', #searchKeyword#, '%')
OR mmgd.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
)
</isEqual>
<isEqual property="searchCondition" compareValue="1">
AND mmgd.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="2">
AND mmgd.CALL_FROM LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="3">
AND mmgd.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchCondition3">
<isEqual property="searchCondition3" compareValue="1">
AND mmgd.MSG_TYPE = '4'
</isEqual>
<isEqual property="searchCondition3" compareValue="2">
AND mmgd.MSG_TYPE = '6' AND mmgd.FILE_CNT = 0
</isEqual>
<isEqual property="searchCondition3" compareValue="3">
<![CDATA[
AND mmgd.MSG_TYPE = '6' AND mmgd.FILE_CNT <> 0
]]>
</isEqual>
<isEqual property="searchCondition3" compareValue="8">
AND mmgd.MSG_TYPE = '8'
</isEqual>
<isEqual property="searchCondition3" compareValue="9">
AND mmgd.MSG_TYPE = '9'
</isEqual>
</isNotEmpty>
<isNotEmpty property="cancelResultYn">
<isEqual property="cancelResultYn" compareValue="Y">
AND msm.CANCEL_RESULT_YN = 'Y'
</isEqual>
<isEqual property="cancelResultYn" compareValue="N">
AND msm.CANCEL_RESULT_YN = 'N'
</isEqual>
</isNotEmpty>
<isNotEmpty property="sendKind">
<isEqual property="sendKind" compareValue="H">
AND mmgd.SEND_KIND = 'H'
</isEqual>
<isEqual property="sendKind" compareValue="A">
AND mmgd.SEND_KIND = 'A'
</isEqual>
</isNotEmpty>
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
) M
</select>
<update id="mjonMsgDAO.updateHoliMsgResultYn" parameterClass="mjonMsgVO">
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#
</update>
</sqlMap>

View File

@ -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()

View File

@ -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");
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>공휴일 관리 조회</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var toDay = getToday();
//if (toDay == $('#ntceBgndeYYYMMDD').val() && toDay == $('#ntceEnddeYYYMMDD').val()) {
if ($('#ntceBgndeYYYMMDD').val() != "" && $('#ntceEnddeYYYMMDD').val() != "") {
// 오늘 검색
$("#todayYn").val("Y");
}
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ; //검색날짜 세팅
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
listForm.action = "<c:url value='/let/mjo/holiday/selectHolidayList.do'/>";
listForm.submit();
}
function getToday() {
// new Date를 통해서 날짜 객체를 생성. 여기서 년, 월, 일 정보만 필요.
const nowDate = new Date();
var year = nowDate.getFullYear(); // 년
var month = ('0' + (nowDate.getMonth() + 1)).slice(-2); // 월
var day = ('0' + nowDate.getDate()).slice(-2); // 일
// yyyy-mm-dd 형식으로 todate에 담기.
var todate = year + '-' + month + '-' + day;
return todate;
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
}
//기간선택 select
function fnSetCalMonth(val) {
var form = document.listForm;
var today = new Date();
var year = today.getFullYear();
var month = ("0"+(today.getMonth()+1)).slice(-2);
var date = ("0"+today.getDate()).slice(-2);
var sDate = new Date(today.setMonth(today.getMonth() - val));
var sYear = sDate.getFullYear();
var sMonth = ("0"+(sDate.getMonth()+1)).slice(-2);
var sDate = ("0"+sDate.getDate()).slice(-2);
form.ntceBgndeYYYMMDD.value = sYear + "-" + sMonth + "-" + sDate;
form.ntceEnddeYYYMMDD.value = year + "-" + month + "-" + date;
}
function fnCheckAll(){
var checkField = document.listForm.checkField;
if(document.listForm.checkAll.checked) {
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
checkField[i].checked = true;
}
} else {
checkField.checked = true;
}
}
} else {
if(checkField) {
if(checkField.length > 1) {
for(var j=0; j < checkField.length; j++) {
checkField[j].checked = false;
}
} else {
checkField.checked = false;
}
}
}
}
function fnMsgHolidayDel(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
if(checkedIds.length > 0) {
var msg = "공휴일 정보를 삭제하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/let/mjo/holiday/deleteHolidayList.do'/>";
document.listForm.submit();
}
}
}
function getMsgHolidayApi(){
var searchHoliYear = $("#searchHoliYear option:selected").val();
var form = document.listForm;
form.action="/let/mjo/holiday/getHolidayApiDataAjax.do";
form.submit();
}
function fnRegistHoliday() {
document.listForm.holidayId.value = "0";
window.open("about:blank", 'popupRegistHoliday', 'width=900, height=600, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.listForm.action = "<c:url value='/uss/umt/holiday/selectHolidayModifyPopupAjax.do'/>";
document.listForm.target = "popupRegistHoliday";
document.listForm.submit();
}
function fnHolidayDetail(holidayId) {
var form = document.listForm;
form.holidayId.value = holidayId;
window.open("about:blank", 'popupHolidayDetail', 'width=900, height=600, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
form.action = "<c:url value='/uss/umt/holiday/selectHolidayDetailPopupAjax.do'/>";
form.target = "popupHolidayDetail";
form.submit();
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-15px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
</head>
<body>
<form name="listForm" action="<c:url value='/let/mjo/holiday/selectHolidayList.do'/>" method="post">
<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
<input type="hidden" name="delFlag" value="Y" />
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<input type="hidden" name="ntceBgnde" id="ntceBgnde" value="">
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<input name="checkedIdForDel" type="hidden" />
<input type="hidden" name="todayYn" id="todayYn" value="N"/>
<input type="hidden" id="holidayId" name="holidayId" value="0"/>
<div class="contWrap">
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">공휴일 관리</h2>
<p class="tType6 c_999999">공휴일 등록 관리</p>
</div>
<div class="pageCont">
<div class="listSerch">
<div class="calendar_wrap">
<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
<option value="0">전체</option>
<option value="1">1개월</option>
<option value="3">3개월</option>
<option value="6">6개월</option>
</select>
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceBgnde}" />" >
<input type="button" class="calBtn">
</a>
<span class="line">~</span>
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceEndde}" />"
>
<input type="button" class="calBtn">
</a>
<a href="#" style="margin-left: 17px;" onclick="init_date(); return false;">
<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
</a>
</div>
<br /><br />
<select name="searchCondition" class="select" title="검색조건 선택">
<option value="" <c:if test="${searchVO.searchCondition == ''}">selected="selected"</c:if>>전체</option>
<option value="1" <c:if test="${searchVO.searchCondition == '1'}">selected="selected"</c:if>>공휴일명</option>
</select>
<select name="holidayType" id="holidayType" title="공휴일 종류" onchange="fn_search();">
<option value="" <c:if test="${empty searchVO.holidayType }">selected="selected"</c:if> >공휴일 종류</option>
<option value="1" <c:if test="${searchVO.holidayType == '1'}">selected="selected"</c:if>>공휴일</option>
<option value="2" <c:if test="${searchVO.holidayType == '2'}">selected="selected"</c:if>>임시공휴일</option>
<option value="3" <c:if test="${searchVO.holidayType == '3'}">selected="selected"</c:if>>기타</option>
</select>
<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${searchVO.searchKeyword}'/>" size="15" title="검색" maxlength="100" />
<input type="button" class="btnType1" value="검색" onclick="fn_search(); return false;">
</div>
<div class="listTop">
<p class="tType5">
총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건
<c:if test="${todayYn eq 'Y' }">
(예약발송 : <fmt:formatNumber value="${msgGroupCntSum}" pattern="#,###" />건)
</c:if>
</p>
<div class="rightWrap">
<select name="searchHoliYear" id="searchHoliYear" class="select" title="공휴일 연도">
<option value='2024' >2024 년</option>
<option value='2025' >2025 년</option>
<option value='2026' >2026 년</option>
</select>
<input type="button" style="cursor: pointer;" onclick="getMsgHolidayApi();" value="공휴일 불러오기">
<!-- <input type="button" class="printBtn"> -->
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);">
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
</select>
</div>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 5%">
<col style="width: 5%">
<col style="width: auto;">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="fnCheckAll();" /><label for="checkAll"></label></th>
<th>번호<input type="button" class="sort sortBtn" id="sort_holidayId"></th>
<th>공휴일명<input type="button" class="sort sortBtn" id="sort_holidayNm"></th>
<th>휴일일자<input type="button" class="sort sortBtn" id="sort_holidayDate"></th>
<th>휴일종류<input type="button" class="sort sortBtn" id="sort_holidayType"></th>
<th>등록일자<input type="button" class="sort sortBtn" id="sort_frstRegistPnttm"></th>
<th>등록자<input type="button" class="sort sortBtn" id="sort_frstRegisterId"></th>
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr>
<td>
<input name="checkField" id="<c:out value="${result.holidayId}}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox"/><label for="<c:out value="${result.holidayId}"/>"></label>
<input name="checkId" type="hidden" class="${result.holidayId}" value="<c:out value='${result.holidayId}'/>"/>
</td>
<td>
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
<c:if test="${searchVO.searchSortOrd eq 'asc' }">
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td>
<a href="#" onclick="javascript:fnHolidayDetail('<c:out value="${result.holidayId}"/>'); return false;">
<c:out value="${result.holidayNm}"/>
</a>
</td>
<td>
<c:out value="${result.holidayDate}"/>
</td>
<td>
<c:choose>
<c:when test="${result.holidayType eq '1'}">
법정 공휴일
</c:when>
<c:when test="${result.holidayType eq '2'}">
임시 공휴일
</c:when>
<c:otherwise>
기타
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${result.frstRegistPnttm}"/>
</td>
<td>
<c:out value="${result.frstRegisterId}"/>
</td>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btnWrap" style="margin-bottom: 15px;">
<input type="button" class="btnType2" onclick="fnMsgHolidayDel(); return false;" value="삭제">
<input type="button" class="btnType1" onclick="fnRegistHoliday(); return false;" value="등록">
</div>
<!-- 페이지 네비게이션 시작 -->
<c:if test="${!empty resultList}">
<div class="page">
<ul class="inline">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</ul>
</div>
</c:if>
<!-- //페이지 네비게이션 끝 -->
</div>
</div>
</form>
</body>
</html>

View File

@ -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");
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>스미싱의심 알림 설정 관리</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="/pb/css/reset.css">
<link rel="stylesheet" href="/pb/css/common.css">
<link rel="stylesheet" href="/pb/css/content.css">
<link rel="stylesheet" href="/pb/css/popup.css">
<style>
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-5px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
<script type="text/javascript" src="/pb/js/jquery-3.5.0.js"></script>
<script type="text/javascript" src="/pb/js/common.js"></script>
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/ncms_common.js' />"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserMsgDataListAjax.do'/>";
listForm.submit();
}
function fnCheckAll(){
var checkField = document.listForm.checkField;
if(document.listForm.checkAll.checked) {
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
checkField[i].checked = true;
}
} else {
checkField.checked = true;
}
}
} else {
if(checkField) {
if(checkField.length > 1) {
for(var j=0; j < checkField.length; j++) {
checkField[j].checked = false;
}
} else {
checkField.checked = false;
}
}
}
}
/* 체크된 메인배너 목록 삭제 */
function fn_delete(){
if($("input[name=del]:checked").length == 0){
alert("선택된 항목이 없습니다.");
return;
}
if (confirm("해당 문자를 삭제하시겠습니까?")){
frm = document.listForm;
frm.action = "<c:url value='/uss/ion/msg/SendMsgDelete.do' />";
frm.submit();
}
}
/* 수정 화면*/
function fn_modify(msgId){
var frm = document.modiForm ;
frm.msgId.value = msgId ;
frm.submit();
}
/* 수정 화면*/
function fn_detail_list(msgGroupId){
var frm = document.modiForm ;
frm.msgGroupId.value = msgGroupId ;
frm.submit();
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
$('#searchKeyword').val('');
$('#sendKind').val('').prop("selected",true);
$('#searchCondition').val('').prop("selected",true);
}
//엑셀 다운로드
function sendMsgExcelDownload(){
var frm = document.listForm;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
var ntceBgnde = $('#ntceBgndeYYYMMDD').val();
var ntceEndde = $('#ntceEnddeYYYMMDD').val();
frm.ntceBgnde.value = ntceBgnde;
frm.ntceEndde.value = ntceEndde;
frm.method = "post";
frm.action = "<c:url value='/uss/ion/msg/selectMberSendMsgExcelDownload.do'/>";
frm.submit();
}
function fn_updateMberSttus(msgGroupId){
var form = document.listForm;
if(confirm("이용자 정지를 진행하시겠습니까?")){
var data = new FormData(form);
url = "/uss/umt/user/updateMberSttusBlockAjax.do";
data.append("msgGroupId", msgGroupId);
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if("fail"==returnData.result){
alert(returnData.message);
return false;
}else if("loginFail"==returnData.result){
alert(returnData.message);
return false;
}else{ //문자발송 성공시 처리
alert(returnData.message);
opener.parent.location.reload();
location.reload();
}
} else if(status== 'fail'){
alert("이용자 상태 변경에 실패하였습니다.");
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("이용자 상태 변경에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function msgDetailView(obj, msgGroupId, index){
var form = document.modiForm;
form.msgGroupId.value = msgGroupId;
var sendData = $(form).serializeArray();
$(".msgSentDetailPopLoad"+index).load("/uss/umt/user/selectMberMsgDetailAjax.do", sendData ,function(response, status, xhr){
var target=$(obj);
$('.layer_msg_detail').hide();
target.next('.layer_msg_wrap').find('.layer_msg_detail').show();
});
}
function fnAlimSetReg(){
var form = document.listForm;
var startHour = form.startHour.value;
var startMin = form.startMin.value;
var endHour = form.endHour.value;
var endMin = form.endMin.value;
var alarmType = form.alarmType.value;
var alarmStart = startHour + ":" + startMin;
var alarmEnd = endHour + ":" + endMin;
if(confirm("알람설정을 등록하시겠습니까?")){
url = "/let/mjo/holiday/alarmSet/insertAlarmSettingDataAjax.do";
var jsonParam = {"alarmStart" : alarmStart, "alarmEnd" : alarmEnd, "alarmType" : alarmType};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
location.reload();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnUpdateAlarmUse(alarmId, useYn){
var msg = "";
if(useYn == "Y"){
msg = "사용으로 변경하시겠습니까?";
}else{
msg = "미사용으로 변경하시겠습니까?";
}
if(confirm(msg)){
url = "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do";
var jsonParam = {"alarmId" : alarmId, "useYn" : useYn};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
location.reload();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnGoHoliday(){
opener.location.href="<c:out value='/let/mjo/holiday/selectHolidayList.do'/>";
self.close();
}
function fnMsgAlimDel(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
console.log("+++ checkedIds ::: "+checkedIds);
if(checkedIds.length > 0) {
var msg = "스미싱 알림 일정을 삭제하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value = checkedIds;
/* document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/let/mjo/holiday/alarmSet/deleteAlarmSettingDataAjax.do'/>";
document.listForm.submit(); */
var data = new FormData(document.listForm);
url = "/let/mjo/holiday/alarmSet/deleteAlarmSettingDataAjax.do";
console.log(document.listForm.checkedIdForDel.value)
var jsonParam = {"alarmIds" : document.listForm.checkedIdForDel.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
location.reload();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("알림 일정 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
}
function fnClose(){
window.close();
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
.tableWrapTotal {margin:0 0 20px;}
.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
.listSerch .select {height:42px;vertical-align:top;}
.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
/* .layer_msg_wrap {position:relative;} */
.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:absolute;left:50%;top:600px;width:400px;max-height:600px;background:#eee;transform:translateX(-50%);z-index:1;}
.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
@media screen and (max-width:916px){
.pageCont .tableWrap table thead tr th {padding:15px 0;}
}
</style>
</head>
<body>
<div class="loading_layer">
<div class="loading_container">
<div class="bar"></div>
<div class="text">Loading</div>
</div>
</div>
<form id="listForm" name="listForm" method="post">
<input name="pageIndex" type="hidden" value="<c:out value='${msgAlarmSetVO.pageIndex}'/>"/>
<input name="checkedIdForDel" type="hidden" />
<div class="contWrap" style="position:relative;left:inherit;top:inherit;min-height:auto;padding:40px;">
<div class="pageTitle">
<!-- <div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div> -->
<h2 class="titType1 c_222222 fwBold">야간 스미싱의심 알림 일정 관리</h2>
<!-- <p class="tType6 c_999999">문자전송리스트 현황을 파악할 수 있습니다.</p> -->
</div>
<div class="pageCont">
<div class="listSerch">
<select id="startHour" name="startHour" class="select" title="시작시간">
<c:forEach var="hour" begin="0" end="23" step="1" varStatus="status">
<c:choose>
<c:when test="${hour < 10}">
<option value="0${hour}">0${hour}시</option>
</c:when>
<c:otherwise>
<option value="${hour}">${hour}시</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
<select id="startMin" name="startMin" class="select" title="시작시간분">
<c:forEach var="min" begin="0" end="59" step="1">
<c:choose>
<c:when test="${min < 10}">
<option value="0${min}">0${min}분</option>
</c:when>
<c:otherwise>
<option value="${min}">${min}분</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
부터
<select id="endHour" name="endHour" class="select" title="종료시간">
<c:forEach var="hour" begin="0" end="23" step="1" varStatus="status">
<c:choose>
<c:when test="${hour < 10}">
<option value="0${hour}">0${hour}시</option>
</c:when>
<c:otherwise>
<option value="${hour}">${hour}시</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
<select id="endMin" name="endMin" class="select" title="종료시간분">
<c:forEach var="min" begin="0" end="59" step="1">
<c:choose>
<c:when test="${min < 10}">
<option value="0${min}">0${min}분</option>
</c:when>
<c:otherwise>
<option value="${min}">${min}분</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
까지
<select id="alarmType" name="alarmType" class="select" title="알람종류">
<option value="W">평일 (월~금)</option>
<option value="E">주말 (토/일)</option>
<option value="H">공휴일</option>
</select>
<input type="button" class="btnType1" onclick="javascript:fnAlimSetReg();" value="+ 추가" style="margin-left:20px;">
</div>
<div class="listTop">
<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
<div class="rightWrap">
<input type="button" class="btnType2" onclick="javascript:fnGoHoliday();" value="공휴일 관리">
</div>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 15%">
<col style="width: 15%">
<col style="width: 15%">
<col style="width: 15%">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="fnCheckAll();" /><label for="checkAll"></label></th>
<th>번호</th>
<th>구분</th>
<th>시작시간</th>
<th>종료시간</th>
<th colspan="2">사용여부</th>
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr>
<td>
<input name="checkField" id="<c:out value="${result.alarmId}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox"/><label for="<c:out value="${result.alarmId}"/>"></label>
<input name="checkId" type="hidden" class="${result.alarmId}" value="<c:out value='${result.alarmId}'/>"/>
</td>
<td>
<c:if test="${msgAlarmSetVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
<c:if test="${msgAlarmSetVO.searchSortOrd eq 'asc' }">
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td>
<c:choose>
<c:when test="${result.alarmType eq 'W'}">
평일
</c:when>
<c:when test="${result.alarmType eq 'E'}">
주말
</c:when>
<c:otherwise>
공휴일
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${result.alarmStart}"/>
</td>
<td>
<c:out value="${result.alarmEnd}"/>
</td>
<td>
<c:choose>
<c:when test="${result.useYn eq 'Y'}">
사용 중
</c:when>
<c:otherwise>
<!-- 사용으로 변경 -->
<input type="button" class="btnType1" onclick="javascript:fnUpdateAlarmUse('<c:out value="${result.alarmId}"/>','Y');" value="사용" style="width:55px;"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${result.useYn eq 'Y'}">
<!-- 미사용으로 변경 -->
<input type="button" class="btnType1" onclick="javascript:fnUpdateAlarmUse('<c:out value="${result.alarmId}"/>','N');" value="미사용"/>
</c:when>
<c:otherwise>
미사용
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btnWrap">
<input type="button" class="btnType2" onclick="fnMsgAlimDel(); return false;" value="삭제">
<input type="button" class="btnType1" onclick="fnClose(); return false;" value="닫기">
</div>
<!-- 페이지 네비게이션 시작 -->
<c:if test="${!empty resultList}">
<div class="page">
<ul class="inline">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</ul>
</div>
</c:if>
<!-- //페이지 네비게이션 끝 -->
</div>
</div>
</form>
</body>
</html>

View File

@ -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");
%>
<!DOCTYPE html>
<html lang="kr">
<head>
<title>공휴일 등록</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="stylesheet" href="/pb/css/reset.css">
<link rel="stylesheet" href="/pb/css/common.css">
<link rel="stylesheet" href="/pb/css/content.css">
<link rel="stylesheet" href="/pb/css/popup.css">
<style>
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-5px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
<script type="text/javascript" src="/pb/js/jquery-3.5.0.js"></script>
<script type="text/javascript" src="/pb/js/common.js"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
if( $('#ntceBgndeYYYMMDD').val() != '' && $('#ntceEnddeYYYMMDD').val() != '' ){
var iChkBeginDe = Number($('#ntceBgndeYYYMMDD').val().replaceAll("-", ""));
var iChkEndDe = Number($('#ntceEnddeYYYMMDD').val().replaceAll("-", ""));
if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
alert("검색시작일자는 종료일자 보다 클수 없습니다.");
return;
}
}
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
listForm.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserMsgDataListAjax.do'/>";
listForm.submit();
}
function fnCheckAll() {
if( $("#checkAll").is(':checked') ){
$("input[name=del]").prop("checked", true);
}else{
$("input[name=del]").prop("checked", false);
}
}
/* 체크된 메인배너 목록 삭제 */
function fn_delete(){
if($("input[name=del]:checked").length == 0){
alert("선택된 항목이 없습니다.");
return;
}
if (confirm("해당 문자를 삭제하시겠습니까?")){
frm = document.listForm;
frm.action = "<c:url value='/uss/ion/msg/SendMsgDelete.do' />";
frm.submit();
}
}
/* 수정 화면*/
function fn_modify(msgId){
var frm = document.modiForm ;
frm.msgId.value = msgId ;
frm.submit();
}
/* 수정 화면*/
function fn_detail_list(msgGroupId){
var frm = document.modiForm ;
frm.msgGroupId.value = msgGroupId ;
frm.submit();
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
$('#searchKeyword').val('');
$('#sendKind').val('').prop("selected",true);
$('#searchCondition').val('').prop("selected",true);
}
//엑셀 다운로드
function sendMsgExcelDownload(){
var frm = document.listForm;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
var ntceBgnde = $('#ntceBgndeYYYMMDD').val();
var ntceEndde = $('#ntceEnddeYYYMMDD').val();
frm.ntceBgnde.value = ntceBgnde;
frm.ntceEndde.value = ntceEndde;
frm.method = "post";
frm.action = "<c:url value='/uss/ion/msg/selectMberSendMsgExcelDownload.do'/>";
frm.submit();
}
function fnHolidayReg(){
var form = document.modiForm;
if(form.holidayNm.value == ""){
alert("휴일명을 입력해 주세요.");
return false;
}
if(form.ntceBgndeYYYMMDD.value == ""){
alert("휴일 일자를 선택해 주세요.");
return false;
}
if(form.holidayType.value == ""){
alert("휴일 구분을 입력해 주세요.");
return false;
}
if(confirm("공휴일을 등록하시겠습니까?")){
var holidayDate = form.ntceBgndeYYYMMDD.value;
url = "/let/mjo/holiday/insertHolidayRegistAjax.do";
var jsonParam = {"holidayNm" : form.holidayNm.value, "holidayDate" : holidayDate, "holidayType" : form.holidayType.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
opener.location.reload();
window.close();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 정보 등록에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnHolidayUpdt(){
var form = document.modiForm;
if(form.holidayNm.value == ""){
alert("휴일명을 입력해 주세요.");
return false;
}
if(confirm("공휴일 정보를 수정하시겠습니까?")){
var holidayDate = form.ntceBgndeYYYMMDD.value;
url = "/let/mjo/holiday/updateHolidayDataAjax.do";
var jsonParam = {"holidayId" : form.holidayId.value,"holidayNm" : form.holidayNm.value, "holidayDate" : holidayDate, "holidayType" : form.holidayType.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
opener.location.reload();
window.close();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 정보 변경에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnHolidayDel(){
var form = document.modiForm;
if(confirm("공휴일 정보를 삭제하시겠습니까?")){
url = "/let/mjo/holiday/deleteHolidayDataAjax.do";
var jsonParam = {"holidayId" : form.holidayId.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
opener.location.reload();
window.close();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnClose(){
window.close();
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
.tableWrapTotal {margin:0 0 20px;}
.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
.listSerch .select {height:42px;vertical-align:top;}
.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
/* .layer_msg_wrap {position:relative;} */
.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:absolute;left:50%;top:600px;width:400px;max-height:600px;background:#eee;transform:translateX(-50%);z-index:1;}
.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
@media screen and (max-width:916px){
.pageCont .tableWrap table thead tr th {padding:15px 0;}
}
</style>
</head>
<body>
<div class="loading_layer">
<div class="loading_container">
<div class="bar"></div>
<div class="text">Loading</div>
</div>
</div>
<form id="modiForm" name="modiForm" method="post">
<input type="hidden" id="holidayId" name="holidayId" value="<c:out value='${result.holidayId}'/>"/>
<input type="hidden" name="ntceBgnde" id="ntceBgnde" value="">
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<div class="contWrap" style="position:relative;left:inherit;top:inherit;min-height:auto;padding:40px; width:900px; ">
<div class="pageTitle">
<!-- <div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div> -->
<h2 class="titType1 c_222222 fwBold">공휴일 등록</h2>
<!-- <p class="tType6 c_999999">문자전송리스트 현황을 파악할 수 있습니다.</p> -->
</div>
<div class="pageCont" style="min-height: 300px;">
<table class="tbType2">
<colgroup>
<col style="width: 20%">
<col style="width: 80%">
</colgroup>
<tbody>
<tr>
<th><span class="reqArea">휴일명</span></th>
<td colspan="3">
<input type="text" id="holidayNm" name="holidayNm" title="아이디" maxlength="30" value="<c:out value='${result.holidayNm}'/>"/>
</td>
</tr>
<tr>
<th><span class="reqArea">휴일 일자</span></th>
<td colspan="3">
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.modiForm, document.forms.modiForm.ntceBgndeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value='${result.holidayDate}'/>" >
<input type="button" class="calBtn">
</a>
</td>
</tr>
<tr>
<th><span class="reqArea">휴일 구분</span></th>
<td colspan="3">
<select id="holidayType" name="holidayType" style="min-width: 150px;">
<option value="1" <c:if test="${result.holidayType eq '1'}">selected</c:if> >법정 공휴일</option>
<option value="2" <c:if test="${result.holidayType eq '2'}">selected</c:if>>임시 공휴일</option>
<option value="3" <c:if test="${result.holidayType eq '3'}">selected</c:if>>기타</option>
</select>
</td>
</tr>
</tbody>
</table>
<div class="btnWrap" style="margin-bottom: 15px;">
<input type="button" class="btnType1" onclick="fnClose(); return false;" value="닫기">
<c:choose>
<c:when test="${result.holidayId > 0}">
<input type="button" class="btnType2" onclick="fnHolidayDel(); return false;" value="삭제">
<input type="button" class="btnType1" onclick="fnHolidayUpdt(); return false;" value="수정">
</c:when>
<c:otherwise>
<input type="button" class="btnType1" onclick="fnHolidayReg(); return false;" value="등록">
</c:otherwise>
</c:choose>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@ -10,6 +10,31 @@
<title>관리자 알림 관리</title>
<script type="text/javascript">
$(document).ready(function(){
var holiSmishingNoti = $('#holiSmishingNoti').val();
if(holiSmishingNoti == "Y"){
$('.btnTypeAlim').hide();
}
$('#holiSmishingNoti').change(function(){
if($('#holiSmishingNoti').val() == "Y"){
$('.btnTypeAlim').hide();
}else{
$('.btnTypeAlim').show();
}
})
});
function doUpdate() {
var form = document.form;
form.action = "/sym/site/updateAdminNoti.do";
@ -20,7 +45,20 @@
form.submit();
}
function fnAlimSetPopup(){
window.open("about:blank", 'popupAlimSetting', 'width=1250, height=800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.form.action = "<c:url value='/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do'/>";
document.form.target = "popupAlimSetting";
document.form.submit();
}
</script>
<style>
.pageCont .btnTypeAlim{background-color: #456ded !important;}
.btnTypeAlim{font-size: 1em;height: 40px;vertical-align: middle;color: #fff;background-color: #aaa;border: none;border-radius: 3px;cursor: pointer;padding: 0 10px}
</style>
</head>
<body>
<div class="contWrap">
@ -74,6 +112,17 @@
</select>
</td>
</tr>
<tr>
<th>스미싱의심 알림 여부</th>
<td>
<select name="holiSmishingNoti" id="holiSmishingNoti">
<option value="Y" <c:if test="${joinSettingVO.holiSmishingNoti == 'Y'}">selected</c:if> >활성화</option>
<option value="N" <c:if test="${joinSettingVO.holiSmishingNoti == 'N'}">selected</c:if> >비활성화</option>
</select>
<input type="button" class="btnTypeAlim" value="일정관리" onclick="javascript:fnAlimSetPopup(); return false;" style="margin-left:50px;">
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -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");
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>알림 미처리 문자예약 조회</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var toDay = getToday();
//if (toDay == $('#ntceBgndeYYYMMDD').val() && toDay == $('#ntceEnddeYYYMMDD').val()) {
if ($('#ntceBgndeYYYMMDD').val() != "" && $('#ntceEnddeYYYMMDD').val() != "") {
// 오늘 검색
$("#todayYn").val("Y");
}
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ; //검색날짜 세팅
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
listForm.submit();
}
function setToday(){
var toDay = getToday();
$('#ntceBgndeYYYMMDD').val(toDay);
$('#ntceEnddeYYYMMDD').val(toDay);
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
// 오늘 검색
$("#todayYn").val("Y");
linkPage(1);
}
function getToday() {
// new Date를 통해서 날짜 객체를 생성. 여기서 년, 월, 일 정보만 필요.
const nowDate = new Date();
var year = nowDate.getFullYear(); // 년
var month = ('0' + (nowDate.getMonth() + 1)).slice(-2); // 월
var day = ('0' + nowDate.getDate()).slice(-2); // 일
// yyyy-mm-dd 형식으로 todate에 담기.
var todate = year + '-' + month + '-' + day;
return todate;
}
function fnCheckAll() {
if( $("#checkAll").is(':checked') ){
$("input[name=del]").prop("checked", true);
}else{
$("input[name=del]").prop("checked", false);
}
}
/* 체크된 메인배너 목록 삭제 */
function fn_delete(){
if($("input[name=del]:checked").length == 0){
alert("선택된 항목이 없습니다.");
return;
}
if (confirm("해당 문자를 삭제하시겠습니까?")){
frm = document.listForm;
frm.action = "<c:url value='/uss/ion/msg/SendMsgDelete.do' />";
frm.submit();
}
}
/* 수정 화면*/
function fn_modify(msgId){
var frm = document.modiForm ;
frm.msgId.value = msgId ;
frm.submit();
}
/* 수정 화면*/
function fn_detail_list(msgGroupId){
var frm = document.modiForm ;
frm.msgGroupId.value = msgGroupId ;
frm.submit();
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
}
//기간선택 select
function fnSetCalMonth(val) {
var form = document.listForm;
var today = new Date();
var year = today.getFullYear();
var month = ("0"+(today.getMonth()+1)).slice(-2);
var date = ("0"+today.getDate()).slice(-2);
var sDate = new Date(today.setMonth(today.getMonth() - val));
var sYear = sDate.getFullYear();
var sMonth = ("0"+(sDate.getMonth()+1)).slice(-2);
var sDate = ("0"+sDate.getDate()).slice(-2);
form.ntceBgndeYYYMMDD.value = sYear + "-" + sMonth + "-" + sDate;
form.ntceEnddeYYYMMDD.value = year + "-" + month + "-" + date;
}
function fnSelectMber(mberId) {
document.modiForm2.mberId.value = mberId;
window.open("about:blank", 'popupSelectMber', 'width=900, height=1800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.modiForm2.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserView.do'/>";
document.modiForm2.target = "popupSelectMber";
document.modiForm2.submit();
}
function fnCheckAll(){
var checkField = document.listForm.checkField;
if(document.listForm.checkAll.checked) {
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
checkField[i].checked = true;
}
} else {
checkField.checked = true;
}
}
} else {
if(checkField) {
if(checkField.length > 1) {
for(var j=0; j < checkField.length; j++) {
checkField[j].checked = false;
}
} else {
checkField.checked = false;
}
}
}
}
// 법인폰 알림 업데이트
function fnSmsNotiUpdate(flag) {
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].className);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.className;
}
}
}
if(checkedIds.length > 0) {
var msg = "";
if(flag == 'on') {
document.listForm.adminSmsNoticeYn.value='Y';
msg = "선택하신 사용자의 법인폰 알림을 On 하시겠습니까?";
} else {
document.listForm.adminSmsNoticeYn.value='N';
msg = "선택하신 사용자의 법인폰 알림을 Off 하시겠습니까?";
}
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/umt/user/EgovUsersSmsNoticeUpdate3.do'/>";
document.listForm.submit();
}
}
}
//스미싱의심 온/오프
function fnSmishingUpdate(flag) {
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].className);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.className;
}
}
}
if(checkedIds.length > 0) {
var msg = "";
if(flag == 'on') {
document.listForm.smishingYn.value='Y';
msg = "선택하신 사용자의 스미싱의심을 On 하시겠습니까?";
} else {
document.listForm.smishingYn.value='N';
msg = "선택하신 사용자의 스미싱의심을 Off 하시겠습니까?";
}
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/umt/user/EgovUsersSmishingUpdate.do'/>";
document.listForm.submit();
}
}
}
function fnUserMsgUpdt(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
if(checkedIds.length > 0) {
var msg = "사용자 이용정지 및 예약문자 취소를 진행하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/ion/msg/updateUserMsgData.do'/>";
document.listForm.submit();
}
}
}
function fnMsgStatusUpdt(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
if(checkedIds.length > 0) {
var msg = "이용자정지, 예약취소 없이 상태만 변경됩니다. 완료처리를 진행하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/ion/msg/updateMsgStatusData.do'/>";
document.listForm.submit();
}
}
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-15px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
</head>
<body>
<form name="listForm" action="<c:url value='/uss/ion/msg/selectHoliMsgList.do'/>" method="post">
<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
<input type="hidden" name="delFlag" value="Y" />
<input type="hidden" name="selectedId" />
<input type="hidden" name="pageType" />
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<input type="hidden" name="ntceBgnde" id="ntceBgnde" value="">
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<input type="hidden" name="reserveYn" id="reserveYn" value="Y">
<input type="hidden" name="adminSmsNoticeYn" value=""/>
<input name="checkedIdForDel" type="hidden" />
<input type="hidden" name="todayYn" id="todayYn" value="N"/>
<div class="contWrap">
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">알림 미처리 문자 조회</h2>
<p class="tType6 c_999999">스미싱의심 알림 비활성화로 인해 발송된 문자리스트 현황을 파악할 수 있습니다.</p>
</div>
<div class="pageCont">
<div class="listSerch">
<div class="calendar_wrap">
<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
<option value="0">전체</option>
<option value="1">1개월</option>
<option value="3">3개월</option>
<option value="6">6개월</option>
</select>
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceBgnde}" />" >
<input type="button" class="calBtn">
</a>
<span class="line">~</span>
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceEndde}" />"
>
<input type="button" class="calBtn">
</a>
<a href="#" style="margin-left: 17px;" onclick="init_date(); return false;">
<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
</a>
</div>
<br /><br />
<select name="searchCondition" class="select" title="검색조건 선택">
<option value="" <c:if test="${searchVO.searchCondition == ''}">selected="selected"</c:if>>ID/내용/발신번호(전체)</option>
<option value="1" <c:if test="${searchVO.searchCondition == '1'}">selected="selected"</c:if>>사용자ID</option>
<option value="2" <c:if test="${searchVO.searchCondition == '2'}">selected="selected"</c:if>>발신번호</option>
<option value="3" <c:if test="${searchVO.searchCondition == '3'}">selected="selected"</c:if>>전송내용</option>
</select>
<%-- <ec:select codeId="ITN019" name="searchCondition2" id="searchCondition2" css="class='select'" selectedValue="${searchVO.searchCondition2}"
defaultValue="" defaultText="전송사(전체)" /> --%>
<select name="searchCondition3" class="select" title="메세지타입(전체)" onchange="fn_search();">
<option value="" <c:if test="${searchVO.searchCondition3 == ''}">selected="selected"</c:if>>메세지타입(전체)</option>
<option value="1" <c:if test="${searchVO.searchCondition3 == '1'}">selected="selected"</c:if>>단문</option>
<option value="2" <c:if test="${searchVO.searchCondition3 == '2'}">selected="selected"</c:if>>장문</option>
<option value="3" <c:if test="${searchVO.searchCondition3 == '3'}">selected="selected"</c:if>>그림</option>
<option value="8" <c:if test="${searchVO.searchCondition3 == '8'}">selected="selected"</c:if>>알림톡</option>
<option value="9" <c:if test="${searchVO.searchCondition3 == '9'}">selected="selected"</c:if>>친구톡</option>
</select>
<select name="cancelResultYn" id="cancelResultYn" title="처리상태" onchange="fn_search();">
<option value="" <c:if test="${empty searchVO.cancelResultYn }">selected="selected"</c:if> >처리상태</option>
<option value="Y" <c:if test="${searchVO.cancelResultYn == 'Y'}">selected="selected"</c:if>>처리완료</option>
<option value="N" <c:if test="${searchVO.cancelResultYn == 'N'}">selected="selected"</c:if>>미처리</option>
</select>
<select id="sendKind" name="sendKind" onchange="fn_search();">
<option value=""<c:if test="${searchVO.sendKind eq ''}">selected="selected"</c:if>>발송방식 전체</option>
<option value="H"<c:if test="${searchVO.sendKind eq 'H'}">selected="selected"</c:if>>WEB</option>
<option value="A"<c:if test="${searchVO.sendKind eq 'A'}">selected="selected"</c:if>>API</option>
</select>
<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${searchVO.searchKeyword}'/>" size="15" title="검색" maxlength="100" />
<input type="button" class="btnType1" value="검색" onclick="fn_search(); return false;">
</div>
<div class="listTop">
<p class="tType5">
총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건
<c:if test="${todayYn eq 'Y' }">
(예약발송 : <fmt:formatNumber value="${msgGroupCntSum}" pattern="#,###" />건)
</c:if>
</p>
<div class="rightWrap">
<input type="button" style="cursor: pointer;" onclick="setToday();" value="Today">
<!-- <input type="button" class="printBtn"> -->
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);">
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
</select>
</div>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 3%">
<col style="width: 5%">
<col style="width: 15%">
<col style="width: 5%">
<col style="width: 7%">
<col style="width: 8%">
<col style="width: 10%">
<col style="width: 8%">
<col style="width: auto;">
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 10%">
<col style="width: 5%">
<%--
<col style="width: 13%">
--%>
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="fnCheckAll();" /><label for="checkAll"></label></th>
<th>번호<input type="button" class="sort sortBtn" id="sort_msgGroupId"></th>
<th>아이디<input type="button" class="sort sortBtn" id="sort_userId"></th>
<th>회원상태<input type="button" class="sort sortBtn" id="sort_adminSmsNoticeYn"></th>
<th>발신번호<input type="button" class="sort sortBtn" id="sort_callFrom"></th>
<th>발송건수<input type="button" class="sort sortBtn" id="sort_msgGroupCnt"></th>
<th>요청시간<input type="button" class="sort sortBtn" id="sort_reqDate"></th>
<th>예약여부<input type="button" class="sort sortBtn" id="sort_reserveYn"></th>
<th>내용<input type="button" class="sort sortBtn" id="sort_smsTxt"></th>
<th>타입<input type="button" class="sort sortBtn" id="sort_msgTypeTxt"></th>
<th>방식<input type="button" class="sort sortBtn" id="sort_sendKind"></th>
<th>등록일자<input type="button" class="sort sortBtn" id="sort_frstRegistPnttm"></th>
<th>처리상태<input type="button" class="sort sortBtn" id="sort_cancelResultYn"></th>
<!-- <th>예약상태<input type="button" class="sort sortBtn" id="sort_conectMthdTxt"></th> -->
<!--
<th>취소일자<input type="button" class="sort sortBtn" id="sort_agentCodeTxt"></th>
-->
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr>
<td>
<input name="checkField" id="<c:out value="${result.userId}_${status.count}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox"/><label for="<c:out value="${result.userId}"/>"></label>
<input name="checkId" type="hidden" class="${result.userId}" value="<c:out value='${result.userId}'/>§<c:out value='${result.msgGroupId}'/>§<c:out value='${result.reserveYn}'/>"/>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
<c:if test="${searchVO.searchSortOrd eq 'asc' }">
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<a href="#" onclick="javascript:fnSelectMber('<c:out value="${result.userId}"/>'); return false;">
<c:out value="${result.userId}"/>
(<c:out value="${result.userNm}"/>)
</a>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.mberSttus eq 'Y'}">
일반
</c:when>
<c:when test="${result.mberSttus eq 'N'}">
탈퇴
</c:when>
<c:when test="${result.mberSttus eq 'B'}">
이용정지
</c:when>
<c:otherwise>
기타(${result.mberSttus})
</c:otherwise>
</c:choose>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<a href="#" onclick="fn_detail_list('${result.msgGroupId}'); return false;">
<c:out value="${result.callFrom}"/>
</a>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<fmt:parseDate value="${result.reqDate}" var="reqDateValue" pattern="yyyy-MM-dd HH:mm"/>
<fmt:parseDate value="${result.nowDate}" var="nowDateValue" pattern="yyyy-MM-dd HH:mm"/>
<c:choose>
<c:when test="${nowDateValue < reqDateValue}">
<c:out value="${result.msgGroupCnt}"/>
</c:when>
<c:otherwise>
<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
</c:otherwise>
</c:choose>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<c:out value="${result.reqDate}"/>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.reserveYn eq 'Y'}">
예약
<%-- <c:if test="${result.reserveCYn eq 'Y'}">
(취소)
</c:if> --%>
</c:when>
<c:otherwise>
즉시
</c:otherwise>
</c:choose>
</td>
<td class="sms_detail left" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF;"</c:if>>
<c:choose>
<c:when test="${empty result.smsTxt}">
<c:choose>
<c:when test="${result.msgType eq '4'}">
내용없음
</c:when>
<c:otherwise>
그림문자
</c:otherwise>
</c:choose>
<div class="sms_detail_hover">
<c:if test="${not empty fn:split(result.atchFiles, '^')[0]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[0]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[1]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[1]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[2]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[2]}&fileSn=0" style="width: 120px;">
</c:if>
</div>
</c:when>
<c:otherwise>
<p><c:out value="${result.smsTxt}"/></p>
<div class="sms_detail_hover">
<c:if test="${not empty fn:split(result.atchFiles, '^')[0]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[0]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[1]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[1]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[2]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[2]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[0]}">
<br />
</c:if>
<c:out value="${fn:replace(fn:replace(result.smsTxt, newLineChar, '<br/>'), newLineChar2, '<br/>')}" escapeXml="false"/>
</div>
</c:otherwise>
</c:choose>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.msgTypeTxt eq 'SMS전송'}">
SMS
</c:when>
<c:when test="${result.msgTypeTxt eq 'MMS전송' && result.fileCnt eq '0'}">
LMS
</c:when>
<c:when test="${result.msgTypeTxt eq 'MMS전송' && result.fileCnt ne '0'}">
MMS
</c:when>
<c:when test="${result.msgTypeTxt eq '알림톡전송'}">
알림톡
</c:when>
<c:otherwise>
<c:out value="${result.msgTypeTxt}"/>
</c:otherwise>
</c:choose>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.sendKind eq 'A'}">
API
</c:when>
<c:when test="${result.sendKind eq 'H'}">
WEB
</c:when>
</c:choose>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:out value="${result.frstRegistPnttm}"/>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.cancelResultYn eq 'Y'}">
처리완료
</c:when>
<c:when test="${result.cancelResultYn eq 'B'}">
이용정지
</c:when>
<c:when test="${result.cancelResultYn eq 'R'}">
예약취소
</c:when>
<c:otherwise>
미처리
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="13"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btnWrap" style="margin-bottom: 15px;">
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnUserMsgUpdt(); return false;" value="사용자 이용정지 및 예약문자 취소">
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnMsgStatusUpdt(); return false;" value="완료 처리">
</div>
<!-- 페이지 네비게이션 시작 -->
<c:if test="${!empty resultList}">
<div class="page">
<ul class="inline">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</ul>
</div>
</c:if>
<!-- //페이지 네비게이션 끝 -->
</div>
</div>
</form>
<form name="modiForm" method="get" action="<c:url value='/uss/ion/msg/SendMsgDetailList.do'/>" >
<input name="msgId" type="hidden" />
<input name="msgGroupId" type="hidden" />
<input name="detailType" type="hidden" value="sendHoliMsgList" />
</form>
<form name="modiForm2" id="modiForm2" method="post">
<input name="mberId" type="hidden" />
</form>
</body>
</html>

View File

@ -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();
}
</script>

View File

@ -542,7 +542,13 @@ function setRejectAreaHide() {
/**
* Asynchronously downloads PDF.
*/
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfjsLib.getDocument(
{
url: url,
cMapUrl: '/js/pdfjs-3.11.174/web/cmaps/',
cMapPacked: true
}
).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
document.getElementById('page_count').textContent = pdfDoc.numPages;