diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java b/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java index ba5594d1..dc4d986a 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java @@ -40,5 +40,7 @@ public interface MjonKakaoATService { //회원 정보 알림톡 상세정보 리스트 팝업 통계 정보 KakaoVO selectMjonKakaoStatisticATData(KakaoVO searchVO) throws Exception; + //알림톡 지연문자 리스트 조회 + List selectKakaoATDelaySentList(String userId) throws Exception; } diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java index 9c7f9ca9..95a59740 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java @@ -88,4 +88,8 @@ public class MjonKakaoATDAO extends EgovAbstractDAO { return result; } + @SuppressWarnings("unchecked") + public List selectKakaoATDelaySentList(String userId) throws Exception{ + return (List)list("mjonKakaoATDAO.selectKakaoATDelaySentList", userId); + } } diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java index 7b28abdc..fb8b4cbb 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java @@ -184,4 +184,9 @@ public class MjonKakaoATServiceImpl extends EgovAbstractServiceImpl implements M return result; } + + @Override + public List selectKakaoATDelaySentList(String userId) throws Exception { + return mjonKakaoATDAO.selectKakaoATDelaySentList(userId); + } } diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java index ea28c920..78c3b9ed 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java @@ -157,6 +157,32 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements kakaoSandInfo.setReqDate(sdFormat.format(now)); } + + if(kakaoVO.getAtSmishingYn().equals("Y")) { + String sandDate = ""; + + if(kakaoVO.getDivideChk().equals("Y")) { + //분할 문자 예약 시간 입력해주기 + sandDate = dividDayList.get(i); + }else { + //예약 시간 입력해주기 + sandDate = kakaoVO.getReqDate(); + } + + SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + Date date = sdFormat.parse(sandDate); + + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(date); // 시간 설정 + cal1.add(Calendar.MINUTE, 30); // 30분 연산 + + String reqDate = sdFormat.format(cal1.getTime()); + + System.out.println("@@@@@@@@@@@@@@ reqDate : "+reqDate); + kakaoVO.setReqDate(reqDate); + kakaoSandInfo.setReqDate(reqDate); + } + /**전송시간 설정 (끝)------------------------------------------------*/ /**카카오 전송 데이터 추가*/ @@ -231,6 +257,8 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements mjonMsgVO.setBefCash(kakaoVO.getBefCash()); mjonMsgVO.setBefPoint(kakaoVO.getBefPoint()); mjonMsgVO.setKakaoSubMagOrgnlTxt(kakaoVO.getKakaoSubMagOrgnlTxt()); + mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn()); + if(kakaoVO.getBizJsonYn().equals("Y")) { mjonMsgVO.setFileCnt("1"); diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java index 25b2b4d3..4e7697f1 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java @@ -49,11 +49,16 @@ import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiProfileCategory; import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate; import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; +import itn.let.mjo.mjocommon.MjonCommon; +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.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; +import itn.let.uss.umt.service.UserManageVO; /** * @@ -86,11 +91,19 @@ public class KakaoAlimTalkSendController { @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; + + /** userManageService */ + @Resource(name = "userManageService") + private EgovUserManageService userManageService; /** EgovMessageSource */ @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; + /** 사이트 설정 */ + @Resource(name = "egovSiteManagerService") + EgovSiteManagerService egovSiteManagerService; + @Autowired KakaoApiProfile kakaoApiProfile; @@ -154,6 +167,7 @@ public class KakaoAlimTalkSendController { mberManageVO = mjonMsgDataService.selectMberManageInfo(userId); + model.addAttribute("atSmishingYn", mberManageVO.getAtSmishingYn()); } //3.사용자 개인단가 정보가 0이 아니면 개인단가 사용, 없으면 시스템 기본 단가 사용 @@ -479,10 +493,9 @@ public class KakaoAlimTalkSendController { int resultSts = 0; //발송결과 건수 int resultBlockSts = 0; //수신거부 등록번호로 발송을 안한 건수 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); try { - - LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId == "") { modelAndView.addObject("message", "로그인 후 이용이 가능합니다."); @@ -491,7 +504,9 @@ public class KakaoAlimTalkSendController { }else { /** 카카오톡 전송 기본 설정 -------------------------------------------*/ kakaoVO.setSendType("AT"); + kakaoVO.setMsgType("8"); kakaoVO.setUserId(userId); + } /** 전송금액 설정 --------------------------------------------------*/ @@ -709,6 +724,43 @@ public class KakaoAlimTalkSendController { modelAndView.addObject("result", "success"); modelAndView.addObject("resultSts", resultSts); + +/** 카카오톡 발송 내용 법인폰, 알림톡 결과 처리 --------------------------------------------------*/ + try { + String adminSmsNoticeYn = "Y"; + String spamStatus = kakaoVO.getAtSmishingYn(); // 스미싱 의심으로 체크된 고객 정보 + + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberId(userId); + + if(!userId.equals("")) { + userManageVO = userManageService.selectAdminSmsNoticeYn(userManageVO); + adminSmsNoticeYn = userManageVO.getAdminSmsNoticeYn(); + } + + //법인폰 알림 온 이거나 스미싱의심 문자인 경우 법인폰으로 발송 + if(adminSmsNoticeYn.equals("Y") || spamStatus.equals("Y")) { + + if(spamStatus.equals("Y")) { + kakaoVO.setAtDelayYn("Y"); + } + + // 법인폰 알람여부 체크 + JoinSettingVO joinSettingVO = new JoinSettingVO(); + joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); +// comm.getAdminKakaoAtSandSlack(kakaoVO); + } + } + + } catch (Exception e) { + throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e); + } + return modelAndView; } } diff --git a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java index 311e9db2..323e13ea 100644 --- a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java +++ b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import com.mysql.jdbc.StringUtils; +import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.mjo.msg.service.MjonMsgVO; @Service("MjonCommon") @@ -242,4 +243,63 @@ public class MjonCommon { return mjonMsgVO; } + @SuppressWarnings("unchecked") + public void getAdminKakaoAtSandSlack(KakaoVO kakaoVO) { + + HttpClient client = new HttpClient(); + PostMethod post = new PostMethod(url); + JSONObject json = new JSONObject(); + try { + + String reserveYn = kakaoVO.getReserveYn(); + String atDelayYn = kakaoVO.getAtDelayYn(); + String smsTxt = kakaoVO.getTemplateContent(); + String reservSmsTxt = ""; + String smisingSmsTxt = ""; + //예약문자를 발송하는 경우 문자 내용 앞에 "[예약]" 표시되도록 처리 + if(reserveYn.equals("Y")) { + reservSmsTxt = "[예약]" + smsTxt; + smsTxt = reservSmsTxt; + }else if(atDelayYn.equals("Y")) { + + smisingSmsTxt = "[스미싱의심]" + smsTxt; + smsTxt = smisingSmsTxt; + } + + String sandName = kakaoVO.getCallFrom(); + String userId = kakaoVO.getUserId(); + String msgType = ""; + + if(kakaoVO.getMsgType().equals("8")) { + msgType = "[알림톡]"; + }else if(kakaoVO.getMsgType().equals("9")){ + + } + sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType; + + json.put("channel", "mjon메시지"); + json.put("text", smsTxt); + json.put("username", sandName); + + + post.addParameter("payload", json.toString()); + // 처음에 utf-8로 content-type안넣어주니까 한글은 깨져서 content-type넣어줌 + post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + int responseCode = client.executeMethod(post); + String response = post.getResponseBodyAsString(); + if (responseCode != HttpStatus.SC_OK) { + System.out.println("Response: " + response); + } + } catch (IllegalArgumentException e) { + System.out.println("IllegalArgumentException posting to Slack " + e); + } catch (IOException e) { + System.out.println("IOException posting to Slack " + e); + } catch (Exception e) { + System.out.println("Exception posting to Slack " + e); + } finally { + post.releaseConnection(); + } + + } + } diff --git a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java index 36bc64c7..7d6b8299 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java @@ -198,6 +198,12 @@ public interface MjonMsgService { //스팸 / 스미싱 지연 문자 즉시 발송처리 int updateMsgDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception; + //스팸 / 스미싱 지연 알림톡 발송 취소 처리 + int deleteKakaoAtDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception; + + //스팸 / 스미싱 지연 알림톡 즉시 발송처리 + int updateKakaoAtDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception; + //문자 그룹아이디 리스트의 발송일자 정보 불러오기 List selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception; @@ -212,6 +218,7 @@ public interface MjonMsgService { //카카오 발송 횟수 List selectWithKakaoSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception; + //문자 발송 횟수 List selectMsgSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception; } diff --git a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java index d3513f0d..77892ebe 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java @@ -354,6 +354,10 @@ public class MjonMsgVO extends ComDefaultVO{ private String delayYn; // 문자 30분 지연 처리 유무 private String delayCompleteYn; // 문자 30분 지연 처리 완료 유무 + private String atDelayYn = "N"; // 알림 30분 지연 처리 유무 + private String atDelayCompleteYn; // 알림톡 30분 지연 처리 완료 유무 + private String atSmishingYn; // 알림톡 스메싱 여부 + private int totalCallCnt; //수신자 전체 갯 private String bizLogCallStatus; //다우기술 biz_log 테이블의 발송결과 코드 값. @@ -1375,5 +1379,22 @@ public class MjonMsgVO extends ComDefaultVO{ public void setAccessKey(String accessKey) { this.accessKey = accessKey; } - + public String getAtDelayYn() { + return atDelayYn; + } + public void setAtDelayYn(String atDelayYn) { + this.atDelayYn = atDelayYn; + } + public String getAtDelayCompleteYn() { + return atDelayCompleteYn; + } + public void setAtDelayCompleteYn(String atDelayCompleteYn) { + this.atDelayCompleteYn = atDelayCompleteYn; + } + public String getAtSmishingYn() { + return atSmishingYn; + } + public void setAtSmishingYn(String atSmishingYn) { + this.atSmishingYn = atSmishingYn; + } } diff --git a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java index 2f0c8a94..81021f07 100644 --- a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java +++ b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java @@ -431,6 +431,26 @@ public class MjonMsgDAO extends EgovAbstractDAO { update("mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag", mjonMsgVO); } + // mj_msg_data 테이블 지연 알림톡 취소 값 수정 + public void updateKakaoAtDelayCancelMsgDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag", mjonMsgVO); + } + + // mj_msg_group_data 테이블 지연 알림톡 취소 값 수정 + public void updateKakaoAtDelayCancelMsgGroupDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag", mjonMsgVO); + } + + // mj_msg_data 테이블 지연 알림톡 즉시발송 요청시간 수정 + public void updateKakaoAtDelaySendRealTimeMsgDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgDataFlag", mjonMsgVO); + } + + // mj_msg_group_data 테이블 지연 알림톡 즉시발송 요청시간 수정 + public void updateKakaoAtDelaySendRealTimeMsgGroupDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgGroupDataFlag", mjonMsgVO); + } + //문자 그룹아이디 리스트의 발송일자 정보 불러오기 @SuppressWarnings("unchecked") public List selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception{ diff --git a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java index f67878fe..46398448 100644 --- a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java +++ b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java @@ -2,6 +2,7 @@ package itn.let.mjo.msg.service.impl; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; @@ -17,6 +18,7 @@ import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import itn.com.cmm.LoginVO; +import itn.com.cmm.util.MJUtil; import itn.com.utl.fcc.service.EgovDateUtil; import itn.let.mjo.msg.service.MjPhoneMemberVO; import itn.let.mjo.msg.service.MjonMapAddressVO; @@ -841,6 +843,121 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM return resultSts; } + //스팸 / 스미싱 지연 알림톡 발송 취소 처리 + @Override + public int deleteKakaoAtDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception { + + int resultSts = 0; + + try { + + System.out.println("++++++++++++++++++ deleteKakaoAtDelaySendCancelData groupId ::: "+mjonResvMsgVO.getMsgGroupId()); + //삭제 문자 건수 MSG_SEQ 번호 받아오기 + List resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO); + + int size = resultMsgSeqList.size(); + List userDataList = new ArrayList(); + for(int i=0; i < size; i++) { + userDataList.add(resultMsgSeqList.get(i).getUserData()); + System.out.println(resultMsgSeqList.get(i).getUserData()); + } + + mjonResvMsgVO.setUserDataList(userDataList); + + + //비즈뿌리오 딜레이 알림톡 삭제 + resultSts = mjonReservMsgDAO.deleteBizMsgSeqListByMsgSeq(mjonResvMsgVO); + + System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts); + + //예약 취소 환불 처리 + if(resultSts > 0) { + + //그룹 데이터 정보 조회하기 + MjonMsgVO mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO); + + //mj_msg_data 테이블 지연 문자 취소 값 수정 + mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag(mjonMsgVO); + + //mj_msg_group_data 테이블 예약 취소 값 수정 + mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag(mjonMsgVO); + + + //문자 발송 캐시 환불 해주기 + MjonPayVO mjonPayVO = new MjonPayVO(); + + mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()); + mjonPayVO.setUserId(mjonMsgVO.getUserId()); + mjonPayVO.setCash(Float.parseFloat(mjonMsgVO.getTotPrice())); + mjonPayVO.setFrstRegisterId(mjonMsgVO.getUserId()); + mjonPayVO.setMemo("스팸/스미싱 지연 알림톡 취소 " + resultSts + "건 환불"); + mjonPayVO.setMsgGroupId(mjonMsgVO.getMsgGroupId()); + + mjonPayDAO.insertCash(mjonPayVO); //캐시 환불 + mjonPayDAO.updateMemberCash(mjonPayVO); //회원정보 업데이트 + + } + + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ deleteMsgDelaySendCancelData ServiceImpl Error !!!! "+e); + } + return resultSts; + + } + + //스팸 / 스미싱 지연 알림톡 즉시 발송처리 + @Override + public int updateKakaoAtDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception { + + int resultSts = 0; + + try { + boolean timeType = true; + + System.out.println("++++++++++++++++++ updateKakaoAtDelaySendRealTimeData groupId ::: "+mjonResvMsgVO.getMsgGroupId()); + //삭제 문자 건수 MSG_SEQ 번호 받아오기 + List resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO); + + int size = resultMsgSeqList.size(); + List userDataList = new ArrayList(); + for(int i=0; i < size; i++) { + userDataList.add(resultMsgSeqList.get(i).getUserData()); + System.out.println(resultMsgSeqList.get(i).getUserData()); + } + mjonResvMsgVO.setUserDataList(userDataList); + + if(resultMsgSeqList.get(0).getReserveYn().equals("N")) { + // 즉시 발송시 + //비즈뿌리오 딜레이문자 즉시발송 처리 + resultSts = mjonReservMsgDAO.updateRealTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO); + + }else { + // 예약 발송시 + //비즈뿌리오 딜레이문자 예약발송 처리 + resultSts = mjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO); + } + + System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts); + + //발송 시간 수정(mj_msg_data, mj_msg_group_data) + if(resultSts > 0) { + //그룹 데이터 정보 조회하기 + MjonMsgVO mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO); + //mj_msg_data 테이블 지연 문자 즉시발송 요청 값 수정 + mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgDataFlag(mjonMsgVO); + //mj_msg_group_data 테이블 즉시발송 요청 값 수정 + mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgGroupDataFlag(mjonMsgVO); + } + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ updateMsgDelaySendRealTimeDataAjax ServiceImpl Error !!!! "+e); + } + + + return resultSts; + } + //문자 그룹아이디 리스트의 발송일자 정보 불러오기 @Override public List selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception{ diff --git a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java index b5e67096..072f9f47 100644 --- a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java +++ b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java @@ -3618,6 +3618,161 @@ public class MjonMsgController { return modelAndView; } + /** + * 스팸 및 스미싱 30분 지연알림톡 전송 취소 처리 + * @param mjonMsgVO + * @param model + * @return "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do" + * @throws Exception + */ + @RequestMapping(value = {"/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"}) + public ModelAndView deleteKakaoATDelaySendCancelDataAjax(MjonMsgVO mjonMsgVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String isStatus = ""; + String msg = ""; + + //로그인 정보 획득 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + modelAndView.addObject("isStatus", "loginFail"); + modelAndView.addObject("msg", "로그인이 필요합니다."); + return modelAndView; + + } + + try { + + MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO(); + mjonResvMsgVO.setUserId(mjonMsgVO.getUserId());//회원 아이디 + + + String[] arrMsgGroupId = mjonMsgVO.getMsgGroupId().split(","); + int resultSts = 0; + + //문자 발송요청일자 체크해주기 + boolean compareReqDate = getCompareReqDateList(arrMsgGroupId, mjonMsgVO.getUserId()); + + if(!compareReqDate) { + + modelAndView.addObject("isStatus", "dateFail"); + modelAndView.addObject("msg", "발송시간이 지난 문자가 있습니다. 문자 발송예정 시간을 확인해 주세요."); + return modelAndView; + } + + for(String temp : arrMsgGroupId) { + + mjonResvMsgVO.setMsgGroupId(temp);//취소 문자 그룹 아이디 + int count = mjonMsgService.deleteKakaoAtDelaySendCancelData(mjonResvMsgVO); + + resultSts = resultSts + count; + + } + + if(resultSts > 0) { + + modelAndView.addObject("isStatus", "success"); + modelAndView.addObject("msg", "발송취소가 정상적으로 처리되었습니다."); + + }else { + + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "발송취소에 오류가 발생하였습니다."); + } + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ deleteKakaoATDelaySendCancelDataAjax Controller Error !!!! "+e); + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "오류가 발생하였습니다."); + return modelAndView; + } + return modelAndView; + } + + + /** + * 스팸 및 스미싱 30분 지연알림톡 즉시 전송 처리 + * @param mjonMsgVO + * @param model + * @return "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do" + * @throws Exception + */ + @RequestMapping(value = {"/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"}) + public ModelAndView updateKakaoATDelaySendRealTimeDataAjax(MjonMsgVO mjonMsgVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String isStatus = ""; + String msg = ""; + + //로그인 정보 획득 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + modelAndView.addObject("isStatus", "loginFail"); + modelAndView.addObject("msg", "로그인이 필요합니다."); + return modelAndView; + + } + + try { + + MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO(); + mjonResvMsgVO.setUserId(mjonMsgVO.getUserId());//회원 아이디 + + String[] arrMsgGroupId = mjonMsgVO.getMsgGroupId().split(","); + int resultSts = 0; + + //문자 발송요청일자 체크해주기 + boolean compareReqDate = getCompareReqDateList(arrMsgGroupId, mjonMsgVO.getUserId()); + + if(!compareReqDate) { + + modelAndView.addObject("isStatus", "dateFail"); + modelAndView.addObject("msg", "발송시간이 지난 문자가 있습니다. 문자 발송예정 시간을 확인해 주세요."); + return modelAndView; + } + + for(String temp : arrMsgGroupId) { + + mjonResvMsgVO.setMsgGroupId(temp);//취소 문자 그룹 아이디 + + //문자 발송 지연 데이터 즉시 발송처리 + int count = mjonMsgService.updateKakaoAtDelaySendRealTimeData(mjonResvMsgVO); + + resultSts = resultSts + count; + + } + + if(resultSts > 0) { + + modelAndView.addObject("isStatus", "success"); + modelAndView.addObject("msg", "즉시 발송 처리가 완료되었습니다."); + + }else { + + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "즉시 발송 처리에 오류가 발생하였습니다."); + } + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ updateKakaoATDelaySendRealTimeDataAjax Controller Error !!!! "+e); + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "오류가 발생하였습니다."); + return modelAndView; + } + + return modelAndView; + } + /** * 전송사 발송 통계 * @param diff --git a/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java b/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java index 3f8fff9c..0247f9ce 100644 --- a/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java +++ b/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java @@ -29,6 +29,7 @@ public class MjonResvMsgVO extends UserDefaultVO{ private String fileCnt; //첨부 이미지 갯수 - 0: 장문, 1 이상은 그림문자 private String totMsgCnt; //전체 전송문자 갯수 private String curState; //전송 처리 결과값 + private String reserveYn; //예약 여부 private String reserveCYn; //예약 취소 여부 private String filePath1; //그림 이미지 1 private String filePath2; //그림 이미지 2 @@ -290,5 +291,10 @@ public class MjonResvMsgVO extends UserDefaultVO{ public void setStrReqDate(String strReqDate) { this.strReqDate = strReqDate; } - + public String getReserveYn() { + return reserveYn; + } + public void setReserveYn(String reserveYn) { + this.reserveYn = reserveYn; + } } diff --git a/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java b/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java index 34cc94ae..6c836b5c 100644 --- a/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java +++ b/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java @@ -277,4 +277,15 @@ public class MjonReservMsgDAO extends EgovAbstractDAO { return update("MjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq", mjonResvMsgVO); } + + /** + * @Method Name : updateReserveTimeBizMsgSeqListByMsgSeq + * @작성일 : 2023. 07. 06. + * @작성자 : WYD + * @Method 설명 : 비즈뿌리오 지연처리 문자 예약 발송 + */ + public int updateReserveTimeBizMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq", mjonResvMsgVO); + } } diff --git a/src/main/java/itn/let/mjo/test/web/TestController.java b/src/main/java/itn/let/mjo/test/web/TestController.java index f4641c14..591ce491 100644 --- a/src/main/java/itn/let/mjo/test/web/TestController.java +++ b/src/main/java/itn/let/mjo/test/web/TestController.java @@ -1157,21 +1157,10 @@ public class TestController { try { - LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); - - - // api인지 확인 - ApiKeyVO apiKeyVO = new ApiKeyVO(); - apiKeyVO.setAccessKey(mjonMsgVO.getAccessKey()); - List resultList = apiKeyMngService.selectCheckApiKeyDup(apiKeyVO); - - if(resultList.size() >= 1) { - userId = resultList.get(0).getMberId(); - } - - +// LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; +// userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + userId = mjonMsgVO.getMberId(); if(userId.equals("")) { modelAndView.addObject("message", "로그인 후 이용이 가능합니다."); @@ -1388,6 +1377,9 @@ public class TestController { } + // 토탈금액 "," 리플레이스 처리 + mjonMsgVO.setTotPrice(mjonMsgVO.getTotPrice().replaceAll(",", "")); + float tmpOrgEachPrice = Float.parseFloat(mjonMsgVO.getEachPrice()); float tmpOrgTotPrice = Float.parseFloat(mjonMsgVO.getTotPrice()); @@ -1517,8 +1509,6 @@ public class TestController { shortMsgVO = mjonMsgVO; longMsgVO = mjonMsgVO; imgMsgVO = mjonMsgVO; - System.out.println("shortMsgVO :: "+ shortMsgVO.getsPrice()); - System.out.println("mjonMsgVO :: "+ mjonMsgVO.getsPrice()); int shortMsgCnt = Integer.parseInt(mjonMsgVO.getShortMsgCnt()); int longMsgCnt = Integer.parseInt(mjonMsgVO.getLongMsgCnt()); @@ -1768,7 +1758,14 @@ public class TestController { imgMsgVO.setRep4List(imgRep4); //개별단가 계산하기 - String eachPrice = shortMsgVO.getsPrice(); + String eachPrice = imgMsgVO.getpPrice(); + + //api 서버에서 pPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가 + if(eachPrice == null) { + + eachPrice = imgMsgVO.getEachPrice(); + + } /** * 그림문자에 치환 내용이 포함되어 있는 경우 단가 계산하기. @@ -1813,9 +1810,12 @@ public class TestController { //개별단가 계산하기 String eachPrice = shortMsgVO.getsPrice(); - if(StringUtils.isEmpty(eachPrice)) - { + + //api 서버에서 sPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가 + if(eachPrice == null) { + eachPrice = shortMsgVO.getEachPrice(); + } /** @@ -1845,7 +1845,6 @@ public class TestController { shortMsgVO.setMsgType("4"); } - System.out.println("shortMsgVO.getEachPrice() :: "+ shortMsgVO.getEachPrice()); //총금액 계산하기 Float sTotPrice = Float.parseFloat(shortMsgVO.getEachPrice()) * shortCnt; shortMsgVO.setTotPrice(sTotPrice.toString()); @@ -1871,6 +1870,13 @@ public class TestController { String eachPrice = longMsgVO.getmPrice(); + //api 서버에서 mPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가 + if(eachPrice == null) { + + eachPrice = longMsgVO.getEachPrice(); + + } + if(fileCount > 2) {//그림 이미지가 3개 eachPrice = mjonMsgVO.getP3Price(); @@ -2001,9 +2007,7 @@ public class TestController { }else { //문자발송 함수 호출 - 일괄변환이 없거나, 그림문자 일괄변환의 경우 한번에 전송 처리 - System.out.println("???????"); modelAndView = fncSendMsg(mjonMsgVO); - System.out.println("!!!!!!!!!!!!"); } @@ -2060,16 +2064,13 @@ public class TestController { // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); - // SMS 체크 - if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { -// getAdminPhoneSendMsgData(mjonMsgVO); - } // SLACK 체크 if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { //Slack으로 메세지 전송 처리 MjonCommon comm = new MjonCommon(); - comm.getAdminSandSlack(mjonMsgVO); + System.out.println("slack noti"); +// comm.getAdminSandSlack(mjonMsgVO); } } @@ -2079,11 +2080,6 @@ public class TestController { } return modelAndView; - - - - - } /** * 문자발송시 치환문자가 있거나 단문, 장문 일경우 타는 로직 diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index 0408ace3..a5298ce5 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -1366,7 +1366,7 @@ public class EgovUserManageController { /* * 알림톡/친구톡 최근 발송내역 리스트 불러오기 - * */ + */ KakaoVO sendKakaoVO = new KakaoVO(); sendKakaoVO.setSearchCondition2("N");//예약건은 제외하기 @@ -1380,35 +1380,38 @@ public class EgovUserManageController { List kakaoResultList = new ArrayList(); kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO); - model.addAttribute("kakaoResultList", kakaoResultList); + model.addAttribute("kakaoResultList", kakaoResultList); /* * 알림톡/친구톡 예약발송 리스트 불러오기 - * */ - - KakaoVO reserveKakaoVO = new KakaoVO(); - reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기 - reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 - reserveKakaoVO.setUserId(reqMberManageVO.getMberId()); + */ + + KakaoVO reserveKakaoVO = new KakaoVO(); + reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기 + reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 + reserveKakaoVO.setUserId(reqMberManageVO.getMberId()); // 문자발송 완료건은 모두 보이도록 처리 //kakaoVO.setMsgType("8"); - reserveKakaoVO.setSearchSortCnd("reqDate"); - reserveKakaoVO.setSearchSortOrd("desc"); - reserveKakaoVO.setFirstIndex(0); + reserveKakaoVO.setSearchSortCnd("reqDate"); + reserveKakaoVO.setSearchSortOrd("desc"); + reserveKakaoVO.setFirstIndex(0); List kakaoReserveList = new ArrayList(); kakaoReserveList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(reserveKakaoVO); - model.addAttribute("kakaoReserveList", kakaoReserveList); + model.addAttribute("kakaoReserveList", kakaoReserveList); + /* - * 팩스 발송 내역 리스트 불러오기 - * */ - + * 알림톡 지연처리 알림톡 내용 불러오기(30분 지연처리된 알림톡 내역 불러오기) + */ + List kakaoATDelaySentList = mjonKakaoATService.selectKakaoATDelaySentList(reqMberManageVO.getMberId()); + + model.addAttribute("kakaoATDelaySentList", kakaoATDelaySentList); + } + + {//팩스 발송 내역 리스트 불러오기 List faxSendListVO = faxService.selectFaxMainList(new FaxGroupDataVO(reqMberManageVO.getMberId())); model.addAttribute("faxSendListVO", faxSendListVO); - - //} - } {//사용중인 전송사 정보 조회하기 - 사용자 전용 전송사 리스트 표시용 diff --git a/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml index a7d89202..2deba729 100644 --- a/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml @@ -348,6 +348,8 @@ M2.yellowId , M2.userNm , M2.atSmishingYn , + M2.atDelayCompleteYn, + M2.atDelayYn, ( SELECT COUNT(0) FROM MJ_MSG_DATA C WHERE C.DEL_FLAG = 'N' @@ -451,46 +453,49 @@ MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey , MKPI.YELLOW_ID AS yellowId , LTM.MBER_NM AS userNm , - LTM.AT_SMISHING_YN AS atSmishingYn, + LTM.AT_SMISHING_YN AS atSmishingYn, BIZ_UMID AS bizUmid, BL.CALL_STATUS AS callStatus, - M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn - FROM ( - SELECT MG.USER_ID , - MG.MSG_GROUP_ID , - MG.MSG_GROUP_CNT , - MG.SMS_TXT , - MG.SUBJECT , - MG.REGDATE , - MG.REQ_DATE , - MD.RSLT_DATE , - MG.CALL_FROM , - MG.TOT_PRICE , - MG.EACH_PRICE , - MG.DEL_FLAG , - MG.MSG_TYPE , - MG.FILE_CNT , - MG.AGENT_CODE , - MG.RESERVE_YN , - MG.RESERVE_C_YN , - MG.CANCELDATE , - MD.MSG_SEQ , - MD.CALL_TO , - MD.CUR_STATE , - MD.RSLT_CODE , - MD.RSLT_CODE2 , - CASE + M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn, + M.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn, + M.AT_DELAY_YN AS atDelayYn + FROM + (SELECT + MG.USER_ID + , MG.MSG_GROUP_ID + , MG.MSG_GROUP_CNT + , MG.SMS_TXT + , MG.SUBJECT + , MG.REGDATE + , MG.REQ_DATE + , MD.RSLT_DATE + , MG.CALL_FROM + , MG.TOT_PRICE + , MG.EACH_PRICE + , MG.DEL_FLAG + , MG.MSG_TYPE + , MG.FILE_CNT + , MG.AGENT_CODE + , MG.RESERVE_YN + , MG.RESERVE_C_YN + , MG.CANCELDATE + , MD.MSG_SEQ + , MD.CALL_TO + , MD.CUR_STATE + , MD.RSLT_CODE + , MD.RSLT_CODE2 + , CASE WHEN MG.MSG_TYPE = '8' THEN '알림톡' WHEN MG.MSG_TYPE = '9' THEN '친구톡' - END msgTypeName , - CASE + END msgTypeName + , CASE WHEN MG.MSG_TYPE = '8' THEN '1' ELSE '2' - END orderByCode , - ( + END orderByCode + , ( CASE WHEN MD.RSLT_CODE = '7000' THEN 'S' @@ -498,18 +503,24 @@ THEN 'W' ELSE 'F' END - ) AS result , - MSG_NOTICETALK_SENDER_KEY , - MSG_NOTICETALK_TMP_KEY, - MD.BIZ_UMID, - MD.BIZ_KAKAO_RESEND_YN - FROM MJ_MSG_DATA MD , - MJ_MSG_GROUP_DATA MG - WHERE MD.MSG_GROUP_ID = MG.MSG_GROUP_ID + ) AS result + , MSG_NOTICETALK_SENDER_KEY + , MSG_NOTICETALK_TMP_KEY + , MD.BIZ_UMID + , MD.BIZ_KAKAO_RESEND_YN + , MG.AT_DELAY_COMPLETE_YN + , MG.AT_DELAY_YN + FROM + MJ_MSG_DATA MD + , MJ_MSG_GROUP_DATA MG + WHERE 1=1 + AND MD.MSG_GROUP_ID = MG.MSG_GROUP_ID AND IFNULL(MG.DEL_FLAG, 'N') = 'N' AND MD.DEL_FLAG = 'N' - + AND MG.USER_ID = #userId# @@ -1058,6 +1069,9 @@ M2.msgNoticetalkTmpKey , M2.yellowId , M2.userNm , + M2.atSmishingYn, + M2.atDelayCompleteYn, + M2.atDelayYn, ( SELECT COUNT(0) FROM MJ_MSG_DATA C WHERE C.DEL_FLAG = 'N' @@ -1158,12 +1172,15 @@ orderByCode AS orderByCode , RESULT AS msgResult , MSG_NOTICETALK_SENDER_KEY AS msgNoticetalkSenderKey , - MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey , - MKPI.YELLOW_ID AS yellowId , - LTM.MBER_NM AS userNm , + MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey , + MKPI.YELLOW_ID AS yellowId , + LTM.MBER_NM AS userNm , + LTM.AT_SMISHING_YN AS atSmishingYn, BIZ_UMID AS bizUmid, BL.CALL_STATUS AS callStatus, - M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn + M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn, + M.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn, + M.AT_DELAY_YN AS atDelayYn FROM ( SELECT MG.USER_ID , MG.MSG_GROUP_ID , @@ -1207,16 +1224,19 @@ THEN 'W' ELSE 'F' END - ) AS result , - MSG_NOTICETALK_SENDER_KEY , - MSG_NOTICETALK_TMP_KEY, - MD.BIZ_UMID, - MD.BIZ_KAKAO_RESEND_YN + ) AS result + , MSG_NOTICETALK_SENDER_KEY + , MSG_NOTICETALK_TMP_KEY + , MD.BIZ_UMID + , MD.BIZ_KAKAO_RESEND_YN + , MG.AT_DELAY_COMPLETE_YN + , MG.AT_DELAY_YN FROM MJ_MSG_DATA MD , MJ_MSG_GROUP_DATA MG WHERE MD.MSG_GROUP_ID = MG.MSG_GROUP_ID AND IFNULL(MG.DEL_FLAG, 'N') = 'N' AND MD.DEL_FLAG = 'N' + AND MG.USER_ID = #userId# @@ -1386,7 +1406,7 @@ , B.SMS_TXT , B.SUBJECT , B.REGDATE - , B.REQ_DATE + , A.REQ_DATE , A.RSLT_DATE , B.CALL_FROM , B.TOT_PRICE @@ -2252,10 +2272,101 @@ - - - - - - + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml index 4bd0fcfd..b7e54ab1 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml @@ -375,7 +375,9 @@ AND MG.DEL_FLAG ='N' /* JSPark 2023.03.23 => 예약건중 발송완료건도 발송결과에 노출되도록 수정 */ /* AND MG.RESERVE_YN = 'N' */ - + AND MG.RESERVE_C_YN = #reserveCYn# diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index 60cef67d..0bfe25e1 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -2055,23 +2055,24 @@ - SELECT MSG_GROUP_ID AS msgGroupId, - USER_ID AS userId, - SMS_TXT AS smsTxt, - EACH_PRICE AS eachPrice, - TOT_PRICE AS totPrice, - MSG_GROUP_CNT AS msgGroupCnt - FROM MJ_MSG_GROUP_DATA - WHERE USER_ID = #userId# - AND MSG_GROUP_ID = #msgGroupId# + SELECT + MSG_GROUP_ID AS msgGroupId + , USER_ID AS userId + , SMS_TXT AS smsTxt + , EACH_PRICE AS eachPrice + , TOT_PRICE AS totPrice + , MSG_GROUP_CNT AS msgGroupCnt + FROM + MJ_MSG_GROUP_DATA + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# ORDER BY MSG_GROUP_ID DESC LIMIT 1 @@ -5830,10 +5836,12 @@ + + + UPDATE + MJ_MSG_DATA + SET + REFUND_YN = 'Y' + , REQ_DATE = NOW() + , RESULT_LOG_UPDT_PNTTM = NOW() + , CUR_STATE = '3' + , RSLT_CODE = '7300' + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + + + + UPDATE + MJ_MSG_GROUP_DATA + SET + CANCELDATE = NOW() + , REQ_DATE = NOW() + , AT_DELAY_COMPLETE_YN = 'Y' + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + + + UPDATE + MJ_MSG_DATA + SET + REQ_DATE = + = 30 + THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE) + ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE) + END + ]]> + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + + UPDATE + MJ_MSG_GROUP_DATA + SET + REQ_DATE = + = 30 + THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE) + ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE) + END + ]]> + , AT_DELAY_COMPLETE_YN = 'Y' + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml index 34a52369..9c26d3d2 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml @@ -445,12 +445,17 @@ diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp index 612d2eca..b13af576 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp @@ -1183,44 +1183,6 @@ function fnMberSmishingYn(){ } -//알림톡 스미싱의심 여부 -function fnMberAtSmishingYn(){ - var form = document.mberManageVO; - var atSmishingYn = form.atSmishingYn.value; - - if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){ - - $.ajax({ - type: "POST", - url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do", - data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"}, - dataType:'json', - async: false, - success: function (data, status) { - if (data.isSuccess) { - alert("변경 완료했습니다."); - } - else { - alert(data.msg); - } - }, - beforeSend: function () { - //로딩창 show - $('.loading_layer').addClass('active'); - }, - complete: function () { - //로딩창 hide - $('.loading_layer').removeClass('active'); - }, - error: function (e) { - alert("에러가 발생했습니다."); console.log("ERROR : ", e); - } - }); - - } - -} - // VIP 여부 function fnMberVIPYn(){ var form = document.mberManageVO; @@ -2422,6 +2384,331 @@ function fnMberExceptSpamYn(){ } +//알림톡 지연 기능추가 ------------------------------------------------------- + +//알림톡 스미싱의심 여부 +function fnMberAtSmishingYn(){ + var form = document.mberManageVO; + var atSmishingYn = form.atSmishingYn.value; + + if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){ + + $.ajax({ + type: "POST", + url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do", + data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"}, + dataType:'json', + async: false, + success: function (data, status) { + if (data.isSuccess) { + alert("변경 완료했습니다."); + } + else { + alert(data.msg); + } + }, + beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + }, + complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + }, + error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + + } +} + +//지연 알림톡 전체선택 +function kakaoATDelayCheckAll(){ + var checkField = document.kakaoATDelayForm.kakaoATCheckDelayField; + + if(document.kakaoATDelayForm.kakaoATCheckAll.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 kakaoATDelaySendArray(){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + var form = document.kakaoATDelayForm; + + if($("input:checkbox[name='kakaoATCheckDelayField']").is(":checked")==false){ + alert("선택된 알림톡이 없습니다."); + return; + } + var checkField = form.kakaoATCheckDelayField; + var id = form.kakaoATCheckDelayId; + 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; + } + } + } + + var msgGroupId = checkedIds; + + var msg = ""; + var url = "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 즉시 발송 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + alert(msg); + location.reload(); + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + alert(msg); + location.reload(); + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +} + +//지연 알림톡 즉시 발송 +function kakaoATDelaySend(msgGroupId){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + + var msg = ""; + var url = "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 즉시 발송 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + alert(msg); + location.reload(); + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + alert(msg); + location.reload(); + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +} + +//지연 알림톡 발송취소 리스트 +function kakaoATDelayCancelArray(){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + var form = document.kakaoATDelayForm; + + if($("input:checkbox[name='kakaoATCheckDelayField']").is(":checked")==false){ + alert("선택된 알림톡이 없습니다."); + return; + } + var checkField = form.kakaoATCheckDelayField; + var id = form.kakaoATCheckDelayId; + 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; + } + } + } + + var msgGroupId = checkedIds; + + var msg = ""; + var url = "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 발송취소 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + + alert(msg); + location.reload(); + + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + + alert(msg); + + //회원 이용정지 처리하기 + //fn_updateMberSttus(msgGroupId); + fn_MsgDelayCancel_after(); + + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +} + +//지연 알림톡 발송취소 +function kakaoATDelayCancel(msgGroupId){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + + var msg = ""; + var url = "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 발송취소 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + + alert(msg); + location.reload(); + + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + + alert(msg); + + //회원 이용정지 처리하기 + //fn_updateMberSttus(msgGroupId); + fn_MsgDelayCancel_after(); + + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +}