diff --git a/src/main/java/itn/com/cmm/interceptor/InterceptorHandler.java b/src/main/java/itn/com/cmm/interceptor/InterceptorHandler.java index 3b299412..7ea774e1 100644 --- a/src/main/java/itn/com/cmm/interceptor/InterceptorHandler.java +++ b/src/main/java/itn/com/cmm/interceptor/InterceptorHandler.java @@ -32,6 +32,7 @@ public class InterceptorHandler extends HandlerInterceptorAdapter{ Enumeration e = request.getParameterNames(); while ( e.hasMoreElements() ){ String name = (String) e.nextElement(); + System.out.println("@@@@ "+name.toLowerCase()); if(!name.toLowerCase().contains("url") && !name.toLowerCase().contains("pagetype") && !name.toLowerCase().contains("searchsortcnd") @@ -58,6 +59,7 @@ public class InterceptorHandler extends HandlerInterceptorAdapter{ && !name.toLowerCase().contains("mberemailadres") && !name.toLowerCase().contains("recommendid") && !name.toLowerCase().contains("mbernm") + && !name.toLowerCase().contains("varvallist") ) { //파라미터 중에 URL 주소를 넘겨주는 부분이 있어서 해당 부분에것 select~, update~, delete~ 로 시작하는 주소경로가 있어서 제외처리를 하였음 String[] values = request.getParameterValues(name); diff --git a/src/main/java/itn/com/cmm/util/XssFilterUtil.java b/src/main/java/itn/com/cmm/util/XssFilterUtil.java index b39a028d..342444d7 100644 --- a/src/main/java/itn/com/cmm/util/XssFilterUtil.java +++ b/src/main/java/itn/com/cmm/util/XssFilterUtil.java @@ -13,7 +13,7 @@ public class XssFilterUtil { test_str_low.contains("drop") || test_str_low.contains("update") || test_str_low.contains("delete") || - test_str_low.contains("join") || + test_str_low.contains(" join ") || test_str_low.contains("from") || test_str_low.contains("where") || test_str_low.contains("dbms") || diff --git a/src/main/java/itn/com/uss/olh/hpc/service/impl/HackIpServiceImpl.java b/src/main/java/itn/com/uss/olh/hpc/service/impl/HackIpServiceImpl.java index 8cb21371..52e7da67 100644 --- a/src/main/java/itn/com/uss/olh/hpc/service/impl/HackIpServiceImpl.java +++ b/src/main/java/itn/com/uss/olh/hpc/service/impl/HackIpServiceImpl.java @@ -131,7 +131,9 @@ public class HackIpServiceImpl extends EgovAbstractServiceImpl implements HackIp if(ipList.size() > 0) { String msg = "[IP차단] " + list.get(0).getIgnoreDc() +" - "+ ipList.toString(); // Slack 메시지 발송 - mjonCommon.sendSimpleSlackMsg(msg); + + System.out.println("@@@@@@@@@@@@@@@ ----------- "+msg); +// mjonCommon.sendSimpleSlackMsg(msg); } // diff --git a/src/main/java/itn/let/fax/user/service/impl/FaxServiceImpl.java b/src/main/java/itn/let/fax/user/service/impl/FaxServiceImpl.java index d11c564f..0ef15559 100644 --- a/src/main/java/itn/let/fax/user/service/impl/FaxServiceImpl.java +++ b/src/main/java/itn/let/fax/user/service/impl/FaxServiceImpl.java @@ -2,6 +2,8 @@ package itn.let.fax.user.service.impl; import java.io.File; import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.ArrayList; @@ -37,12 +39,15 @@ import itn.let.fax.user.service.FaxReceiverVO; import itn.let.fax.user.service.FaxService; import itn.let.fax.user.service.FaxTranVO; import itn.let.mail.service.StatusResponse; +import itn.let.mjo.msg.service.MjonMsgVO; +import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO; import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.pay.service.impl.MjonPayDAO; import itn.let.module.base.PriceAndPoint; import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uss.umt.service.MberManageVO; import itn.let.utl.fcc.service.EgovStringUtil; @@ -98,7 +103,11 @@ public class FaxServiceImpl extends EgovAbstractServiceImpl implements FaxServic @Resource(name = "egovMjonCashIdGnrService") private EgovIdGnrService idgenMjonCashId; - + + + @Resource(name = "MjonMsgDataService") + private MjonMsgDataService mjonMsgDataService; + @Autowired private PriceAndPoint priceAndPoint; @@ -319,6 +328,11 @@ public class FaxServiceImpl extends EgovAbstractServiceImpl implements FaxServic @Override public StatusResponse sendData(FaxTranVO faxTranVO, String userId) throws Exception { + // 단가확인 + Boolean priceChk = this.getPriceChk(faxTranVO, userId); + if(!priceChk) { + return new StatusResponse(HttpStatus.BAD_REQUEST, "팩스 발송에 필요한 회원님의 보유 잔액이 부족 합니다.", LocalDateTime.now()); + } // 팩스발송 정보 삽입 faxTranVO.setFaxTranSeq(idgenPgiFaxTranId.getNextStringId()); @@ -346,6 +360,49 @@ public class FaxServiceImpl extends EgovAbstractServiceImpl implements FaxServic } + private Boolean getPriceChk(FaxTranVO faxTranVO, String userId) throws Exception { + + Boolean returnVal = true; + + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + mjonMsgVO.setUserId(userId); + + String userMoney = mjonMsgDataService.selectBeforeCashData(mjonMsgVO); + String userPoint = mjonMsgDataService.selectBeforePointData(mjonMsgVO); + mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장 + + BigDecimal befCash = new BigDecimal(userMoney).setScale(2, RoundingMode.HALF_EVEN); + + + + + + int callToSize = faxTranVO.getCallToList().split(",").length; + + // 사용자 단가 + Float faxPrice = this.getFaxPrice(userId); + + // 변환 완료 테이블에서 변환된 페이지 갯수 가져오기 + // FROM PGI_FAXCONVERT + int resPage = faxDao.findAllConvertTb(faxTranVO.getFaxConvertSeq()).getResPage(); + System.out.println(" + resPage :: "+ resPage); + + Float faxPriceTotalP = callToSize*faxPrice*resPage; + + + // faxPrice를 BigDecimal로 변환 + BigDecimal faxPriceBD = new BigDecimal(faxPriceTotalP.toString()); + + System.out.println(" + befCash :: "+ befCash); + System.out.println(" + faxPriceBD :: "+ faxPriceBD); + System.out.println(" + faxPriceBD.compareTo(befCash) :: "+ faxPriceBD.compareTo(befCash)); + if (faxPriceBD.compareTo(befCash) > 0) { + returnVal = false; + } + + return returnVal; + } + @Override public Map selectFaxSendDetailList(FaxGroupDataVO faxGroupDataVO) throws Exception { @@ -491,7 +548,6 @@ public class FaxServiceImpl extends EgovAbstractServiceImpl implements FaxServic //2.사용자 개인 단가 정보 불러오기 faxPrice = mjonMsgDataDAO.selectMberManageInfo(userId).getFaxPrice(); - // SMS 인경우 // 사용자 개인 단가가 없으면 시스템 단가로 if(faxPrice == 0.0f) return sysJoinSetVO.getFaxPrice(); diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java index 438bb612..91a4b60d 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java @@ -557,6 +557,11 @@ public class KakaoAlimTalkSendController { } int callToListCnt = kakaoVO.getCallToList().length; + if(callToListCnt > 500) { + modelAndView.addObject("message", "한번에 전송가능한 최대 발송건은 500건 입니다."); + modelAndView.addObject("result", "fail"); + return modelAndView; + } kakaoVO.setTotalCallCnt(callToListCnt); /** 예약 문자인 경우 설정 ----------------------------------------------*/ diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index dbe54328..ec9eed32 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java @@ -2596,7 +2596,16 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M * 신규 IDgen 값 생성해주기 * * */ - String subUserId = mjonMsgVO.getUserId().substring(0, 5).toUpperCase(); + /*String subUserId = ""; + if(mjonMsgVO.getUserId().length() < 5) { + int a = 5 - mjonMsgVO.getUserId().length(); + subUserId = mjonMsgVO.getUserId(); + for(int i=0; i < a; i++) { + subUserId += "0"; + } + }else { + subUserId = mjonMsgVO.getUserId().substring(0, 5).toUpperCase(); + } mjonMsgVO.setSearchKeyword(subUserId); System.out.println("+++++++++++ subUserId ::: "+subUserId); @@ -2604,21 +2613,20 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M System.out.println(userLastIdgen); //기존에 등록된 pk값이 없으면 초기 번호로 셋팅 - if(userLastIdgen == null) { + if(userLastIdgen == null || userLastIdgen.equals("null")) { userLastIdgen = subUserId + "_00000000000000"; - } + }*/ +// System.out.println("+_+++++ startUserId ::: "+startUserId); + String startUserId = ""; MjonCommon mjComm = new MjonCommon(); - String startUserId = userLastIdgen; - System.out.println("+_+++++ startUserId ::: "+startUserId); - //문자발송 리스트 생성 시작 for(int i = 0; i < callToCnt; i++) { - + startUserId = idgenMsgId.getNextStringId(); //신규 pk IDgen 데이터 생성 - startUserId = mjComm.getCreateMsgUserIdgen(subUserId, startUserId); + /*startUserId = mjComm.getCreateMsgUserIdgen(subUserId, startUserId);*/ Boolean blockSts = false; for(int j = 0; j < usrBlockCnt; j++) { @@ -2761,7 +2769,6 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M //즉시 / 예약 전송 처리 if(mjonMsgVO.getReserveYn().equals("N")) {//즉시 전송의 경우 현재 시간을 입력 - if(spamStatus.equals("Y") || smishingYn.equals("Y")) {//스팸문자가 있거나, 스미싱 의심 회원의 경우 30분 지연시간을 입력해 준다. tempVO.setReqDate(mjonMsgVO.getReqDate());//상단에서 스팸문구가 있는겨우 30분 딜레이시간을 입력해 두었기 때문에 같은 데이터를 입력함. @@ -2776,7 +2783,6 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } }else { // 예약 발송의 경우 예약 시간을 입력 - //분할 발송을 체크 한 경우 if(mjonMsgVO.getDivideChk() != null) { @@ -2800,7 +2806,6 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M }else {//일반 예약 발송의 경우 - if(spamStatus.equals("Y") || smishingYn.equals("Y")) {//스팸문구 혹은 스미싱 의심 회원의 경우 30분 딜레이 처리해준다. Date delayDate = transFormat.parse(mjonMsgVO.getReqDate()); diff --git a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java index d87a4345..e615bec6 100644 --- a/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java +++ b/src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java @@ -124,15 +124,20 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll model.addAttribute("mmsMsgCnt", mmsMsgCnt); */ + /* //전체 발송 건수 통계 불러오기 mjonMsgSentVO.setMsgType(""); List totalMsgCnt = mjonMsgSentService.selectDetailMsgSentCntMix(mjonMsgSentVO); + System.out.println("start"); + // H:홈페이지, A:API 로 sms, lms, mms 나누는 영역 List H_totalMsgCnt = totalMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); List H_smsMsgCnt = new ArrayList(); List H_lmsMsgCnt = new ArrayList(); List H_mmsMsgCnt = new ArrayList(); + + System.out.println("start"); List A_totalMsgCnt = totalMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); List A_smsMsgCnt = new ArrayList(); @@ -163,10 +168,10 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll }); - /* - * 홈페이지에서 보낸 데이터 LIST - * SEND_KIND = "H" - * */ + + //* 홈페이지에서 보낸 데이터 LIST + //* SEND_KIND = "H" + // 전체 영역 model.addAttribute("H_allSentCntVO", this.getResultCntProc(H_totalMsgCnt)); // 전체 단문(SMS) @@ -177,13 +182,12 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll model.addAttribute("H_mmsSentCntVO", this.getResultCntProc(H_mmsMsgCnt)); - /* ==================================================================================== */ - /* - * 홈페이지에서 보낸 데이터 LIST - * SEND_KIND = "A" - * */ + + // * 홈페이지에서 보낸 데이터 LIST + //* SEND_KIND = "A" + // 전체 영역 model.addAttribute("A_allSentCntVO", this.getResultCntProc(A_totalMsgCnt)); // 전체 단문(SMS) @@ -192,6 +196,7 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll model.addAttribute("A_lmsSentCntVO", this.getResultCntProc(A_lmsMsgCnt)); // 전체 장문(LMS) model.addAttribute("A_mmsSentCntVO", this.getResultCntProc(A_mmsMsgCnt)); + */ @@ -255,6 +260,114 @@ private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentControll return "web/msgsent/MsgSentView"; } + /** + * 마이페이지 - 이용내역 - ajax + * @param mjonMsgVO + * @param model + * @return "/web/member/pay/PayUserListAjax.do" + * @throws Exception + */ + @RequestMapping(value="/web/msgsent/subcontent/MsgSentView_HA_allSentAjax.do") + public String mberInfo_cash_pointAjax(@ModelAttribute("searchVO") MjonMsgSentVO mjonMsgSentVO, + HttpServletRequest request, + ModelMap model) throws Exception{ + + System.out.println("MsgSentView_HA_allSentAjax"); + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + + mjonMsgSentVO.setUserId(userId); + + //전체 발송 건수 통계 불러오기 + mjonMsgSentVO.setMsgType(""); + List totalMsgCnt = mjonMsgSentService.selectDetailMsgSentCntMix(mjonMsgSentVO); + + System.out.println("start"); + + // H:홈페이지, A:API 로 sms, lms, mms 나누는 영역 + List H_totalMsgCnt = totalMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List H_smsMsgCnt = new ArrayList(); + List H_lmsMsgCnt = new ArrayList(); + List H_mmsMsgCnt = new ArrayList(); + + System.out.println("start"); + + List A_totalMsgCnt = totalMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + List A_smsMsgCnt = new ArrayList(); + List A_lmsMsgCnt = new ArrayList(); + List A_mmsMsgCnt = new ArrayList(); + + System.out.println(" ::H_totalMsgCnt :: "+ H_totalMsgCnt.size()); + System.out.println(" ::A_totalMsgCnt :: "+ A_totalMsgCnt.size()); + + H_totalMsgCnt.forEach(t->{ + if (Integer.parseInt(t.getFilePath1())>0) { + H_smsMsgCnt.add(t); + } else if (Integer.parseInt(t.getFilePath2())>0) { + H_lmsMsgCnt.add(t); + } else if (Integer.parseInt(t.getFilePath3())>0) { + H_mmsMsgCnt.add(t); + } + }); + + A_totalMsgCnt.forEach(t->{ + if (Integer.parseInt(t.getFilePath1())>0) { + A_smsMsgCnt.add(t); + } else if (Integer.parseInt(t.getFilePath2())>0) { + A_lmsMsgCnt.add(t); + } else if (Integer.parseInt(t.getFilePath3())>0) { + A_mmsMsgCnt.add(t); + } + }); + + + + //* 홈페이지에서 보낸 데이터 LIST + //* SEND_KIND = "H" + + // 전체 영역 + model.addAttribute("H_allSentCntVO", this.getResultCntProc(H_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("H_smsSentCntVO", this.getResultCntProc(H_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_lmsSentCntVO", this.getResultCntProc(H_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_mmsSentCntVO", this.getResultCntProc(H_mmsMsgCnt)); + + + + + + // * 홈페이지에서 보낸 데이터 LIST + //* SEND_KIND = "A" + + // 전체 영역 + model.addAttribute("A_allSentCntVO", this.getResultCntProc(A_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("A_smsSentCntVO", this.getResultCntProc(A_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_lmsSentCntVO", this.getResultCntProc(A_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_mmsSentCntVO", this.getResultCntProc(A_mmsMsgCnt)); + + + + + /* + a.mber_nm LIKE CONCAT('%',#searchKeyword#,'%') + + */ + ApiKeyVO apiKeyVO = new ApiKeyVO(); + apiKeyVO.setMberId(userId); + model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false); + + + System.out.println("MsgSentView_HA_allSentAjax_end"); + + return "/web/msgsent/subcontent/MsgSentView_HA_allSentAjax"; + } /** * @methodName : getResultCntProc diff --git a/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java b/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java index 4923cee2..c8fa6cd3 100644 --- a/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java +++ b/src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java @@ -94,6 +94,172 @@ public class MjonReservMsgController { return "redirect:/web/user/login/login.do"; } + mjonResvMsgVO.setUserId(userId); + + /* + //전체 발송 건수 통계 불러오기 + mjonResvMsgVO.setMsgType(""); + List totalMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO);//mjonReservMsgService.selectTotalMsgCnt(mjonResvMsgVO); + + List H_totalMsgCnt = totalMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_totalMsgCnt = totalMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + + model.addAttribute("totalMsgCnt", totalMsgCnt); + + //단문 성공건, 실패건 불러오기 + mjonResvMsgVO.setMsgType("4"); + List smsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO); + + List H_smsMsgCnt = smsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_smsMsgCnt = smsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + + model.addAttribute("smsMsgCnt", smsMsgCnt); + + //장문 성공건, 실패건 불러오기 + mjonResvMsgVO.setMsgType("6"); + mjonResvMsgVO.setFileCnt("0"); + List lmsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO); + + List H_lmsMsgCnt = lmsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_lmsMsgCnt = lmsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + model.addAttribute("lmsMsgCnt", lmsMsgCnt); + + //그림문자 성공건, 실패건 불러오기 + mjonResvMsgVO.setMsgType("6"); + mjonResvMsgVO.setFileCnt("1"); + List mmsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO); + + + List H_mmsMsgCnt = mmsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList()); + List A_mmsMsgCnt = mmsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList()); + model.addAttribute("mmsMsgCnt", mmsMsgCnt); + + + + + // * 홈페이지에서 보낸 데이터 LIST + //* SEND_KIND = "H" + + // 전체 영역 + model.addAttribute("H_allSentCntVO", this.getResultCntProc(H_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("H_smsSentCntVO", this.getResultCntProc(H_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_lmsSentCntVO", this.getResultCntProc(H_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("H_mmsSentCntVO", this.getResultCntProc(H_mmsMsgCnt)); + + + // ==================================================================================== + + + + // * 홈페이지에서 보낸 데이터 LIST + // * SEND_KIND = "A" + + // 전체 영역 + model.addAttribute("A_allSentCntVO", this.getResultCntProc(A_totalMsgCnt)); + // 전체 단문(SMS) + model.addAttribute("A_smsSentCntVO", this.getResultCntProc(A_smsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_lmsSentCntVO", this.getResultCntProc(A_lmsMsgCnt)); + // 전체 장문(LMS) + model.addAttribute("A_mmsSentCntVO", this.getResultCntProc(A_mmsMsgCnt)); + + ApiKeyVO apiKeyVO = new ApiKeyVO(); + apiKeyVO.setMberId(userId); + model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false); + */ + +// model.addAttribute("mmsMsgCnt", mmsMsgCnt); + + // 검색 리스트 불러오기 + if(mjonResvMsgVO.getPageUnit() != 10) { + mjonResvMsgVO.setPageUnit(mjonResvMsgVO.getPageUnit()); + } + + //기본 내림차순 정렬 + if(mjonResvMsgVO.getSearchSortOrd().equals("")) { + + mjonResvMsgVO.setSearchSortOrd("desc"); + + } + + //기본 등록일자 정렬 + if(mjonResvMsgVO.getSearchSortCnd().equals("")) { + + mjonResvMsgVO.setSearchSortCnd("regdate"); + + } + + /** pageing */ + /*PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(mjonResvMsgVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(mjonResvMsgVO.getPageUnit()); + paginationInfo.setPageSize(mjonResvMsgVO.getPageSize()); + + mjonResvMsgVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + mjonResvMsgVO.setLastIndex(paginationInfo.getLastRecordIndex()); + mjonResvMsgVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());*/ + + //전체 발송 리스트 불러오기 + /*List resultAllResList = mjonReservMsgService.selectAllResvMsgList(mjonResvMsgVO); + model.addAttribute("resultAllResList", resultAllResList); + model.addAttribute("resultAllResCnt", resultAllResList.size()); + + model.addAttribute("searchKeyword", mjonResvMsgVO.getSearchKeyword()); + paginationInfo.setTotalRecordCount( resultAllResList.size()> 0 ? (Integer.parseInt((resultAllResList.get(0)).getTotMsgCnt())) : 0); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("totalRecordCount", paginationInfo.getTotalRecordCount());*/ + + + String startDate = mjonResvMsgVO.getStartDate(); + String endDate = mjonResvMsgVO.getEndDate(); + + if(startDate == null && endDate == null ) { + + Calendar cal = Calendar.getInstance(); + Date now = new Date(); + + SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); + + //종료일은 오늘날짜 + cal.setTime(now); + endDate = format.format(cal.getTime()); + + //시작일은 전날로 셋팅 + cal.add(Calendar.DATE, -1); + startDate = format.format(cal.getTime()); + + mjonResvMsgVO.setStartDate(startDate); + mjonResvMsgVO.setEndDate(endDate); + + } + + model.addAttribute("searchKeyword", mjonResvMsgVO.getSearchKeyword()); + model.addAttribute("mjonResvMsgVO", mjonResvMsgVO); + model.addAttribute("siteId", mjonResvMsgVO.getSiteId()); + return "web/reservedmsg/ReservedMsgView"; + } + + /** + * 마이페이지 - 이용내역 - ajax + * @param mjonMsgVO + * @param model + * @return "/web/member/pay/PayUserListAjax.do" + * @throws Exception + */ + @RequestMapping(value="/web/reservedmsg/subcontent/MsgSentView_HA_allSentAjax.do") + public String mberInfo_cash_pointAjax(@ModelAttribute("searchVO") MjonResvMsgVO mjonResvMsgVO, + HttpServletRequest request, + ModelMap model) throws Exception{ + + System.out.println("ReservedMsgSentView_HA_allSentAjax"); + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + mjonResvMsgVO.setUserId(userId); //전체 발송 건수 통계 불러오기 @@ -169,77 +335,12 @@ public class MjonReservMsgController { apiKeyVO.setMberId(userId); model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false); -// model.addAttribute("mmsMsgCnt", mmsMsgCnt); - - // 검색 리스트 불러오기 - if(mjonResvMsgVO.getPageUnit() != 10) { - mjonResvMsgVO.setPageUnit(mjonResvMsgVO.getPageUnit()); - } - //기본 내림차순 정렬 - if(mjonResvMsgVO.getSearchSortOrd().equals("")) { - - mjonResvMsgVO.setSearchSortOrd("desc"); - - } + + System.out.println("ReservedMsgSentView_HA_allSentAjax_end"); - //기본 등록일자 정렬 - if(mjonResvMsgVO.getSearchSortCnd().equals("")) { - - mjonResvMsgVO.setSearchSortCnd("regdate"); - - } - - /** pageing */ - /*PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(mjonResvMsgVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(mjonResvMsgVO.getPageUnit()); - paginationInfo.setPageSize(mjonResvMsgVO.getPageSize()); - - mjonResvMsgVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); - mjonResvMsgVO.setLastIndex(paginationInfo.getLastRecordIndex()); - mjonResvMsgVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());*/ - - //전체 발송 리스트 불러오기 - /*List resultAllResList = mjonReservMsgService.selectAllResvMsgList(mjonResvMsgVO); - model.addAttribute("resultAllResList", resultAllResList); - model.addAttribute("resultAllResCnt", resultAllResList.size()); - - model.addAttribute("searchKeyword", mjonResvMsgVO.getSearchKeyword()); - paginationInfo.setTotalRecordCount( resultAllResList.size()> 0 ? (Integer.parseInt((resultAllResList.get(0)).getTotMsgCnt())) : 0); - model.addAttribute("paginationInfo", paginationInfo); - model.addAttribute("totalRecordCount", paginationInfo.getTotalRecordCount());*/ - - - String startDate = mjonResvMsgVO.getStartDate(); - String endDate = mjonResvMsgVO.getEndDate(); - - if(startDate == null && endDate == null ) { - - Calendar cal = Calendar.getInstance(); - Date now = new Date(); - - SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); - - //종료일은 오늘날짜 - cal.setTime(now); - endDate = format.format(cal.getTime()); - - //시작일은 전날로 셋팅 - cal.add(Calendar.DATE, -1); - startDate = format.format(cal.getTime()); - - mjonResvMsgVO.setStartDate(startDate); - mjonResvMsgVO.setEndDate(endDate); - - } - - model.addAttribute("searchKeyword", mjonResvMsgVO.getSearchKeyword()); - model.addAttribute("mjonResvMsgVO", mjonResvMsgVO); - model.addAttribute("siteId", mjonResvMsgVO.getSiteId()); - return "web/reservedmsg/ReservedMsgView"; - } - + return "/web/reservedmsg/subcontent/ReservedMsgSentView_HA_allSentAjax"; + } /** diff --git a/src/main/java/itn/let/mjo/sttst/service/SttstMsgScheduling.java b/src/main/java/itn/let/mjo/sttst/service/SttstMsgScheduling.java index 6cf3b10a..ce87aa74 100644 --- a/src/main/java/itn/let/mjo/sttst/service/SttstMsgScheduling.java +++ b/src/main/java/itn/let/mjo/sttst/service/SttstMsgScheduling.java @@ -58,7 +58,7 @@ public class SttstMsgScheduling{ System.out.println("=============DO ============="); MjonMsgVO mjonMsgVO = new MjonMsgVO(); - mjonSttstService.insertMjSttstMsgBulk(mjonMsgVO); + //mjonSttstService.insertMjSttstMsgBulk(mjonMsgVO); }else { @@ -121,7 +121,7 @@ public class SttstMsgScheduling{ System.out.println("=============DO ============="); MjonMsgVO mjonMsgVO = new MjonMsgVO(); - mjonSttstService.insertMjSttstMsgRankBulk(mjonMsgVO); + //mjonSttstService.insertMjSttstMsgRankBulk(mjonMsgVO); }else { System.out.println("=============skipped!!! ============="); } @@ -150,7 +150,7 @@ public class SttstMsgScheduling{ System.out.println("=============DO ============="); MjonMsgVO mjonMsgVO = new MjonMsgVO(); - mjonSttstService.insertMjSttstMsgRankDayBulk(mjonMsgVO); + //mjonSttstService.insertMjSttstMsgRankDayBulk(mjonMsgVO); }else { System.out.println("=============skipped!!! ============="); } diff --git a/src/main/java/itn/let/schdlr/service/SchedulerUtil.java b/src/main/java/itn/let/schdlr/service/SchedulerUtil.java index 563ca444..d4f471b6 100644 --- a/src/main/java/itn/let/schdlr/service/SchedulerUtil.java +++ b/src/main/java/itn/let/schdlr/service/SchedulerUtil.java @@ -2,6 +2,7 @@ package itn.let.schdlr.service; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import javax.annotation.Resource; import javax.sql.DataSource; @@ -27,6 +28,8 @@ import itn.let.lett.service.LetterService; import itn.let.mail.service.MailTemplateService; 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.msgdata.service.impl.MjonMsgDataDAO; import itn.let.sts.com.StatsVO; import itn.let.sts.cst.service.EgovConectStatsService; import itn.let.uss.umt.service.EgovUserManageService; @@ -76,6 +79,9 @@ public class SchedulerUtil { @Resource(name = "LetterService") private LetterService letterService; + @Resource(name="MjonMsgDataDAO") + private MjonMsgDataDAO mjonMsgDataDAO; + /** 설정값 가져오기 */ @Value("#{globalSettings['Globals.Env']}") private String GlobalsEnv; @@ -246,8 +252,8 @@ public class SchedulerUtil { // 트래픽 감시 스케줄러 - // 매분마다 실행 - @Scheduled(cron = "37 * * * * *") + // 3분마다 실행 + @Scheduled(cron = "0 0/3 * * * ?") @SchedulerLock(name = "highTrafficIgnoreIpInsert", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) public void highTrafficIgnoreIpInsert() throws Exception { @@ -473,7 +479,16 @@ public class SchedulerUtil { schdlrManageService.msgFailPayBackOneByDay(); }else { //2분 마다는 7일을 대상으로 실행 - schdlrManageService.msgFailPayBack(); + //어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14 + //schdlrManageService.msgFailPayBack(); + + List msgFailList = mjonMsgDataDAO.selectMsgSentFailList(); + + for(MjonMsgVO vo : msgFailList) { + + mjonMsgDataDAO.updateMsgSentFailPayBack(vo); + + } } System.out.println("==== faxFailPayBack ===="); diff --git a/src/main/java/itn/let/sym/log/clg/web/EgovLoginLogController.java b/src/main/java/itn/let/sym/log/clg/web/EgovLoginLogController.java index 115f1a4f..ea2cf490 100644 --- a/src/main/java/itn/let/sym/log/clg/web/EgovLoginLogController.java +++ b/src/main/java/itn/let/sym/log/clg/web/EgovLoginLogController.java @@ -120,7 +120,7 @@ public class EgovLoginLogController { loginLog.setSearchStartDate(beforeMonthDay); } - List adminLogList = loginLogService.selectAmdinLog(loginLog); + List adminLogList = loginLogService.selectAmdinLog(loginLog); int adminLogListCnt = loginLogService.selectAmdinLogTotCnt(loginLog); paginationInfo.setTotalRecordCount(adminLogListCnt); model.addAttribute("paginationInfo", paginationInfo); diff --git a/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java b/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java index d81e731a..b51976bc 100644 --- a/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java +++ b/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java @@ -378,6 +378,9 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement public List selectMberMsgSentLatestList(String mberId) throws Exception{ return mberManageDAO.selectMberMsgSentLatestList(mberId); } + public List selectMberMsgSentLatestListNew20240320(String mberId) throws Exception{ + return mberManageDAO.selectMberMsgSentLatestListNew20240320(mberId); + } //회원 최근 발송 문자내용 3개 불러오기(예약) public List selectMberMsgSentLatestList2(String mberId) throws Exception{ diff --git a/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java b/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java index 62398fa5..2068d743 100644 --- a/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java +++ b/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java @@ -212,6 +212,10 @@ public class MberManageDAO extends EgovComAbstractDAO{ public List selectMberMsgSentLatestList(String mberId) throws Exception{ return (List) list("mberManageDAO.selectMberMsgSentLatestList", mberId); } + @SuppressWarnings("unchecked") + public List selectMberMsgSentLatestListNew20240320(String mberId) throws Exception{ + return (List) list("mberManageDAO.selectMberMsgSentLatestListNew20240320", mberId); + } //회원 최근 발송 문자내용 3개 불러오기(예약) @SuppressWarnings("unchecked") diff --git a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java index 879fc9a3..21d369bd 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java @@ -2597,7 +2597,37 @@ public class EgovLoginController { return "web/login/findUserId"; } - + /** + * @Method Name : selectUserSttusAjax + * @작성일 : 2024. 3. 27. + * @작성자 : WYH + * @변경이력 : + * @Method 설명 : 회원상태 조회 (Y:일반회원, B:이용정지 회원, N:탈퇴회원) + */ + @RequestMapping(value = { "/web/user/selectUserSttusAjax.do" }) + public ModelAndView selectUserSttusAjax(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO + , RedirectAttributes redirectAttributes + , ModelMap model) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + try { + + String userId = mjonMsgVO.getUserId(); + String userSttus = userManageService.selectUserStatusInfoCheck(userId); + + modelAndView.addObject("status", "success"); + modelAndView.addObject("userSttus", userSttus); + + } catch (Exception e) { + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", "인증에 실패하였습니다."); + } + + return modelAndView; + } + + /** * 아이디 비밀번호 찾기 시스템 문자발송 * @@ -2655,7 +2685,7 @@ public class EgovLoginController { System.out.println(TorF); System.out.println(TorF); System.out.println(TorF); - + if (!TorF) { System.out.println(TorF); System.out.println(TorF); @@ -2667,7 +2697,16 @@ public class EgovLoginController { return modelAndView; } - + + + if(!usedNmList.get(0).getMberSttus().equals("Y")) { + modelAndView.addObject("message", "입력하신 아이디/이름/휴대폰 번호 정보에 맞는 회원이 없습니다."); + modelAndView.addObject("result", "fail-check"); + modelAndView.addObject("resultSts", "0"); + modelAndView.addObject("resultBlockSts", "0"); + return modelAndView; + } + } catch (Exception e) { logger.error(e.getMessage(), e); @@ -3349,6 +3388,15 @@ public class EgovLoginController { return modelAndView; } + + if(!usedNmList.get(0).getMberSttus().equals("Y")) { + modelAndView.addObject("message", "입력하신 아이디/이름/휴대폰 번호 정보에 맞는 회원이 없습니다."); + modelAndView.addObject("result", "fail-check"); + modelAndView.addObject("resultSts", "0"); + modelAndView.addObject("resultBlockSts", "0"); + return modelAndView; + } + } catch (Exception e) { diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index eee2f486..8e705e58 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -293,6 +293,9 @@ public class EgovMypageController { model.addAttribute("mberManageVO", mberManageVO); } + /* + * #1.로딩 문제 해결을 위해 ajax로 이전 2024-03-21 + * /web/user/subcontent/mberInfo_cash_pointAjax.do {//캐시 정보 List cashInfoList = mjonPayService.selectCashInfoList(userId); model.addAttribute("cashInfoList", cashInfoList); @@ -302,9 +305,15 @@ public class EgovMypageController { List pointInfoList = mjonPayService.selectPointInfoList(userId); model.addAttribute("pointInfoList", pointInfoList); } + */ + MjonMsgVO mjonMsgVO = new MjonMsgVO(); mjonMsgVO.setUserId(userId); + /* + * #2.로딩 문제 해결을 위해 ajax로 이전 2024-03-21 + * /web/user/subcontent/mberInfo_send_reservAjax.do + * { // 발송건수 mjonMsgVO.setReserveYn("N"); List sendTotList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO); @@ -316,7 +325,7 @@ public class EgovMypageController { List reservToList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO); model.addAttribute("reservToList", reservToList); } - + */ {// 충전캐시 @@ -329,12 +338,14 @@ public class EgovMypageController { model.addAttribute("sumPoint", sumPoint); } + /* {// 총 사용금액 MjonPayVO mjonPayVO = new MjonPayVO(); mjonPayVO.setUserId(userId); List usedCashTotList = mjonPayService.selectUsedCashWithKakaoTotCnt(mjonPayVO); model.addAttribute("usedCashTotList", usedCashTotList); } + */ {// 사용가능한 금액 MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(userId); @@ -363,10 +374,12 @@ public class EgovMypageController { } {//최근 발송 문자 내용 불러오기 - 최근 3개 내역만 - List mjonMsgSentList = mberManageService.selectMberMsgSentLatestList(userId); + List mjonMsgSentList = mberManageService.selectMberMsgSentLatestListNew20240320(userId); model.addAttribute("mjonMsgSentList", mjonMsgSentList); } + /* + * 2024-03-22 페이지 로딩 속도 개선을 위해 ajax로 처리 {//최근 발송 알림톡 내용 불러오기 - 최근 3개 내역만 KakaoSentVO kakaoSentVO = new KakaoSentVO(); kakaoSentVO.setUserId(userId); @@ -380,6 +393,7 @@ public class EgovMypageController { List kakaoATSentList = kakaoSentService.selectAllKakaoSentList(kakaoSentVO); model.addAttribute("kakaoATSentList", kakaoATSentList); } + */ {//최근 발송 팩스 내용 불러오기 - 최근 3개 내역만 FaxGroupDataVO faxGroupDataVO = new FaxGroupDataVO(); @@ -437,6 +451,111 @@ public class EgovMypageController { return "web/user/mberInfoIndex"; } + /** + * 마이페이지 - 이용내역 - ajax + * @param mjonMsgVO + * @param model + * @return "/web/member/pay/PayUserListAjax.do" + * @throws Exception + */ + @RequestMapping(value="/web/user/subcontent/mberInfo_cash_pointAjax.do") + public String mberInfo_cash_pointAjax(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, + HttpServletRequest request, + ModelMap model) throws Exception{ + + System.out.println("mberInfo_cash_pointAjax"); + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + + {//캐시 정보 + List cashInfoList = mjonPayService.selectCashInfoList(userId); + model.addAttribute("cashInfoList", cashInfoList); + } + + {//포인트 정보 + List pointInfoList = mjonPayService.selectPointInfoList(userId); + model.addAttribute("pointInfoList", pointInfoList); + } + + System.out.println("mberInfo_cash_pointAjax_end"); + + return "/web/user/subcontent/mberInfo_cash_pointAjax"; + } + + /** + * 마이페이지 - 이용내역 - 발송건수/예약건수 ajax + * @param mjonMsgVO + * @param model + * @return "/web/member/pay/PayUserListAjax.do" + * @throws Exception + */ + @RequestMapping(value="/web/user/subcontent/mberInfo_send_reservAjax.do") + public String mberInfo_send_reservAjax( + HttpServletRequest request, + ModelMap model) throws Exception{ + + System.out.println("mberInfo_cash_pointAjax"); + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + mjonMsgVO.setUserId(userId); + + { // 발송건수 + mjonMsgVO.setReserveYn("N"); + List sendTotList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO); + model.addAttribute("sendTotList", sendTotList); + } + + { // 예약건수 + mjonMsgVO.setReserveYn("Y"); + List reservToList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO); + model.addAttribute("reservToList", reservToList); + } + + System.out.println("mberInfo_cash_pointAjax_end"); + + return "/web/user/subcontent/mberInfo_send_reservAjax"; + } + + /** + * 마이페이지 - 최근발송내역-알림톡 + * @param mjonMsgVO + * @param model + * @return "/web/member/pay/PayUserListAjax.do" + * @throws Exception + */ + @RequestMapping(value="/web/user/subcontent/mberInfo_kakaoATSentListAjax.do") + public String mberInfo_kakaoATSentListAjax( + HttpServletRequest request, + ModelMap model) throws Exception{ + + System.out.println("mberInfo_kakaoATSentListAjax"); + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + {//최근 발송 알림톡 내용 불러오기 - 최근 3개 내역만 + KakaoSentVO kakaoSentVO = new KakaoSentVO(); + kakaoSentVO.setUserId(userId); + kakaoSentVO.setTabType("at"); + kakaoSentVO.setRecordCountPerPage(3); + kakaoSentVO.setFirstIndex(0); + kakaoSentVO.setListType("groupList"); + kakaoSentVO.setStateType("all"); + kakaoSentVO.setSearchSortOrd("desc"); + kakaoSentVO.setSearchSortCnd("regdate"); + List kakaoATSentList = kakaoSentService.selectAllKakaoSentList(kakaoSentVO); + model.addAttribute("kakaoATSentList", kakaoATSentList); + } + + System.out.println("mberInfo_kakaoATSentListAjax_end"); + + return "/web/user/subcontent/mberInfo_kakaoATSentListAjax"; + } //발송문자 건수 계산하는 함수 public String[] getTotalSendCnt(List mjonMsgSentVO) { diff --git a/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java b/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java index a333609d..e03cbeff 100644 --- a/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java +++ b/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java @@ -198,6 +198,8 @@ public interface EgovMberManageService { //회원 최근 발송 문자내용 3개 불러오기 public List selectMberMsgSentLatestList(String mberId) throws Exception; + //성능개선 2024-03-20 + public List selectMberMsgSentLatestListNew20240320(String mberId) throws Exception; //회원 최근 발송 문자내용 3개 불러오기(예약) public List selectMberMsgSentLatestList2(String mberId) throws Exception; diff --git a/src/main/java/itn/let/uss/umt/service/EgovUserManageService.java b/src/main/java/itn/let/uss/umt/service/EgovUserManageService.java index 7d9144a3..8cf39d58 100644 --- a/src/main/java/itn/let/uss/umt/service/EgovUserManageService.java +++ b/src/main/java/itn/let/uss/umt/service/EgovUserManageService.java @@ -168,6 +168,8 @@ public interface EgovUserManageService { public int selectAdminDiChk(UserManageVO userManageVO); public boolean selectUserStatusInfo(String userId) throws Exception; + + public String selectUserStatusInfoCheck(String userId) throws Exception; // 결제 여부 public int selectPayCountByUser(UserManageVO userManageVO); diff --git a/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java b/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java index ed208c26..9743cfd4 100644 --- a/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java +++ b/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java @@ -469,6 +469,12 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement return status; } + @Override + public String selectUserStatusInfoCheck(String userId) throws Exception { + String mberSttus = userManageDAO.selectUserStatusInfo(userId); + return mberSttus; + } + // 결제 여부 @Override public int selectPayCountByUser(UserManageVO userManageVO) { @@ -884,5 +890,6 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement return resultMap; } + } \ No newline at end of file diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index c367dd89..95c2cbc6 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -1194,7 +1194,7 @@ public class EgovUserManageController { model.addAttribute("flowTypeCode", cmmUseService.selectCmmCodeDetail(vo)); //최근 발송 문자 내용 불러오기 - 최근 3개 내역만 - List mjonMsgSentList = mberManageService.selectMberMsgSentLatestList(userId); + List mjonMsgSentList = mberManageService.selectMberMsgSentLatestListNew20240320(userId); model.addAttribute("mjonMsgSentList", mjonMsgSentList); //최근 발송 문자 내용 불러오기 - 최근 3개 내역만(에약) diff --git a/src/main/resources/egovframework/egovProps/globals_prod.properties b/src/main/resources/egovframework/egovProps/globals_prod.properties index ea459ed8..f32e62f1 100644 --- a/src/main/resources/egovframework/egovProps/globals_prod.properties +++ b/src/main/resources/egovframework/egovProps/globals_prod.properties @@ -102,4 +102,4 @@ Globals.pay.kgm.bank.raSvcid=230510133362 Globals.pay.kgm.bank.payMode=10 #MOBILE Globals.pay.kgm.mobile.mcSvcid=220613125202 -Globals.pay.kgm.mobile.payMode=10 \ No newline at end of file +Globals.pay.kgm.mobile.payMode=10 \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-idgen.xml b/src/main/resources/egovframework/spring/com/context-idgen.xml index d1823b10..4b5c4923 100644 --- a/src/main/resources/egovframework/spring/com/context-idgen.xml +++ b/src/main/resources/egovframework/spring/com/context-idgen.xml @@ -2321,7 +2321,7 @@ destroy-method="destroy"> - + diff --git a/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml b/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml index b3240689..956c4139 100644 --- a/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml +++ b/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml @@ -70,7 +70,10 @@ - + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml index ad3a3f2e..d68553a3 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml @@ -7,6 +7,7 @@ + /* MjonEventDAO.selectEventMsgMberDefaultInfo */ SELECT a.EVENT_INFO_ID AS eventInfoId, a.MBER_ID AS mberId, a.MBER_NM AS mberNm, diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml index cf371b6a..ed90c7b8 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml @@ -201,6 +201,7 @@ + /* KakaoSentDAO.selectAllPrivateKakaoSentList */ SELECT M2.totMsgCnt , M2.userId diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index 73bb4302..b9a67106 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -2112,6 +2112,7 @@ /* 2024.01.26 검색 기준을 regdate 에서 reqdate로 기준을 잡자고 장건영팀장 요청으로 변경처리, msg_group_cnt는 사용하지 않아서 주석처리 */ - + /* 2024.05.08 공급가액 은 버림처리 */ SELECT MAX(DATE_FORMAT(M.REQ_DATE, '%Y-%m-%d' )) AS maxRegDate , MIN(DATE_FORMAT(M.REQ_DATE, '%Y-%m-%d' )) AS minRegDate @@ -3509,9 +3510,9 @@ , SUM(IF(M.msgTypeName = '알림톡', 1, 0)) AS atSendCount , SUM(IF(M.msgTypeName = '친구톡', 1, 0)) AS ftSendCount - , ifnull(ROUND(SUM(M.EACH_PRICE) , 2), 0) AS supplyPrice + , ifnull(TRUNCATE(SUM(M.EACH_PRICE) , 0), 0) AS supplyPrice , 0 AS vatPrice - , ifnull(ROUND(SUM(M.EACH_PRICE) , 2), 0) AS totalPrice + , ifnull(TRUNCATE(SUM(M.EACH_PRICE) , 0), 0) AS totalPrice FROM ( SELECT B.REGDATE @@ -6605,6 +6606,7 @@ - /* 발송결과 상단 전광판 조회(전체, 단문, 장문, 그림) MIX 결과 수량 */ + /* MjonMsgSentDAO.selectDetailMsgSentCntMix - 발송결과 상단 전광판 조회(전체, 단문, 장문, 그림) MIX 결과 수량 */ SELECT A0.MSG_GROUP_ID AS msgGroupId , COUNT(A0.RESULT) AS msgResultCnt diff --git a/src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml index b54485e2..c0fa44ab 100644 --- a/src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml @@ -2149,6 +2149,7 @@ + /* LoginLogDAO.selectAmdinLogTotCnt */ SELECT COUNT(0) FROM @@ -312,7 +316,7 @@ AND a.CONECT_ID != '' - ( a.MENU_NM LIKE CONCAT('%' , #searchKeyword#, '%') OR a.URL LIKE CONCAT('%' , #searchKeyword#, '%') ) + ( a.MENU_NM LIKE CONCAT('%' , #searchKeyword#, '%') OR a.URL LIKE CONCAT('%' , #searchKeyword#, '%') OR c.EMPLYR_ID LIKE CONCAT('%' , #searchKeyword#, '%') ) a.MENU_NM LIKE CONCAT('%' , #searchKeyword#, '%') @@ -320,6 +324,9 @@ a.URL LIKE CONCAT('%' , #searchKeyword#, '%') + + c.EMPLYR_ID LIKE CONCAT('%' , #searchKeyword#, '%') + diff --git a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml index dab47381..8e721c86 100644 --- a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml @@ -1318,6 +1318,7 @@ + + - +
@@ -174,7 +174,7 @@

[개요]

단문·장문·그림 문자를 발송하는 메뉴입니다. 문자를 발송하기 위해서는 로그인이 되어 있어야 합니다.

[화면 구성]

- + 문자온 문자발송 화면
  • 1. 광고규정 및 사용안내 : 광고문자 관련 법규 안내 및 문자전송 사용안내 화면 팝업

    @@ -216,70 +216,70 @@

    문자 분류 “광고” 선택 시 광고문자에 필수로 포함되어야 할 내용(광고 표시, 무료거부 표시 및 무료거부번호)이 자동으로 입력됩니다. 단, 업체명과 업체 연락처는 직접 입력하셔야 하며 발신번호가 업체 연락처일 경우에는 업체 연락처를 별도로 표기하지 않으셔도 됩니다.

    - + 문자온 광고 문자전송 화면

    2. 특수문자 입력

    특수문자 버튼 클릭 시 입력 가능한 특수문자를 선택할 수 있습니다.

    - + 문자온 문자전송 시  특수문자 입력 방법

    3. 특정문구 변환

    다수에게 문자 발송 시 특정한 문구를 받는 사람에 따라 다르게 보낼 수 있습니다. 이름을 포함하여 총 5개 특정문구를 사용할 수 있습니다. 단, 미리보기에는 첫 번째 받는사람의 문자 내용만 표시됩니다.

    - + 문자온 문자전송 시  특정문구 변환 방법

    4. 이미지 불러오기

    추천 템플릿 또는 내 사진을 불러와 문자에 첨부할 수 있습니다.

    - + 문자온 문자전송 시 이미지 불러오는 방법

    5. 문자온 주소록 불러오기

    문자온 주소록 관리에 저장된 주소록을 통해 받는사람을 등록할 수 있습니다.

    - + 문자온 문자전송 시 주소록 불러오는 방법

    6. 엑셀 주소록 불러오기

    엑셀 파일 주소록을 불러와 받는사람을 등록할 수 있습니다. 불러올 수 있는 엑셀 파일은 샘플파일을 다운로드 받아 확인할 수 있습니다.

    - + 문자온 문자전송 시 엑셀파일 불러오는 방법

    7. 최근 전송내역/자주 보내는 번호 불러오기

    최근 전송내역 및 자주보내는 번호를 불러와 받는사람을 등록할 수 있습니다.

    - + 문자온 문자전송 시  최근 전송내역 및 자주보내는 번호 등록 방법

    8. 오류 검사

    받는사람 연락처 미입력 및 오입력 오류가 있는지 검사합니다.

    - + 문자온 문자전송 시 오류 검사 방법

    9. 테스트 발송

    보낼 문자 내용을 발신자에게 미리 테스트로 발송하여 정상적인 문자 발송 여부를 확인할 수 있습니다. 테스트 발송 건에 대해서는 정상요금이 부과됩니다.

    - + 문자온 문자전송 시 테스트 발송 방법

    10. 예약 발송

    문자를 원하는 일자 및 시간에 발송할 수 있으며, 분할로 발송할 수 있습니다.

    - + 문자온 문자전송 시 예약 발송 방법

    @@ -294,14 +294,14 @@

    문자온 사용방법

    1. 문자온 서비스에 로그인 합니다.

    2. 보유잔액이 부족할 경우 메인화면 상단 [충전]을 클릭합니다.

    - + 문자온 충전하기

    3. 메인화면 상단 [문자발송]을 클릭합니다.

    - + 문자온 문자발송 선택하기

    4. 발신번호를 선택합니다. ※ 선택할 발신번호가 없을 경우 [번호등록] 버튼을 통해 발신번호를 등록합니다.

    - + 문자온 문자전송 발신번호 선택하기

    5. 문자내용을 입력합니다. ※ 특수문자, 특정문구 일괄변환, 내문자함, 이미지 불러오기를 통해 내용을 추가할 수 있습니다. diff --git a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_6.html b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_6.html index d4947790..f8681bf0 100644 --- a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_6.html +++ b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_6.html @@ -45,7 +45,7 @@

    @@ -270,7 +270,7 @@

    [그림문자]

    - + 문자온 부고알림 그림문자
@@ -448,7 +448,7 @@

[그림문자]

- + 문자온 부고위로 그림문자
@@ -562,7 +562,7 @@

[그림문자]

- + 문자온 부고답례 그림문자
diff --git a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_7.html b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_7.html index 3dfd66f2..aaa03d9e 100644 --- a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_7.html +++ b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_7.html @@ -45,7 +45,7 @@
@@ -208,7 +208,7 @@
갑작스럽게 상을 당하시어 얼마나 애통하십니까?

뭐라 위로의 말씀을 드려야 좋을지 모르겠습니다.
- 본인이 어떠한 위로의 말씀을 드린다해도 보잘것 없겠지만 삼가 위로의 말씀을 올립니다.
Mbr> + 본인이 어떠한 위로의 말씀을 드린다해도 보잘것 없겠지만 삼가 위로의 말씀을 올립니다.

크게 마음 잡수시고 기운차리시기 바랍니다.

○○○님의 명복을 빕니다.

AM 9:43

@@ -242,7 +242,7 @@

[그림문자]

- + 문자온 조문위로 그림문자
@@ -343,7 +343,7 @@

[그림문자]

- + 문자온 조문답례 그림문자
@@ -705,7 +705,7 @@

[그림문자]

- + 문자온 결혼초대 그림문자
@@ -895,7 +895,7 @@

[그림문자]

- + 문자온 돌잔치 그림문자
diff --git a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_8.html b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_8.html index c765c20c..22023f2f 100644 --- a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_8.html +++ b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_8.html @@ -45,7 +45,7 @@
@@ -478,7 +478,7 @@

[그림문자]

- + 문자온 청첩장 그림문자
@@ -677,7 +677,7 @@

[그림문자]

- + 문자온 결혼 답례 그림문자
diff --git a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_9.html b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_9.html index cebf09f0..39207f89 100644 --- a/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_9.html +++ b/src/main/webapp/publish/publish_adv/adv_template_v1_manuscript_9.html @@ -45,7 +45,7 @@
@@ -73,7 +73,7 @@

갤럭시나 아이폰 등 핸드폰(휴대폰)으로 문자를 발송하는 것이 아닌 대량으로 단체에게 문자를 보내기 편하게 서비스를 제공하는 문자 발송 사이트를 말합니다.

- + 문자온 메인화면
diff --git a/src/main/webapp/publish/publish_adv/css/style.css b/src/main/webapp/publish/publish_adv/css/style.css index 92442eee..dd5f5b09 100644 --- a/src/main/webapp/publish/publish_adv/css/style.css +++ b/src/main/webapp/publish/publish_adv/css/style.css @@ -219,14 +219,15 @@ a{text-decoration: none;color: #222222;} .template_v1_content .blue_text{display: block; font-size: 18px; color: #3c33ab; line-height: 1.3;} .template_v1_content .blue_text02{font-size: 18px; color: #296d94; line-height: 1.3;} .template_v1_content .medium{font-weight: 500;} -.template_v1_content .bold{font-weight: bold;} -.template_v1_content h3{position: relative; font-size: 30px; font-family: 'GmarketSansBold'; text-decoration: underline; padding: 0 0 0 65px; margin: 0 0 65px 0;} +.template_v1_content .bold{font-weight:500;} +.template_v1_content h3{position: relative; font-size: 30px; line-height:42px; font-family: 'GmarketSansBold'; text-decoration: underline; padding: 0 0 0 65px; margin: 0 0 65px 0; text-underline-position: under;} .template_v1_content h3::after{position: absolute; content: " "; width: 50px; height: 50px; background-color: #222; border-radius: 100%; color: #fff; font-size: 30px;font-family: 'GmarketSansBold'; left: 0; top: 50%; transform: translateY(-50%); text-align: center; line-height: 55px;} .template_v1_content .section01 h3::after{content: "1";} .template_v1_content .section02 h3::after{content: "2";} .template_v1_content .section03 h3::after{content: "3";} .template_v1_content .section04 h3::after{content: "4";} .template_v1_content .section05 h3::after{content: "5";} +.template_v1_content .section06 h3::after{content: "6";} .template_v1_content section:nth-child(odd){background-color: #f2f2f4;} .template_v1_content img{margin: 53px 0 0 0; text-align: center;} .template_v1_content .top_btn{position: fixed; width: 71px; height: 71px; border-radius: 100%; background-color: #436dd9; color: #fff; font-family: 'GmarketSansBold'; border: 0; box-shadow: 0 0 8px rgba(0,0,0,0.5); right: 30px; bottom: 30px;} @@ -240,14 +241,15 @@ a{text-decoration: none;color: #222222;} .template_v1_content header img{margin: 0;} .template_v1_content .visual{display: flex; min-height: 313px; background: url(/publish/publish_adv/img/template_v1_main_bg.png) no-repeat; background-size: 100% auto; text-align: center; margin: -20px 0 0 0; align-items: center;} .template_v1_content .visual p{text-align: center;} -.template_v1_content .visual .keyword{display: inline-block; background-color: #ffc10b; padding: 5px 20px; border-radius: 50px; color: #fff; margin: 27px 0 30px 0; font-size: 18px;} +.template_v1_content .visual .keyword{display: inline-block; background-color: #ffc10b; padding: 3px 20px 6px 20px; border-radius: 50px; color: #fff; margin: 27px 0 30px 0; font-size: 18px;} .template_v1_content .visual h2{font-size: 65px; color: #fff; font-family: 'GmarketSansBold'; margin: 0 0 30px 0;} .template_v1_content .visual .sub_text{font-size: 16px; color: #fff; line-height: 1.5; font-weight: 300;} .template_v1_content .index{text-align: center;} .template_v1_content .index p{position: relative; font-size: 30px; font-family: 'GmarketSansBold'; text-align: center;} .template_v1_content .index p::after{position: absolute; content: " "; width: 92px; height: 6px; background-color: #222; border-radius: 10px; left: 50%; bottom: -10px; transform: translateX(-50%);} -.template_v1_content .index ul{text-align: left; list-style: auto; line-height: 2; width: 30%; margin: 70px auto 0 auto;} +.template_v1_content .index ul{text-align: left; list-style: auto; /*line-height: 2;*/ width: 33%; margin: 70px auto 0 auto;} +.template_v1_content .index ul li {padding:10px 0;} .template_v1_content .index ul a{font-family: 'GmarketSansMedium'; font-size: 20px;} .template_v1_content dt{margin: 0 0 8px 0;} @@ -304,7 +306,33 @@ a{text-decoration: none;color: #222222;} .template_v1_content .ass_con .title{font-size: 22px; font-weight: bold;} .template_v1_content .ass_con p{font-size: 18px; font-family: 'Noto Sans KR', sans-serif; line-height: 1.8;} .template_v1_content .ass_con p::after{width: 0;} -.template_v1_content .ass_con p a{text-decoration: underline; font-weight: 500; color: #3c33ab;} +.template_v1_content .ass_con p a{text-decoration: underline; font-weight: 500; color: #3c33ab; text-underline-position: under;} + +/*템플릿1_16카카오 알림톡*/ +.kakao_con .index ul{line-height: 1.2;} +.kakao_con .index ul li{margin-bottom: 10px;} +.kakao_con .index ul li:last-child{margin-bottom: 0;} +.kakao_con h3{line-height: 1.1;} +.kakao_con .id{font-family: 'Noto Sans KR', sans-serif; font-weight: 700;} +.kakao_con .small_text{font-size: 18px;} +.kakao_con .section .small_text .te_re{font-weight: 500;} + +/*템플릿1_21발신번호 사전등록 방법 총정리*/ +.content_tw .tw_visual .inner .sub_text span{font-weight: 500;} +.content_tw .index .inner nav ul li a,.inner h3{word-break: break-all;} +.content_tw .tw_section .tw_tit{font-size: 20px; font-weight: 500;} +.content_tw .tw_section .inner div:last-child .tw_tit{margin: 50px 0 0 0;} +.content_tw .tw_section img{margin: 20px 0 0 0;} + +.content_tw .section02 .text span{font-weight: 500;} + +.content_tw .tw_section03_te .section03_te{margin: 50px 0 10px 0; font-size: 19px; font-weight: 400; color: #002c9a;} +.content_tw .tw_section03_te .sub_te{margin: 10px 0 0 0; line-height: 1.5;} +.content_tw .tw_section03_te .sub_te span{font-weight: 400;} +.content_tw .tw_section03_te .sub_te02{word-break: break-all; font-size: 17px; line-height: 1.5;} + +.content_tw .tw_section04 dd{margin: 0 0 50px 0;} +.content_tw .tw_section04 img{margin: 20px 0 0 0;} /*미디어쿼리 시작*/ /*미디어쿼리_1340px*/ @@ -584,6 +612,9 @@ a{text-decoration: none;color: #222222;} /*발송*/ .multi-text-wrap #send .con > img{width: 31px; height: 36px;margin-top: 20px;margin-left: 37px;} .multi-text-wrap #send .con > p{margin: -36px 0px 20px 40px;} + + /*템플릿1_16카카오 알림톡*/ + .kakao_con .index ul{width: 52%} } /*미디어쿼리_915_/*템플릿1_6부고문자추가*/ @@ -912,8 +943,8 @@ a{text-decoration: none;color: #222222;} .multi-text-wrap #galaxy .con .step-05{margin-left: 22%;} .multi-text-wrap #galaxy .con .text-04 p{width: 101%; margin-left: -1%;} - /*템플릿1_11문자 사이트*/ - .content_eleven .visual .inner h2{font-size: 40px;} + /*.content_eleven .visual .inner h2{font-size: 40px;}*/ + .template_v1_content .visual .inner h2{font-size: 40px;} .con_add .text{font-size: 18px;} } @@ -958,6 +989,9 @@ a{text-decoration: none;color: #222222;} .template_v1_content .obituary li{width:calc(100%);} .template_v1_content .obituary .move_line02{margin: -230px 0 0 0;} .template_v1_content .obituary li:nth-child(2){margin: -230px 0 0 0;} + + /*템플릿1_16카카오 알림톡*/ + .kakao_con .index ul{width: 72%} } /*미디어쿼리_570px*/ @@ -1079,6 +1113,8 @@ a{text-decoration: none;color: #222222;} /*메인화면 이동 버튼*/ .multi-text-wrap .bt-button a{background-color: #002c9a; border-radius: 10px; font-size: 18px; color: #fff; padding: 15px 80px;} + /*템플릿1_21발신번호 사전등록 방법 총정리*/ + .content_tw .inner h3{font-size: 26px; line-height: 1.5;} } /*미디어쿼리_490px*/ @@ -1086,6 +1122,9 @@ a{text-decoration: none;color: #222222;} .multi-text-wrap .banner img{height: 45vh;} .multi-text-wrap .banner .title{padding: 40px 30px; margin: 20px 0 0 0;} .multi-text-wrap .list ul{padding: 0 7% 0 23%;} + + /*템플릿1_16카카오 알림톡*/ + .kakao_con .index ul{width: 80%} } /*미디어쿼리_414px*/ @@ -1288,11 +1327,11 @@ a{text-decoration: none;color: #222222;} /*템플릿1_9웹문자 사이트*/ .send_limit_btn a{margin: 0;} - /*템플릿1_11문자 사이트*/ - .content_eleven .visual .inner h2{font-size: 30px;} + /*템플릿1_11문자 사이트 + 템플릿1_16카카오 알림톡*/ + .content_eleven .visual .inner h2{font-size: 30px; line-height: 1.1;} - /*템블릿1_3 pc에서 대량 문자 보내기 방법*/ - .content_three h3{font-size: 25px;} + /*템블릿1_3 pc에서 대량 문자 보내기 방법 + 템플릿1_16카카오 알림톡*/ + .content_three h3, .kakao_con h3{font-size: 25px;} } /*미디워쿼리_320px*/ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section02_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section02_img01.png new file mode 100644 index 00000000..7c96fb81 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section02_img01.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img01.png new file mode 100644 index 00000000..39d89be1 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img01.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img02.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img02.png new file mode 100644 index 00000000..e7a38fef Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img02.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img03.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img03.png new file mode 100644 index 00000000..398b1a54 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section04_img03.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section05_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section05_img01.png new file mode 100644 index 00000000..de573fe8 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section05_img01.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section05_img02.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section05_img02.png new file mode 100644 index 00000000..1ff79e20 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_16_section05_img02.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_17_section01_img.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_17_section01_img.png new file mode 100644 index 00000000..a865cdf3 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_17_section01_img.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_18_section01_img.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_18_section01_img.png new file mode 100644 index 00000000..e1383860 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_18_section01_img.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_19_section02_img.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_19_section02_img.png new file mode 100644 index 00000000..90105706 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_19_section02_img.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_20_section02_img.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_20_section02_img.png new file mode 100644 index 00000000..860e1f88 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_20_section02_img.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img01.png new file mode 100644 index 00000000..64bd006e Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img01.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img01_1.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img01_1.png new file mode 100644 index 00000000..ab0c9fdc Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img01_1.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img02.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img02.png new file mode 100644 index 00000000..eb2f4a7c Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img02.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img02_1.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img02_1.png new file mode 100644 index 00000000..d1b96dfa Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section01_img02_1.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section02_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section02_img01.png new file mode 100644 index 00000000..cec1e7b5 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section02_img01.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section03_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section03_img01.png new file mode 100644 index 00000000..ed29f1af Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section03_img01.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section03_img02.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section03_img02.png new file mode 100644 index 00000000..43cec518 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section03_img02.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img01.png new file mode 100644 index 00000000..a9dce98a Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img01.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img02.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img02.png new file mode 100644 index 00000000..e531936c Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img02.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img03.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img03.png new file mode 100644 index 00000000..bf442874 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img03.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img04.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img04.png new file mode 100644 index 00000000..069d15da Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img04.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img05.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img05.png new file mode 100644 index 00000000..ecf72003 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img05.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img06.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img06.png new file mode 100644 index 00000000..2f240226 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img06.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img07.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img07.png new file mode 100644 index 00000000..4977103c Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img07.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img08.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img08.png new file mode 100644 index 00000000..d528032c Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img08.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img09.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img09.png new file mode 100644 index 00000000..cdc3c018 Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_21_section04_img09.png differ diff --git a/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_22_section01_img01.png b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_22_section01_img01.png new file mode 100644 index 00000000..ba9f0d3c Binary files /dev/null and b/src/main/webapp/publish/publish_adv/img/template_v1_manuscript_22_section01_img01.png differ