package itn.let.mjo.spammsg.web; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.Date; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import itn.com.cmm.LoginVO; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.lett.service.LetterService; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.spammsg.service.MjonSpamMsgService; import itn.let.sym.site.service.JoinSettingVO; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.UserManageVO; @Controller public class MjonSpamMsgController { @Resource(name = "mjonMsgService") private MjonMsgService mjonMsgService; @Resource(name = "mjonSpamMsgService") private MjonSpamMsgService mjonSpamMsgService; @Resource(name = "LetterService") private LetterService letterService; @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; /** userManageService */ @Resource(name = "userManageService") private EgovUserManageService userManageService; @RequestMapping(value= {"/web/mjon/spammsgdata/insertSpamKeyWordMsgDataAjax.do"}) public ModelAndView insertSpamKeyWordMsgDataAjax(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO) throws Exception{ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); String userId = ""; try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { modelAndView.addObject("message", "로그인 후 이용이 가능합니다."); modelAndView.addObject("result", "loginFail"); return modelAndView; } mjonMsgVO.setUserId(userId); //문자 즉시 발송 일경우 시간 셋팅 String reserveYn = mjonMsgVO.getReserveYn(); if(reserveYn.equals("N")) {//즉시발송인 경우 현재 시간 셋팅해줌 Date now = new Date(); SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); mjonMsgVO.setReqDate(sdFormat.format(now)); } String msgType = mjonMsgVO.getMsgType(); int fileCount = 0; if(msgType.equals("6")) {// 단문이 아닌경우 그림이미지가 있는지 체크 //그림 이미지가 첨부된 경우 if(mjonMsgVO.getImgFilePath() != null || mjonMsgVO.getImgFilePath().length > 0) { String[] path = mjonMsgVO.getImgFilePath(); String[] fileId = mjonMsgVO.getImgFileId(); String[] templateYn = mjonMsgVO.getTemplateYn(); for(int i=0; i회원 이용정지 처리 되었습니다.
자세한 사항은 문자온 고객센터를 통해 문의주시기 바랍니다."); modelAndView.addObject("result", "spamKeyWordFail"); } catch (Exception e) { System.out.println("++++++++++++++++++ insertSpamKeyWordMsgDataAjax Controller Error !!!" + e); modelAndView.addObject("message", "오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); return modelAndView; } /** * 사용자가 보낸 문자를 문자온 법인폰으로도 하나 전송하는 기능 시작 * * */ try { String adminSmsNoticeYn = "Y"; UserManageVO userManageVO = new UserManageVO(); userManageVO.setMberId(userId); if(!userId.equals("")) { userManageVO = userManageService.selectAdminSmsNoticeYn(userManageVO); adminSmsNoticeYn = userManageVO.getAdminSmsNoticeYn(); } if(adminSmsNoticeYn.equals("Y")) { getAdminPhoneSendMsgData(mjonMsgVO); } } catch (Exception e) { throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e); } return modelAndView; } /** * 관리자로 문자 발송해주기 * 사용자가 보낸 문자를 문자온 법인폰으로 발송해주는 기능 함수. * 일반문자 와 대량 문자 모두 적용하고 있음 * 2022.09.19 우영두 추가 * * */ public boolean getAdminPhoneSendMsgData(MjonMsgVO mjonMsgVO) throws Exception{ try { mjonMsgVO.setUserId("system");//시스템 발송 문자로 처리 //전송사 선택 String msgType = mjonMsgVO.getMsgType(); int fileCount = Integer.parseInt(mjonMsgVO.getFileCnt());//그림 이미지 갯수 //예약문자를 발송하는 경우 문자 내용 앞에 "[자동이용정지]" 표시되도록 처리 - 법인폰으로 발송되는 문자내용 수정함.20221125 추가 //String reserveYn = mjonMsgVO.getReserveYn(); String smsTxt = mjonMsgVO.getSmsTxt(); String reservSmsTxt = "[자동이용정지]" + smsTxt; //[예약] 문구 추가시 문자열 길이 및 문자 종류 재계산 하기 String charset = "euc-kr"; int bytes = reservSmsTxt.getBytes(charset).length; //발송 문자 길이 if(bytes > 2000) {//문자열 길이가 2000을 넘어가면 [예약] 문구를 제외한 원래 문구를 넣어준다. 안그러면 문자전송이 실패하게 됨. mjonMsgVO.setSmsTxt(smsTxt); }else { //[예약] 문구를 추가한 내용으로 메세지 내용을 셋팅해 준다. mjonMsgVO.setSmsTxt(reservSmsTxt); if(bytes > 90) {//장문일 경우 문자타입을 변경해준다. msgType = "6"; mjonMsgVO.setMsgType(msgType); } } /** * 문자 종류 별 가장 저렴한 단가(아이하트를 제외) * sms : 다우(7.3), 현대퓨처넷(7.5) * Lms : 현대퓨처넷(23.5) * MMS : 아이엠오(49) * * */ if(msgType.equals("4")) {//단문인 경우 mjonMsgVO.setAgentCode("02");//현대퓨처넷 }else if(msgType.equals("6")) {//장문 혹은 그림문자인 경우 if(fileCount > 0) {//그림문자인 경우 아이엠오로 전송 mjonMsgVO.setAgentCode("03");//아이엠오 mjonMsgVO.setNeoType("4"); }else {//장문인 경우 mjonMsgVO.setAgentCode("02");//현대퓨처넷 } } //mjonMsgVO.setAgentCode("01"); //수신번호가 배열로 되어있어서 배열에 담아준다. String[] phone = new String[1]; String callTo = "15518011"; phone[0] = callTo; mjonMsgVO.setCallToList(phone);//수신번호 리스트 //시스템 로그용 수신 정보 mjonMsgVO.setCallTo("help@iten.co.kr"); //현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크 //String userMoney = "0.0"; String userPoint = "0.0"; mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장 mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력 mjonMsgVO.setMsgGroupCnt("1"); //문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅 mjonMsgVO.setMsgKind("S"); //문자발송 금액 계산하기 //문자 전송 개인 단가 불러오기 //1.시스템 기본 단가 정보 불러오기 JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); //3.사용자 개인단가 정보가 0이 아니면 개인단가 사용, 없으면 시스템 기본 단가 사용 Float shortPrice = sysJoinSetVO.getShortPrice(); Float longPrice = sysJoinSetVO.getLongPrice(); Float photo1Price = sysJoinSetVO.getPicturePrice(); Float photo2Price = sysJoinSetVO.getPicture2Price(); Float photo3Price = sysJoinSetVO.getPicture3Price(); if(mjonMsgVO.getMsgType().equals("4")) { //단문 금액 mjonMsgVO.setTotPrice(shortPrice.toString()); //총금액 mjonMsgVO.setEachPrice(shortPrice.toString()); //한건 금액 }else if(mjonMsgVO.getMsgType().equals("6")){ if(fileCount == 0) {//장문 금액 mjonMsgVO.setTotPrice(longPrice.toString()); mjonMsgVO.setEachPrice(longPrice.toString()); }else if(fileCount == 1) {//그림 1장 금액 mjonMsgVO.setTotPrice(photo1Price.toString()); mjonMsgVO.setEachPrice(photo1Price.toString()); }else if(fileCount == 2) {//그림 2장 금액 mjonMsgVO.setTotPrice(photo2Price.toString()); mjonMsgVO.setEachPrice(photo2Price.toString()); }else if(fileCount == 3) {//그림 3장 금액 mjonMsgVO.setTotPrice(photo3Price.toString()); mjonMsgVO.setEachPrice(photo3Price.toString()); } } //문자온 법인폰으로 전송하는 것이기에 현재시간으로 즉시 발송하도록 함. Date now = new Date(); SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); mjonMsgVO.setReqDate(sdFormat.format(now)); //문자 발송 처리 mjonMsgDataService.insertAdmToMberMsgDataInfo(mjonMsgVO); } catch (Exception e) { throw new Exception("+++++++++++++++++++++++++++++ getAdminPhoneSendMsgData Function Error !!!" + e); } return true; } }