package itn.let.mjo.msg.web; import java.io.OutputStream; import java.net.URL; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Random; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.hanju.util.Authentication; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.service.FileVO; import itn.com.cmm.util.MJUtil; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.mjo.cert.service.CertService; import itn.let.mjo.cert.service.CertVO; import itn.let.mjo.mjocommon.MjonCommon; import itn.let.mjo.msg.service.MjPhoneMemberVO; import itn.let.mjo.msg.service.MjonMapAddressVO; import itn.let.mjo.msg.service.MjonMsgResultCodeVO; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgStatVO; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msg.service.MjonSwearWordVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; import itn.let.mjo.msgsent.service.MjonMsgRecvTestService; 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.reservmsg.service.MjonReservMsgService; import itn.let.mjo.reservmsg.service.MjonResvMsgVO; import itn.let.sts.com.StatsVO; import itn.let.uat.uia.service.AuthCertVO; import itn.let.uat.uia.web.ClientIP; import itn.let.uat.uia.web.EmailVO; import itn.let.uat.uia.web.SendLogVO; import itn.let.uat.uia.web.SendMail; import itn.let.uss.umt.service.EgovMberManageService; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; import itn.let.uss.umt.service.UserDefaultVO; import itn.let.uss.umt.service.UserManageVO; /** * * 문자온의 번호관리를 처리하는 비즈니스 구현 클래스 * @author 공통서비스 개발팀 신명섭 * @since 2021.03.20 * @version 1.0 * @see * * * 수정일 수정자 수정내용 * ------- -------- --------------------------- * 2021.03.20 신명섭 최초 생성 * */ @Controller public class MjonMsgController { @Resource(name = "mjonMsgService") private MjonMsgService mjonMsgService; //문자발송테스트 @Resource(name = "mjonMsgSentTestService") private MjonMsgSentTestService mjonMsgSentTestService; //문자수신테스트 @Resource(name = "mjonMsgRecvTestService") private MjonMsgRecvTestService mjonMsgRecvTestService; /** EgovMessageSource */ @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; @Resource(name = "mjonPayService") private MjonPayService mjonPayService; @Resource(name = "certService") private CertService certService; //문자발송 서비스 @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; @Resource(name = "MjonReservMsgService") private MjonReservMsgService mjonReservMsgService; @Resource(name="EgovFileMngUtil") private EgovFileMngUtil fileUtil; @Resource(name="EgovFileMngService") private EgovFileMngService fileMngService; /** mberManageService */ @Resource(name = "mberManageService") private EgovMberManageService mberManageService; /** 첨부파일 저장경로 */ @Value("#{globalSettings['Globals.file.saveDir']}") private String fileSaveDir; /** userManageService */ @Resource(name = "userManageService") private EgovUserManageService userManageService; //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] sendMsgExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "아이디" , "itn" , ""}, {"2", "발신번호" , "01012345678", ""}, {"3", "발송건수" , "3", ""}, {"4", "요청시간" , "2021-06-01 19:05:12", ""}, {"5", "내용" , "문자메시지 내용", ""}, {"6", "메시지타입" , "SMS전송", ""}, {"7", "접속기기" , "", ""}, {"8", "메시지타입" , "NPRO(아이하트)", ""} }; //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] sendMsgDtlExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "아이디" , "itn" , ""}, {"2", "발신번호" , "01012345678", ""}, {"3", "수신번호" , "01012345678", ""}, {"4", "전송시간" , "2021-06-01 19:19:57", ""}, {"5", "내용" , "문자메시지 내용", ""}, {"6", "현재상태" , "결과수신", ""}, {"7", "처리결과" , "410/i", ""}, {"8", "메시지타입" , "SMS전송", ""}, {"9", "접속기기" , "", ""}, {"10", "메시지타입" , "NPRO(아이하트)", ""}, {"11", "통신사" , "ETC", ""} , {"12", "삭제여부" , "미삭제", ""} } ; //회원정보 팝업 최근 발송 문자 리스트 엑셀 다운로드 private String[][] sendMsgUsrExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "아이디" , "itn" , ""}, {"2", "발신번호" , "01012345678", ""}, {"3", "요청시간" , "2021-06-01 19:05:12", ""}, {"4", "내용" , "문자메시지 내용", ""}, {"5", "문자종류" , "SMS전송", ""}, {"6", "건수" , "", ""}, {"7", "금액" , "", ""}, {"8", "발송결과" , "", ""}, {"9", "전송사" , "", ""} }; /** * 문자전송 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/SendMsgList.do"}) public String sendMsgList(@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("reqFullDate"); searchVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); //searchVO.setReserveYn("N");//예약건은 제외하기 searchVO.setReserveCYn("N");//예약취소건은 제외하기 // 기간검색 설정 String toDay = MJUtil.getTodayDate(); //오늘 String beforeMonthDay = MJUtil.getBefore1MonthDate(); //한달 전 if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { searchVO.setNtceBgnde(beforeMonthDay); //searchVO.setNtceEndde(toDay); } // 문자발송 완료건은 모두 보이도록 처리 resultList = mjonMsgService.selectMjonMsgGroupCompleteList(searchVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/SendMsgList"; } /** * 문자전송 리스트 스미싱 on off 처리 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgTestList.do" * @throws Exception */ @RequestMapping("/uss/ion/msg/MsgUsersSmishingUpdate.do") public String msgUsersSmishingUpdate(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes, Model model) throws Exception { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } userManageService.updateUserSmishingYn(userManageVO, checkedIdForUpt); redirectAttributes.addFlashAttribute("message", "스미싱의심 여부가 정상적으로 수정되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendMsgList.do?pageIndex="+userManageVO.getPageIndex()); return redirectUrlMaker.getRedirectUrl(); } /** * 알림톡 리스트 스미싱 on off 처리 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgTestList.do" * @throws Exception */ @RequestMapping("/uss/ion/msg/MsgUsersAtSmishingUpdate.do") public String msgUsersAtSmishingUpdate(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes, Model model) throws Exception { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } userManageService.updateUserAtSmishingYn(userManageVO, checkedIdForUpt); //redirectAttributes.addFlashAttribute("message", "알림톡 스미싱의심 여부가 정상적으로 수정되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/kakaoat/SendKakaoATList.do?pageIndex="+userManageVO.getPageIndex()); return redirectUrlMaker.getRedirectUrl(); } /** * 문자전송 테스트 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgTestList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/SendMsgTestList.do"}) public String sendMsgTestList(@ModelAttribute("searchVO") MjonMsgSentTestVO mjonMsgSentTestVO, HttpServletRequest request , ModelMap model) throws Exception{ //value 값 가져오기 // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonMsgSentTestVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonMsgSentTestVO.getPageUnit()); paginationInfo.setPageSize(mjonMsgSentTestVO.getPageSize()); mjonMsgSentTestVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonMsgSentTestVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonMsgSentTestVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); try { if (mjonMsgSentTestVO.getSearchKeyword().indexOf("MSGGID")>-1) { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='"+mjonMsgSentTestVO.getSearchKeyword()+"' "); } }catch(Exception ex) { ex.printStackTrace(); } /* if (!"".equals(mjonMsgSentTestVO.getMsgGroupId()) && mjonMsgSentTestVO.getMsgGroupId() !=null) { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='"+mjonMsgSentTestVO.getMsgGroupId()+"' "); } */ if("".equals(mjonMsgSentTestVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonMsgSentTestVO.setSearchSortCnd("test_no"); mjonMsgSentTestVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); resultList = mjonMsgSentTestService.selectList(mjonMsgSentTestVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgSentTestVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/SendMsgTestList"; } /** * 문자전송 테스트 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgTestList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/SendMsgTestListRead.do","/uss/ion/msg/SendMsgTestListRead1.do"}) public String sendMsgTestListRead1(@ModelAttribute("searchVO") MjonMsgSentTestVO mjonMsgSentTestVO, HttpServletRequest request , ModelMap model) throws Exception{ //value 값 가져오기 // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonMsgSentTestVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonMsgSentTestVO.getPageUnit()); paginationInfo.setPageSize(mjonMsgSentTestVO.getPageSize()); mjonMsgSentTestVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonMsgSentTestVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonMsgSentTestVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); try { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='MSGGID_0000000002830' "); if (mjonMsgSentTestVO.getSearchKeyword().indexOf("MSGGID")>-1) { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='"+mjonMsgSentTestVO.getSearchKeyword()+"' "); } }catch(Exception ex) { ex.printStackTrace(); } /* if (!"".equals(mjonMsgSentTestVO.getMsgGroupId()) && mjonMsgSentTestVO.getMsgGroupId() !=null) { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='"+mjonMsgSentTestVO.getMsgGroupId()+"' "); } */ if("".equals(mjonMsgSentTestVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonMsgSentTestVO.setSearchSortCnd("test_no"); mjonMsgSentTestVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); resultList = mjonMsgSentTestService.selectListRead1(mjonMsgSentTestVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgSentTestVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/SendMsgTestListRead"; } /** * 문자전송 테스트 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgTestList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/SendMsgTestListRead2.do"}) public String sendMsgTestListRead2(@ModelAttribute("searchVO") MjonMsgSentTestVO mjonMsgSentTestVO, HttpServletRequest request , ModelMap model) throws Exception{ //value 값 가져오기 // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonMsgSentTestVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonMsgSentTestVO.getPageUnit()); paginationInfo.setPageSize(mjonMsgSentTestVO.getPageSize()); mjonMsgSentTestVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonMsgSentTestVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonMsgSentTestVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); try { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='MSGGID_0000000002830' "); if (mjonMsgSentTestVO.getSearchKeyword().indexOf("MSGGID")>-1) { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='"+mjonMsgSentTestVO.getSearchKeyword()+"' "); } }catch(Exception ex) { ex.printStackTrace(); } /* if (!"".equals(mjonMsgSentTestVO.getMsgGroupId()) && mjonMsgSentTestVO.getMsgGroupId() !=null) { mjonMsgSentTestVO.setListQuery(" AND a.msg_group_id='"+mjonMsgSentTestVO.getMsgGroupId()+"' "); } */ if("".equals(mjonMsgSentTestVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonMsgSentTestVO.setSearchSortCnd("test_no"); mjonMsgSentTestVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); resultList = mjonMsgSentTestService.selectListRead2(mjonMsgSentTestVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgSentTestVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/SendMsgTestListRead"; } /** * 문자전송 테스트 등록하기 위한 전 처리(공통코드 처리) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgTestModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendMsgTestModify.do"}) public String sendMsgTestModify( @ModelAttribute("searchVO") MjonMsgSentTestVO mjonMsgSentTestVO, HttpServletRequest request , Model model) throws Exception { /* String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; MjonMsgVO mjonMsgVO = new MjonMsgVO(); if(null != searchVO.getUserData() && !"".equals(searchVO.getUserData())) { //수정 mjonMsgVO = mjonMsgService.selectMjonMsgVO(searchVO); //문자 상세보기 이미지 아이디 받아오기 String atchFileId1 =""; String atchFileId2 =""; String atchFileId3 =""; String path1 = mjonMsgVO.getFilePath1(); String path2 = mjonMsgVO.getFilePath2(); String path3 = mjonMsgVO.getFilePath3(); FileVO fileVO1 = new FileVO(); FileVO fileVO2 = new FileVO(); FileVO fileVO3 = new FileVO(); if(StringUtil.isNotEmpty(path1)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO1 = getFilePathToAtchFileId(path1); model.addAttribute("fileVO1", fileVO1); } if(StringUtil.isNotEmpty(path2)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO2 = getFilePathToAtchFileId(path2); model.addAttribute("fileVO2", fileVO2); } if(StringUtil.isNotEmpty(path3)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO3 = getFilePathToAtchFileId(path3); model.addAttribute("fileVO3", fileVO3); } } if(request.getHeader("REFERER").contains("ReceiveNumberList") ) { //수신번호 조회에서 넘김 mjonMsgVO.setBeforeUrl("ReceiveNumberList"); } if(pattern.equals("/uss/ion/msg/CampaignMsgModify.do")) { //사용자 발신 searchVO.setSearchCampaignYn("Y"); } model.addAttribute("mjonMsgVO", mjonMsgVO); */ return "/uss/ion/msg/SendMsgTestModify"; } /** * 발신테스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value="/uss/ion/msg/SendMsgTestSendAjax.do") public ModelAndView SendMsgTestSendAjax( MjonMsgSentTestVO mjonMsgSentTestVO //, @RequestParam("testNo") String p_testNo , ModelMap model , HttpServletRequest request ) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //step0.저장값 가져오기 mjonMsgSentTestVO = mjonMsgSentTestService.selectDetail(mjonMsgSentTestVO); //step1.기본값 설정 String resultSts = "0"; String resultBlockSts = "0"; //문자열 String charset = "euc-kr"; //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산 String smsCont = mjonMsgSentTestVO.getSmsTxt(); //문자 종류 String msgType = "S"; //우선은 단문만 지원 /* * */ //장문 메세지일 경우 1이상으로 설정 int fileCount = 0; // 전송사 전송 배분 //전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오 //비율로 계산 필요 //String sendAgent = sendRateList.get(0).getAgentCode(); String sendAgent = "01"; //String neoType = ""; /* if(sendAgent.equals("03")) { //아이엠오 전송사 문자 타입 설정해 주기 - 장문인 경우 // 단순 장문 문자는 neoType : 2, 그림 포함 : 4 if(fileCount>0) { // 그림포함 문자인경우 neoType = "4"; }else{ // 단순 장문 문자 neoType = "2"; } } */ //변환문자여부 //String txtReplYn = "N"; //내문자저장함에 저장후 문자를 발송하는경우 문자 타입이 숫자가 아닌 문자로 넘어와서 변경 처리함- 20220520 우영두 if(msgType.equals("P") || msgType.equals("L")) { msgType = "6"; }else if(msgType.equals("S")) { msgType = "4"; } MjonMsgVO mjonMsgVO = new MjonMsgVO(); //mjonMsgVO.setMsgId(msgId); //mjonMsgVO.setMsgGroupId(msgGroupId); mjonMsgVO.setUserId(mjonMsgSentTestVO.getUserId()); mjonMsgVO.setMsgType(msgType); mjonMsgVO.setReserveYn("N"); mjonMsgVO.setCallFrom(mjonMsgSentTestVO.getCallFrom()); mjonMsgVO.setSubject(mjonMsgSentTestVO.getSubject()); mjonMsgVO.setSmsTxt(mjonMsgSentTestVO.getSmsTxt()); //자동 분배 해야 함 mjonMsgVO.setAgentCode(sendAgent); //수신 번호 배열로 넣어야 함. int i_call_cnt = Integer.parseInt(mjonMsgSentTestVO.getMsgCnt()); String[] a_callToList = new String[i_call_cnt]; for (int i=0;i 200) { int sendCnt = 0; for(int i=0; i< callToListCnt; i++) { if((i < callToListCnt -1) && sendCnt == 199) { System.out.println("sendCnt" + sendCnt); //sendCnt 4번째 값을 추가해준다. tempPhoneList[sendCnt] = phoneList[i]; List arrPhoneList = new ArrayList(); for(String temp : tempPhoneList) { if(temp != null) { arrPhoneList.add(temp); } } String[] sendPhoneList = new String[arrPhoneList.size()]; for(int j=0; j< arrPhoneList.size(); j++) { sendPhoneList[j] = arrPhoneList.get(j); //System.out.println("+++++++++++++++ sendPhoneList ;:: "+sendPhoneList[j]); } mjonMsgVO.setCallToList(sendPhoneList); sendCnt = 0; mjonMsgReturnVO = this.fncSendMsgTest(mjonMsgVO , Integer.parseInt(mjonMsgSentTestVO.getnRate()) , Integer.parseInt(mjonMsgSentTestVO.gethRate()) , Integer.parseInt(mjonMsgSentTestVO.getiRate()) , s_getMsgGroupId ); s_getMsgGroupId = mjonMsgReturnVO.getMsgGroupId(); //MjonMsgReturnVO returnVO = mjonMsgDataService.insertMsgDataInfo(mjonMsgVO); //resultSts = resultSts + Integer.parseInt(returnVO.getSendMsgCnt()); //resultBlockSts = resultBlockSts + Integer.parseInt(returnVO.getSendMsgBlockCnt()); //발송 처리후 배열 초기화 Arrays.fill(tempPhoneList, null); }else if((i == callToListCnt -1) && sendCnt < 200){ //System.out.println("+++++++++++++++ last sendCnt" + sendCnt); //마지막 리스트의 수신번호를 추가해 준다. tempPhoneList[sendCnt] = phoneList[i]; List arrPhoneList2 = new ArrayList(); for(String temp : tempPhoneList) { if(temp != null) { arrPhoneList2.add(temp); } } String[] sendPhoneList2 = new String[arrPhoneList2.size()]; for(int j=0; j< arrPhoneList2.size(); j++) { sendPhoneList2[j] = arrPhoneList2.get(j); //System.out.println("+++++++++++++++ last sendPhoneList ;:: "+sendPhoneList2[j]); } mjonMsgVO.setCallToList(sendPhoneList2); sendCnt = 0; mjonMsgReturnVO = this.fncSendMsgTest(mjonMsgVO , Integer.parseInt(mjonMsgSentTestVO.getnRate()) , Integer.parseInt(mjonMsgSentTestVO.gethRate()) , Integer.parseInt(mjonMsgSentTestVO.getiRate()) , s_getMsgGroupId ); s_getMsgGroupId = mjonMsgReturnVO.getMsgGroupId(); /* MjonMsgReturnVO returnVO = mjonMsgDataService.insertMsgDataInfo(mjonMsgVO); resultSts = resultSts + Integer.parseInt(returnVO.getSendMsgCnt()); resultBlockSts = resultBlockSts + Integer.parseInt(returnVO.getSendMsgBlockCnt()); */ }else { tempPhoneList[sendCnt] = phoneList[i]; //System.out.println("++++++++++++++++++++ i ::: " + i); //System.out.println("++++++++++++++++++++ sendCnt ::: " + sendCnt); //System.out.println("++++++++++++++++++++ tempPhoneList[sendCnt] ::: " + tempPhoneList[sendCnt]); sendCnt++; } } } mjonMsgSentTestVO.setUpdateQuery(" SEND_END_DT= date_format(now(), '%Y%m%d%H%i%s') , MSG_GROUP_ID='"+mjonMsgReturnVO.getMsgGroupId()+"' "); mjonMsgSentTestService.update(mjonMsgSentTestVO); //로그인 처리==================================== //로그인 정보 가져오기 /* mjPhoneMemberVO.setUserId(userId); mjPhoneMemberVO.setPhmType("01"); List resultList = mjonMsgService.selectSendNumberList(mjPhoneMemberVO); modelAndView.addObject("sendNumberCnt", resultList.size()); */ return modelAndView; } /* * 문자발송테스트처리 서비스만 분리하였음 * param : MjonMsgVO * return : String * * */ private MjonMsgReturnVO fncSendMsgTest(MjonMsgVO mjonMsgVO , int i_nRate , int i_hRate , int i_iRate , String p_getMsgGroupId ) { //ModelAndView modelAndView = new ModelAndView(); //modelAndView.setViewName("jsonView"); String resultSts = "0"; //발송결과 건수 String resultBlockSts = "0"; //수신거부 등록번호로 발송을 안한 건수 MjonMsgReturnVO returnVO = null; try { //현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크 //String userMoney = mjonMsgDataService.selectBeforeCashData(mjonMsgVO); //String userPoint = mjonMsgDataService.selectBeforePointData(mjonMsgVO); //mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장 //String totPrice = mjonMsgVO.getTotPrice(); //BigDecimal befCash = new BigDecimal(userMoney).setScale(2, RoundingMode.HALF_EVEN); //BigDecimal totMsgPrice = new BigDecimal(totPrice).setScale(2, RoundingMode.HALF_EVEN); returnVO = mjonMsgDataService.insertMsgTestDataInfo(mjonMsgVO , i_nRate , i_hRate , i_iRate , p_getMsgGroupId ); resultSts = returnVO.getSendMsgCnt(); resultBlockSts = returnVO.getSendMsgBlockCnt(); }catch(Exception e) { e.printStackTrace(); } return returnVO; } /** * 수신테스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value="/uss/ion/msg/SendMsgTestRecvAjax.do") public ModelAndView SendMsgTestRecvAjax( MjonMsgRecvTestVO mjonMsgRecvTestVO //, @RequestParam("testNo") String p_testNo , ModelMap model , HttpServletRequest request ) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //step1.아이하트 수신 처리 //step1-1.아이하트 미처리 대상 가져오기 List resultList = mjonMsgRecvTestService.selectListN(mjonMsgRecvTestVO); //step2.현대퓨처넷 수신 처리 //step2-1.현대퓨처넷 미처리 대상 가져오기 List resultListH = mjonMsgRecvTestService.selectListH(mjonMsgRecvTestVO); //step3.IMO 수신 처리 //step3-1.IMO 미처리 대상 가져오기 List resultListI = mjonMsgRecvTestService.selectListI(mjonMsgRecvTestVO); //step1-2.아이하트 순차적으로 데이터 넣어주기(msg_log) for (int i=0;i resultList = mjonMsgService.selectSendNumberList(mjPhoneMemberVO); modelAndView.addObject("sendNumberCnt", resultList.size()); */ return modelAndView; } /** * 문자전송 등록 프로세서 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendMsgTestInsert.do"}) public String sendMsgTestInsert( @ModelAttribute("searchVO") MjonMsgSentTestVO mjonMsgSentTestVO, HttpServletRequest request , RedirectAttributes redirectAttributes, HttpSession httpSession, Model model) throws Exception { try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); System.out.println("mjonMsgSentTestVO.toString()"); System.out.println(mjonMsgSentTestVO.getUserId()); System.out.println(mjonMsgSentTestVO.getCallFrom()); System.out.println(mjonMsgSentTestVO.getCallTo()); System.out.println(mjonMsgSentTestVO.toString()); //mjonMsgVO.setUserId(userId); //mjonMsgService.insertMsgData(mjonMsgVO); mjonMsgSentTestService.insert(mjonMsgSentTestVO); }catch(Exception e) { //redirectAttributes.addFlashAttribute("message", "전송이 완료되지 않았습니다."); //RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendMsgTestList.do"); //return redirectUrlMaker.getRedirectUrl(); e.printStackTrace(); } redirectAttributes.addFlashAttribute("message", "등록이 완료되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendMsgTestList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 문자전송 리스트 * @param searchVO * @param model * @return * uss/ion/msg/SendMsgDetailList.do(개별 문자리스트) * @throws Exception */ @RequestMapping(value= { "/uss/ion/msg/SendMsgDetailList.do"}) public String sendMsgDetailList(@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("msgGroupId"); searchVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); resultList = mjonMsgService.selectMjonMsgGroupDtList(searchVO); model.addAttribute("resultList", resultList); model.addAttribute("searchVO", searchVO); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/SendMsgDetailList"; } /** * 문자전송 리스트 * @param searchVO * @param model * @return uss/ion/msg/ReceiveNumberList.do(수신 문자리스트) * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/ReceiveNumberList.do"}) public String receiveNumberList(@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("msgGroupId"); searchVO.setSearchSortOrd("desc"); } // 기간검색 설정 String toDay = MJUtil.getTodayDate(); //오늘 String beforeMonthDay = MJUtil.getBefore1MonthDate(); //한달 전 if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { searchVO.setNtceBgnde(beforeMonthDay); //searchVO.setNtceEndde(toDay); } List resultList = new ArrayList(); resultList = mjonMsgService.selectMjonMsgGroupDtList(searchVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/ReceiveNumberList"; } /** * 문자전송 리스트 * @param searchVO * @param model * @return uss/ion/msg/ReserveNumberList.do(에약 문자리스트) * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/ReserveNumberList.do"}) public String reserveNumberList(@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("reqFullDate"); searchVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); searchVO.setReserveYn("Y"); searchVO.setReserveCYn("N");//예약 취소건은 보여주지 않는다. // 기간검색 설정 String toDay = MJUtil.getTodayDate(); //오늘 String beforeMonthDay = MJUtil.getBefore1MonthDate(); //한달 전 if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { searchVO.setNtceBgnde(beforeMonthDay); //searchVO.setNtceEndde(toDay); } resultList = mjonMsgService.selectMjonMsgGroupList(searchVO); model.addAttribute("resultList", resultList); // 금일 예약발송 대기건수 int msgGroupCntSum = 0; String todayYn = "N"; if (null != searchVO.getTodayYn() && searchVO.getTodayYn().equals("Y")) { todayYn = "Y"; msgGroupCntSum = mjonMsgService.selectMjonMsgGroupCntSum(searchVO); } model.addAttribute("todayYn", todayYn); model.addAttribute("msgGroupCntSum", msgGroupCntSum); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/ReserveNumberList"; } /** * 문자전송 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/CampaignMsgList.do"(선거문자리스트) * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/CampaignMsgList.do"}) public String campaignMsgList(@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("msgGroupId"); searchVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); searchVO.setSearchCampaignYn("Y"); // 기간검색 설정 String toDay = MJUtil.getTodayDate(); //오늘 String beforeMonthDay = MJUtil.getBefore1MonthDate(); //한달 전 if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { searchVO.setNtceBgnde(beforeMonthDay); //searchVO.setNtceEndde(toDay); } resultList = mjonMsgService.selectMjonMsgGroupList(searchVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/CampaignMsgList"; } /** * 문자전송 등록하기 위한 전 처리(공통코드 처리) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendMsgModify.do","/uss/ion/msg/CampaignMsgModify.do"}) public String sendMsgModify( @ModelAttribute("searchVO") MjonMsgVO searchVO, HttpServletRequest request , Model model) throws Exception { String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; MjonMsgVO mjonMsgVO = new MjonMsgVO(); if(null != searchVO.getUserData() && !"".equals(searchVO.getUserData())) { //수정 mjonMsgVO = mjonMsgService.selectMjonMsgVO(searchVO); //문자 상세보기 이미지 아이디 받아오기 String atchFileId1 =""; String atchFileId2 =""; String atchFileId3 =""; String path1 = mjonMsgVO.getFilePath1(); String path2 = mjonMsgVO.getFilePath2(); String path3 = mjonMsgVO.getFilePath3(); FileVO fileVO1 = new FileVO(); FileVO fileVO2 = new FileVO(); FileVO fileVO3 = new FileVO(); if(StringUtil.isNotEmpty(path1)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO1 = getFilePathToAtchFileId(path1); model.addAttribute("fileVO1", fileVO1); } if(StringUtil.isNotEmpty(path2)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO2 = getFilePathToAtchFileId(path2); model.addAttribute("fileVO2", fileVO2); } if(StringUtil.isNotEmpty(path3)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO3 = getFilePathToAtchFileId(path3); model.addAttribute("fileVO3", fileVO3); } } if(request.getHeader("REFERER").contains("ReceiveNumberList") ) { //수신번호 조회에서 넘김 mjonMsgVO.setBeforeUrl("ReceiveNumberList"); } if(pattern.equals("/uss/ion/msg/CampaignMsgModify.do")) { //사용자 발신 searchVO.setSearchCampaignYn("Y"); } model.addAttribute("mjonMsgVO", mjonMsgVO); return "/uss/ion/msg/SendMsgModify"; } /** * 번호관리 > 수신번호관리 > 상세화면 * @param searchVO * @param model * @return "/uss/ion/msg/ReceiveMsgModify.do" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/ReceiveMsgModify.do"}) public String receiveMsgModify( @ModelAttribute("searchVO") MjonMsgVO searchVO, HttpServletRequest request , Model model) throws Exception { MjonMsgVO mjonMsgVO = new MjonMsgVO(); if(null != searchVO.getUserData() && !"".equals(searchVO.getUserData())) { //수정 mjonMsgVO = mjonMsgService.selectMjonMsgVO(searchVO); } if(request.getHeader("REFERER").contains("ReceiveNumberList") ) { //수신번호 조회에서 넘김 mjonMsgVO.setBeforeUrl("ReceiveNumberList"); } model.addAttribute("searchVO", searchVO); model.addAttribute("mjonMsgVO", mjonMsgVO); return "/uss/ion/msg/ReceiveMsgModify"; } /** * 문자전송 등록 프로세서 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendMsgInsert.do"}) public String sendMsgInsert( @ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request , RedirectAttributes redirectAttributes, HttpSession httpSession, Model model) throws Exception { try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mjonMsgVO.setUserId(userId); //mjonMsgService.insertMsgData(mjonMsgVO); mjonMsgService.insertMjMsgData(mjonMsgVO); }catch(Exception e) { redirectAttributes.addFlashAttribute("message", "전송이 완료되지 않았습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendMsgList.do"); return redirectUrlMaker.getRedirectUrl(); } redirectAttributes.addFlashAttribute("message", "전송이 완료되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendMsgList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 문자전송 삭제 프로세서(del_flag : Y로 업데이트) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgDelete" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendMsgDelete.do","/uss/ion/msg/ReceiveNumberMsgDelete.do","/uss/ion/msg/CampaignMsgDelete.do",}) public String SendMsgDelete( @RequestParam("del") String[] del, @ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request , RedirectAttributes redirectAttributes, Model model) throws Exception { try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); for(String id: del) { mjonMsgVO.setMsgId(id); mjonMsgService.deleteSendMsg(mjonMsgVO); } }catch(Exception e) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.update")); } if(mjonMsgVO.getDelFlag().equals("Y")) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); } //value 값 가져오기 String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; String returnUrl = ""; if(pattern.contains("/uss/ion/msg/SendMsgDelete.do")) { // 문자관리 > 문자전송 리스트 > 문자 상세화면에서 삭제/복구하였을 경우 리스트로 이동 returnUrl = "/uss/ion/msg/SendMsgList.do"; }else if (pattern.contains("/uss/ion/msg/CampaignMsgDelete.do")) { returnUrl = "/uss/ion/msg/CampaignMsgList.do"; } else { // 번호관리 > 수신번호조회 > 문자 상세에서 삭제/복구하였을 경우 returnUrl = "/uss/ion/msg/ReceiveNumberList.do"; } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(returnUrl); return redirectUrlMaker.getRedirectUrl(); } /** * 발신/수신/거부 번호 리스트 조회 * @param searchVO * @param model * @return "/uss/ion/msg/SendNumberList" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/SendNumberList.do" , "/web/msg/SendNumberList.do","/uss/ion/msg/BlockNumberList.do" , "/web/msg/SendNumberList.do"}) public String MjonNumberList(@ModelAttribute("searchVO") MjPhoneMemberVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{ String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; String certType = request.getParameter("certType"); model.addAttribute("certType", certType); /** 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("frstRegistPnttm"); searchVO.setSearchSortOrd("desc"); } if(pattern.equals("/web/msg/SendNumberList.do")) { //사용자 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); searchVO.setUserId(userId); } if(pattern.equals("/uss/ion/msg/SendNumberList.do")) { //관리자 발신번호 정보 - 인증요청 데이터 우선순위 searchVO.setSearchSortAuthYN("Y"); } if(pattern.equals("/uss/ion/msg/SendNumberList.do") || pattern.equals("/web/msg/SendNumberList.do")) { searchVO.setPhmType("01"); //발신조회 }else { searchVO.setPhmType("03"); //거부조회 } List resultList = mjonMsgService.selectSendNumberList(searchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjPhoneMemberVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); if(pattern.equals("/web/msg/SendNumberList.do")) { //사용자 발신 return "/web/msg/SendNumberList"; } if(pattern.equals("/uss/ion/msg/BlockNumberList.do")) { //관리자 블럭 return "/uss/ion/msg/BlockNumberList"; } if(pattern.equals("/web/msg/SendNumberList.do")) { //사용자 블럭 return "/web/msg/BlockNumberList"; } return "/uss/ion/msg/SendNumberList"; //관리자 발신 } /** * 발신/수신/거부 번호 등록/수정 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendNumberModify.do" , "/uss/ion/msg/BlockNumberModify.do"}) public String MjonNumberModify( @ModelAttribute("searchVO") MjPhoneMemberVO searchVO, HttpServletRequest request , Model model) throws Exception { String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; MjPhoneMemberVO mjPhoneMemberVO = new MjPhoneMemberVO(); if(null != searchVO.getPhmId() && !"".equals(searchVO.getPhmId())) { //수정 mjPhoneMemberVO = mjonMsgService.selectPhoneMemberVO(searchVO); } model.addAttribute("mjPhoneMemberVO", mjPhoneMemberVO); if(pattern.equals("/uss/ion/msg/SendNumberModify.do")) { //관리자 발신등록/수정 //인증테스트버튼 //본인인증 String referer = (String)request.getHeader("REFERER"); URL newURL = new URL(referer); String protocol = newURL.getProtocol() + "://"; String host = newURL.getHost(); String succUrl = protocol + host + "/uss/umt/user/niceCheckAjax.do"; String failUrl = protocol + host + "/uss/umt/user/EgovGnrlUserManage.do"; UserDefaultVO userSearchVO = new UserDefaultVO(); userSearchVO.setNiceSuccUrl(succUrl); userSearchVO.setNiceFailUrl(failUrl); model.addAttribute("userSearchVO", userSearchVO); }else { //블럭 return "/uss/ion/msg/BlockNumberModify"; } String certId = ""; if(mjPhoneMemberVO != null) { certId = mjPhoneMemberVO.getCertId(); } List certFileList = new ArrayList(); List fileList = new ArrayList<>(); if(StringUtil.isNotEmpty(certId)) { CertVO certVO = new CertVO(); certVO.setCertId(certId); if(null != certVO.getCertId() && !"".equals(certVO.getCertId())) { //수정 certFileList = certService.selectCertFileList(certVO); } model.addAttribute("certFileList", certFileList); //CertFile파일정보 //첨부파일정보 if(certFileList !=null){ if(1==certFileList.size() && ((CertVO)certFileList.get(0)).getOrignlFileNm() == null) { }else { fileList.addAll(certFileList); } } } //첨부파일 리스트 model.addAttribute("fileList", fileList); //본인인증 끝 return "/uss/ion/msg/SendNumberModify"; } /** * 발신번호 등록 개수 조회 - 3개 이상 시 더 등록 불가능 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value="/uss/ion/msg/SendNumberCntAjax.do") public ModelAndView selectSendNumberCntAjaxt( MjPhoneMemberVO mjPhoneMemberVO , @RequestParam("userId") String userId , ModelMap model , HttpServletRequest request ) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 처리==================================== //로그인 정보 가져오기 mjPhoneMemberVO.setUserId(userId); mjPhoneMemberVO.setPhmType("01"); List resultList = mjonMsgService.selectSendNumberList(mjPhoneMemberVO); modelAndView.addObject("sendNumberCnt", resultList.size()); return modelAndView; } /** * 발신번호 목록에서 상태변경 처리Ajax * @param searchVO * @param model * @return "/uss/ion/msg/updateAuthYnAjax" * @throws Exception */ @RequestMapping("/uss/ion/msg/updateAuthYnAjax.do") public ModelAndView updateAuthYnAjax(@ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO ) throws Exception{ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); String msg = ""; boolean result = true; //이미 처리되었는지 확인 MjPhoneMemberVO statusChkVO = mjonMsgService.selectPhoneMemberVO(mjPhoneMemberVO); if(!"H".equals(statusChkVO.getAuthYn())) { if("Y".equals(statusChkVO.getAuthYn())) { msg = "이미 인증 완료했습니다."; }else if("C".equals(statusChkVO.getAuthYn())) { msg = "이미 반려했습니다."; } modelAndView.addObject("result", result); modelAndView.addObject("msg", msg); return modelAndView; } try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mjPhoneMemberVO.setLastUpdusrId(userId); mjonMsgService.updateAuthYn(mjPhoneMemberVO); msg = "정상적으로 수정되었습니다."; result = true; } catch(Exception e) { msg = "수정에 실패했습니다."; result = false; } try { if(result) { String authYn = mjPhoneMemberVO.getAuthYn(); MjonCommon mjCommon = new MjonCommon(); MjonMsgVO mjonMsgVO = new MjonMsgVO(); //발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 01084329333 ) mjonMsgVO.setCallFrom("01084329333"); String smsTxt = ""; //발송 문자 내용 등록 //문자 발송 문구 변경 - 221117, 승인, 반려를 제외한 인증 타입 삭제(미인증, 심사중, 추가인증필요) /*if(authYn.equals("Y")) { smsTxt = "[문자온] 회원님의 발신번호 승인이 완료 되었으며, 즉시 문자 발송 가능합니다."; }else if(authYn.equals("H")){ smsTxt = "[문자온] 회원님의 발신번호를 심사 중 입니다. 발신번호 심사 후 문자로 안내해 드리겠습니다."; }else { smsTxt = "[문자온] 회원님의 발신번호 승인이 보류 되었습니다. 문자온-마이페이지-발신번호 관리에서 제출서류 보완 부탁드립니다."; }*/ if(authYn.equals("Y")) { smsTxt = "[문자온] 회원님의 발신번호 승인이 완료되었으며, 즉시 문자 발송 가능합니다."; }else { smsTxt = mjPhoneMemberVO.getRejectReason(); } mjonMsgVO.setSmsTxt(smsTxt); //발송 문자 타입(단/장문) 등록 //문자열 길이 체크 해주기 String charset = "euc-kr"; //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산 smsTxt = smsTxt.replace("\r\n", "\n"); int FrBytes = smsTxt.getBytes(charset).length; String msgType = "4"; //90바이트를 초과하는 경우 장문으로 발송 if(FrBytes > 90){ msgType = "6"; } mjonMsgVO.setMsgType(msgType); //그림이미지 첨부파일 갯수 0으로 셋팅 mjonMsgVO.setFileCnt("0"); // 문자타입 구분 if (mjonMsgVO.getMsgType().equals("4")) { mjonMsgVO.setMsgDiv("S"); // 단문 } else if (mjonMsgVO.getMsgType().equals("6")) { if (mjonMsgVO.getFileCnt().equals("0")) { mjonMsgVO.setMsgDiv("L"); // 장문 } else { mjonMsgVO.setMsgDiv("P"); // 그림 } } // 문자타입별 대표전송사 정보 MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 // 전송금액 mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 MberManageVO mberManageVO = mberManageService.selectMber(mjPhoneMemberVO.getUserId()); if(mberManageVO != null && !mberManageVO.getMberSttus().equals("B")) {//회원 정보가 있는 경우만 발송, 회원이 이용정지 상태이면 발송 금지. String callTo = mberManageVO.getMoblphonNo(); mjonMsgVO.setCallTo(callTo); //혹시 문자 내용이 없으면 문자 발송이 안되도록 처리 if(smsTxt.length() > 0 && callTo.length() > 0) {//문자내용 및 수신자 번호가 없는 경우 발송 금지. //문자발송을 위한 데이터 셋팅 함수 호출해주기 MjonMsgVO resultCom = mjCommon.getAdminToMberPhoneSendMsgDataComm(mjonMsgVO); //발신으로 문자 발송 처리 mjonMsgDataService.insertAdmToMberMsgDataInfo(resultCom); } } } msg = msg += (System.lineSeparator()+"안내문자 발송 성공했습니다."); }catch (Exception e){ msg = msg += (System.lineSeparator() +"안내문자 발송 실패했습니다."); } modelAndView.addObject("result", result); modelAndView.addObject("msg", msg); return modelAndView; } /** * 발신번호 신청 반려 팝업 * @param searchVO * @param request * @param model * @return * @throws Exception */ @RequestMapping("/uss/ion/msg/sendNumberReturnPop.do") public String sendNumberReturnPop(@ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO, HttpServletRequest request, Model model) throws Exception { mjPhoneMemberVO = mjonMsgService.selectSendPhoneNumberByPhmId(mjPhoneMemberVO.getPhmId()); model.addAttribute("mjPhoneMemberVO", mjPhoneMemberVO); return "/uss/ion/msg/sendNumberReturnPop"; } /** * 문자전송 등록 프로세서 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendNumberInsert.do" , "/uss/ion/msg/BlockNumberInsert.do"}) public String MjonNumberInsert( @ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO, HttpServletRequest request , RedirectAttributes redirectAttributes, Model model) throws Exception { String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(pattern.equals("/uss/ion/msg/BlockNumberInsert.do")) { //차단의 경우 ID 미입력시 로그인 아이디로 세팅 if("".equals(mjPhoneMemberVO.getUserId())) { mjPhoneMemberVO.setUserId(userId); } } mjonMsgService.insertSendNumber(mjPhoneMemberVO); }catch(Exception e) { } redirectAttributes.addFlashAttribute("message", "등록이 완료되었습니다."); if(pattern.equals("/uss/ion/msg/BlockNumberInsert.do")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/BlockNumberList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendNumberList.do"); return redirectUrlMaker.getRedirectUrl(); } // 발신번호 전체차단/해지 @RequestMapping(value = {"/uss/ion/msg/updateSendNumberBlockAll.do"}) public String updateSendNumberBlockAll( @ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO, HttpServletRequest request , RedirectAttributes redirectAttributes, Model model) throws Exception { String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mjPhoneMemberVO.setPhmType("03"); // 01:발신, 02:수신 , 03:거부 mjPhoneMemberVO.setLastUpdusrId(userId); mjPhoneMemberVO.setMemo("발신번호 차단"); mjPhoneMemberVO.setPhoneNumber(mjPhoneMemberVO.getPhoneNumber().replaceAll(" ", "").replaceAll("-", "").replaceAll("/", "")); mjonMsgService.updateSendNumberBlockAll(mjPhoneMemberVO); }catch(Exception e) { } redirectAttributes.addFlashAttribute("message", "발신번호 차단이 완료되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/BlockNumberList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 발신번호 삭제 프로세서(del_flag : Y로 업데이트) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgDelete" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/SendNumberDelete.do" , "/uss/ion/msg/BlockNumberDelete.do"}) public String SendNumberDelete( @RequestParam("del") String[] del, @ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO, HttpServletRequest request , RedirectAttributes redirectAttributes, Model model) throws Exception { String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); for(String id: del) { mjPhoneMemberVO.setPhmId(id); mjonMsgService.deleteSendNumberDelete(mjPhoneMemberVO); } redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); if(pattern.equals("/uss/ion/msg/BlockNumberDelete.do")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/BlockNumberList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendNumberList.do"); return redirectUrlMaker.getRedirectUrl(); }catch(Exception e) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete")); } redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendNumberList.do"); return redirectUrlMaker.getRedirectUrl(); } // 차단해지 @RequestMapping(value = "/uss/ion/msg/BlockNumberUnblockAjax.do") public ModelAndView saveMainTagAjax( @RequestParam("del") String[] del, @ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO, HttpServletRequest request , RedirectAttributes redirectAttributes, Model model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; try{ LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); for(String id: del) { mjPhoneMemberVO.setPhmId(id); mjPhoneMemberVO.setPhmType("01"); mjPhoneMemberVO.setLastUpdusrId(userId); mjPhoneMemberVO.setMemo("발신번호 차단해제"); mjonMsgService.updateSendNumberUnblock(mjPhoneMemberVO); } } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /** * 발신번호를 수정한다. * @param searchVO * @param hpcmVO * @param bindingResult * @return "forward:/uss/olh/hpc/selectHpcmList.do" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/UpdateBlockNumber.do"}) public String UpdateSendNumber( @ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO, HttpServletRequest request , RedirectAttributes redirectAttributes ) throws Exception { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); try { mjPhoneMemberVO.setLastUpdusrId(lastUpdusrId); // 최종수정자ID mjonMsgService.updateSendNumberDenyType(mjPhoneMemberVO); }catch(Exception e) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.update")); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/BlockNumberList.do"+setBlockNumberMakeParamUrl(mjPhoneMemberVO)); return redirectUrlMaker.getRedirectUrl(); } /** * 발신번호를 수정한다. * @param searchVO * @param hpcmVO * @param bindingResult * @return "forward:/uss/olh/hpc/selectHpcmList.do" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/UpdateSendNumber.do"}) public String UpdateSendNumber2( @ModelAttribute("searchVO") MjPhoneMemberVO mjPhoneMemberVO, HttpServletRequest request , RedirectAttributes redirectAttributes ) throws Exception { boolean errStatus = true; String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); //회원정보 불러오기 MberManageVO mberManageVO = mberManageService.selectMber(mjPhoneMemberVO.getUserId()); String authYnOrigin = ""; try { authYnOrigin = mjPhoneMemberVO.getAuthYnOrigin(); if(mberManageVO != null && !mberManageVO.getMberSttus().equals("B")) { mjPhoneMemberVO.setLastUpdusrId(lastUpdusrId); // 최종수정자ID mjonMsgService.updateSendNumberAddNameType(mjPhoneMemberVO); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.update")); errStatus = false; RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendNumberList.do"+setSendNumberMakeParamUrl(mjPhoneMemberVO)); return redirectUrlMaker.getRedirectUrl(); } }catch(Exception e) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.update")); errStatus = false; } /** * 발신번호 등록시 반려후 재승인 심사가 필요한 경우 * 관리자에게 재승인 신청 접수 내역을 알리는 * 메일 발송 및 문자 발송을 진행한다. * 2022.09.26 우영두 수정 * * 에러가 발생시 오류 메세지만 로그 기록하고 완료 처리함 * */ try { // 즉시승인이 아닌경우 문자온 법인폰으로 알림 문자 발송하기. if (errStatus) { // 인증여부 변경시에만 문자발송 if (!mjPhoneMemberVO.getAuthYn().equals(authYnOrigin)) { String userNm = mjPhoneMemberVO.getUserName(); String userId = mjPhoneMemberVO.getUserId(); String phoneNum = mjPhoneMemberVO.getPhoneNumber(); String authYn = mjPhoneMemberVO.getAuthYn(); MjonCommon mjCommon = new MjonCommon(); MjonMsgVO mjonMsgVO = new MjonMsgVO(); //발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 01084329333 ) mjonMsgVO.setCallFrom("01084329333"); String smsTxt = ""; //발송 문자 내용 등록 //문자 발송 문구 변경 - 221117, 승인, 반려를 제외한 인증 타입 삭제(미인증, 심사중, 추가인증필요) /* if(authYn.equals("Y")) { smsTxt = "[문자온] 회원님의 발신번호 승인이 완료 되었으며, 즉시 문자 발송 가능합니다."; }else if(authYn.equals("H")){ smsTxt = "[문자온] 회원님의 발신번호를 심사 중 입니다. 발신번호 심사 후 문자로 안내해 드리겠습니다."; }else { smsTxt = "[문자온] 회원님의 발신번호 승인이 보류 되었습니다. 문자온-마이페이지-발신번호 관리에서 제출서류 보완 부탁드립니다."; }*/ if(authYn.equals("Y")) { smsTxt = "[문자온] 회원님의 발신번호 승인이 완료되었으며, 즉시 문자 발송 가능합니다."; }else { smsTxt = mjPhoneMemberVO.getRejectReason(); } mjonMsgVO.setSmsTxt(smsTxt); //발송 문자 타입(단/장문) 등록 //문자열 길이 체크 해주기 String charset = "euc-kr"; //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산 smsTxt = smsTxt.replace("\r\n", "\n"); int FrBytes = smsTxt.getBytes(charset).length; String msgType = "4"; //90바이트를 초과하는 경우 장문으로 발송 if(FrBytes > 90){ msgType = "6"; } mjonMsgVO.setMsgType(msgType); //그림이미지 첨부파일 갯수 0으로 셋팅 mjonMsgVO.setFileCnt("0"); // 문자타입 구분 if (mjonMsgVO.getMsgType().equals("4")) { mjonMsgVO.setMsgDiv("S"); // 단문 } else if (mjonMsgVO.getMsgType().equals("6")) { if (mjonMsgVO.getFileCnt().equals("0")) { mjonMsgVO.setMsgDiv("L"); // 장문 } else { mjonMsgVO.setMsgDiv("P"); // 그림 } } // 문자타입별 대표전송사 정보 MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 // 전송금액 mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 if(mberManageVO != null && !mberManageVO.getMberSttus().equals("B")) {//회원 정보가 있는 경우만 발송, 회원이 이용정지 상태이면 발송 금지. String callTo = mberManageVO.getMoblphonNo(); mjonMsgVO.setCallTo(callTo); //혹시 문자 내용이 없으면 문자 발송이 안되도록 처리 if(smsTxt.length() > 0 && callTo.length() > 0) {//문자내용 및 수신자 번호가 없는 경우 발송 금지. //문자발송을 위한 데이터 셋팅 함수 호출해주기 MjonMsgVO resultCom = mjCommon.getAdminToMberPhoneSendMsgDataComm(mjonMsgVO); //발신으로 문자 발송 처리 mjonMsgDataService.insertAdmToMberMsgDataInfo(resultCom); } } } } } catch (Exception e) { System.out.println("+++++++++++++++++++++++++++++ 발신번호 승인 / 반려 등에 대한 사용자에게 문자발송 Function Error !!!" + e); } redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendNumberList.do"+setSendNumberMakeParamUrl(mjPhoneMemberVO)); return redirectUrlMaker.getRedirectUrl(); } /** * 지도를 불러온다 * @param * @param * @param * @return "letter/map/MapInsert.jsp" * @throws Exception */ @RequestMapping("/MapUrlInsert.do") public String testmap2(HttpServletRequest request, ModelMap model) throws Exception { return "letter/map/MapInsert"; } /** * 지도의 위도 경도를 DB에 입력하고 mapId를 불러온다 * @param mapLat * @param mapLng * @param * @return modelAndView * @throws Exception */ @RequestMapping("/MapUrlInsertAjax.do") public ModelAndView testmapajax(HttpServletRequest request, ModelMap model, @RequestParam("mapLat") String mapLat, @RequestParam("mapLng") String mapLng) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); MjonMapAddressVO mjonMapAddressVO = new MjonMapAddressVO(); mjonMapAddressVO.setMapLat(mapLat); mjonMapAddressVO.setMapLng(mapLng); mjonMapAddressVO = mjonMsgService.insertMapAddress(mjonMapAddressVO); String url = request.getRequestURL().toString(); url = url.substring(0, url.lastIndexOf("/")); model.addAttribute("url",url); modelAndView.addObject("url", url); modelAndView.addObject("seq", mjonMapAddressVO.getMapId()); return modelAndView; } /** * 지도의 mapId를 전달 받아 DB에서 해당 mapId의 위도 경도를 지도에 표시한다. * @param seq * @param * @param * @return modelAndView * @throws Exception */ @RequestMapping("/MapUrl.do") public String testmapreceive(HttpServletRequest request, ModelMap model) throws Exception { String seq = request.getParameter("seq"); MjonMapAddressVO mjonMapAddressVO = new MjonMapAddressVO(); mjonMapAddressVO.setMapId(Integer.valueOf(seq)); mjonMapAddressVO = mjonMsgService.selectMapAddress(mjonMapAddressVO); model.addAttribute("lat", mjonMapAddressVO.getMapLat()); model.addAttribute("lng", mjonMapAddressVO.getMapLng()); return "letter/map/MapReceive"; } /** * 실시간 문자전송 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/RealTimeMsgList.do", "/uss/ion/msg/RealTimeMsgListAjax.do"}) public String RealTimeMsgList(@ModelAttribute("searchVO") MjonMsgVO searchVO, HttpServletRequest request , ModelMap model) throws Exception{ //value 값 가져오기 String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; if(pattern.equals("/uss/ion/msg/RealTimeMsgListAjax.do")) { /** 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("reqDate"); searchVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); resultList = mjonMsgService.selectMjonRealTimeMsgList(searchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/RealTimeMsgListAjax"; } return "/uss/ion/msg/RealTimeMsgList"; } /** * 문자전송 순위 * @param searchVO * @param model * @return "/uss/ion/msg/LankSendNumber" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/RankNumberList.do"}) public String LankSendNumber(@ModelAttribute("searchVO") MjPhoneMemberVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{ 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("rank"); searchVO.setSearchSortOrd("asc"); } if(pattern.equals("/uss/ion/msg/SendNumberList.do") || pattern.equals("/web/msg/SendNumberList.do")) { searchVO.setPhmType("01"); //발신조회 }else { searchVO.setPhmType("03"); //거부조회 } List resultList = mjonMsgService.selectRankNumberList(searchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjPhoneMemberVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/RankNumberList"; //문자전송순위 } /** * 문자전송 순위 * @param searchVO * @param model * @return "/uss/ion/msg/LankSendNumber" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/RankNumberList_230125.do"}) public String LankSendNumber_230125(@ModelAttribute("searchVO") MjPhoneMemberVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{ 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("rank"); searchVO.setSearchSortOrd("asc"); } if(pattern.equals("/uss/ion/msg/SendNumberList.do") || pattern.equals("/web/msg/SendNumberList.do")) { searchVO.setPhmType("01"); //발신조회 }else { searchVO.setPhmType("03"); //거부조회 } List resultList = mjonMsgService.selectRankNumberList_230125(searchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjPhoneMemberVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); try { if (resultList.size()>0) { model.addAttribute("sttstDate", resultList.get(0).getFrstRegistPnttm()); } }catch(Exception ex) { ex.printStackTrace(); } return "/uss/ion/msg/RankNumberList_230125"; //문자전송순위 } /** * 문자수신 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/ReceiveNumberListBackup.do"}) public String ReceiveNumberListBackup(@ModelAttribute("searchVO") MjonMsgVO searchVO, HttpServletRequest request , ModelMap model) throws Exception{ //value 값 가져오기 String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; 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("msgGroupId"); searchVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); //resultList = mjonMsgService.selectMjonMsgGroupList(searchVO); resultList = mjonMsgService.selectMjonMsgGroupDtList(searchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/ReceiveNumberList"; } /** * 전화인증 * @param searchVO * @param model * @return "/uss/ion/msg/LankSendNumber" * @throws Exception */ @RequestMapping(value= {"/web/mjon/ArsAuthAjax.do"}) public ModelAndView ArsAuthAjax(@ModelAttribute("searchVO") MjPhoneMemberVO searchVO, HttpServletRequest request, HttpSession session, ModelMap model) throws Exception{ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; String result =""; String userid = "itn0202"; //ARS 관리자 가입 Id String type = "0"; //0=음성인증 : 인증번호를 듣고 화면에 입력, 1=SMS 문자인증 : 기존 문자인증과 동일한 기능, 2=음성인증(단순확인):음성안내 후 폰에 1자리 번호 입력, 3=음성인증(인증번호):인증번호를 화면 또는 전화 음성 확인 후 폰에 인증번호 입력 String callee = searchVO.getPhoneNumber(); //고객 전화번호 String code = ""; //4~6자리 인증번호(음성 ARS 에서 인증하라고 하는 번호: ITN에서 임의로 생성) String svcnumber = "221"; //개통 후 별도 안내 ( hjhauth.jar JDK 1.8 사용조건) String command = "API_101000"; //요청코드 고정값 boolean is1MinutePass = true; // Start SendLogVO sendLogVO2 = new SendLogVO(); sendLogVO2.setReceive(callee); sendLogVO2 = mjonMsgDataService.selectSysMsgLog(sendLogVO2); if (sendLogVO2 == null) { // Pass : 1분 경과 } else { // 시간 비교 Date nowDate = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date compareDate = format.parse(sendLogVO2.getFrstSendPnttm()); Calendar cal = Calendar.getInstance(); cal.setTime(compareDate); // 1분 추가 cal.add(Calendar.MINUTE, +1); compareDate = cal.getTime(); if (compareDate.compareTo(nowDate) < 0) { // Pass : 1분 경과 } else if (compareDate.compareTo(nowDate) > 0) { // 제한 : 1분 미만 is1MinutePass = false; } } // 1분 경과 if (is1MinutePass == true) { //인증번호 랜덤 생성 long seed = System.currentTimeMillis(); Random random = new Random(seed); //code = Integer.toString(random.nextInt(4)); StringBuffer randomCode = new StringBuffer(); for(int i=0; i<6; i++) { code = randomCode.append(Integer.toString(random.nextInt(10))).toString(); } try{ Authentication auth = new Authentication(); auth.setUserid(userid); auth.setType("0"); auth.setCallee(callee); auth.setCode(code); auth.setSvcnumber(svcnumber); //jdk 1.8 버전부터 적용 //boolean bool_rtn = auth.send_Auth_Seed(); //전달 받은 전화번호로 전화를 걸어준다. boolean bool_rtn = auth.send_Auth_Stan(); result = auth.getResult(); //접속 아이피 정보를 받아온다. ClientIP clientIp = new ClientIP(); String ip = clientIp.getClientIP(request); //세션에 인증 정보를 저장해 준다. AuthCertVO certVO = new AuthCertVO(); certVO.setCertPhone(callee); certVO.setCertCode(code); certVO.setCertIpaddr(ip); certVO.setCertType("ARS전화인증"); certVO.setCertResult(result); Date now = new Date(); SimpleDateFormat transFormat = new SimpleDateFormat("yyyyMMddHHmmss"); //현재 날짜 저장하기 certVO.setCertDate(transFormat.format(now)); request.getSession().setAttribute("AuthARSCertVO", certVO); // 본인인증 확인용 /*session = request.getSession(); AuthCertVO certArsVO = (AuthCertVO) session.getAttribute("AuthARSCertVO"); System.out.println("++++++++++++++++ code ::: "+certArsVO.getCertCode()); System.out.println("++++++++++++++++ phone ::: "+certArsVO.getCertPhone()); System.out.println("++++++++++++++++ ip ::: "+certArsVO.getCertIpaddr());*/ model.addAttribute("result", result); model.addAttribute("certCode", code); // Step1. 문자발송 Map mapInfo = new HashMap(); mapInfo = sendMsgData("system", code, "01084329333", callee); isSuccess = Boolean.parseBoolean((mapInfo.get("IsSuccess").toString())); msg = mapInfo.get("Msg").toString(); }catch(Exception e) { //throw new AppException(new ErrorHandler("AuthVoice",e.getMessage()).getMessage()); System.out.print(e); } } else { isSuccess = false; msg = "1분후 인증번호 발송해주세요."; } model.addAttribute("result", result); model.addAttribute("certCode", code); model.addAttribute("isSuccess", isSuccess); model.addAttribute("msg", msg); return modelAndView; } // 문자발송 public Map sendMsgData(String userId, String code, String fromMobile, String toMobile) throws Exception{ boolean isSuccess = true; String msg = "인증번호 문자 전송이 완료되었습니다."; String resultSts = "0"; String resultBlockSts = "0"; boolean is1MinutePass = true; String smsTxt = "[문자온] 인증번호 : " + code; try { Date nowDate = new Date(); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); MjonMsgVO mjonMsgVO = new MjonMsgVO(); mjonMsgVO.setUserId("system"); String msgType = "4"; // 전송사 전송 배분 MjonMsgVO pramVO = new MjonMsgVO(); List sendRateList = mjonMsgService.selectTodayAgentSendCntList(pramVO); // 전송사 전송 배분률 및 현재 전송건수 // 조회 for (MjonMsgVO tmpVO : sendRateList) { float cnt = Float.parseFloat(tmpVO.getMsgGroupCnt()); float totCnt = tmpVO.getTotCnt(); tmpVO.setSendRateInfo(Float.parseFloat(tmpVO.getSendRate()) - (cnt / totCnt * 100)); // 배분률 - 현재전송 비율 } String sendAgent = sendRateList.get(0).getAgentCode(); float maxRate = sendRateList.get(0).getSendRateInfo(); for (MjonMsgVO tmpVO : sendRateList) { // 배분률 대비 현재전송 비율이 가장 적은거 찾기 if (maxRate < tmpVO.getSendRateInfo()) { maxRate = tmpVO.getSendRateInfo(); sendAgent = tmpVO.getAgentCode(); } } mjonMsgVO.setMsgDiv("S"); // 단문 // 문자타입별 대표전송사 정보 MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 // 전송금액 mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 mjonMsgVO.setMsgType("4"); mjonMsgVO.setSmsTxt(smsTxt); mjonMsgVO.setCallFrom(fromMobile); mjonMsgVO.setCallTo(toMobile); mjonMsgVO.setReserveYn("N"); // 즉시 전송 mjonMsgVO.setMsgGroupCnt("0"); mjonMsgVO.setUserId(userId); mjonMsgVO.setMsgPayCode("SMS"); mjonMsgVO.setReqDate(simpleDateFormat2.format(nowDate)); MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); mjonMsgVO.setAgentCode(returnVO.getAgentCode()); resultSts = returnVO.getSendMsgCnt(); resultBlockSts = returnVO.getSendMsgBlockCnt(); // 시스템 발송 로그 SendLogVO sendLogVO = new SendLogVO(); // SendType 1:문자로 발송 2:이메일로 발송 sendLogVO.setSendId(returnVO.getMsgGroupId()); sendLogVO.setSendType("1"); sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom()); sendLogVO.setReceive(mjonMsgVO.getCallTo()); sendLogVO.setCheckNo(code); sendLogVO.setContents(smsTxt); mjonMsgDataService.insertSysMsgLog(sendLogVO); if (!resultSts.equals("0")) { isSuccess = true; msg = "문자 전송이 완료되었습니다."; } else { isSuccess = false; msg = "문자 전송에 오류가 발생하였습니다."; } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } Map mapInfo = new HashMap(); mapInfo.put("IsSuccess", isSuccess); mapInfo.put("Msg", msg); return mapInfo; } /** * 전송사 발송 결과 코드 리스트 * @param MjonMsgResultCodeVO * @param model * @return "/uss/ion/msg/MsgResultCodeList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/MsgResultCodeList.do"}) public String MsgResultCodeList(@ModelAttribute("searchVO") MjonMsgResultCodeVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{ /* if(StringUtil.isEmpty(searchVO.getAgentCode())){ //최초 전송사 코드가 없는 경우 아이하트로 설정함 searchVO.setAgentCode("01"); } */ /** 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()); List resultList = mjonMsgService.selectMsgResultCodeListPageing(searchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgResultCodeVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/MsgResultCodeList"; //문자결과 리스트 } /** * 전송사 발송 결과 코드 등록 화면 * @param MjonMsgResultCodeVO * @param model * @return "" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/addMsgResultCode.do"}) public String addMsgResultCode(@ModelAttribute("searchVO") MjonMsgResultCodeVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{ return "/uss/ion/msg/MsgResultCodeRegist"; } /** * 전송사 발송 결과 코드 등록 처리 * @param MjonMsgResultCodeVO * @param model * @return "/uss/ion/msg/MsgResultCodeModify.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/insertMsgResultCode.do"}) public String insertMsgResultCode(@ModelAttribute("searchVO") MjonMsgResultCodeVO searchVO, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes) throws Exception{ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); searchVO.setFrstRegisterId(lastUpdusrId); searchVO.setLastUpdusrId(lastUpdusrId); int resultCnt = mjonMsgService.insertMsgResultCode(searchVO); if(resultCnt == 0) { redirectAttributes.addFlashAttribute("message", "등록이 실패되었습니다."); }else { redirectAttributes.addFlashAttribute("message", "등록이 완료되었습니다."); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("uss/ion/msg/MsgResultCodeList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 전송사 발송 결과 코드 수정 * @param MjonMsgResultCodeVO * @param model * @return "/uss/ion/msg/MsgResultCodeModify.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/MsgResultCodeModify.do"}) public String MsgResultCodeModify(@ModelAttribute("searchVO") MjonMsgResultCodeVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{ MjonMsgResultCodeVO result = mjonMsgService.selectMsgResultCodeModify(searchVO); model.addAttribute("result", result); model.addAttribute("searchVO", searchVO); return "/uss/ion/msg/MsgResultCodeModify"; } /** * 전송사 발송 결과 코드 수정 * @param MjonMsgResultCodeVO * @param model * @return "/uss/ion/msg/MsgResultCodeModify.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/updateMsgResultCode.do"}) public String updateMsgResultCode(MjonMsgResultCodeVO searchVO, ModelMap model, RedirectAttributes redirectAttributes) throws Exception{ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); //수정 아이디 입력 searchVO.setLastUpdusrId(lastUpdusrId); int resultCnt = mjonMsgService.updateMsgResultCode(searchVO); if(resultCnt == 0) { redirectAttributes.addFlashAttribute("message", "수정이 실패되었습니다."); }else { redirectAttributes.addFlashAttribute("message", "수정이 완료되었습니다."); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("uss/ion/msg/MsgResultCodeList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 전송사 발송 결과 코드 삭제 * @param MjonMsgResultCodeVO * @param model * @return "/uss/ion/msg/MsgResultCodeModify.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/deleteMsgResultCode.do"}) public String deleteMsgResultCode(MjonMsgResultCodeVO searchVO, ModelMap model, RedirectAttributes redirectAttributes) throws Exception{ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); //수정 아이디 입력 searchVO.setLastUpdusrId(lastUpdusrId); int resultCnt = mjonMsgService.deleteMsgResultCode(searchVO); if(resultCnt == 0) { redirectAttributes.addFlashAttribute("message", "삭제가 실패되었습니다."); }else { redirectAttributes.addFlashAttribute("message", "삭제가 완료되었습니다."); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("uss/ion/msg/MsgResultCodeList.do"); return redirectUrlMaker.getRedirectUrl(); } //회원정보 팝업 문자 전송 리스트(전체) 엑셀 다운로드 @RequestMapping(value= {"/uss/ion/msg/selectMberSendMsgExcelDownload.do"}) public void selectMberSendMsgExcelDownload( MjonMsgVO mjonMsgVO, @ModelAttribute MberManageVO reqMberManageVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { mjonMsgVO.setRecordCountPerPage(100000); mjonMsgVO.setFirstIndex(0); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ mjonMsgVO.setSiteId(loginVO.getSiteId()); } // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. SXSSFWorkbook wb = new SXSSFWorkbook(100); CellStyle style = wb.createCellStyle(); style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); Font font = wb.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold Cell cell = null; Row row = null; String fileName ="문자 전송 리스트(전체)"; String sheetTitle = ""; try{ mjonMsgVO.setUserId(reqMberManageVO.getMberId()); if(StringUtil.isEmpty(mjonMsgVO.getNtceBgnde())) { Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; cal.set(year,month,1); String firstDay = Integer.toString(cal.getActualMinimum(Calendar.DAY_OF_MONTH)); String lastDay = Integer.toString(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); String repMonth = ""; String repfirstDay = ""; if(month < 10) { repMonth = "0" + Integer.toString(month); }else { repMonth = Integer.toString(month); } if(Integer.parseInt(firstDay) < 10) { repfirstDay = "0" + firstDay; }else { repfirstDay = firstDay; } String ntceBgnde = Integer.toString(year) + "-" + repMonth + "-" + repfirstDay; String ntceEndde = Integer.toString(year) + "-" + repMonth + "-" + lastDay; mjonMsgVO.setNtceBgnde(ntceBgnde); mjonMsgVO.setNtceEndde(ntceEndde); } mjonMsgVO.setMsgType(""); List resultList = mjonMsgService.selectUserMsgDataListByMbrId(mjonMsgVO); { //화면 리스트 sheetTitle = "문자 전송 리스트(전체)" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); for(int i=0 ; i < sendMsgUsrExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(sendMsgUsrExcelValue[i][1]); } for(int i=0; i < resultList.size(); i++){ row = sheet.createRow(i+1); for(int j=0 ; j < sendMsgUsrExcelValue.length ; j++) { cell = row.createCell(j); cell.setCellStyle(style); if(j==0) cell.setCellValue(i+1); //번호 if(j==1) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getUserId()); //아이디 if(j==2) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getCallFrom()); //발신자 if(j==3) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getReqDate()); //요청시간 if(j==4) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getSmsTxt()); //문자내용 if(j==5) { String msgType = ((MjonMsgVO)resultList.get(i)).getMsgType(); String fileCnt = ((MjonMsgVO)resultList.get(i)).getFileCnt(); String msgTypeTxt = ""; if(msgType.equals("4")) { msgTypeTxt = "단문"; }else if(msgType.equals("6")) { if(fileCnt.equals("0")) { msgTypeTxt = "장문"; }else { msgTypeTxt = "그림 " + fileCnt + "장";; } } cell.setCellValue(msgTypeTxt); //메시지타입 } if(j==6) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getMsgGroupCnt()); //건수 String resultCodeTxt = ((MjonMsgVO)resultList.get(i)).getResultCodeTxt(); if(j==7) { if(resultCodeTxt.equals("S")) { cell.setCellValue(((MjonMsgVO)resultList.get(i)).getTotSPrice()); //정상성공 발송 금액 }else { cell.setCellValue(((MjonMsgVO)resultList.get(i)).getTotFWPrice()); //실패대기 발송 금액 } } if(j==8) { String resultTxt = ""; if(resultCodeTxt.equals("W")) { resultTxt = "결과대기"; }else if(resultCodeTxt.equals("F")) { resultTxt = "수신오류"; }else { resultTxt = "정상수신"; } cell.setCellValue(resultTxt); //발송결과 } if(j==9) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getAgentCodeTxt()); //전송사 } } } response.setHeader("Set-Cookie", "fileDownload=true; path=/"); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); Date currentTime = new Date (); String mTime = mSimpleDateFormat.format ( currentTime ); fileName = fileName+"("+mTime+")"; response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); wb.write(response.getOutputStream()); }catch(Exception e) { response.setHeader("Set-Cookie", "fileDownload=false; path=/"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Content-Type","text/html; charset=utf-8"); OutputStream out = null; try { out = response.getOutputStream(); byte[] data = new String("fail..").getBytes(); out.write(data, 0, data.length); } catch(Exception ignore) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } //문자 전송 리스트(전체) 엑셀 다운로드 @RequestMapping(value= {"/uss/ion/msg/SendMsgExcelDownload.do"}) public void sendMsgExcelDownload( MjonMsgVO mjonMsgVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { mjonMsgVO.setRecordCountPerPage(mjonMsgVO.getPageUnit()); mjonMsgVO.setFirstIndex(0); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ mjonMsgVO.setSiteId(loginVO.getSiteId()); } // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. SXSSFWorkbook wb = new SXSSFWorkbook(100); CellStyle style = wb.createCellStyle(); style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); Font font = wb.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold Cell cell = null; Row row = null; String fileName ="문자 전송 리스트(전체)"; String sheetTitle = ""; try{ List resultList = mjonMsgService.selectMjonMsgGroupList(mjonMsgVO); { //화면 리스트 sheetTitle = "문자 전송 리스트(전체)" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); for(int i=0 ; i < sendMsgExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(sendMsgExcelValue[i][1]); } for(int i=0; i < resultList.size(); i++){ row = sheet.createRow(i+1); for(int j=0 ; j < sendMsgExcelValue.length ; j++) { cell = row.createCell(j); cell.setCellStyle(style); if(j==0) cell.setCellValue(i+1); //번호 if(j==1) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getUserId()); //아이디 if(j==2) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getCallFrom()); //발신자 if(j==3) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getMsgGroupCnt()); //발송건수 if(j==4) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getReqDate()); //요청시간 if(j==5) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getSmsTxt()); //문자내용 if(j==6) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getMsgTypeTxt()); //메시지타입 if(j==7) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getConectMthdTxt()); //접속기기 if(j==8) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getAgentCodeTxt()); //전송사 } } } response.setHeader("Set-Cookie", "fileDownload=true; path=/"); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); Date currentTime = new Date (); String mTime = mSimpleDateFormat.format ( currentTime ); fileName = fileName+"("+mTime+")"; response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); wb.write(response.getOutputStream()); }catch(Exception e) { response.setHeader("Set-Cookie", "fileDownload=false; path=/"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Content-Type","text/html; charset=utf-8"); OutputStream out = null; try { out = response.getOutputStream(); byte[] data = new String("fail..").getBytes(); out.write(data, 0, data.length); } catch(Exception ignore) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } //문자 전송 리스트(전체) 엑셀 다운로드 @RequestMapping(value="/uss/ion/msg/SendMsgDtlExcelDownload.do") public void sendMsgDtlExcelDownload( MjonMsgVO mjonMsgVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { mjonMsgVO.setRecordCountPerPage(100000); mjonMsgVO.setFirstIndex(0); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ mjonMsgVO.setSiteId(loginVO.getSiteId()); } // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. SXSSFWorkbook wb = new SXSSFWorkbook(100); CellStyle style = wb.createCellStyle(); style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); Font font = wb.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold Cell cell = null; Row row = null; String fileName ="문자 전송 리스트(상세)"; String sheetTitle = ""; try{ List resultList = mjonMsgService.selectMjonMsgGroupDtList(mjonMsgVO); { //화면 리스트 sheetTitle = "문자 전송 리스트(상세)" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); for(int i=0 ; i < sendMsgDtlExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(sendMsgDtlExcelValue[i][1]); } for(int i=0; i < resultList.size(); i++){ row = sheet.createRow(i+1); for(int j=0 ; j < sendMsgDtlExcelValue.length ; j++) { cell = row.createCell(j); cell.setCellStyle(style); if(j==0) cell.setCellValue(i+1); //번호 if(j==1) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getUserId()); //아이디 if(j==2) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getCallFrom()); //발신자 if(j==3) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getCallTo()); //수신자 if(j==4) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getSentDateTxt()); //전송시간 if(j==5) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getSmsTxt()); //문자내용 if(j==6) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getCurStateTxt()); //현재상태 if(j==7) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getRsltCode() + "/" + ((MjonMsgVO)resultList.get(i)).getRsltCode2()); //처리결과 if(j==8) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getMsgTypeTxt()); //메시지타입 if(j==9) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getConectMthdTxt()); //접속기기 if(j==10) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getAgentCodeTxt()); //전송사 if(j==11) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getRsltNet()); //통신사 if(j==12) cell.setCellValue(((MjonMsgVO)resultList.get(i)).getDelFlagTxt()); //삭제여부 } } } response.setHeader("Set-Cookie", "fileDownload=true; path=/"); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); Date currentTime = new Date (); String mTime = mSimpleDateFormat.format ( currentTime ); fileName = fileName+"("+mTime+")"; response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); wb.write(response.getOutputStream()); }catch(Exception e) { response.setHeader("Set-Cookie", "fileDownload=false; path=/"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Content-Type","text/html; charset=utf-8"); OutputStream out = null; try { out = response.getOutputStream(); byte[] data = new String("fail..").getBytes(); out.write(data, 0, data.length); } catch(Exception ignore) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } /** * 문자전송 등록하기 위한 전 처리(공통코드 처리) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/insertAdminToMemberSendMsgDataAjax.do"}) public ModelAndView insertMemberSendMsgDataAjax(MjonMsgVO mjonMsgVO , final MultipartHttpServletRequest multiRequest , HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 정보 획득 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); String resultSts = "0"; String resultBlockSts = "0"; if(userId.equals("")) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "LoginFail"); return modelAndView; } try { //첨부파일 체크 해주기 String atchFileId = ""; String imgFilePath = ""; String isThumbFile = ""; String KeyStr = "PHO_"; int fileCount = 0; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()){ if ("".equals(atchFileId)) {//신규 첨부파일 처리 String imagePath = ""; Date now = new Date(); SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd"); String fdlDate = formatDate.format(now); //로컬 과 개발서버의 이미지 저장 경로 분기처리 if(request.getServerName().equals("localhost")) { imagePath = fileSaveDir + "/file/MMS/" + fdlDate; }else { imagePath = fileSaveDir+"/file/MMS/" + fdlDate; } //별도 이미지 저장 함수로 파일 처리함 //List result = fileUtil.parseImageFileInf(files, KeyStr, 0, atchFileId , imagePath, isThumbFile); //이미지 리사이징 처리하여 첨부되도록 처리 List result = fileUtil.parseImageFileResizeInf(files, KeyStr, 0, atchFileId , imagePath, isThumbFile); atchFileId = fileMngService.insertFileInfs(result); for(int i = 0; i < result.size(); i++) { String fileStreCours = result.get(i).getFileStreCours(); String streFileNm = result.get(i).getStreFileNm(); String fileExtSn = result.get(i).getFileExtsn(); imgFilePath = fileStreCours+ "/" + streFileNm + "." + fileExtSn; if(i == 0) { mjonMsgVO.setFileName1(imgFilePath); }else if(i == 1) { mjonMsgVO.setFileName2(imgFilePath); }else { mjonMsgVO.setFileName3(imgFilePath); } fileCount ++; } //첨부파일 갯수 셋팅해주기 if(fileCount > 0) { mjonMsgVO.setFileCnt(Integer.toString(fileCount)); mjonMsgVO.setMsgType("6"); } } } //문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅 mjonMsgVO.setMsgKind("S"); //회원 발신번호 받아오기 String callTo = mjonMsgVO.getCallTo(); //mjonMsgVO.setCallTo(vaMsgLogVO.getCallTo()); //수신자 번호 //mjonMsgVO.setUserId(userId); //회원아이디 //JSPark 2023.01.13 : 시스템 발송 문자로 처리 => 전송사별 발송통계시 필요, 발송한 관리자 확인필요시 관리자 로그시간과 발송시간 확인요망 mjonMsgVO.setUserId("system"); // 문자전송 ID mjonMsgVO.setReserveYn("N"); //즉시전송 if(mjonMsgVO.getFileCnt() == null) {//첨부이미지 갯수가 없는 경우 mjonMsgVO.setFileCnt("0"); } //수신번호가 배열로 되어있어서 배열에 담아준다. String[] phone = new String[1]; for(int j=0; j< 1; j++) { phone[j] = callTo; } mjonMsgVO.setCallToList(phone); // 문자타입 구분 if (mjonMsgVO.getMsgType().equals("4")) { mjonMsgVO.setMsgDiv("S"); // 단문 } else if (mjonMsgVO.getMsgType().equals("6")) { if (fileCount > 0) { mjonMsgVO.setMsgDiv("P"); // 그림 } else { mjonMsgVO.setMsgDiv("L"); // 장문 } } // 문자타입별 대표전송사 정보 MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 if (mjonMsgVO.getAgentCode().equals("03")) { //아이엠오 전송사 문자 타입 설정해 주기 // 단순 장문 문자는 neoType : 2, 그림 포함 : 4 if (mjonMsgVO.getFileCnt().equals("0")) { // 단순 장문 문자 mjonMsgVO.setNeoType("2"); } else { // 그림포함 문자인경우 mjonMsgVO.setNeoType("4"); } } // 전송금액 mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 //현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크 String userPoint = "0.0"; mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장 mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력 //문자 발송 처리 MjonMsgReturnVO returnVO = mjonMsgDataService.insertAdmToMberMsgDataInfo(mjonMsgVO); mjonMsgVO.setAgentCode(returnVO.getAgentCode()); resultSts = returnVO.getSendMsgCnt(); resultBlockSts = returnVO.getSendMsgBlockCnt(); if (!resultSts.equals("")) { modelAndView.addObject("message", "문자 발송에 성공 하였습니다."); modelAndView.addObject("result", "success"); modelAndView.addObject("resultSts", resultSts); modelAndView.addObject("resultBlockSts", resultBlockSts); } else { modelAndView.addObject("message", "문자 발송에 실패 하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { throw new Exception("관리자가 사용자에게 문자 발송 오류 ::: " + e); } return modelAndView; } /** * 문자전송 등록하기 위한 전 처리(공통코드 처리) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/insertAdminToMemberSendMsgData2Ajax.do"}) public ModelAndView insertMemberSendMsgData2Ajax(MjonMsgVO mjonMsgVO , final MultipartHttpServletRequest multiRequest , HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 정보 획득 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); String resultSts = "0"; String resultBlockSts = "0"; if(userId.equals("")) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "LoginFail"); return modelAndView; } try { //첨부파일 체크 해주기 String atchFileId = ""; String imgFilePath = ""; String isThumbFile = ""; String KeyStr = "PHO_"; int fileCount = 0; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()){ if ("".equals(atchFileId)) {//신규 첨부파일 처리 String imagePath = ""; Date now = new Date(); SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd"); String fdlDate = formatDate.format(now); //로컬 과 개발서버의 이미지 저장 경로 분기처리 if(request.getServerName().equals("localhost")) { imagePath = fileSaveDir + "/file/MMS/" + fdlDate; }else { imagePath = fileSaveDir+"/file/MMS/" + fdlDate; } //별도 이미지 저장 함수로 파일 처리함 //List result = fileUtil.parseImageFileInf(files, KeyStr, 0, atchFileId , imagePath, isThumbFile); //이미지 리사이징 처리하여 첨부되도록 처리 List result = fileUtil.parseImageFileResizeInf(files, KeyStr, 0, atchFileId , imagePath, isThumbFile); atchFileId = fileMngService.insertFileInfs(result); for(int i = 0; i < result.size(); i++) { String fileStreCours = result.get(i).getFileStreCours(); String streFileNm = result.get(i).getStreFileNm(); String fileExtSn = result.get(i).getFileExtsn(); imgFilePath = fileStreCours+ "/" + streFileNm + "." + fileExtSn; if(i == 0) { mjonMsgVO.setFileName1(imgFilePath); }else if(i == 1) { mjonMsgVO.setFileName2(imgFilePath); }else { mjonMsgVO.setFileName3(imgFilePath); } fileCount ++; } //첨부파일 갯수 셋팅해주기 if(fileCount > 0) { mjonMsgVO.setFileCnt(Integer.toString(fileCount)); mjonMsgVO.setMsgType("6"); } } } //문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅 mjonMsgVO.setMsgKind("S"); //회원 발신번호 받아오기 String callTo = mjonMsgVO.getCallTo(); //mjonMsgVO.setCallTo(vaMsgLogVO.getCallTo()); //수신자 번호 //mjonMsgVO.setUserId(userId); //회원아이디 //JSPark 2023.01.13 : 시스템 발송 문자로 처리 => 전송사별 발송통계시 필요, 발송한 관리자 확인필요시 관리자 로그시간과 발송시간 확인요망 mjonMsgVO.setUserId("system"); // 문자전송 ID mjonMsgVO.setReserveYn("N"); //즉시전송 if(mjonMsgVO.getFileCnt() == null) {//첨부이미지 갯수가 없는 경우 mjonMsgVO.setFileCnt("0"); } //수신번호가 배열로 되어있어서 배열에 담아준다. String[] phone = new String[1]; for(int j=0; j< 1; j++) { phone[j] = callTo; } mjonMsgVO.setCallToList(phone); // 문자타입 구분 if (mjonMsgVO.getMsgType().equals("4")) { mjonMsgVO.setMsgDiv("S"); // 단문 } else if (mjonMsgVO.getMsgType().equals("6")) { if (fileCount > 0) { mjonMsgVO.setMsgDiv("P"); // 그림 } else { mjonMsgVO.setMsgDiv("L"); // 장문 } } // 문자타입별 대표전송사 정보 MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); if (mjonMsgVO.getAgentCode().equals("00")) { mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); } else { mjonMsgVO2 = mjonMsgService.selectChoiMsgAgetnInfo(mjonMsgVO); } if (mjonMsgVO.getAgentCode().equals("03")) { //아이엠오 전송사 문자 타입 설정해 주기 // 단순 장문 문자는 neoType : 2, 그림 포함 : 4 if (mjonMsgVO.getFileCnt().equals("0")) { // 단순 장문 문자 mjonMsgVO.setNeoType("2"); } else { // 그림포함 문자인경우 mjonMsgVO.setNeoType("4"); } } // 전송금액 mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 //현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크 String userPoint = "0.0"; mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장 mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력 //문자 발송 처리 MjonMsgReturnVO returnVO = mjonMsgDataService.insertAdmToMberMsgDataInfo(mjonMsgVO); mjonMsgVO.setAgentCode(returnVO.getAgentCode()); resultSts = returnVO.getSendMsgCnt(); resultBlockSts = returnVO.getSendMsgBlockCnt(); if (!resultSts.equals("")) { modelAndView.addObject("message", "문자 발송에 성공 하였습니다."); modelAndView.addObject("result", "success"); modelAndView.addObject("resultSts", resultSts); modelAndView.addObject("resultBlockSts", resultBlockSts); } else { modelAndView.addObject("message", "문자 발송에 실패 하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { throw new Exception("관리자가 사용자에게 문자 발송 오류 ::: " + e); } return modelAndView; } /** * 스팸 및 스미싱 30분 지연문자 전송 취소 처리 * @param mjonMsgVO * @param model * @return "/uss/ion/msg/deleteMsgDelaySendCancelDataAjax.do" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/deleteMsgDelaySendCancelDataAjax.do"}) public ModelAndView deleteMsgDelaySendCancelDataAjax(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.deleteMsgDelaySendCancelData(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("+++++++++++++++++++++++++++++++++++ deleteMsgDelaySendCancelDataAjax Controller Error !!!! "+e); modelAndView.addObject("isStatus", "fail"); modelAndView.addObject("msg", "오류가 발생하였습니다."); return modelAndView; } return modelAndView; } /** * 스팸 및 스미싱 30분 지연문자 즉시 전송 처리 * @param mjonMsgVO * @param model * @return "/uss/ion/msg/updateMsgDelaySendRealTimeDataAjax.do" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/updateMsgDelaySendRealTimeDataAjax.do"}) public ModelAndView updateMsgDelaySendRealTimeDataAjax(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.updateMsgDelaySendRealTimeData(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("+++++++++++++++++++++++++++++++++++ updateMsgDelaySendRealTimeDataAjax Controller Error !!!! "+e); modelAndView.addObject("isStatus", "fail"); modelAndView.addObject("msg", "오류가 발생하였습니다."); return modelAndView; } return modelAndView; } /** * 문자 즉시 전송 처리 * @param mjonMsgVO * @param model * @return "/uss/ion/msg/updateMsgDirectSendAjax.do" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/updateMsgDirectSendAjax.do"}) public ModelAndView updateMsgDirectSendAjax(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.updateMsgDirectSend(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("+++++++++++++++++++++++++++++++++++ updateMsgDelaySendRealTimeDataAjax Controller Error !!!! "+e); modelAndView.addObject("isStatus", "fail"); modelAndView.addObject("msg", "오류가 발생하였습니다."); return modelAndView; } 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 * @param * @return "/uss/ion/msg/MsgSendStatistics.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/MsgSendStatistics.do"}) public String MsgSendStatistics(@ModelAttribute("searchVO") MjonMsgStatVO searchVO, HttpServletRequest request, 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()); // 기간검색 설정 String toDay = MJUtil.getTodayDate(); //오늘 if (null == searchVO.getSearchStartDate() || searchVO.getSearchStartDate().equals("")) { searchVO.setSearchDateType("day"); searchVO.setSearchStartDate(toDay); searchVO.setSearchEndDate(toDay); } List statList = mjonMsgService.selectAgentSmsCountStatList(searchVO); model.addAttribute("statList", statList); paginationInfo.setTotalRecordCount(statList.size() > 0 ? ((MjonMsgStatVO)statList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("searchVO", searchVO); return "/uss/ion/msg/MsgSendStatistics"; } // 전송사 발송 통계 @RequestMapping(value = "/uss/ion/msg/insertAgentSmsCountStatApiAjax.do") public ModelAndView AgentSmsCountStatApiAjax( @ModelAttribute("mjonMsgStatVO") MjonMsgStatVO mjonMsgStatVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; StatsVO memPayStatInfo = new StatsVO(); try { mjonMsgService.insertAgentSmsCountStat(mjonMsgStatVO); } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("memPayStatInfo", memPayStatInfo); modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } public boolean getCompareReqDateList(String[] arrMsgGroupId, String userId) throws Exception { boolean compareStatus = true; try { MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO(); mjonResvMsgVO.setUserId(userId);//회원 아이디 int resultSts = 0; //문자 그룹 정보 체크하기 List groupIdList = new ArrayList(); for(String msgGId : arrMsgGroupId) { groupIdList.add(msgGId); } mjonResvMsgVO.setMsgGroupIdList(groupIdList); List resultMsgReqDateList = mjonMsgService.selectMsgGroupDataReqDateList(mjonResvMsgVO); String compareDate = ""; for(int i=0; i < resultMsgReqDateList.size(); i++) { System.out.println(resultMsgReqDateList.get(i).getStrReqDate()); String toDate = resultMsgReqDateList.get(i).getStrReqDate(); compareDate = MJUtil.getCompareDateToSeconds(toDate); if(compareDate.equals("after")) {//발송 예정 일자가 현재시간 이전이면 false를 리턴함. compareStatus = false; return compareStatus; } } } catch (Exception e) { System.out.println("+++++++++++++++++++++++++++++++++++ getCompareReqDateList Controller Error !!!! "+e); return compareStatus; } return compareStatus; } /** * 관리자 이메일 발송 처리 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/email/insertAdminToMemberSendEmailDataAjax.do"}) public ModelAndView insertAdminToMemberSendEmailDataAjax(SendLogVO sendLogVO, EmailVO mailSender) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 정보 획득 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "LoginFail"); return modelAndView; } try { // 이메일 발송 내용 String contents = ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += "대량문자 발송 사이트 문자온 안내 메일 입니다."; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += "
"; contents += "
"; contents += "
"; contents += "

"; contents += "문자온 안내 메일입니다.

\"\""; contents += "
"; contents += "
"; contents += "

"; contents += "안녕하세요. 대량문자 발송 사이트 문자온입니다.

"; contents += "

%emailContents%

"; contents += "

문자온 서비스를 이용해 주셔서 감사합니다.

"; contents += "
"; contents += "

본 메일은 발신전용이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 고객센터를 통해 문의하여 주시기 바랍니다.

"; contents += "

주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)
사업자 번호 : 653-87-00858 | 대표 : 유인식 | 통신판매등록번호 : 제 2021-다산-0422
문의전화 : 010-8432-9333 | E-mail : help@iten.co.kr

"; contents += "

Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.

"; contents += "
"; contents += "
"; contents += "
"; contents += "
"; contents += ""; contents += ""; contents += ""; String repContents = contents; String emailCont = mailSender.getContents().replace("\r\n", "
");//줄바꿈 변환해주기 repContents = repContents.replace("%emailContents%", emailCont); /*SimpleDateFormat format = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분"); Date nowdate = new Date(); String date = format.format(nowdate); repContents = repContents.replace("%date%", date);*/ // 이메일로 보내기 SendMail sMail = new SendMail(); // 사용자 이메일 주소 mailSender.setSend_from(mailSender.getSend_from()); // 발송자 이메일 주소 mailSender.setSend_to(mailSender.getSend_to()); // 메일 제목 mailSender.setTitle(mailSender.getTitle()); // 메일 내용 mailSender.setContents(repContents); // 메일 발송하기 sMail.sendMail2(mailSender); // 발송 이력 저장 SendType 1:문자로 발송 2:이메일로 발송 sendLogVO.setSendType("2"); sendLogVO.setFrstSendInfo(mailSender.getSend_from());//이메일 발신자 정보 sendLogVO.setReceive(mailSender.getSend_to()); //수신자 정보 sendLogVO.setContents(repContents); mjonMsgDataService.insertSysMsgLog(sendLogVO); modelAndView.addObject("result", "success"); modelAndView.addObject("message", "정상적으로 이메일이 발송되었습니다."); } catch (Exception e) { e.printStackTrace(); modelAndView.addObject("result", "fail"); modelAndView.addObject("message", "이메일 발송 중에 오류가 발생하였습니다.\n(F5)새로고침 후 다시 진행 부탁드립니다."); } return modelAndView; } /** * 욕설 및 금지어 리스트 * @param MjonMsgResultCodeVO * @param model * @return "/uss/ion/msg/MsgResultCodeList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/swear/selectSwearWordList.do"}) public String selectSwearWordList(@ModelAttribute("searchVO") MjonSwearWordVO mjonSwearWordVO, HttpServletRequest request, ModelMap model) throws Exception{ /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonSwearWordVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonSwearWordVO.getPageUnit()); paginationInfo.setPageSize(mjonSwearWordVO.getPageSize()); mjonSwearWordVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonSwearWordVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonSwearWordVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); List resultList = mjonMsgService.selectSwearWordListPageing(mjonSwearWordVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonSwearWordVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/swear/SwearWordList"; //문자결과 리스트 } /** * 욕설 및 금지어 등록 화면 * @param MjonSwearWordVO * @param model * @return "" * @throws Exception */ @RequestMapping(value= {"/uss/ion/swear/addSwearWord.do"}) public String addSwearWord(@ModelAttribute("searchVO") MjonSwearWordVO mjonSwearWordVO, HttpServletRequest request, ModelMap model) throws Exception{ return "/uss/ion/swear/SwearWordRegist"; } /** * 욕설 및 금지어 등록 처리 * @param MjonSwearWordVO * @param model * @return "/uss/ion/swear/selectSwearWordList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/swear/insertSwearWord.do"}) public String insertSwearWord(MjonSwearWordVO mjonSwearWordVO, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes) throws Exception{ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mjonSwearWordVO.setFrstRegisterId(lastUpdusrId); mjonSwearWordVO.setLastUpdusrId(lastUpdusrId); int resultCnt = mjonMsgService.insertSwearWord(mjonSwearWordVO); if(resultCnt == 0) { redirectAttributes.addFlashAttribute("message", "등록이 실패되었습니다."); }else { redirectAttributes.addFlashAttribute("message", "등록이 완료되었습니다."); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("uss/ion/swear/selectSwearWordList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 욕설 및 금지어 수정 화면 * @param MjonSwearWordVO * @param model * @return "/uss/ion/swear/selectSwearWordModify.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/swear/selectSwearWordModify.do"}) public String selectSwearWordModify(MjonSwearWordVO mjonSwearWordVO, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes) throws Exception{ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(loginVO == null || lastUpdusrId.equals("")) { redirectAttributes.addFlashAttribute("message", "로그인이 필요합니다."); return "redirect:/uat/uia/EgovLoginUsr.do"; } MjonSwearWordVO resultVO = mjonMsgService.selectSwearWordModify(mjonSwearWordVO); model.addAttribute("resultVO", resultVO); return "/uss/ion/swear/SwearWordModify"; } /** * 욕설 및 금지어 수정 처리 * @param MjonSwearWordVO * @param model * @return "/uss/ion/swear/selectSwearWordList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/swear/updateSwearWord.do"}) public String updateSwearWord(MjonSwearWordVO mjonSwearWordVO, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes) throws Exception{ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(loginVO == null || lastUpdusrId.equals("")) { redirectAttributes.addFlashAttribute("message", "로그인이 필요합니다."); return "redirect:/uat/uia/EgovLoginUsr.do"; } mjonSwearWordVO.setLastUpdusrId(lastUpdusrId); int resultCnt = mjonMsgService.updateSwearWord(mjonSwearWordVO); if(resultCnt == 0) { redirectAttributes.addFlashAttribute("message", "수정이 실패되었습니다."); }else { redirectAttributes.addFlashAttribute("message", "수정이 완료되었습니다."); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("uss/ion/swear/selectSwearWordList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 욕설 및 금지어 삭제 처리 * @param MjonSwearWordVO * @param model * @return "/uss/ion/swear/selectSwearWordList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/swear/deleteSwearWord.do"}) public String deleteSwearWord(MjonSwearWordVO mjonSwearWordVO, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes) throws Exception{ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String lastUpdusrId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(loginVO == null || lastUpdusrId.equals("")) { redirectAttributes.addFlashAttribute("message", "로그인이 필요합니다."); return "redirect:/uat/uia/EgovLoginUsr.do"; } mjonSwearWordVO.setLastUpdusrId(lastUpdusrId); int resultCnt = mjonMsgService.deleteSwearWord(mjonSwearWordVO); if(resultCnt == 0) { redirectAttributes.addFlashAttribute("message", "수정이 실패되었습니다."); }else { redirectAttributes.addFlashAttribute("message", "수정이 완료되었습니다."); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("uss/ion/swear/selectSwearWordList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 신규회원 문자전송 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/NewUserSendMsgList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/NewUserSendMsgList.do"}) public String newUserSendMsgList(@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("reqDate"); searchVO.setSearchSortOrd("desc"); } List resultList = new ArrayList(); resultList = mjonMsgService.selectNewUserMjonMsgGroupList(searchVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/NewUserSendMsgList"; } /** * 일별 문자발송 건수 통계 * @param searchVO * @param model * @return "/uss/ion/msg/msgDayChart" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/msgDayChart.do"}) public String selectMsgDayChart(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request, ModelMap model) throws Exception{ // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonMsgVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonMsgVO.getPageUnit()); paginationInfo.setPageSize(mjonMsgVO.getPageSize()); mjonMsgVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonMsgVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonMsgVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(mjonMsgVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonMsgVO.setSearchSortCnd("regDate"); mjonMsgVO.setSearchSortOrd("desc"); } List resultList = mjonMsgService.selectMsgDayChart(mjonMsgVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/MsgDayChart"; } /** * 일별 문자발송 건수 통계 * @param searchVO * @param model * @return "/uss/ion/msg/msgDayChart" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/msgDayChart_230125.do"}) public String selectMsgDayChart_230125(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request, ModelMap model) throws Exception{ // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonMsgVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonMsgVO.getPageUnit()); paginationInfo.setPageSize(mjonMsgVO.getPageSize()); mjonMsgVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonMsgVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonMsgVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(mjonMsgVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonMsgVO.setSearchSortCnd("regDate"); mjonMsgVO.setSearchSortOrd("desc"); } List resultList = mjonMsgService.selectMsgDayChart_230125(mjonMsgVO); try { model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); if (resultList.size()>0) { model.addAttribute("sttstDate", resultList.get(0).getRegistPnttm()); } }catch(Exception ex) { ex.printStackTrace(); } return "/uss/ion/msg/MsgDayChart_230125"; } /** * 월별 문자발송 건수 통계 * @param searchVO * @param model * @return "/uss/ion/msg/msgDayChart" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/msgMonthChart.do"}) public String selectMsgMonthChart(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request, ModelMap model) throws Exception{ // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; if("".equals(mjonMsgVO.getNtceBgnde()) || mjonMsgVO.getNtceBgnde() == null){ //최초조회시 현재년도 조회 LocalDate now = LocalDate.now(); int year = now.getYear(); mjonMsgVO.setNtceBgnde(Integer.toString(year)); } List resultList = mjonMsgService.selectMsgMonthChart(mjonMsgVO); model.addAttribute("resultList", resultList); return "/uss/ion/msg/MsgMonthChart"; } /** * 월별 문자발송 건수 통계 * @param searchVO * @param model * @return "/uss/ion/msg/msgDayChart" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/msgMonthChart_230125.do"}) public String selectMsgMonthChart_230125(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request, ModelMap model) throws Exception{ // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; if("".equals(mjonMsgVO.getNtceBgnde()) || mjonMsgVO.getNtceBgnde() == null){ //최초조회시 현재년도 조회 LocalDate now = LocalDate.now(); int year = now.getYear(); mjonMsgVO.setNtceBgnde(Integer.toString(year)); } List resultList = mjonMsgService.selectMsgMonthChart_230125(mjonMsgVO); model.addAttribute("resultList", resultList); try { if (resultList.size()>0) { model.addAttribute("sttstDate", resultList.get(0).getRegistPnttm()); } }catch(Exception ex) { ex.printStackTrace(); } return "/uss/ion/msg/MsgMonthChart_230125"; } /** * 일별 회원가입 건수 통계 * @param searchVO * @param model * @return "/uss/ion/msg/memDayChart" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/memDayChart.do"}) public String selectMemDayChart(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request, ModelMap model) throws Exception{ // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonMsgVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonMsgVO.getPageUnit()); paginationInfo.setPageSize(mjonMsgVO.getPageSize()); mjonMsgVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonMsgVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonMsgVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(mjonMsgVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonMsgVO.setSearchSortCnd("regDate"); mjonMsgVO.setSearchSortOrd("desc"); } List resultList = mjonMsgService.selectMemDayChart(mjonMsgVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/MemDayChart"; } /** * 월별 회원가입 건수 통계 * @param searchVO * @param model * @return "/uss/ion/msg/memDayChart" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/memMonthChart.do"}) public String selectMemMonthChart(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request, ModelMap model) throws Exception{ // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; if("".equals(mjonMsgVO.getNtceBgnde()) || mjonMsgVO.getNtceBgnde() == null){ //최초조회시 현재년도 조회 LocalDate now = LocalDate.now(); int year = now.getYear(); mjonMsgVO.setNtceBgnde(Integer.toString(year)); } mjonMsgVO.setFirstIndex(0); mjonMsgVO.setRecordCountPerPage(100); List resultList = mjonMsgService.selectMemMonthChart(mjonMsgVO); model.addAttribute("resultList", resultList); return "/uss/ion/msg/MemMonthChart"; } /** * 일별 일별회원전환률 통계 * @param searchVO * @param model * @return "/uss/ion/msg/memDayChart" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/memLoginDayChart.do"}) public String selectMemLoginDayChart(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, HttpServletRequest request, ModelMap model) throws Exception{ // String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonMsgVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonMsgVO.getPageUnit()); paginationInfo.setPageSize(mjonMsgVO.getPageSize()); mjonMsgVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonMsgVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonMsgVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(mjonMsgVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonMsgVO.setSearchSortCnd("regDate"); mjonMsgVO.setSearchSortOrd("desc"); } //오늘 Date today = new Date(); SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); String toDay = date.format(today); //한달 전 Calendar mon = Calendar.getInstance(); mon.add(Calendar.MONTH , -1); String beforeMonthDay = new java.text.SimpleDateFormat("yyyy-MM-dd").format(mon.getTime()); if (null == mjonMsgVO.getNtceBgnde() || mjonMsgVO.getNtceBgnde().equals("")) { mjonMsgVO.setNtceBgnde(beforeMonthDay); mjonMsgVO.setNtceEndde(toDay); } List resultList = mjonMsgService.selectMemLoginDayChart(mjonMsgVO); MjonMsgVO resultInfo = mjonMsgService.selectMemLoginDayChartCount(mjonMsgVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultInfo.getTotCnt() > 0 ? resultInfo.getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/MemLoginDayChart"; } /** * 관리자 / 시스템에서 발송한 문자전송 리스트 * @param searchVO * @param model * @return "/uss/ion/msg/admSystemSendMsgList.do" * @throws Exception */ @RequestMapping(value= {"/uss/ion/msg/admSystemSendMsgList.do"}) public String admSystemSendMsgList(@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("reqDate"); searchVO.setSearchSortOrd("desc"); } // 기간검색 설정 String toDay = MJUtil.getTodayDate(); //오늘 String beforeMonthDay = MJUtil.getBefore1MonthDate(); //한달 전 if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { searchVO.setNtceBgnde(beforeMonthDay); //searchVO.setNtceEndde(toDay); } List resultList = new ArrayList(); resultList = mjonMsgService.selectAdmSystemSendMsgList(searchVO); model.addAttribute("resultList", resultList); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/msg/admSys/AdmSystemSendMsgList"; } /** * 문자전송 등록하기 위한 전 처리(공통코드 처리) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = "/uss/ion/msg/admSystemSendMsgModify.do") public String admSystemSendMsgModify( @ModelAttribute("searchVO") MjonMsgVO searchVO, HttpServletRequest request , Model model) throws Exception { String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; MjonMsgVO mjonMsgVO = new MjonMsgVO(); if(null != searchVO.getUserData() && !"".equals(searchVO.getUserData())) { //수정 mjonMsgVO = mjonMsgService.selectMjonMsgVO(searchVO); //문자 상세보기 이미지 아이디 받아오기 String atchFileId1 =""; String atchFileId2 =""; String atchFileId3 =""; String path1 = mjonMsgVO.getFilePath1(); String path2 = mjonMsgVO.getFilePath2(); String path3 = mjonMsgVO.getFilePath3(); FileVO fileVO1 = new FileVO(); FileVO fileVO2 = new FileVO(); FileVO fileVO3 = new FileVO(); if(StringUtil.isNotEmpty(path1)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO1 = getFilePathToAtchFileId(path1); model.addAttribute("fileVO1", fileVO1); } if(StringUtil.isNotEmpty(path2)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO2 = getFilePathToAtchFileId(path2); model.addAttribute("fileVO2", fileVO2); } if(StringUtil.isNotEmpty(path3)) { //파일경로 및 이름을 이용하여 atchFileId, fileExtsn 번호 받아오기 fileVO3 = getFilePathToAtchFileId(path3); model.addAttribute("fileVO3", fileVO3); } } if(request.getHeader("REFERER").contains("ReceiveNumberList") ) { //수신번호 조회에서 넘김 mjonMsgVO.setBeforeUrl("ReceiveNumberList"); } if(pattern.equals("/uss/ion/msg/CampaignMsgModify.do")) { //사용자 발신 searchVO.setSearchCampaignYn("Y"); } model.addAttribute("mjonMsgVO", mjonMsgVO); return "/uss/ion/msg/admSys/AdmSystemSendMsgModify"; } //파일 이름을 이용하여 첨부파일 아이디(atchFileId), 첨부파일 순번(fileExtsn)을 찾는 함수 public FileVO getFilePathToAtchFileId(String filePath) throws Exception{ //마지막 / 의 인덱스 값 +1을 기준으로 문자열을 짤라줌 String strFilePath = filePath.substring(filePath.lastIndexOf("/")+1); FileVO returnFileVO = new FileVO(); //파일 이름과 확장자를 분리해줌 String[] arrFileNm = strFilePath.split("\\."); String fileNm = arrFileNm[0]; String fileExtsn = arrFileNm[1]; FileVO fileVO = new FileVO(); fileVO.setStreFileNm(fileNm); fileVO.setFileExtsn(fileExtsn); returnFileVO = mjonReservMsgService.selectFileNmToAtchFileIdInfo(fileVO); return returnFileVO; } public String setSendNumberMakeParamUrl(MjPhoneMemberVO mjPhoneMemberVO) { return "?delFlag="+mjPhoneMemberVO.getDelFlag() +"&pageIndex="+mjPhoneMemberVO.getPageIndex() +"&pageType="+mjPhoneMemberVO.getPageType() +"&searchKeyword="+mjPhoneMemberVO.getSearchKeyword() +"&searchCondition="+mjPhoneMemberVO.getSearchCondition() +"&searchCondition2="+mjPhoneMemberVO.getSearchCondition2() +"&searchCondition3="+mjPhoneMemberVO.getSearchCondition3() +"&searchSortCnd="+mjPhoneMemberVO.getSearchSortCnd() +"&searchSortOrd="+mjPhoneMemberVO.getSearchSortOrd() ; } private String setBlockNumberMakeParamUrl(MjPhoneMemberVO mjPhoneMemberVO) { return "?delFlag="+mjPhoneMemberVO.getDelFlag() +"&pageIndex="+mjPhoneMemberVO.getPageIndex() +"&pageType="+mjPhoneMemberVO.getPageType() +"&searchKeyword="+mjPhoneMemberVO.getSearchKeyword() +"&searchCondition="+mjPhoneMemberVO.getSearchCondition() +"&searchCondition4="+mjPhoneMemberVO.getSearchCondition4() +"&searchSortCnd="+mjPhoneMemberVO.getSearchSortCnd() +"&searchSortOrd="+mjPhoneMemberVO.getSearchSortOrd() ; } // 번호도용 문자차단 서비스로 인한 발송실패 문자알림 여부 @RequestMapping(value = "/uss/ion/msg/updateMsgGroupDataCallBackAjax.do") public ModelAndView saveMainTagAjax( @ModelAttribute("searchVO") MjonMsgVO searchVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; try{ // All mjonMsgService.updateMsgGroupDataCallBackAll(searchVO); } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /** * 문자전송 등록하기 위한 전 처리(공통코드 처리) * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/msg/insertAdminToMemberSendMsgDataAgentTestAjax.do"}) public ModelAndView insertAdminToMemberSendMsgDataAgentTestAjax(MjonMsgVO mjonMsgVO , HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 정보 획득 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); String resultSts = "0"; String resultBlockSts = "0"; if(userId.equals("")) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "LoginFail"); return modelAndView; } try { //문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅 mjonMsgVO.setMsgKind("S"); //회원 발신번호 받아오기 String callTo = "01030266269"; // mjonMsgVO.setCallFrom("01030266269"); //mjonMsgVO.setCallTo(vaMsgLogVO.getCallTo()); //수신자 번호 //mjonMsgVO.setUserId(userId); //회원아이디 //JSPark 2023.01.13 : 시스템 발송 문자로 처리 => 전송사별 발송통계시 필요, 발송한 관리자 확인필요시 관리자 로그시간과 발송시간 확인요망 mjonMsgVO.setUserId("system"); // 문자전송 ID mjonMsgVO.setReserveYn("N"); //즉시전송 if(mjonMsgVO.getFileCnt() == null) {//첨부이미지 갯수가 없는 경우 mjonMsgVO.setFileCnt("0"); } //수신번호가 배열로 되어있어서 배열에 담아준다. String[] phone = new String[1]; for(int j=0; j< 1; j++) { phone[j] = callTo; } mjonMsgVO.setCallToList(phone); // 문자타입 구분 if (mjonMsgVO.getMsgType().equals("4")) { mjonMsgVO.setMsgDiv("S"); // 단문 } else if (mjonMsgVO.getMsgType().equals("6")) { mjonMsgVO.setMsgDiv("L"); // 장문 } // 문자타입별 대표전송사 정보 MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); mjonMsgVO.setAgentCode(request.getParameter("agent")); //전송사 선택 if (mjonMsgVO.getAgentCode().equals("03")) { //아이엠오 전송사 문자 타입 설정해 주기 // 단순 장문 문자는 neoType : 2, 그림 포함 : 4 if (mjonMsgVO.getFileCnt().equals("0")) { // 단순 장문 문자 mjonMsgVO.setNeoType("2"); } else { // 그림포함 문자인경우 mjonMsgVO.setNeoType("4"); } } // 전송금액 mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 //현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크 String userPoint = "0.0"; mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장 mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력 //문자 발송 처리 mjonMsgVO.setSmsTxt("test"); MjonMsgReturnVO returnVO = mjonMsgDataService.insertAdmToMberMsgDataInfo(mjonMsgVO); mjonMsgVO.setAgentCode(returnVO.getAgentCode()); resultSts = returnVO.getSendMsgCnt(); resultBlockSts = returnVO.getSendMsgBlockCnt(); if (!resultSts.equals("")) { modelAndView.addObject("message", "문자 발송에 성공 하였습니다."); modelAndView.addObject("result", "success"); modelAndView.addObject("resultSts", resultSts); modelAndView.addObject("resultBlockSts", resultBlockSts); } else { modelAndView.addObject("message", "문자 발송에 실패 하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { throw new Exception("관리자가 사용자에게 문자 발송 오류 ::: " + e); } return modelAndView; } }