diff --git a/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java b/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java index be44c270..087de32c 100644 --- a/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java +++ b/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java @@ -1572,6 +1572,32 @@ public class EgovBBSManageController { if(pattern.equals("/web/cop/bbs/addSuggestBoardArticle.do")){ // 불편신고 model.addAttribute("boardType", "suggest"); } + + // NEW + // 공통 + List resultList = new ArrayList(); + + // 이용약관, 개인정보보호방침 최신버전 List + TermsVO termsVO3 = new TermsVO(); + termsVO3.setFirstIndex(0); + termsVO3.setRecordCountPerPage(1); + termsVO3.setSearchDiv("03"); + termsVO3.setSearchUseYn("Y"); + termsVO3.setSearchSortCnd("effectDate"); + termsVO3.setSearchSortOrd("desc"); + List termsMastList2 = egovSiteManagerService.selectTermsMastMngList(termsVO3); + if (termsMastList2.size() > 0) { + TermsVO termsVO4 = new TermsVO(); + termsVO4.setFirstIndex(0); + termsVO4.setRecordCountPerPage(20); + termsVO4.setTermsMastNo(termsMastList2.get(0).getTermsMastNo()); + termsVO4.setSearchUseYn("Y"); + termsVO4.setSearchSortCnd("sort"); + termsVO4.setSearchSortOrd("ASC"); + resultList = egovSiteManagerService.selectTermsSubMngList(termsVO4); + } + + model.addAttribute("resultList", resultList); return "web/cop/bbs/EgovNoticeRegist"; } @@ -1641,6 +1667,32 @@ public class EgovBBSManageController { model.addAttribute("board", boardVO); //최대 첨부파일 갯수 지정 + // NEW + // 공통 + List resultList = new ArrayList(); + + // 이용약관, 개인정보보호방침 최신버전 List + TermsVO termsVO3 = new TermsVO(); + termsVO3.setFirstIndex(0); + termsVO3.setRecordCountPerPage(1); + termsVO3.setSearchDiv("03"); + termsVO3.setSearchUseYn("Y"); + termsVO3.setSearchSortCnd("effectDate"); + termsVO3.setSearchSortOrd("desc"); + List termsMastList2 = egovSiteManagerService.selectTermsMastMngList(termsVO3); + if (termsMastList2.size() > 0) { + TermsVO termsVO4 = new TermsVO(); + termsVO4.setFirstIndex(0); + termsVO4.setRecordCountPerPage(20); + termsVO4.setTermsMastNo(termsMastList2.get(0).getTermsMastNo()); + termsVO4.setSearchUseYn("Y"); + termsVO4.setSearchSortCnd("sort"); + termsVO4.setSearchSortOrd("ASC"); + resultList = egovSiteManagerService.selectTermsSubMngList(termsVO4); + } + + model.addAttribute("resultList", resultList); + return "web/cop/bbs/EgovNoticeRegist"; } diff --git a/src/main/java/itn/let/fax/addr/web/FaxAddrController.java b/src/main/java/itn/let/fax/addr/web/FaxAddrController.java index 2959b4b8..f21c50ff 100644 --- a/src/main/java/itn/let/fax/addr/web/FaxAddrController.java +++ b/src/main/java/itn/let/fax/addr/web/FaxAddrController.java @@ -57,8 +57,6 @@ import itn.let.fax.addr.service.FaxAddrGroupVO; import itn.let.fax.addr.service.FaxAddrService; import itn.let.fax.addr.service.FaxAddrTransHistVO; import itn.let.fax.addr.service.FaxAddrVO; -import itn.let.mjo.addr.service.AddrGroupVO; -import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.msgdata.service.PhoneVO; @Controller @@ -1679,19 +1677,19 @@ public class FaxAddrController { if(userId != "") { addrGroupVO.setMberId(userId); - } - if(addrGroupVO.getPageUnit() != 10) { - addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); + if(addrGroupVO.getPageUnit() != 10) { + addrGroupVO.setPageUnit(addrGroupVO.getPageUnit()); + } + + if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + addrGroupVO.setSearchSortCnd("grpOrder"); + addrGroupVO.setSearchSortOrd("desc"); + } + + addrGroupVO.setSiteId("web"); + addrGroupList = faxAddrGroupService.selectFaxAddrGroupList(addrGroupVO); } - - if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - addrGroupVO.setSearchSortCnd("grpOrder"); - addrGroupVO.setSearchSortOrd("desc"); - } - - addrGroupVO.setSiteId("web"); - addrGroupList = faxAddrGroupService.selectFaxAddrGroupList(addrGroupVO); } catch(Exception e) { isSuccess = false; diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java b/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java index ba5594d1..dc4d986a 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java @@ -40,5 +40,7 @@ public interface MjonKakaoATService { //회원 정보 알림톡 상세정보 리스트 팝업 통계 정보 KakaoVO selectMjonKakaoStatisticATData(KakaoVO searchVO) throws Exception; + //알림톡 지연문자 리스트 조회 + List selectKakaoATDelaySentList(String userId) throws Exception; } diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java index 9c7f9ca9..95a59740 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java @@ -88,4 +88,8 @@ public class MjonKakaoATDAO extends EgovAbstractDAO { return result; } + @SuppressWarnings("unchecked") + public List selectKakaoATDelaySentList(String userId) throws Exception{ + return (List)list("mjonKakaoATDAO.selectKakaoATDelaySentList", userId); + } } diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java index 7b28abdc..fb8b4cbb 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java @@ -184,4 +184,9 @@ public class MjonKakaoATServiceImpl extends EgovAbstractServiceImpl implements M return result; } + + @Override + public List selectKakaoATDelaySentList(String userId) throws Exception { + return mjonKakaoATDAO.selectKakaoATDelaySentList(userId); + } } diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java index ea28c920..78c3b9ed 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java @@ -157,6 +157,32 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements kakaoSandInfo.setReqDate(sdFormat.format(now)); } + + if(kakaoVO.getAtSmishingYn().equals("Y")) { + String sandDate = ""; + + if(kakaoVO.getDivideChk().equals("Y")) { + //분할 문자 예약 시간 입력해주기 + sandDate = dividDayList.get(i); + }else { + //예약 시간 입력해주기 + sandDate = kakaoVO.getReqDate(); + } + + SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + Date date = sdFormat.parse(sandDate); + + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(date); // 시간 설정 + cal1.add(Calendar.MINUTE, 30); // 30분 연산 + + String reqDate = sdFormat.format(cal1.getTime()); + + System.out.println("@@@@@@@@@@@@@@ reqDate : "+reqDate); + kakaoVO.setReqDate(reqDate); + kakaoSandInfo.setReqDate(reqDate); + } + /**전송시간 설정 (끝)------------------------------------------------*/ /**카카오 전송 데이터 추가*/ @@ -231,6 +257,8 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements mjonMsgVO.setBefCash(kakaoVO.getBefCash()); mjonMsgVO.setBefPoint(kakaoVO.getBefPoint()); mjonMsgVO.setKakaoSubMagOrgnlTxt(kakaoVO.getKakaoSubMagOrgnlTxt()); + mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn()); + if(kakaoVO.getBizJsonYn().equals("Y")) { mjonMsgVO.setFileCnt("1"); diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java index 25b2b4d3..6ce18690 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java @@ -49,11 +49,16 @@ import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiProfileCategory; import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate; import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; +import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; +import itn.let.uss.umt.service.UserManageVO; /** * @@ -86,11 +91,19 @@ public class KakaoAlimTalkSendController { @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; + + /** userManageService */ + @Resource(name = "userManageService") + private EgovUserManageService userManageService; /** EgovMessageSource */ @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; + /** 사이트 설정 */ + @Resource(name = "egovSiteManagerService") + EgovSiteManagerService egovSiteManagerService; + @Autowired KakaoApiProfile kakaoApiProfile; @@ -154,6 +167,7 @@ public class KakaoAlimTalkSendController { mberManageVO = mjonMsgDataService.selectMberManageInfo(userId); + model.addAttribute("atSmishingYn", mberManageVO.getAtSmishingYn()); } //3.사용자 개인단가 정보가 0이 아니면 개인단가 사용, 없으면 시스템 기본 단가 사용 @@ -479,10 +493,9 @@ public class KakaoAlimTalkSendController { int resultSts = 0; //발송결과 건수 int resultBlockSts = 0; //수신거부 등록번호로 발송을 안한 건수 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); try { - - LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId == "") { modelAndView.addObject("message", "로그인 후 이용이 가능합니다."); @@ -491,7 +504,9 @@ public class KakaoAlimTalkSendController { }else { /** 카카오톡 전송 기본 설정 -------------------------------------------*/ kakaoVO.setSendType("AT"); + kakaoVO.setMsgType("8"); kakaoVO.setUserId(userId); + } /** 전송금액 설정 --------------------------------------------------*/ @@ -709,6 +724,43 @@ public class KakaoAlimTalkSendController { modelAndView.addObject("result", "success"); modelAndView.addObject("resultSts", resultSts); + +/** 카카오톡 발송 내용 법인폰, 알림톡 결과 처리 --------------------------------------------------*/ + try { + String adminSmsNoticeYn = "Y"; + String spamStatus = kakaoVO.getAtSmishingYn(); // 스미싱 의심으로 체크된 고객 정보 + + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberId(userId); + + if(!userId.equals("")) { + userManageVO = userManageService.selectAdminSmsNoticeYn(userManageVO); + adminSmsNoticeYn = userManageVO.getAdminSmsNoticeYn(); + } + + //법인폰 알림 온 이거나 스미싱의심 문자인 경우 법인폰으로 발송 + if(adminSmsNoticeYn.equals("Y") || spamStatus.equals("Y")) { + + if(spamStatus.equals("Y")) { + kakaoVO.setAtDelayYn("Y"); + } + + // 법인폰 알람여부 체크 + JoinSettingVO joinSettingVO = new JoinSettingVO(); + joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + comm.getAdminKakaoAtSandSlack(kakaoVO); + } + } + + } catch (Exception e) { + throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e); + } + return modelAndView; } } diff --git a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java index 311e9db2..323e13ea 100644 --- a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java +++ b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import com.mysql.jdbc.StringUtils; +import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.mjo.msg.service.MjonMsgVO; @Service("MjonCommon") @@ -242,4 +243,63 @@ public class MjonCommon { return mjonMsgVO; } + @SuppressWarnings("unchecked") + public void getAdminKakaoAtSandSlack(KakaoVO kakaoVO) { + + HttpClient client = new HttpClient(); + PostMethod post = new PostMethod(url); + JSONObject json = new JSONObject(); + try { + + String reserveYn = kakaoVO.getReserveYn(); + String atDelayYn = kakaoVO.getAtDelayYn(); + String smsTxt = kakaoVO.getTemplateContent(); + String reservSmsTxt = ""; + String smisingSmsTxt = ""; + //예약문자를 발송하는 경우 문자 내용 앞에 "[예약]" 표시되도록 처리 + if(reserveYn.equals("Y")) { + reservSmsTxt = "[예약]" + smsTxt; + smsTxt = reservSmsTxt; + }else if(atDelayYn.equals("Y")) { + + smisingSmsTxt = "[스미싱의심]" + smsTxt; + smsTxt = smisingSmsTxt; + } + + String sandName = kakaoVO.getCallFrom(); + String userId = kakaoVO.getUserId(); + String msgType = ""; + + if(kakaoVO.getMsgType().equals("8")) { + msgType = "[알림톡]"; + }else if(kakaoVO.getMsgType().equals("9")){ + + } + sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType; + + json.put("channel", "mjon메시지"); + json.put("text", smsTxt); + json.put("username", sandName); + + + post.addParameter("payload", json.toString()); + // 처음에 utf-8로 content-type안넣어주니까 한글은 깨져서 content-type넣어줌 + post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + int responseCode = client.executeMethod(post); + String response = post.getResponseBodyAsString(); + if (responseCode != HttpStatus.SC_OK) { + System.out.println("Response: " + response); + } + } catch (IllegalArgumentException e) { + System.out.println("IllegalArgumentException posting to Slack " + e); + } catch (IOException e) { + System.out.println("IOException posting to Slack " + e); + } catch (Exception e) { + System.out.println("Exception posting to Slack " + e); + } finally { + post.releaseConnection(); + } + + } + } diff --git a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java index 36bc64c7..7d6b8299 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java @@ -198,6 +198,12 @@ public interface MjonMsgService { //스팸 / 스미싱 지연 문자 즉시 발송처리 int updateMsgDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception; + //스팸 / 스미싱 지연 알림톡 발송 취소 처리 + int deleteKakaoAtDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception; + + //스팸 / 스미싱 지연 알림톡 즉시 발송처리 + int updateKakaoAtDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception; + //문자 그룹아이디 리스트의 발송일자 정보 불러오기 List selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception; @@ -212,6 +218,7 @@ public interface MjonMsgService { //카카오 발송 횟수 List selectWithKakaoSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception; + //문자 발송 횟수 List selectMsgSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception; } diff --git a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java index d3513f0d..8055ab0d 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java @@ -9,6 +9,7 @@ public class MjonMsgVO extends ComDefaultVO{ private static final long serialVersionUID = 1L; private String msgId ;// '문자ID', private String userId ; // '문자온 일반회원ID', + private String mberId ; private String agentFlag ;//'전송사코드(1:아이하트,2:...)', private String userData; //'(I)사용자 정의 코드(참조용으로 사용되는 것으로 메시지 전송 시에는 사용되지 않는다-문자온/아이하트 참조키용)', private String msgSeq; // '(I)메시지의 고유번호. 자동 증가하는 것으로 MSG_DATA의 PRIMARY KEY가 된다.', @@ -354,6 +355,10 @@ public class MjonMsgVO extends ComDefaultVO{ private String delayYn; // 문자 30분 지연 처리 유무 private String delayCompleteYn; // 문자 30분 지연 처리 완료 유무 + private String atDelayYn = "N"; // 알림 30분 지연 처리 유무 + private String atDelayCompleteYn; // 알림톡 30분 지연 처리 완료 유무 + private String atSmishingYn; // 알림톡 스메싱 여부 + private int totalCallCnt; //수신자 전체 갯 private String bizLogCallStatus; //다우기술 biz_log 테이블의 발송결과 코드 값. @@ -450,6 +455,12 @@ public class MjonMsgVO extends ComDefaultVO{ public void setUserId(String userId) { this.userId = userId; } + public String getMberId() { + return mberId; + } + public void setMberId(String mberId) { + this.mberId = mberId; + } public String getAgentFlag() { return agentFlag; } @@ -1375,5 +1386,22 @@ public class MjonMsgVO extends ComDefaultVO{ public void setAccessKey(String accessKey) { this.accessKey = accessKey; } - + public String getAtDelayYn() { + return atDelayYn; + } + public void setAtDelayYn(String atDelayYn) { + this.atDelayYn = atDelayYn; + } + public String getAtDelayCompleteYn() { + return atDelayCompleteYn; + } + public void setAtDelayCompleteYn(String atDelayCompleteYn) { + this.atDelayCompleteYn = atDelayCompleteYn; + } + public String getAtSmishingYn() { + return atSmishingYn; + } + public void setAtSmishingYn(String atSmishingYn) { + this.atSmishingYn = atSmishingYn; + } } diff --git a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java index 2f0c8a94..42cd9831 100644 --- a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java +++ b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java @@ -426,11 +426,41 @@ public class MjonMsgDAO extends EgovAbstractDAO { update("mjonMsgDAO.updateMsgDelaySendRealTimeMsgDataFlag", mjonMsgVO); } + // mj_msg_data 테이블 예약 지연 문자 발송 요청시간 수정 + public void updateMsgDelaySendReserveTimeMsgDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateMsgDelaySendReserveTimeMsgDataFlag", mjonMsgVO); + } + // mj_msg_group_data 테이블 지연 문자 즉시발송 요청시간 수정 public void updateMsgDelaySendRealTimeMsgGroupDataFlag(MjonMsgVO mjonMsgVO) { update("mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag", mjonMsgVO); } + // mj_msg_group_data 테이블 예약 지연 문자 발송 요청시간 수정 + public void updateMsgDelaySendReserveTimeMsgGroupDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateMsgDelaySendReserveTimeMsgGroupDataFlag", mjonMsgVO); + } + + // mj_msg_data 테이블 지연 알림톡 취소 값 수정 + public void updateKakaoAtDelayCancelMsgDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag", mjonMsgVO); + } + + // mj_msg_group_data 테이블 지연 알림톡 취소 값 수정 + public void updateKakaoAtDelayCancelMsgGroupDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag", mjonMsgVO); + } + + // mj_msg_data 테이블 지연 알림톡 즉시발송 요청시간 수정 + public void updateKakaoAtDelaySendRealTimeMsgDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgDataFlag", mjonMsgVO); + } + + // mj_msg_group_data 테이블 지연 알림톡 즉시발송 요청시간 수정 + public void updateKakaoAtDelaySendRealTimeMsgGroupDataFlag(MjonMsgVO mjonMsgVO) { + update("mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgGroupDataFlag", mjonMsgVO); + } + //문자 그룹아이디 리스트의 발송일자 정보 불러오기 @SuppressWarnings("unchecked") public List selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception{ diff --git a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java index f67878fe..765c0bb0 100644 --- a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java +++ b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java @@ -764,6 +764,10 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM //삭제 문자 건수 MSG_SEQ 번호 받아오기 List resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO); + String reservYn = resultMsgSeqList.get(0).getReserveYn(); + + System.out.println("++++++++++++++++++++++++++++ reservYn ::: "+reservYn); + int size = resultMsgSeqList.size(); List userDataList = new ArrayList(); for(int i=0; i < size; i++) { @@ -775,8 +779,8 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM mjonResvMsgVO.setUserDataList(userDataList); - int ihResult = 0; - int imoResult = 0; + //int ihResult = 0; + //int imoResult = 0; int bizResult = 0; int FHSmsResult = 0; int FHMmsResult = 0; @@ -785,37 +789,136 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM int JJB01Result = 0; int JJB02Result = 0; - - //아이하트 딜레이문자 즉시발송 처리 - //ihResult = mjonReservMsgDAO.deleteIHeartMsgSeqListByMsgSeq(mjonResvMsgVO); - ihResult = mjonReservMsgDAO.updateRealTimeIHeartMsgSeqListByMsgSeq(mjonResvMsgVO); - - //현대퓨처넷 단문 딜레이문자 즉시발송 처리 - FHSmsResult = mjonReservMsgDAO.updateRealTimeHFNSmsMsgSeqListByMsgSeq(mjonResvMsgVO); + //즉시 전송 딜레이건에 대한 즉시 전송 처리 - 아이하트, 아에임오 전송사는 사용 안하기 때문에 주석처리함. + if(reservYn.equals("N")) { + + //아이하트 딜레이문자 즉시발송 처리 + //ihResult = mjonReservMsgDAO.deleteIHeartMsgSeqListByMsgSeq(mjonResvMsgVO); + //ihResult = mjonReservMsgDAO.updateRealTimeIHeartMsgSeqListByMsgSeq(mjonResvMsgVO); + + //현대퓨처넷 단문 딜레이문자 즉시발송 처리 + FHSmsResult = mjonReservMsgDAO.updateRealTimeHFNSmsMsgSeqListByMsgSeq(mjonResvMsgVO); - //현대퓨처넷 장문/그림 딜레이문자 즉시발송 처리 - FHMmsResult = mjonReservMsgDAO.updateRealTimeHFNMmsMsgSeqListByMsgSeq(mjonResvMsgVO); + //현대퓨처넷 장문/그림 딜레이문자 즉시발송 처리 + FHMmsResult = mjonReservMsgDAO.updateRealTimeHFNMmsMsgSeqListByMsgSeq(mjonResvMsgVO); + + //아이엠오 딜레이문자 즉시발송 처리 + //imoResult = mjonReservMsgDAO.updateRealTimeIMOMsgSeqListByMsgSeq(mjonResvMsgVO); + + //비즈뿌리오 딜레이문자 즉시발송 처리 + bizResult = mjonReservMsgDAO.updateRealTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO); + + //제이제이 딜레이문자 즉시발송 처리 + JJResult = mjonReservMsgDAO.updateRealTimeJJMsgSeqListByMsgSeq(mjonResvMsgVO); + + //인비토 딜레이문자 즉시발송 처리 + IVTResult = mjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq(mjonResvMsgVO); + + //제이제이 B01 딜레이문자 즉시발송 처리 + JJB01Result = mjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq(mjonResvMsgVO); + + //제이제이 B02 딜레이문자 즉시발송 처리 + JJB02Result = mjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq(mjonResvMsgVO); + + //발송 결과 합산 + resultSts = FHSmsResult + FHMmsResult + bizResult + JJResult + IVTResult + JJB01Result + JJB02Result; + + System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts); + + }else {//예약문자에 대한 딜레이발송 시간을 원복 처리해준다. - 아이하트, 아이엠오 전송사는 제외해준다. + + //현대퓨처넷 단문 예약 딜레이문자 발송 처리 + FHSmsResult = mjonReservMsgDAO.updateReserveTimeHFNSmsMsgSeqListByMsgSeq(mjonResvMsgVO); + + //현대퓨처넷 장문/그림 예약 딜레이문자 발송 처리 + FHMmsResult = mjonReservMsgDAO.updateReserveTimeHFNMmsMsgSeqListByMsgSeq(mjonResvMsgVO); + + //비즈뿌리오 예약 딜레이문자 발송 처리 + bizResult = mjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO); + + //제이제이 예약 딜레이문자 발송 처리 + JJResult = mjonReservMsgDAO.updateReserveTimeJJMsgSeqListByMsgSeq(mjonResvMsgVO); + + //인비토 예약 딜레이문자 발송 처리 + IVTResult = mjonReservMsgDAO.updateReserveTimeIVTMsgSeqListByMsgSeq(mjonResvMsgVO); + + //제이제이 B01 예약 딜레이문자 발송 처리 + JJB01Result = mjonReservMsgDAO.updateReserveTimeJJB01MsgSeqListByMsgSeq(mjonResvMsgVO); + + //제이제이 B02 예약 딜레이문자 발송 처리 + JJB02Result = mjonReservMsgDAO.updateReserveTimeJJB02MsgSeqListByMsgSeq(mjonResvMsgVO); + + //발송 결과 합산 + resultSts = FHSmsResult + FHMmsResult + bizResult + JJResult + IVTResult + JJB01Result + JJB02Result; + + System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts); + + + } - //아이엠오 딜레이문자 즉시발송 처리 - imoResult = mjonReservMsgDAO.updateRealTimeIMOMsgSeqListByMsgSeq(mjonResvMsgVO); - //비즈뿌리오 딜레이문자 즉시발송 처리 - bizResult = mjonReservMsgDAO.updateRealTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO); + //예약 취소 환불 처리 + if(resultSts > 0) { + + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + //그룹 데이터 정보 조회하기 + mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO); + + if(reservYn.equals("N")) { + + //mj_msg_data 테이블 지연 문자 즉시발송 요청 값 수정 + mjonMsgDAO.updateMsgDelaySendRealTimeMsgDataFlag(mjonMsgVO); + + //mj_msg_group_data 테이블 즉시발송 요청 값 수정 + mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag(mjonMsgVO); + + }else { + + //mj_msg_data 테이블 예약 지연 문자 발송 요청 값 수정 + mjonMsgDAO.updateMsgDelaySendReserveTimeMsgDataFlag(mjonMsgVO); + + //mj_msg_group_data 테이블 예약 발송 요청 값 수정 + mjonMsgDAO.updateMsgDelaySendReserveTimeMsgGroupDataFlag(mjonMsgVO); + + } + + + + + } - //제이제이 딜레이문자 즉시발송 처리 - JJResult = mjonReservMsgDAO.updateRealTimeJJMsgSeqListByMsgSeq(mjonResvMsgVO); + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ updateMsgDelaySendRealTimeDataAjax ServiceImpl Error !!!! "+e); + } + + + return resultSts; + } + + //스팸 / 스미싱 지연 알림톡 발송 취소 처리 + @Override + public int deleteKakaoAtDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception { + + int resultSts = 0; + + try { - //제이제이 딜레이문자 즉시발송 처리 - IVTResult = mjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq(mjonResvMsgVO); + System.out.println("++++++++++++++++++ deleteKakaoAtDelaySendCancelData groupId ::: "+mjonResvMsgVO.getMsgGroupId()); + //삭제 문자 건수 MSG_SEQ 번호 받아오기 + List resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO); - //제이제이 B01 딜레이문자 즉시발송 처리 - JJB01Result = mjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq(mjonResvMsgVO); + int size = resultMsgSeqList.size(); + List userDataList = new ArrayList(); + for(int i=0; i < size; i++) { + userDataList.add(resultMsgSeqList.get(i).getUserData()); + System.out.println(resultMsgSeqList.get(i).getUserData()); + } - //제이제이 B02 딜레이문자 즉시발송 처리 - JJB02Result = mjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq(mjonResvMsgVO); + mjonResvMsgVO.setUserDataList(userDataList); - //삭제 결과 합산 - resultSts = ihResult + FHSmsResult + FHMmsResult + imoResult +bizResult + JJResult + IVTResult + JJB01Result + JJB02Result; + + //비즈뿌리오 딜레이 알림톡 삭제 + resultSts = mjonReservMsgDAO.deleteBizMsgSeqListByMsgSeq(mjonResvMsgVO); System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts); @@ -825,12 +928,78 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM //그룹 데이터 정보 조회하기 MjonMsgVO mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO); + //mj_msg_data 테이블 지연 문자 취소 값 수정 + mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag(mjonMsgVO); + + //mj_msg_group_data 테이블 예약 취소 값 수정 + mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag(mjonMsgVO); + + + //문자 발송 캐시 환불 해주기 + MjonPayVO mjonPayVO = new MjonPayVO(); + + mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()); + mjonPayVO.setUserId(mjonMsgVO.getUserId()); + mjonPayVO.setCash(Float.parseFloat(mjonMsgVO.getTotPrice())); + mjonPayVO.setFrstRegisterId(mjonMsgVO.getUserId()); + mjonPayVO.setMemo("스팸/스미싱 지연 알림톡 취소 " + resultSts + "건 환불"); + mjonPayVO.setMsgGroupId(mjonMsgVO.getMsgGroupId()); + + mjonPayDAO.insertCash(mjonPayVO); //캐시 환불 + mjonPayDAO.updateMemberCash(mjonPayVO); //회원정보 업데이트 + + } + + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ deleteMsgDelaySendCancelData ServiceImpl Error !!!! "+e); + } + return resultSts; + + } + + //스팸 / 스미싱 지연 알림톡 즉시 발송처리 + @Override + public int updateKakaoAtDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception { + + int resultSts = 0; + + try { + boolean timeType = true; + + System.out.println("++++++++++++++++++ updateKakaoAtDelaySendRealTimeData groupId ::: "+mjonResvMsgVO.getMsgGroupId()); + //삭제 문자 건수 MSG_SEQ 번호 받아오기 + List resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO); + + int size = resultMsgSeqList.size(); + List userDataList = new ArrayList(); + for(int i=0; i < size; i++) { + userDataList.add(resultMsgSeqList.get(i).getUserData()); + System.out.println(resultMsgSeqList.get(i).getUserData()); + } + mjonResvMsgVO.setUserDataList(userDataList); + + if(resultMsgSeqList.get(0).getReserveYn().equals("N")) { + // 즉시 발송시 + //비즈뿌리오 딜레이문자 즉시발송 처리 + resultSts = mjonReservMsgDAO.updateRealTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO); + + }else { + // 예약 발송시 + //비즈뿌리오 딜레이문자 예약발송 처리 + resultSts = mjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO); + } + + System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts); + + //발송 시간 수정(mj_msg_data, mj_msg_group_data) + if(resultSts > 0) { + //그룹 데이터 정보 조회하기 + MjonMsgVO mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO); //mj_msg_data 테이블 지연 문자 즉시발송 요청 값 수정 - mjonMsgDAO.updateMsgDelaySendRealTimeMsgDataFlag(mjonMsgVO); - + mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgDataFlag(mjonMsgVO); //mj_msg_group_data 테이블 즉시발송 요청 값 수정 - mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag(mjonMsgVO); - + mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgGroupDataFlag(mjonMsgVO); } } catch (Exception e) { diff --git a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java index b5e67096..072f9f47 100644 --- a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java +++ b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java @@ -3618,6 +3618,161 @@ public class MjonMsgController { return modelAndView; } + /** + * 스팸 및 스미싱 30분 지연알림톡 전송 취소 처리 + * @param mjonMsgVO + * @param model + * @return "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do" + * @throws Exception + */ + @RequestMapping(value = {"/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"}) + public ModelAndView deleteKakaoATDelaySendCancelDataAjax(MjonMsgVO mjonMsgVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String isStatus = ""; + String msg = ""; + + //로그인 정보 획득 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + modelAndView.addObject("isStatus", "loginFail"); + modelAndView.addObject("msg", "로그인이 필요합니다."); + return modelAndView; + + } + + try { + + MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO(); + mjonResvMsgVO.setUserId(mjonMsgVO.getUserId());//회원 아이디 + + + String[] arrMsgGroupId = mjonMsgVO.getMsgGroupId().split(","); + int resultSts = 0; + + //문자 발송요청일자 체크해주기 + boolean compareReqDate = getCompareReqDateList(arrMsgGroupId, mjonMsgVO.getUserId()); + + if(!compareReqDate) { + + modelAndView.addObject("isStatus", "dateFail"); + modelAndView.addObject("msg", "발송시간이 지난 문자가 있습니다. 문자 발송예정 시간을 확인해 주세요."); + return modelAndView; + } + + for(String temp : arrMsgGroupId) { + + mjonResvMsgVO.setMsgGroupId(temp);//취소 문자 그룹 아이디 + int count = mjonMsgService.deleteKakaoAtDelaySendCancelData(mjonResvMsgVO); + + resultSts = resultSts + count; + + } + + if(resultSts > 0) { + + modelAndView.addObject("isStatus", "success"); + modelAndView.addObject("msg", "발송취소가 정상적으로 처리되었습니다."); + + }else { + + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "발송취소에 오류가 발생하였습니다."); + } + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ deleteKakaoATDelaySendCancelDataAjax Controller Error !!!! "+e); + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "오류가 발생하였습니다."); + return modelAndView; + } + return modelAndView; + } + + + /** + * 스팸 및 스미싱 30분 지연알림톡 즉시 전송 처리 + * @param mjonMsgVO + * @param model + * @return "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do" + * @throws Exception + */ + @RequestMapping(value = {"/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"}) + public ModelAndView updateKakaoATDelaySendRealTimeDataAjax(MjonMsgVO mjonMsgVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String isStatus = ""; + String msg = ""; + + //로그인 정보 획득 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId.equals("")) { + + modelAndView.addObject("isStatus", "loginFail"); + modelAndView.addObject("msg", "로그인이 필요합니다."); + return modelAndView; + + } + + try { + + MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO(); + mjonResvMsgVO.setUserId(mjonMsgVO.getUserId());//회원 아이디 + + String[] arrMsgGroupId = mjonMsgVO.getMsgGroupId().split(","); + int resultSts = 0; + + //문자 발송요청일자 체크해주기 + boolean compareReqDate = getCompareReqDateList(arrMsgGroupId, mjonMsgVO.getUserId()); + + if(!compareReqDate) { + + modelAndView.addObject("isStatus", "dateFail"); + modelAndView.addObject("msg", "발송시간이 지난 문자가 있습니다. 문자 발송예정 시간을 확인해 주세요."); + return modelAndView; + } + + for(String temp : arrMsgGroupId) { + + mjonResvMsgVO.setMsgGroupId(temp);//취소 문자 그룹 아이디 + + //문자 발송 지연 데이터 즉시 발송처리 + int count = mjonMsgService.updateKakaoAtDelaySendRealTimeData(mjonResvMsgVO); + + resultSts = resultSts + count; + + } + + if(resultSts > 0) { + + modelAndView.addObject("isStatus", "success"); + modelAndView.addObject("msg", "즉시 발송 처리가 완료되었습니다."); + + }else { + + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "즉시 발송 처리에 오류가 발생하였습니다."); + } + + } catch (Exception e) { + System.out.println("+++++++++++++++++++++++++++++++++++ updateKakaoATDelaySendRealTimeDataAjax Controller Error !!!! "+e); + modelAndView.addObject("isStatus", "fail"); + modelAndView.addObject("msg", "오류가 발생하였습니다."); + return modelAndView; + } + + return modelAndView; + } + /** * 전송사 발송 통계 * @param diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index a34ea544..a25c3e86 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 @@ -324,7 +324,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M if(spamStatus.equals("Y") || smishingYn.equals("Y")) { - mjonMsgVO.setDelayYn("N");//일단 값만 등록해준다. 이거 안해주면 NULL 값으로 들어간다. 차후에 변경하도록 할 예정임, 원래는 스팸이면 Y로 넣어줘야한다. + mjonMsgVO.setDelayYn("Y");//일단 값만 등록해준다. 이거 안해주면 NULL 값으로 들어간다. 차후에 변경하도록 할 예정임, 원래는 스팸이면 Y로 넣어줘야한다. }else { @@ -368,6 +368,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M //Controller에서 전달 받은 분할 시간 정보 리스트 List dividDayList = mjonMsgVO.getDividDay(); + String frstDelayTime = mjonMsgVO.getReqDate(); //문자발송 리스트 생성 시작 for(int i = 0; i < callToCnt; i++) { @@ -528,13 +529,51 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M //분할 발송을 체크 한 경우 if(mjonMsgVO.getDivideChk() != null) { - tempVO.setReqDate(dividDayList.get(i)); //분할 문자 예약 시간 입력해주기 + //스팸문구 혹은 스미싱 의심 회원의 경우 30분 딜레이 처리해준다. + //20230630 우영두 추가 + if(spamStatus.equals("Y") || smishingYn.equals("Y")) { + + Date delayDate = transFormat.parse(dividDayList.get(i)); + + cal.setTime(delayDate); + cal.add(Calendar.MINUTE, 30); + delayTime = transFormat.format(cal.getTime()); + + tempVO.setReqDate(delayTime); //분할 문자 예약 시간 입력해주기 + + }else { + + tempVO.setReqDate(dividDayList.get(i)); //분할 문자 예약 시간 입력해주기 + + } + }else {//일반 예약 발송의 경우 - tempVO.setReqDate(mjonMsgVO.getReqDate()); + if(spamStatus.equals("Y") || smishingYn.equals("Y")) {//스팸문구 혹은 스미싱 의심 회원의 경우 30분 딜레이 처리해준다. + + Date delayDate = transFormat.parse(mjonMsgVO.getReqDate()); + + cal.setTime(delayDate); + cal.add(Calendar.MINUTE, 30); + delayTime = transFormat.format(cal.getTime()); + + tempVO.setReqDate(delayTime); + + }else { + + tempVO.setReqDate(mjonMsgVO.getReqDate()); + + } } + + //딜레이 처리되었을 수 있어서 임시 데이터의 발송 시간을 업데이트 해준다. + //분할 발송일 경우 Loop을 돌기 때문에 마지막 시간이 reqDate에 들어가기 때문에 첫번째 데이터에서만 시간을 입력해 준다. + //mj_group_data 테이블의 reqdate 컬럼 값으로 셋팅 된다. + if(i==0) { + frstDelayTime = tempVO.getReqDate(); + } } if(!msgType.equals("4")) { // 장문 혹은 그림문자일 경우 추가 @@ -733,6 +772,13 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M if(tmpDelayYn == null) { mjonMsgVO.setDelayYn("N"); } + + //예약 문자이고 30분 지연이 된 문자의 Mj_msg_group_data 테이블의 req_date 시간을 첫번째 문자의 지연된 시간으로 셋팅해준다. + if(mjonMsgVO.getReserveYn().equals("Y") && (spamStatus.equals("Y") || smishingYn.equals("Y"))) { + + mjonMsgVO.setReqDate(frstDelayTime); + + } mjonMsgDAO.insertGroupMsgData(mjonMsgVO); }else { diff --git a/src/main/java/itn/let/mjo/pay/web/MjonKGMPayController.java b/src/main/java/itn/let/mjo/pay/web/MjonKGMPayController.java index 1be5a9b7..3db54023 100644 --- a/src/main/java/itn/let/mjo/pay/web/MjonKGMPayController.java +++ b/src/main/java/itn/let/mjo/pay/web/MjonKGMPayController.java @@ -313,8 +313,42 @@ public class MjonKGMPayController { UserManageVO userManageVO = new UserManageVO(); userManageVO.setSmishingYn("Y"); userManageVO.setMberId(Userid); - userManageService.updateOneUserSmishingYn(userManageVO); + userManageService.updateOneUserSmishingYnNotAlert(userManageVO); } + else { + // 대상 : 휴대폰결제, 즉시이체, 전용계좌 + // Step 1. 스미싱의심 지정 여부 + JoinSettingVO joinSettingVO = new JoinSettingVO(); + joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + if (joinSettingVO != null && joinSettingVO.getSmishingNoti().equals("Y")) { + // Step 1. 개인회원 여부 체크 + int isPersnalMemberCnt = egovSiteManagerService.selectPersnalMemberCnt(Userid); + if (isPersnalMemberCnt == 1) { + // Step 2. 첫결제 여부 체크 + int isFirstPayCnt = egovSiteManagerService.selectFirstPayCnt(Userid); + if (isFirstPayCnt == 1) { + // SMS 체크 + if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { + // 스미싱의심 SMS 알림전송 + mjonNoticeSendUtil.smishingSmsNoticeSend("스미싱의심/휴대폰 첫결제", Userid, mberNm); + } + + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + // Slack 메시지 발송(단순본문) + String msg = "[문자온] 스미싱의심/휴대폰 첫결제 - " + mberNm +"("+ Userid + ")"; + mjonCommon.sendSimpleSlackMsg(msg); + } + + // 스미싱 의심회원으로 변경 + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setSmishingYn("Y"); + userManageVO.setMberId(Userid); + userManageService.updateOneUserSmishingYnNotAlert(userManageVO); + } + } + } + } redirect.addAttribute("Resultcd", Resultcd); redirect.addAttribute("Tradeid", Tradeid); diff --git a/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java b/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java index 3f8fff9c..0247f9ce 100644 --- a/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java +++ b/src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java @@ -29,6 +29,7 @@ public class MjonResvMsgVO extends UserDefaultVO{ private String fileCnt; //첨부 이미지 갯수 - 0: 장문, 1 이상은 그림문자 private String totMsgCnt; //전체 전송문자 갯수 private String curState; //전송 처리 결과값 + private String reserveYn; //예약 여부 private String reserveCYn; //예약 취소 여부 private String filePath1; //그림 이미지 1 private String filePath2; //그림 이미지 2 @@ -290,5 +291,10 @@ public class MjonResvMsgVO extends UserDefaultVO{ public void setStrReqDate(String strReqDate) { this.strReqDate = strReqDate; } - + public String getReserveYn() { + return reserveYn; + } + public void setReserveYn(String reserveYn) { + this.reserveYn = reserveYn; + } } diff --git a/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java b/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java index 34cc94ae..20fad5e5 100644 --- a/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java +++ b/src/main/java/itn/let/mjo/reservmsg/service/impl/MjonReservMsgDAO.java @@ -201,6 +201,18 @@ public class MjonReservMsgDAO extends EgovAbstractDAO { return update("MjonReservMsgDAO.updateRealTimeHFNSmsMsgSeqListByMsgSeq", mjonResvMsgVO); } + /** + * @Method Name : updateReserveTimeHFNSmsMsgSeqListByMsgSeq + * @작성일 : 2023 07. 10. + * @작성자 : 우영두 + * @Method 설명 : 현대퓨처넷 예약문자 지연처리 문자 정상 시간 발송 + */ + public int updateReserveTimeHFNSmsMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeHFNSmsMsgSeqListByMsgSeq", mjonResvMsgVO); + } + + /** * @Method Name : updateRealTimeIHeartMsgSeqListByMsgSeq * @작성일 : 2022. 12. 02. @@ -212,6 +224,17 @@ public class MjonReservMsgDAO extends EgovAbstractDAO { return update("MjonReservMsgDAO.updateRealTimeHFNMmsMsgSeqListByMsgSeq", mjonResvMsgVO); } + /** + * @Method Name : updateReserveTimeHFNMmsMsgSeqListByMsgSeq + * @작성일 : 2023. 07. 10. + * @작성자 : 우영두 + * @Method 설명 : 현대퓨처넷 예약 장문/그림 지연처리 문자 즉시 발송 + */ + public int updateReserveTimeHFNMmsMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeHFNMmsMsgSeqListByMsgSeq", mjonResvMsgVO); + } + /** * @Method Name : updateRealTimeIMOMsgSeqListByMsgSeq * @작성일 : 2022. 12. 02. @@ -245,6 +268,18 @@ public class MjonReservMsgDAO extends EgovAbstractDAO { return update("MjonReservMsgDAO.updateRealTimeJJMsgSeqListByMsgSeq", mjonResvMsgVO); } + /** + * @Method Name : updateReserveTimeJJMsgSeqListByMsgSeq + * @작성일 : 2023. 7. 10. + * @작성자 : 우영두 + * @Method 설명 : 제이제이 예약 지연처리 문자 정상 발송 + */ + public int updateReserveTimeJJMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeJJMsgSeqListByMsgSeq", mjonResvMsgVO); + } + + /** * @Method Name : updateRealTimeIVTMsgSeqListByMsgSeq * @작성일 : 2023. 05. 16. @@ -256,6 +291,17 @@ public class MjonReservMsgDAO extends EgovAbstractDAO { return update("MjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq", mjonResvMsgVO); } + /** + * @Method Name : updateReserveTimeIVTMsgSeqListByMsgSeq + * @작성일 : 2023. 07. 10. + * @작성자 : 우영두 + * @Method 설명 : 인비토 예약 지연처리 문자 즉시 발송 + */ + public int updateReserveTimeIVTMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeIVTMsgSeqListByMsgSeq", mjonResvMsgVO); + } + /** * @Method Name : updateRealTimeJJB01MsgSeqListByMsgSeq * @작성일 : 2023. 06. 20. @@ -267,6 +313,17 @@ public class MjonReservMsgDAO extends EgovAbstractDAO { return update("MjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq", mjonResvMsgVO); } + /** + * @Method Name : updateReserveTimeJJB01MsgSeqListByMsgSeq + * @작성일 : 2023. 07. 10. + * @작성자 : 우영두 + * @Method 설명 : 제이제이 B01라인 예약 지연처리 문자 발송 + */ + public int updateReserveTimeJJB01MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeJJB01MsgSeqListByMsgSeq", mjonResvMsgVO); + } + /** * @Method Name : updateRealTimeJJB02MsgSeqListByMsgSeq * @작성일 : 2023. 06. 20. @@ -277,4 +334,26 @@ public class MjonReservMsgDAO extends EgovAbstractDAO { return update("MjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq", mjonResvMsgVO); } + + /** + * @Method Name : updateReserveTimeJJB02MsgSeqListByMsgSeq + * @작성일 : 2023. 07. 10. + * @작성자 : 우영두 + * @Method 설명 : 제이제이 B02라인 예약 지연처리 문자 발송 + */ + public int updateReserveTimeJJB02MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeJJB02MsgSeqListByMsgSeq", mjonResvMsgVO); + } + + /** + * @Method Name : updateReserveTimeBizMsgSeqListByMsgSeq + * @작성일 : 2023. 07. 06. + * @작성자 : WYD + * @Method 설명 : 비즈뿌리오 지연처리 문자 예약 발송 + */ + public int updateReserveTimeBizMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) { + + return update("MjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq", mjonResvMsgVO); + } } diff --git a/src/main/java/itn/let/mjo/test/web/TestController.java b/src/main/java/itn/let/mjo/test/web/TestController.java index f4641c14..591ce491 100644 --- a/src/main/java/itn/let/mjo/test/web/TestController.java +++ b/src/main/java/itn/let/mjo/test/web/TestController.java @@ -1157,21 +1157,10 @@ public class TestController { try { - LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); - - - // api인지 확인 - ApiKeyVO apiKeyVO = new ApiKeyVO(); - apiKeyVO.setAccessKey(mjonMsgVO.getAccessKey()); - List resultList = apiKeyMngService.selectCheckApiKeyDup(apiKeyVO); - - if(resultList.size() >= 1) { - userId = resultList.get(0).getMberId(); - } - - +// LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; +// userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + userId = mjonMsgVO.getMberId(); if(userId.equals("")) { modelAndView.addObject("message", "로그인 후 이용이 가능합니다."); @@ -1388,6 +1377,9 @@ public class TestController { } + // 토탈금액 "," 리플레이스 처리 + mjonMsgVO.setTotPrice(mjonMsgVO.getTotPrice().replaceAll(",", "")); + float tmpOrgEachPrice = Float.parseFloat(mjonMsgVO.getEachPrice()); float tmpOrgTotPrice = Float.parseFloat(mjonMsgVO.getTotPrice()); @@ -1517,8 +1509,6 @@ public class TestController { shortMsgVO = mjonMsgVO; longMsgVO = mjonMsgVO; imgMsgVO = mjonMsgVO; - System.out.println("shortMsgVO :: "+ shortMsgVO.getsPrice()); - System.out.println("mjonMsgVO :: "+ mjonMsgVO.getsPrice()); int shortMsgCnt = Integer.parseInt(mjonMsgVO.getShortMsgCnt()); int longMsgCnt = Integer.parseInt(mjonMsgVO.getLongMsgCnt()); @@ -1768,7 +1758,14 @@ public class TestController { imgMsgVO.setRep4List(imgRep4); //개별단가 계산하기 - String eachPrice = shortMsgVO.getsPrice(); + String eachPrice = imgMsgVO.getpPrice(); + + //api 서버에서 pPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가 + if(eachPrice == null) { + + eachPrice = imgMsgVO.getEachPrice(); + + } /** * 그림문자에 치환 내용이 포함되어 있는 경우 단가 계산하기. @@ -1813,9 +1810,12 @@ public class TestController { //개별단가 계산하기 String eachPrice = shortMsgVO.getsPrice(); - if(StringUtils.isEmpty(eachPrice)) - { + + //api 서버에서 sPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가 + if(eachPrice == null) { + eachPrice = shortMsgVO.getEachPrice(); + } /** @@ -1845,7 +1845,6 @@ public class TestController { shortMsgVO.setMsgType("4"); } - System.out.println("shortMsgVO.getEachPrice() :: "+ shortMsgVO.getEachPrice()); //총금액 계산하기 Float sTotPrice = Float.parseFloat(shortMsgVO.getEachPrice()) * shortCnt; shortMsgVO.setTotPrice(sTotPrice.toString()); @@ -1871,6 +1870,13 @@ public class TestController { String eachPrice = longMsgVO.getmPrice(); + //api 서버에서 mPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가 + if(eachPrice == null) { + + eachPrice = longMsgVO.getEachPrice(); + + } + if(fileCount > 2) {//그림 이미지가 3개 eachPrice = mjonMsgVO.getP3Price(); @@ -2001,9 +2007,7 @@ public class TestController { }else { //문자발송 함수 호출 - 일괄변환이 없거나, 그림문자 일괄변환의 경우 한번에 전송 처리 - System.out.println("???????"); modelAndView = fncSendMsg(mjonMsgVO); - System.out.println("!!!!!!!!!!!!"); } @@ -2060,16 +2064,13 @@ public class TestController { // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); - // SMS 체크 - if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { -// getAdminPhoneSendMsgData(mjonMsgVO); - } // SLACK 체크 if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { //Slack으로 메세지 전송 처리 MjonCommon comm = new MjonCommon(); - comm.getAdminSandSlack(mjonMsgVO); + System.out.println("slack noti"); +// comm.getAdminSandSlack(mjonMsgVO); } } @@ -2079,11 +2080,6 @@ public class TestController { } return modelAndView; - - - - - } /** * 문자발송시 치환문자가 있거나 단문, 장문 일경우 타는 로직 diff --git a/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java b/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java index 38e233ea..1cf03a14 100644 --- a/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java +++ b/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java @@ -28,7 +28,9 @@ import itn.let.mjo.payva.service.VacsAhstVO; import itn.let.schdlr.service.SchdlrManageService; import itn.let.schdlr.service.SchdlrVO; import itn.let.sym.site.service.EgovSiteManagerService; +import itn.let.sym.site.service.JoinSettingVO; import itn.let.uss.umt.service.EgovUserManageService; +import itn.let.uss.umt.service.UserManageVO; import itn.let.utl.user.service.MjonNoticeSendUtil; @Service("SchdlrManageService") @@ -362,7 +364,6 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements //세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기 vacsAhstService.updateVacsAhstCashComplete(temp); - /* try { String Userid = temp.getMberId(); String mberNm = ""; @@ -407,7 +408,7 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements System.out.println("전용계좌 TrNo : " + temp.getTrNo()); System.out.println("전용계좌 e.getMessage() : " + e.getMessage()); } - */ + } diff --git a/src/main/java/itn/let/sym/grd/service/MberGrdService.java b/src/main/java/itn/let/sym/grd/service/MberGrdService.java index a482082e..863c0799 100644 --- a/src/main/java/itn/let/sym/grd/service/MberGrdService.java +++ b/src/main/java/itn/let/sym/grd/service/MberGrdService.java @@ -2,8 +2,13 @@ package itn.let.sym.grd.service; import java.util.List; +import itn.let.sym.site.service.JoinSettingVO; + public interface MberGrdService { + // 등급제 단가 추출 => 시스템 단가에 적용 + public JoinSettingVO selectMberGrdDefaultInfo(JoinSettingVO sysJoinSetVO, String mberId) throws Exception; + // 등급제 설정 일괄변경 public int updateMberSetting(MberGrdVO mberGrdVO) throws Exception; @@ -14,12 +19,24 @@ public interface MberGrdService { // 등급제 설정 목록 List selectMberGrdSettingList(MberGrdVO mberGrdVO) throws Exception; + // 회원별 설정 상세 + public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception; + // 등급제 설정 일괄변경 public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception; + + // 등급제 등급 목록 + List selectMberGrdList(MberGrdVO mberGrdVO) throws Exception; // 회원별 등급 상세 public MberGrdVO selectMberGrdDetail(MberGrdVO mberGrdVO) throws Exception; + // 회원 등급제 대상여부 정보(사용자화면용) + public MberGrdVO selectMberGrdInfo(String mberId) throws Exception; + + // 회원별 등급 누적결제액 상세 + public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception; + // 회원별 등급 등록 public void insertMberGrd(MberGrdVO mberGrdVO) throws Exception; @@ -29,13 +46,32 @@ public interface MberGrdService { // 회원별 등급 일괄변경 public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception; + // 문자할인, B선라인 대상자 초기화 + public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception; + // 회원별 등급 초기화 public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception; + // 회원별 등급 적용 + public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception; + // 회원별 등급 진행여부 - int selectMberGrdPrgCnt(String userId) throws Exception; + int selectMberGrdPrgCnt(String mberId) throws Exception; + + // 회원별 이벤트 진행여부 + int selectMberEventPrgCnt(String mberId) throws Exception; + + // 회원별 등급 저장여부 + int selectMberGrdSaveCnt(String mberId) throws Exception; // 회원별 등급 히스토리 등록 - public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception ; + public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception; + + // 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용) + List selectMberGrdHistByGrdDateList(MberGrdVO mberGrdVO) throws Exception; + + // 회원별 등급 히스토리 목록 + List selectMberGrdHistList(MberGrdVO mberGrdVO) throws Exception; + } diff --git a/src/main/java/itn/let/sym/grd/service/MberGrdVO.java b/src/main/java/itn/let/sym/grd/service/MberGrdVO.java index 028b99f4..8f577878 100644 --- a/src/main/java/itn/let/sym/grd/service/MberGrdVO.java +++ b/src/main/java/itn/let/sym/grd/service/MberGrdVO.java @@ -2,8 +2,11 @@ package itn.let.sym.grd.service; import java.util.List; -public class MberGrdVO { +import itn.let.uss.umt.service.UserDefaultVO; +public class MberGrdVO extends UserDefaultVO { + private static final long serialVersionUID = 1L; + private int grdSetNo; // 등급설정번호 private String grdSetNm; // 등급설정명 private long stdAmt; // 기준결제액 @@ -28,15 +31,20 @@ public class MberGrdVO { private List picture3Prices; private String mberId; + private String mberNm; private String amt; private String grdStartDate; - private String grd_endDate; + private String grdEndDate; private String grdStatus; + private String grdStatusNm; private int mberGrdHistNo; - private String grdNoti; // 회원등급제 시행 여부 - private String grdDate; // 회원등급제 시행일자 - + private String grdNoti; // 회원등급제 시행 여부 + private String grdDate; // 회원등급제 시행일자 + private String grdDatePrgYn; // 회원등급제 시행일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N) + + // 검색필터 + private String searchGrdStatus; public int getGrdSetNo() { return grdSetNo; @@ -172,6 +180,12 @@ public class MberGrdVO { public void setMberId(String mberId) { this.mberId = mberId; } + public String getMberNm() { + return mberNm; + } + public void setMberNm(String mberNm) { + this.mberNm = mberNm; + } public String getAmt() { return amt; } @@ -184,11 +198,11 @@ public class MberGrdVO { public void setGrdStartDate(String grdStartDate) { this.grdStartDate = grdStartDate; } - public String getGrd_endDate() { - return grd_endDate; + public String getGrdEndDate() { + return grdEndDate; } - public void setGrd_endDate(String grd_endDate) { - this.grd_endDate = grd_endDate; + public void setGrdEndDate(String grd_endDate) { + this.grdEndDate = grd_endDate; } public String getGrdStatus() { return grdStatus; @@ -196,6 +210,12 @@ public class MberGrdVO { public void setGrdStatus(String grdStatus) { this.grdStatus = grdStatus; } + public String getGrdStatusNm() { + return grdStatusNm; + } + public void setGrdStatusNm(String grdStatusNm) { + this.grdStatusNm = grdStatusNm; + } public int getMberGrdHistNo() { return mberGrdHistNo; } @@ -214,4 +234,16 @@ public class MberGrdVO { public void setGrdDate(String grdDate) { this.grdDate = grdDate; } + public String getGrdDatePrgYn() { + return grdDatePrgYn; + } + public void setGrdDatePrgYn(String grdDatePrgYn) { + this.grdDatePrgYn = grdDatePrgYn; + } + public String getSearchGrdStatus() { + return searchGrdStatus; + } + public void setSearchGrdStatus(String searchGrdStatus) { + this.searchGrdStatus = searchGrdStatus; + } } diff --git a/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java b/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java index c21ad015..3c9575ac 100644 --- a/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java +++ b/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java @@ -20,22 +20,44 @@ public class MberGrdDAO extends EgovAbstractDAO { return (MberGrdVO) select("mberGrdDAO.selectMberSettingDetail", mberGrdVO); } + // 등급제 설정 목록 @SuppressWarnings("unchecked") public List selectMberGrdSettingList(MberGrdVO mberGrdVO) throws Exception{ return (List)list("mberGrdDAO.selectMberGrdSettingList", mberGrdVO); } + // 회원별 설정 상세 + public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception{ + return (MberGrdVO) select("mberGrdDAO.selectMberGrdSettingDetail", mberGrdVO); + } + // 등급제 설정 일괄변경 public int updateGrdSetting(MberGrdVO mberGrdVO) throws Exception { return update("mberGrdDAO.updateGrdSetting", mberGrdVO); } + // 등급제 등급 목록 + @SuppressWarnings("unchecked") + public List selectMberGrdList(MberGrdVO mberGrdVO) throws Exception{ + return (List)list("mberGrdDAO.selectMberGrdList", mberGrdVO); + } + // 회원별 등급 상세 public MberGrdVO selectMberGrdDetail(MberGrdVO mberGrdVO) throws Exception{ return (MberGrdVO) select("mberGrdDAO.selectMberGrdDetail", mberGrdVO); } + // 회원 등급제 대상여부 정보(사용자화면용) + public MberGrdVO selectMberGrdInfo(String mberId) throws Exception{ + return (MberGrdVO) select("mberGrdDAO.selectMberGrdInfo", mberId); + } + + // 회원별 등급 누적결제액 상세 + public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception{ + return (MberGrdVO) select("mberGrdDAO.selectMberGrdAmtDetail", mberGrdVO); + } + // 회원별 등급 등록 public void insertMberGrd(MberGrdVO mberGrdVO) throws Exception{ insert("mberGrdDAO.insertMberGrd", mberGrdVO); @@ -51,14 +73,29 @@ public class MberGrdDAO extends EgovAbstractDAO { return update("mberGrdDAO.updateMberGrdAll", mberGrdVO); } + // 문자할인, B선라인 대상자 초기화 + public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception { + return update("mberGrdDAO.updateMberGrdEndBySale", mberGrdVO); + } + // 회원별 등급 초기화 public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception { return update("mberGrdDAO.updateMberGrdEndAll", mberGrdVO); } // 회원별 등급 진행여부 - public int selectMberGrdPrgCnt(String userId) throws Exception{ - return (int) select("mberGrdDAO.selectMberGrdPrgCnt", userId); + public int selectMberGrdPrgCnt(String mberId) throws Exception{ + return (int) select("mberGrdDAO.selectMberGrdPrgCnt", mberId); + } + + // 회원별 이벤트 진행여부 + public int selectMberEventPrgCnt(String mberId) throws Exception{ + return (int) select("mberGrdDAO.selectMberEventPrgCnt", mberId); + } + + // 회원별 등급 저장여부 + public int selectMberGrdSaveCnt(String mberId) throws Exception{ + return (int) select("mberGrdDAO.selectMberGrdSaveCnt", mberId); } @@ -66,4 +103,17 @@ public class MberGrdDAO extends EgovAbstractDAO { public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception{ insert("mberGrdDAO.insertMberGrdHist", mberGrdVO); } + + // 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용) + @SuppressWarnings("unchecked") + public List selectMberGrdHistByGrdDateList(MberGrdVO mberGrdVO) throws Exception{ + return (List)list("mberGrdDAO.selectMberGrdHistByGrdDateList", mberGrdVO); + } + + // 회원별 등급 히스토리 목록 + @SuppressWarnings("unchecked") + public List selectMberGrdHistList(MberGrdVO mberGrdVO) throws Exception{ + return (List)list("mberGrdDAO.selectMberGrdHistList", mberGrdVO); + } + } diff --git a/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java b/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java index dde47c86..91799c2c 100644 --- a/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java +++ b/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java @@ -1,14 +1,21 @@ package itn.let.sym.grd.service.impl; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; import javax.annotation.Resource; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import itn.let.mjo.pay.service.MjonPayService; import itn.let.sym.grd.service.MberGrdService; import itn.let.sym.grd.service.MberGrdVO; +import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uss.umt.service.EgovMberManageService; +import itn.let.uss.umt.service.MberManageVO; @Service("mberGrdService") public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberGrdService { @@ -16,6 +23,42 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG @Resource(name="mberGrdDAO") MberGrdDAO mberGrdDAO; + @Resource(name = "mjonPayService") + private MjonPayService mjonPayService; + + /** mberManageService */ + @Resource(name = "mberManageService") + private EgovMberManageService mberManageService; + + // 등급제 단가 추출 => 시스템 단가에 적용 + @Override + public JoinSettingVO selectMberGrdDefaultInfo(JoinSettingVO sysJoinSetVO, String mberId) throws Exception { + // 공백제거 + mberId = mberId.trim(); + + // Step 1. 등급제 시행 ON 일경우 + if (StringUtils.isNotEmpty(mberId)) { + MberGrdVO mberGrdVO = new MberGrdVO(); + MberGrdVO mberGrdVO1 = new MberGrdVO(); + mberGrdVO1 = selectMberSettingDetail(mberGrdVO); + if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) { + mberGrdVO = new MberGrdVO(); + mberGrdVO = selectMberGrdInfo(mberId); + if (null != mberGrdVO) { + if(mberGrdVO.getShortPrice() > 1 && mberGrdVO.getLongPrice() > 1 && mberGrdVO.getPicturePrice() > 1 && mberGrdVO.getPicture2Price() > 1 && mberGrdVO.getPicture3Price() > 1) { + sysJoinSetVO.setShortPrice(mberGrdVO.getShortPrice()); + sysJoinSetVO.setLongPrice(mberGrdVO.getLongPrice()); + sysJoinSetVO.setPicturePrice(mberGrdVO.getPicturePrice()); + sysJoinSetVO.setPicture2Price(mberGrdVO.getPicture2Price()); + sysJoinSetVO.setPicture3Price(mberGrdVO.getPicture3Price()); + } + } + } + } + + return sysJoinSetVO; + } + // 등급제 시행여부 변경 @Override public int updateMberSetting(MberGrdVO mberGrdVO) throws Exception { @@ -29,11 +72,18 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG } + // 등급제 설정 목록 @Override public List selectMberGrdSettingList(MberGrdVO mberGrdVO) throws Exception { return mberGrdDAO.selectMberGrdSettingList(mberGrdVO); } + // 회원별 설정 상세 + @Override + public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception { + return mberGrdDAO.selectMberGrdSettingDetail(mberGrdVO); + } + // 등급제 설정 일괄변경 @Override public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception { @@ -56,6 +106,12 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG return updateCnt; } + + // 등급제 등급 목록 + @Override + public List selectMberGrdList(MberGrdVO mberGrdVO) throws Exception { + return mberGrdDAO.selectMberGrdList(mberGrdVO); + } // 회원별 등급 상세 @Override @@ -63,6 +119,21 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG return mberGrdDAO.selectMberGrdDetail(mberGrdVO); } + // 회원 등급제 대상여부 정보(사용자화면용) + @Override + public MberGrdVO selectMberGrdInfo(String mberId) throws Exception { + // 공백제거 + mberId = mberId.trim(); + + return mberGrdDAO.selectMberGrdInfo(mberId); + } + + // 회원별 등급 누적결제액 상세 + @Override + public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception { + return mberGrdDAO.selectMberGrdAmtDetail(mberGrdVO); + } + // 회원별 등급 등록 @Override public void insertMberGrd(MberGrdVO mberGrdVO) throws Exception { @@ -75,22 +146,140 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG mberGrdDAO.updateMberGrd(mberGrdVO); } - // 회원별 등급 초기화 + // 회원별 등급 일괄변경 @Override public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception { - return mberGrdDAO.updateMberGrdAll(mberGrdVO); + int updateCnt1 = 0; + int updateCnt2 = 0; + + // Step 1. 등급제 시행 ON 일경우 + MberGrdVO mberGrdVO1 = new MberGrdVO(); + mberGrdVO1 = selectMberSettingDetail(mberGrdVO); + if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) { + // 문자할인, B선라인 대상자 초기화 + updateCnt1 = updateMberGrdEndBySale(mberGrdVO); + + // 회원별 등급 일괄변경 + updateCnt2 = mberGrdDAO.updateMberGrdAll(mberGrdVO); + } + + return updateCnt1 + updateCnt2; } - // 회원별 등급 일괄변경 + // 회원별 등급 초기화 @Override public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception { return mberGrdDAO.updateMberGrdEndAll(mberGrdVO); } + // 문자할인, B선라인 대상자 초기화 + @Override + public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception { + return mberGrdDAO.updateMberGrdEndBySale(mberGrdVO); + } + + // 회원별 등급 적용 + @Override + public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception { + // 현재 날짜 구하기 + LocalDate now = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 포맷 정의 + String nowDate = now.format(formatter); // 포맷 적용 + + mberGrdVO.setRegId(mberGrdVO.getMberId()); + mberGrdVO.setEditId(mberGrdVO.getMberId()); + + // Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우) + MberGrdVO mberGrdVO1 = new MberGrdVO(); + mberGrdVO1 = selectMberSettingDetail(mberGrdVO); + if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) { + mberGrdVO.setGrdDate(mberGrdVO1.getGrdDate()); + + // Step 2. /협의/스팸/비선등급 적용 제외 + // 문자할인여부(1: 할인, 0: 미할인) + int isMsgSalePrice = mjonPayService.selectMsgSalePriceCnt(mberGrdVO.getMberId()); + if(isMsgSalePrice == 0) { + // B선 전송사 이용고객 => 등급제대상 제외처리 + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(mberGrdVO.getMberId()); + String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO); + if (blineCode != null && blineCode.equals("N")) { + + // Step 3. 누적결제금액(이벤트금액 제외) 추출 및 등급 조회 + MberGrdVO mberGrdVO3 = new MberGrdVO(); + mberGrdVO3 = selectMberGrdAmtDetail(mberGrdVO); + if (null != mberGrdVO3) { + mberGrdVO.setTotAmt(mberGrdVO3.getTotAmt()); + mberGrdVO.setGrdSetNo(mberGrdVO3.getGrdSetNo()); + + // Step 4. 등급제 설정값 조회 + MberGrdVO mberGrdVO4 = new MberGrdVO(); + mberGrdVO4 = selectMberGrdSettingDetail(mberGrdVO); + if (null != mberGrdVO4) { + mberGrdVO.setAmt("0"); + mberGrdVO.setTotAmt(mberGrdVO.getTotAmt()); + mberGrdVO.setShortPrice(mberGrdVO4.getShortPrice()); + mberGrdVO.setLongPrice(mberGrdVO4.getLongPrice()); + mberGrdVO.setPicturePrice(mberGrdVO4.getPicturePrice()); + mberGrdVO.setPicture2Price(mberGrdVO4.getPicture2Price()); + mberGrdVO.setPicture3Price(mberGrdVO4.getPicture3Price()); + mberGrdVO.setGrdDate(mberGrdVO.getGrdDate()); + mberGrdVO.setGrdStartDate(nowDate + " 00:00:00"); + mberGrdVO.setGrdEndDate("9999:12:31 23:59:59"); + mberGrdVO.setGrdStatus("Y"); + + // Step 5. 인서트 Or 업데이트 + MberGrdVO mberGrdVO5 = new MberGrdVO(); + mberGrdVO5 = selectMberGrdDetail(mberGrdVO); + if (null != mberGrdVO5) { + // 업데이트 => 현재 등급보다 낮거나 같으면 업데이트 처리 + if (mberGrdVO5.getGrdSetNo() >= mberGrdVO.getGrdSetNo()) { + updateMberGrd(mberGrdVO); + + // 회원별 등급 히스토리 인서트 + insertMberGrdHist(mberGrdVO); + } + } + else { + // 인서트 + insertMberGrd(mberGrdVO); + + // 회원별 등급 히스토리 인서트 + insertMberGrdHist(mberGrdVO); + } + } + } + } + } + + } + } + // 회원별 등급 진행여부 @Override - public int selectMberGrdPrgCnt(String userId) throws Exception{ - return mberGrdDAO.selectMberGrdPrgCnt(userId); + public int selectMberGrdPrgCnt(String mberId) throws Exception{ + // 공백제거 + mberId = mberId.trim(); + + return mberGrdDAO.selectMberGrdPrgCnt(mberId); + } + + // 회원별 이벤트 진행여부 + @Override + public int selectMberEventPrgCnt(String mberId) throws Exception{ + // 공백제거 + mberId = mberId.trim(); + + return mberGrdDAO.selectMberEventPrgCnt(mberId); + } + + // 회원별 등급 저장여부 + @Override + public int selectMberGrdSaveCnt(String mberId) throws Exception{ + // 공백제거 + mberId = mberId.trim(); + + return mberGrdDAO.selectMberGrdSaveCnt(mberId); } @@ -99,4 +288,17 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception { mberGrdDAO.insertMberGrdHist(mberGrdVO); } + + // 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용) + @Override + public List selectMberGrdHistByGrdDateList(MberGrdVO mberGrdVO) throws Exception { + return mberGrdDAO.selectMberGrdHistByGrdDateList(mberGrdVO); + } + + // 회원별 등급 히스토리 목록 + @Override + public List selectMberGrdHistList(MberGrdVO mberGrdVO) throws Exception { + return mberGrdDAO.selectMberGrdHistList(mberGrdVO); + } + } diff --git a/src/main/java/itn/let/sym/grd/web/MberGrdController.java b/src/main/java/itn/let/sym/grd/web/MberGrdController.java index adba000f..39a953d9 100644 --- a/src/main/java/itn/let/sym/grd/web/MberGrdController.java +++ b/src/main/java/itn/let/sym/grd/web/MberGrdController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.LoginVO; import itn.let.sym.grd.service.MberGrdService; import itn.let.sym.grd.service.MberGrdVO; @@ -127,4 +128,115 @@ public class MberGrdController { return modelAndView; } + // 회원별 등급 적용 테스트 + @RequestMapping(value = "/sym/grd/mberGrdSaveAjax.do") + public ModelAndView mberGrdSaveAjax( + @ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + boolean isSuccess = true; + String msg = ""; + + // 로그인VO에서 사용자 정보 가져오기 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String frstRegisterId = loginVO == null ? "" : loginVO.getId(); + mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID + + try{ + + // 회원별 등급 적용 + mberGrdVO.setAmt("0"); // 결제금액 + mberGrdVO.setMberId("nopay"); // 결제자 + mberGrdService.mberGrdSaveByUser(mberGrdVO); + + } + catch(Exception e) { + isSuccess = false; + msg = e.getMessage(); + } + + modelAndView.addObject("isSuccess", isSuccess); + modelAndView.addObject("msg", msg); + + return modelAndView; + } + + /** + * 회원별 등급제 목록 화면 + * + * @param mberGrdVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/sym/grd/selectMberGrdList.do") + public String selectMetaTagList(@ModelAttribute("searchVO") MberGrdVO mberGrdVO, ModelMap model) throws Exception{ + + /** paging */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(mberGrdVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(mberGrdVO.getPageUnit()); + paginationInfo.setPageSize(mberGrdVO.getPageSize()); + + mberGrdVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + mberGrdVO.setLastIndex(paginationInfo.getLastRecordIndex()); + mberGrdVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if("".equals(mberGrdVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + mberGrdVO.setSearchSortCnd("regDate"); + mberGrdVO.setSearchSortOrd("desc"); + } + + List resultList = mberGrdService.selectMberGrdList(mberGrdVO); + model.addAttribute("resultList", resultList); + paginationInfo.setTotalRecordCount( resultList.size()> 0 ? resultList.get(0).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + return "/sym/grd/mberGrdList"; + } + + // 등급제 적용여부 체크 + @RequestMapping(value = "/sym/grd/mberGrdChkAjax.do") + public ModelAndView mberGrdChkAjax( + @ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + boolean isSuccess = true; + String msg = ""; + MberGrdVO rtnMberGrdVO = new MberGrdVO(); + + // 로그인VO에서 사용자 정보 가져오기 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + String frstRegisterId = loginVO == null ? "" : loginVO.getId(); + mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID + + try{ + // @@@@@ 등급제 적용여부 체크 + //MberGrdVO rtnMberGrdVO = new MberGrdVO(); + rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId()); + if (null != rtnMberGrdVO) { + // 등급제 적용 + + } + else { + isSuccess = false; + msg = "종료"; + } + } + catch(Exception e) { + isSuccess = false; + msg = e.getMessage(); + } + + modelAndView.addObject("rtnMberGrdVO", rtnMberGrdVO); + modelAndView.addObject("isSuccess", isSuccess); + modelAndView.addObject("msg", msg); + + return modelAndView; + } + } 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 887475ff..33ea023a 100644 --- a/src/main/java/itn/let/uss/umt/service/EgovUserManageService.java +++ b/src/main/java/itn/let/uss/umt/service/EgovUserManageService.java @@ -186,6 +186,7 @@ public interface EgovUserManageService { public void updateOneUserSmishingYn(UserManageVO userManageVO) throws Exception; // 스미싱의심 온/오프 - 상세에서 단일로 => 슬랙, 문자 알림 No + // B선 회원이 아닌경우 전송사 JJ로 변경 로직 포함 public void updateOneUserSmishingYnNotAlert(UserManageVO userManageVO) throws Exception; // 알림톡 스미싱의심 온/오프 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 5cae0e38..33d9041b 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 @@ -20,6 +20,7 @@ import itn.com.cmm.util.DateUtil; import itn.let.fax.user.service.FaxGroupDataVO; import itn.let.fax.user.service.impl.FaxDAO; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.msgagent.service.MjonMsgAgentStsService; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.pay.service.impl.MjonPayDAO; @@ -32,6 +33,7 @@ import itn.let.sym.site.service.JoinSettingVO; import itn.let.sym.site.service.SiteManagerVO; import itn.let.sym.site.service.impl.SiteManagerDAO; import itn.let.uat.uia.service.impl.MberManageDAO; +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; @@ -113,6 +115,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement @Resource(name = "egovSiteManagerService") EgovSiteManagerService egovSiteManagerService; + /** mberManageService */ + @Resource(name = "mberManageService") + private EgovMberManageService mberManageService; + + @Resource(name = "mjonMsgAgentStsService") + private MjonMsgAgentStsService mjonMsgAgentStsService; + /** * 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인 * @param checkId 중복여부 확인대상 아이디 @@ -565,9 +574,20 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement } // 스미싱의심 온/오프 단일 => 슬랙, 문자 알림 No + // B선 회원이 아닌경우 전송사 JJ로 변경 로직 포함 public void updateOneUserSmishingYnNotAlert(UserManageVO userManageVO) throws Exception { // 업데이트 userManageDAO.updateUserSmishingYn(userManageVO); + + // B선 전송사 이용고객 => 전송사 JJ로 변경안함 + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(userManageVO.getMberId()); + String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO); + if (blineCode != null && blineCode.equals("N")) { + // 전송사 JJ로 변경 + mberManageVO.setHotlineAgentCode("05"); // 전송사 JJ + mjonMsgAgentStsService.updateMberHotlineAgentCodeInfo(mberManageVO); + } } // 알림톡 스미싱의심 온/오프 diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index 0408ace3..155c5ff8 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -1366,7 +1366,7 @@ public class EgovUserManageController { /* * 알림톡/친구톡 최근 발송내역 리스트 불러오기 - * */ + */ KakaoVO sendKakaoVO = new KakaoVO(); sendKakaoVO.setSearchCondition2("N");//예약건은 제외하기 @@ -1377,38 +1377,43 @@ public class EgovUserManageController { sendKakaoVO.setSearchSortCnd("reqDate"); sendKakaoVO.setSearchSortOrd("desc"); sendKakaoVO.setFirstIndex(0); + sendKakaoVO.setPageType("sand"); List kakaoResultList = new ArrayList(); kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO); - model.addAttribute("kakaoResultList", kakaoResultList); + model.addAttribute("kakaoResultList", kakaoResultList); /* * 알림톡/친구톡 예약발송 리스트 불러오기 - * */ - - KakaoVO reserveKakaoVO = new KakaoVO(); - reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기 - reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 - reserveKakaoVO.setUserId(reqMberManageVO.getMberId()); + */ + + KakaoVO reserveKakaoVO = new KakaoVO(); + reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기 + reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 + reserveKakaoVO.setUserId(reqMberManageVO.getMberId()); // 문자발송 완료건은 모두 보이도록 처리 //kakaoVO.setMsgType("8"); - reserveKakaoVO.setSearchSortCnd("reqDate"); - reserveKakaoVO.setSearchSortOrd("desc"); - reserveKakaoVO.setFirstIndex(0); + reserveKakaoVO.setSearchSortCnd("reqDate"); + reserveKakaoVO.setSearchSortOrd("desc"); + reserveKakaoVO.setFirstIndex(0); + reserveKakaoVO.setPageType("sand"); List kakaoReserveList = new ArrayList(); kakaoReserveList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(reserveKakaoVO); - model.addAttribute("kakaoReserveList", kakaoReserveList); + model.addAttribute("kakaoReserveList", kakaoReserveList); + /* - * 팩스 발송 내역 리스트 불러오기 - * */ - + * 알림톡 지연처리 알림톡 내용 불러오기(30분 지연처리된 알림톡 내역 불러오기) + */ + List kakaoATDelaySentList = mjonKakaoATService.selectKakaoATDelaySentList(reqMberManageVO.getMberId()); + + model.addAttribute("kakaoATDelaySentList", kakaoATDelaySentList); + } + + {//팩스 발송 내역 리스트 불러오기 List faxSendListVO = faxService.selectFaxMainList(new FaxGroupDataVO(reqMberManageVO.getMberId())); model.addAttribute("faxSendListVO", faxSendListVO); - - //} - } {//사용중인 전송사 정보 조회하기 - 사용자 전용 전송사 리스트 표시용 diff --git a/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml index a7d89202..af33990f 100644 --- a/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml @@ -348,6 +348,8 @@ M2.yellowId , M2.userNm , M2.atSmishingYn , + M2.atDelayCompleteYn, + M2.atDelayYn, ( SELECT COUNT(0) FROM MJ_MSG_DATA C WHERE C.DEL_FLAG = 'N' @@ -451,46 +453,49 @@ MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey , MKPI.YELLOW_ID AS yellowId , LTM.MBER_NM AS userNm , - LTM.AT_SMISHING_YN AS atSmishingYn, + LTM.AT_SMISHING_YN AS atSmishingYn, BIZ_UMID AS bizUmid, BL.CALL_STATUS AS callStatus, - M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn - FROM ( - SELECT MG.USER_ID , - MG.MSG_GROUP_ID , - MG.MSG_GROUP_CNT , - MG.SMS_TXT , - MG.SUBJECT , - MG.REGDATE , - MG.REQ_DATE , - MD.RSLT_DATE , - MG.CALL_FROM , - MG.TOT_PRICE , - MG.EACH_PRICE , - MG.DEL_FLAG , - MG.MSG_TYPE , - MG.FILE_CNT , - MG.AGENT_CODE , - MG.RESERVE_YN , - MG.RESERVE_C_YN , - MG.CANCELDATE , - MD.MSG_SEQ , - MD.CALL_TO , - MD.CUR_STATE , - MD.RSLT_CODE , - MD.RSLT_CODE2 , - CASE + M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn, + M.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn, + M.AT_DELAY_YN AS atDelayYn + FROM + (SELECT + MG.USER_ID + , MG.MSG_GROUP_ID + , MG.MSG_GROUP_CNT + , MG.SMS_TXT + , MG.SUBJECT + , MG.REGDATE + , MG.REQ_DATE + , MD.RSLT_DATE + , MG.CALL_FROM + , MG.TOT_PRICE + , MG.EACH_PRICE + , MG.DEL_FLAG + , MG.MSG_TYPE + , MG.FILE_CNT + , MG.AGENT_CODE + , MG.RESERVE_YN + , MG.RESERVE_C_YN + , MG.CANCELDATE + , MD.MSG_SEQ + , MD.CALL_TO + , MD.CUR_STATE + , MD.RSLT_CODE + , MD.RSLT_CODE2 + , CASE WHEN MG.MSG_TYPE = '8' THEN '알림톡' WHEN MG.MSG_TYPE = '9' THEN '친구톡' - END msgTypeName , - CASE + END msgTypeName + , CASE WHEN MG.MSG_TYPE = '8' THEN '1' ELSE '2' - END orderByCode , - ( + END orderByCode + , ( CASE WHEN MD.RSLT_CODE = '7000' THEN 'S' @@ -498,18 +503,29 @@ THEN 'W' ELSE 'F' END - ) AS result , - MSG_NOTICETALK_SENDER_KEY , - MSG_NOTICETALK_TMP_KEY, - MD.BIZ_UMID, - MD.BIZ_KAKAO_RESEND_YN - FROM MJ_MSG_DATA MD , - MJ_MSG_GROUP_DATA MG - WHERE MD.MSG_GROUP_ID = MG.MSG_GROUP_ID + ) AS result + , MSG_NOTICETALK_SENDER_KEY + , MSG_NOTICETALK_TMP_KEY + , MD.BIZ_UMID + , MD.BIZ_KAKAO_RESEND_YN + , MG.AT_DELAY_COMPLETE_YN + , MG.AT_DELAY_YN + FROM + MJ_MSG_DATA MD + , MJ_MSG_GROUP_DATA MG + WHERE 1=1 + AND MD.MSG_GROUP_ID = MG.MSG_GROUP_ID AND IFNULL(MG.DEL_FLAG, 'N') = 'N' AND MD.DEL_FLAG = 'N' - - + + AND MG.USER_ID = #userId# @@ -586,6 +602,11 @@ + + + AND M.CUR_STATE = '3' + + @@ -729,9 +750,9 @@ THEN '단문' ELSE '장문' END BIZ_KAKAO_RESEND_TYPE - , A.BIZ_KAKAO_RESEND_DATA - , A.BIZ_KAKAO_JSON_FILE - , A.BIZ_UMID + , A.BIZ_KAKAO_RESEND_DATA + , A.BIZ_KAKAO_JSON_FILE + , A.BIZ_UMID AND B.USER_ID = #userId# @@ -751,7 +772,12 @@ AND A.MSG_TYPE IN ('8','9') )M LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI @@ -1058,6 +1084,9 @@ M2.msgNoticetalkTmpKey , M2.yellowId , M2.userNm , + M2.atSmishingYn, + M2.atDelayCompleteYn, + M2.atDelayYn, ( SELECT COUNT(0) FROM MJ_MSG_DATA C WHERE C.DEL_FLAG = 'N' @@ -1158,12 +1187,15 @@ orderByCode AS orderByCode , RESULT AS msgResult , MSG_NOTICETALK_SENDER_KEY AS msgNoticetalkSenderKey , - MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey , - MKPI.YELLOW_ID AS yellowId , - LTM.MBER_NM AS userNm , + MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey , + MKPI.YELLOW_ID AS yellowId , + LTM.MBER_NM AS userNm , + LTM.AT_SMISHING_YN AS atSmishingYn, BIZ_UMID AS bizUmid, BL.CALL_STATUS AS callStatus, - M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn + M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn, + M.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn, + M.AT_DELAY_YN AS atDelayYn FROM ( SELECT MG.USER_ID , MG.MSG_GROUP_ID , @@ -1207,16 +1239,20 @@ THEN 'W' ELSE 'F' END - ) AS result , - MSG_NOTICETALK_SENDER_KEY , - MSG_NOTICETALK_TMP_KEY, - MD.BIZ_UMID, - MD.BIZ_KAKAO_RESEND_YN + ) AS result + , MSG_NOTICETALK_SENDER_KEY + , MSG_NOTICETALK_TMP_KEY + , MD.BIZ_UMID + , MD.BIZ_KAKAO_RESEND_YN + , MG.AT_DELAY_COMPLETE_YN + , MG.AT_DELAY_YN + , MD.REFUND_YN FROM MJ_MSG_DATA MD , MJ_MSG_GROUP_DATA MG WHERE MD.MSG_GROUP_ID = MG.MSG_GROUP_ID AND IFNULL(MG.DEL_FLAG, 'N') = 'N' AND MD.DEL_FLAG = 'N' + AND MG.USER_ID = #userId# @@ -1293,6 +1329,12 @@ + + + AND M.AT_DELAY_COMPLETE_YN ='Y' + AND M.REFUND_YN = 'N' + + @@ -1386,7 +1428,7 @@ , B.SMS_TXT , B.SUBJECT , B.REGDATE - , B.REQ_DATE + , A.REQ_DATE , A.RSLT_DATE , B.CALL_FROM , B.TOT_PRICE @@ -2252,10 +2294,102 @@ - - - - - - + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml index 4bd0fcfd..b7e54ab1 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml @@ -375,7 +375,9 @@ AND MG.DEL_FLAG ='N' /* JSPark 2023.03.23 => 예약건중 발송완료건도 발송결과에 노출되도록 수정 */ /* AND MG.RESERVE_YN = 'N' */ - + AND MG.RESERVE_C_YN = #reserveCYn# diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index 60cef67d..44b028ad 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 @@ -766,9 +766,20 @@ ) D ON A.MSG_TYPE = D.CODE /** 메세지타입 */ WHERE 1 = 1 AND A.MSG_TYPE IN (4, 6) + + + AND ( @@ -2055,23 +2066,24 @@ - SELECT MSG_GROUP_ID AS msgGroupId, - USER_ID AS userId, - SMS_TXT AS smsTxt, - EACH_PRICE AS eachPrice, - TOT_PRICE AS totPrice, - MSG_GROUP_CNT AS msgGroupCnt - FROM MJ_MSG_GROUP_DATA - WHERE USER_ID = #userId# - AND MSG_GROUP_ID = #msgGroupId# + SELECT + MSG_GROUP_ID AS msgGroupId + , USER_ID AS userId + , SMS_TXT AS smsTxt + , EACH_PRICE AS eachPrice + , TOT_PRICE AS totPrice + , MSG_GROUP_CNT AS msgGroupCnt + FROM + MJ_MSG_GROUP_DATA + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# ORDER BY MSG_GROUP_ID DESC LIMIT 1 @@ -5819,6 +5836,25 @@ + + + + UPDATE MJ_MSG_DATA + SET REQ_DATE = + = 30 + THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE) + ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE) + END + ]]> + WHERE USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + UPDATE MJ_MSG_GROUP_DATA @@ -5828,12 +5864,35 @@ + + + + UPDATE MJ_MSG_GROUP_DATA + SET REQ_DATE = + = 30 + THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE) + ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE) + END + ]]> , + + DELAY_COMPLETE_YN = 'Y' + WHERE USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + + + + UPDATE + MJ_MSG_DATA + SET + REFUND_YN = 'Y' + , REQ_DATE = NOW() + , RESULT_LOG_UPDT_PNTTM = NOW() + , CUR_STATE = '3' + , RSLT_CODE = '7300' + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + + + + UPDATE + MJ_MSG_GROUP_DATA + SET + CANCELDATE = NOW() + , REQ_DATE = NOW() + , AT_DELAY_COMPLETE_YN = 'Y' + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + + + UPDATE + MJ_MSG_DATA + SET + REQ_DATE = + = 30 + THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE) + ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE) + END + ]]> + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + + + UPDATE + MJ_MSG_GROUP_DATA + SET + REQ_DATE = + = 30 + THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE) + ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE) + END + ]]> + , AT_DELAY_COMPLETE_YN = 'Y' + WHERE 1=1 + AND USER_ID = #userId# + AND MSG_GROUP_ID = #msgGroupId# + + diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml index 34a52369..023cc198 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml @@ -445,12 +445,17 @@ + @@ -40,13 +49,33 @@ , A.REG_DATE AS regDate , A.EDIT_ID AS editId , A.EDIT_DATE AS editDate - FROM mj_mber_grd_setting A + FROM MJ_MBER_GRD_SETTING A ORDER BY A.GRD_SET_NO ASC + + + - UPDATE mj_mber_grd_setting A + UPDATE MJ_MBER_GRD_SETTING A SET A.STD_AMT = #stdAmt# , A.SHORT_PRICE = #shortPrice# @@ -59,6 +88,71 @@ WHERE A.GRD_SET_NO = #grdSetNo# + + + + + + + + + - INSERT INTO mj_mber_grd_info + INSERT INTO MJ_MBER_GRD_INFO ( MBER_ID , GRD_SET_NO @@ -97,6 +271,7 @@ , PICTURE3_PRICE , AMT , TOT_AMT + , GRD_DATE , GRD_START_DATE , GRD_END_DATE , GRD_STATUS @@ -116,8 +291,9 @@ , #picture3Price# , #amt# , #totAmt# + , #grdDate# , #grdStartDate# - , #grd_endDate# + , #grdEndDate# , #grdStatus# , #regId# , NOW() @@ -128,7 +304,7 @@ - UPDATE mj_mber_grd_info SET + UPDATE MJ_MBER_GRD_INFO SET MBER_ID = #mberId# , GRD_SET_NO = #grdSetNo# , SHORT_PRICE = #shortPrice# @@ -136,12 +312,9 @@ , PICTURE_PRICE = #picturePrice# , PICTURE2_PRICE = #picture2Price# , PICTURE3_PRICE = #picture3Price# - , AMT = #amt# + , AMT = #amt# , TOT_AMT = #totAmt# - , GRD_START_DATE = #grdStartDate# - , GRD_END_DATE = #grd_endDate# - , GRD_STATUS = #grdStatus# - , EDIT_ID = #editId# + , EDIT_ID = #editId# , EDIT_DATE = NOW() WHERE MBER_ID = #mberId# @@ -163,17 +336,17 @@ , SUM(S.AMT) AS AMT_SUM_ORIGIN , (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM , ( - SELECT MIN(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) + SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) ) GRD_SET_NO FROM MJ_PG S LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS ON S.USER_ID = SS.MBER_ID - AND SS.EVENT_START_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00') WHERE S.PG_STATUS = '1' AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00') GROUP BY S.USER_ID ) M WHERE M.GRD_SET_NO IS NOT NULL + AND M.AMT_SUM > 0 ) B ON A.MBER_ID = B.USER_ID INNER JOIN MJ_MBER_GRD_SETTING C @@ -186,18 +359,57 @@ , A.PICTURE2_PRICE = C.PICTURE2_PRICE , A.PICTURE3_PRICE = C.PICTURE3_PRICE , A.TOT_AMT = B.AMT_SUM - , A.GRD_START_DATE = CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00') + , A.GRD_DATE = CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00') , A.EDIT_DATE = NOW() WHERE B.GRD_SET_NO IS NOT NULL - AND A.GRD_SET_NO >= B.GRD_SET_NO - AND GRD_STATUS NOT IN ('N', 'E') - AND NOW() BETWEEN GRD_START_DATE AND GRD_END_DATE + AND A.GRD_SET_NO > B.GRD_SET_NO + AND A.GRD_STATUS = 'Y' + AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE ]]> + + + 0 + AND (B.SHORT_PRICE > A.SHORT_PRICE + OR B.LONG_PRICE > A.LONG_PRICE + OR B.PICTURE_PRICE > A.PICTURE_PRICE + OR B.PICTURE2_PRICE > A.PICTURE2_PRICE + OR B.PICTURE3_PRICE > A.PICTURE3_PRICE) + ) + THEN 'Y' + ELSE 'N' + END isSalePrice + FROM LETTNGNRLMBER A + INNER JOIN MJ_MBER_GRD_INFO G + ON A.MBER_ID = G.MBER_ID + JOIN MJ_MBER_SETTING B + WHERE 1=1 + AND G.GRD_STATUS != 'E' + ) M + WHERE M.isSalePrice = 'Y' + OR M.BLINE_CODE != 'N' + ) + ]]> + + - UPDATE mj_mber_grd_info SET + UPDATE MJ_MBER_GRD_INFO SET GRD_END_DATE = NOW() , GRD_STATUS = 'E' , EDIT_ID = #editId# @@ -212,15 +424,35 @@ COUNT(0) FROM MJ_MBER_GRD_INFO A WHERE A.MBER_ID = #mberId# - AND GRD_STATUS NOT IN ('N', 'E') - AND NOW() BETWEEN GRD_START_DATE AND GRD_END_DATE + AND A.GRD_STATUS = 'Y' + AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE + LIMIT 1 + + + + + + + - INSERT INTO mj_mber_grd_hist + INSERT INTO MJ_MBER_GRD_HIST ( MBER_ID , GRD_SET_NO @@ -231,6 +463,7 @@ , PICTURE3_PRICE , AMT , TOT_AMT + , GRD_DATE , REG_ID , REG_DATE , EDIT_ID @@ -247,6 +480,7 @@ , #picture3Price# , #amt# , #totAmt# + , #grdDate# , #regId# , NOW() , #editId# @@ -254,4 +488,64 @@ ) + + + + + 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 6a698569..3c048085 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 @@ -1668,7 +1668,7 @@ LEFT JOIN MJ_MSG_GROUP_DATA MGD ON A.msgGroupId = MGD.MSG_GROUP_ID WHERE MGD.USER_ID = #mberId# - AND MGD.RESERVE_YN = 'N' + AND MGD.RESERVE_C_YN = 'N' AND MGD.DELAY_YN = 'Y' AND MGD.DELAY_COMPLETE_YN = 'N' diff --git a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml index f461f79a..7ceb0601 100644 --- a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml @@ -1290,15 +1290,17 @@ diff --git a/src/main/webapp/WEB-INF/jsp/agent/MjonMsgAgentStsMultiUpdate.jsp b/src/main/webapp/WEB-INF/jsp/agent/MjonMsgAgentStsMultiUpdate.jsp index 63f40f38..fbbb643b 100644 --- a/src/main/webapp/WEB-INF/jsp/agent/MjonMsgAgentStsMultiUpdate.jsp +++ b/src/main/webapp/WEB-INF/jsp/agent/MjonMsgAgentStsMultiUpdate.jsp @@ -275,7 +275,7 @@ var confCode = $("#confCode").val(); - if (!confirm('문자발송 사용여부는 전송사 비율과 상관없이\n사용자 문자 발송 사용여부가 일괄 적용됩니다.(주의)\n\n수정 하시겠습니까?')){ + if (!confirm('문자, 알림톡 사용자화면 발송 사용여부가 변경됩니다.\n긴급 시스템작업시에만 사용해주세요.\n수정 하시겠습니까?')){ return false; } @@ -374,7 +374,7 @@

-

문자발송 사용여부 - 전송사 비율과 상관없이, 사용자 문자 발송 사용여부 일괄 적용(주의)

+

문자, 알림톡 발송 사용여부 - 문자, 알림톡 사용자화면 발송 사용여부(주의)

@@ -386,7 +386,7 @@ - 문자발송 사용여부 + 문자, 알림톡 발송 사용여부 diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectMsgDataListPop.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectMsgDataListPop.jsp index d3999925..b66dbde4 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectMsgDataListPop.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectMsgDataListPop.jsp @@ -571,7 +571,14 @@ function fn_updateSendRealTime(userId, msgGroupId){ - 그림문자 + + + 내용없음 + + + 그림문자 + +
diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp index 29b53d00..d85fc294 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp @@ -1183,44 +1183,6 @@ function fnMberSmishingYn(){ } -//알림톡 스미싱의심 여부 -function fnMberAtSmishingYn(){ - var form = document.mberManageVO; - var atSmishingYn = form.atSmishingYn.value; - - if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){ - - $.ajax({ - type: "POST", - url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do", - data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"}, - dataType:'json', - async: false, - success: function (data, status) { - if (data.isSuccess) { - alert("변경 완료했습니다."); - } - else { - alert(data.msg); - } - }, - beforeSend: function () { - //로딩창 show - $('.loading_layer').addClass('active'); - }, - complete: function () { - //로딩창 hide - $('.loading_layer').removeClass('active'); - }, - error: function (e) { - alert("에러가 발생했습니다."); console.log("ERROR : ", e); - } - }); - - } - -} - // VIP 여부 function fnMberVIPYn(){ var form = document.mberManageVO; @@ -2422,6 +2384,331 @@ function fnMberExceptSpamYn(){ } +//알림톡 지연 기능추가 ------------------------------------------------------- + +//알림톡 스미싱의심 여부 +function fnMberAtSmishingYn(){ + var form = document.mberManageVO; + var atSmishingYn = form.atSmishingYn.value; + + if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){ + + $.ajax({ + type: "POST", + url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do", + data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"}, + dataType:'json', + async: false, + success: function (data, status) { + if (data.isSuccess) { + alert("변경 완료했습니다."); + } + else { + alert(data.msg); + } + }, + beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + }, + complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + }, + error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + + } +} + +//지연 알림톡 전체선택 +function kakaoATDelayCheckAll(){ + var checkField = document.kakaoATDelayForm.kakaoATCheckDelayField; + + if(document.kakaoATDelayForm.kakaoATCheckAll.checked) { + if(checkField) { + if(checkField.length > 1) { + for(var i=0; i < checkField.length; i++) { + checkField[i].checked = true; + } + } else { + checkField.checked = true; + } + } + } else { + if(checkField) { + if(checkField.length > 1) { + for(var j=0; j < checkField.length; j++) { + checkField[j].checked = false; + } + } else { + checkField.checked = false; + } + } + } +} + +//지연 알림톡 즉시 발송 리스트 +function kakaoATDelaySendArray(){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + var form = document.kakaoATDelayForm; + + if($("input:checkbox[name='kakaoATCheckDelayField']").is(":checked")==false){ + alert("선택된 알림톡이 없습니다."); + return; + } + var checkField = form.kakaoATCheckDelayField; + var id = form.kakaoATCheckDelayId; + var checkedIds = ""; + var checkedCount = 0; + if(checkField) { + if(checkField.length > 1) { + for(var i=0; i < checkField.length; i++) { + if(checkField[i].checked) { + checkedIds += ((checkedCount==0? "" : ",") + id[i].value); + checkedCount++; + } + } + } else { + if(checkField.checked) { + checkedIds = id.value; + } + } + } + + var msgGroupId = checkedIds; + + var msg = ""; + var url = "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 즉시 발송 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + alert(msg); + location.reload(); + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + alert(msg); + location.reload(); + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +} + +//지연 알림톡 즉시 발송 +function kakaoATDelaySend(msgGroupId){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + + var msg = ""; + var url = "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 즉시 발송 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + alert(msg); + location.reload(); + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + alert(msg); + location.reload(); + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +} + +//지연 알림톡 발송취소 리스트 +function kakaoATDelayCancelArray(){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + var form = document.kakaoATDelayForm; + + if($("input:checkbox[name='kakaoATCheckDelayField']").is(":checked")==false){ + alert("선택된 알림톡이 없습니다."); + return; + } + var checkField = form.kakaoATCheckDelayField; + var id = form.kakaoATCheckDelayId; + var checkedIds = ""; + var checkedCount = 0; + if(checkField) { + if(checkField.length > 1) { + for(var i=0; i < checkField.length; i++) { + if(checkField[i].checked) { + checkedIds += ((checkedCount==0? "" : ",") + id[i].value); + checkedCount++; + } + } + } else { + if(checkField.checked) { + checkedIds = id.value; + } + } + } + + var msgGroupId = checkedIds; + + var msg = ""; + var url = "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 발송취소 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + + alert(msg); + location.reload(); + + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + + alert(msg); + + //회원 이용정지 처리하기 + //fn_updateMberSttus(msgGroupId); + fn_MsgDelayCancel_after(); + + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +} + +//지연 알림톡 발송취소 +function kakaoATDelayCancel(msgGroupId){ + + var userId = document.modiForm.mberId.value; //사용자 회원 아이디 + + var msg = ""; + var url = "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"; + var json = {"msgGroupId" : msgGroupId, "userId" : userId}; + + if(confirm("해당 지연 알림톡을 발송취소 하시겠습니까?")){ + $.ajax({ + type: "POST" + , url: url + , data: json + , dataType:'json' + , async: false + , success: function (data, status) { + var result = data.isStatus; + var msg = data.msg; + + if (result == 'loginFail') { + alert(msg); + location.reload(); + }else if(result == 'dateFail'){ + + alert(msg); + location.reload(); + + }else if(result == 'fail'){ + alert(msg); + return false; + }else{ + + alert(msg); + + //회원 이용정지 처리하기 + //fn_updateMberSttus(msgGroupId); + fn_MsgDelayCancel_after(); + + } + } + , beforeSend: function () { + //로딩창 show + $('.loading_layer').addClass('active'); + } + , complete: function () { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + , error: function (e) { + alert("에러가 발생했습니다."); console.log("ERROR : ", e); + } + }); + } +} + @@ -639,7 +643,7 @@ function TabTypePay(obj, tabId) {

충전수단 선택

    -
  • +
  • diff --git a/src/main/webapp/publish/css/common.css b/src/main/webapp/publish/css/common.css index 305b08ae..5cd826d4 100644 --- a/src/main/webapp/publish/css/common.css +++ b/src/main/webapp/publish/css/common.css @@ -99,6 +99,20 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border: .login2 .login_info .login2_name p {color: #222; font-weight: 400; vertical-align: top; font-weight: 500; height: 16px; white-space:nowrap;} .login2 .login_info .login2_name span {width: 61px;padding:0 10px 0 0;margin: 0 0 0 -5px;} .login2 .login_info i {background-image: url(/publish/images/mypageIcon2.png);width: 34px;height: 34px;margin-right: 5px;} +/*등급별 아이콘*/ +.login2 .login_info i.vvip{background-image: url(/publish/images/level/level_icon/vvip_icon.png);} +.login2 .login_info i.vip{background-image: url(/publish/images/level/level_icon/vip_icon.png);} +.login2 .login_info i.gold{background-image: url(/publish/images/level/level_icon/gold_icon.png);} +.login2 .login_info i.sliver{background-image: url(/publish/images/level/level_icon/sliver_icon.png);} +.login2 .login_info i.black{background-image: url(/publish/images/level/level_icon/black_icon.png);} +.login2 .login_info i.red{background-image: url(/publish/images/level/level_icon/red_icon.png);} +.login2 .login_info i.purple{background-image: url(/publish/images/level/level_icon/purple_icon.png);} +.login2 .login_info i.blue{background-image: url(/publish/images/level/level_icon/blue_icon.png);} +.login2 .login_info i.orange{background-image: url(/publish/images/level/level_icon/orange_icon.png);} +.login2 .login_info i.green{background-image: url(/publish/images/level/level_icon/green_icon.png);} +.login2 .login_info i.yellow{background-image: url(/publish/images/level/level_icon/yellow_icon.png);} +.login2 .login_info i.white{background-image: url(/publish/images/level/level_icon/white_icon.png);} +/*등급별 아이콘 끝*/ .login2 .login_info button {margin-right: 2px;} .login2 .login_pay {display:flex;} .login2 .check_money p span, .login2 .point p span {padding-left: 4px;} @@ -220,6 +234,7 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border: .quickMenu .quickMenuIn li i.quick9 {background-image: url(/publish/images/quick9.png);width: 24px; height:20px;} .quickMenu .quickMenuIn li i.quick10 {background-image: url(/publish/images/quick10.png);width: 21px; height:20px;} .quickMenu .quickMenuIn li i.quick11 {background-image: url(/publish/images/quick11.png);width: 20px; height:20px;} +.quickMenu .quickMenuIn li i.quick12 {background-image: url(/publish/images/level/quick12.png);width: 20px; height:20px;} .quickMenu .quickMenuIn li span {display: block;font-size: 12px;color: #555;padding-top: 8px;} .quickMenu .goTop {background-color: #929599;color: #fff;width: 90px;padding: 10px 0;border-radius: 0 0 8px 8px;font-size: 20px;} .quickMenu .goTop i {background-image: url(/publish/images/goTop.png);width: 12px;height: 10px;margin-left: 5px;margin-bottom: 5px;} @@ -234,6 +249,7 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border: .quickMenu .quickMenuIn li:hover i.quick9 {background-image: url(/publish/images/quick9_hover.png);width: 24px; height:20px;} .quickMenu .quickMenuIn li:hover i.quick10 {background-image: url(/publish/images/quick10_hover.png);width: 21px; height:20px;} .quickMenu .quickMenuIn li:hover i.quick11 {background-image: url(/publish/images/quick11_hover.png);width: 20px; height:20px;} +.quickMenu .quickMenuIn li:hover i.quick12 {background-image: url(/publish/images/level/quick12_hover.png);width: 20px; height:20px;} .quickMenu .quickMenuIn li:hover span {color: #002c9a;font-weight: 500;} .quickMenu .quick_kakaobtn {position:absolute;right:0;bottom:-100px;width:90px;height:90px;font-size:0;text-indent:-9999em;background:url(/publish/images/content/icon_quick_kakao.png) no-repeat left top;z-index:15;} .quickMenu .quick_kakaobtn a {display:block;width:100%;height:100%;} diff --git a/src/main/webapp/publish/css/content.css b/src/main/webapp/publish/css/content.css index 1617b508..7074e76d 100644 --- a/src/main/webapp/publish/css/content.css +++ b/src/main/webapp/publish/css/content.css @@ -90,7 +90,7 @@ input[type=text]::-ms-reveal, input[type=password]::-ms-reveal, input[type=email /* tabTpye1 */ .tabType1 {background-color: #fff;width: 100%;border-radius: 10px; display: flex;text-align: center;margin-bottom: 20px;border:2px solid #46484a;} .tabType1 li {flex-basis: calc(100%/2); position: relative;} -.tabType1 li button {width: 100%;padding: 13px 0;font-size: 18px;position:relative;z-index:1;} +.tabType1 li button {width: 100%;padding: 13px 0;font-size: 16px;position:relative;z-index:1;} .tabType1 li.active {background-color: #46484a;} .tabType1 li.active:after {content:'';position:absolute;left:-1px;top:-1px;width:100%;height:100%;border:1px solid #46484a;} .tabType1 li.active button {color: #fff;border:1px solid #46484a;background-color: #46484a;} @@ -427,7 +427,7 @@ input[type=text]::-ms-reveal, input[type=password]::-ms-reveal, input[type=email .tType1 tbody tr th.billingAmount button.cal_btn {position: absolute;right: 0; top: 50%;transform: translateY(-50%);background-color: #fbc72b;width: 88px;height: 32px;border-radius: 5px;} .tType1 tbody tr th.billingAmount button.cal_btn:hover {box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);} .tType1 tbody tr th.billingAmount button.cal_btn i {background-image: url(/publish/images/content/calIcon.png);width: 12px;height: 16px;margin: 0 3px 2px 0;} -.tType1 tbody tr th.billingAmount .pay_type {background-color: #fff; border-radius: 5px; height: 60px; padding: 12px 13px; box-sizing: border-box;} +.tType1 tbody tr th.billingAmount .pay_type {background-color: #fff; border-radius: 5px 5px 0 0; height: 60px; padding: 12px 13px; box-sizing: border-box;} .tType1 tbody tr th.billingAmount .pay_type button.btn_event_cash{width: 100px;} .tType1 tbody tr th.billingAmount .pay_type:last-child {margin-top: 10px;} .tType1 tbody tr th.billingAmount .pay_type>div:first-child {float: left;margin:0 0 0 5px;} @@ -447,6 +447,21 @@ input[type=text]::-ms-reveal, input[type=password]::-ms-reveal, input[type=email .tType1 tbody select.sel_number {width: 340px; height: 40px; padding: 0 20px; background-color: #f2f2f2;border-radius: 5px; border: 0;color: #002c9a;font-weight: 400;font-size: 16px;background-image: url(/publish/images/select_search.png); background-repeat: no-repeat; background-position: 94% center;} .tType1 tbody input[type="text"]::placeholder {color: #a6a6a6;} .tType1 tbody input:disabled {background-color: #dedede;} + +/*발송금액 아래 등급별 가격안내 추가*/ +.my_price_wrap .center-line{width: 96%; height: 1px; background-color: #e5e5e5; margin: 0 auto;} +.my_price_wrap{letter-spacing: -0.5px; width: calc(100% - 100px); background-color: #fff; border-radius: 0 0 5px 5px; width: 100%;} +.my_price_wrap ul{display: flex; width: calc(100% - 20px); border-bottom: 1px dashed #d5d5d5; margin: 0 auto; padding: 15px 0px 15px 5px; align-items: center; flex-wrap: wrap; box-sizing: border-box;} +.my_price_wrap ul:last-child{border: 0; align-items: flex-start;} +.my_price_wrap ul:first-child li:last-child{margin: 0; padding: 0} +.my_price_wrap .title{font-size: 17px; font-weight: 400; color: #222; margin-top: 1px;} +.my_price_wrap .title span{font-size: 15px;} +.my_price_wrap .title img{margin: 0 8px 0 0; vertical-align: top;} +.my_price_wrap .type{border: 1px solid #46484a; border-radius: 3px; margin-right: 3px; color: #46484a; padding: 0 4px 1px 4px;} +.my_price_wrap .type, .price_line{font-size: 16px; font-weight: 400; color: #555;} +.my_price_wrap .price{color: #e40000; font-size: 18px; font-weight: 700;} +.my_price_wrap .line{font-size: 14px; color: #ababab;} + /*// tType1 */ /*// sub page 반복 */ @@ -806,7 +821,7 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .ext_info li:nth-child(1) i {background-image: url(/publish/images/content/list_view_icon1.png); width: 16px; height: 16px; } .ext_info li:nth-child(2) i {background-image: url(/publish/images/content/list_view_icon2.png); width: 16px; height: 16px; margin: 0 10px 3px 0;} .ext_info li:nth-child(3) i {background-image: url(/publish/images/content/hits_icon.png); width: 24px; height: 14px; margin: 0 10px 3px 0; opacity: 0.9;} -.view_wrap .view_cont {padding: 40px 00px; box-sizing: border-box; border-bottom: 1px solid #d5d5d5;} +/*.view_wrap .view_cont {padding: 40px 00px; box-sizing: border-box; border-bottom: 1px solid #d5d5d5;}*/ .view_wrap .view_cont .cont_in {font-size: 18px; line-height: 1.5; font-weight: 300;} .view_wrap .view_cont .cont_in .img_cont {text-align: center; margin-bottom: 70px;} @@ -916,6 +931,11 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .pay_cont .excel_middle {margin: 20px 0 10px 0;} .pay_cont .excel_middle .selType2 {width: 82px; height: 32px; margin-left: 0;} .pay_cont .select_btnWrap .add_text2 {font-size: 16px; padding-top: 7px; color: #666; font-weight: 300;} + +/*등급 및 누적결제액 확인 버튼 추가*/ +.pay_cont .excel_middle .level_btn{margin: 0 5px; border: 1px solid #002c9a; color: #002c9a;} +.pay_cont .excel_middle .level_btn img{margin-top: -3px;} + .pay_cont .excel_middle .print_btn {margin: 0 5px;} .pay_cont .pay_info {display: flex; justify-content: center; background-color: #efeff0; width: 100%; padding: 16px 0; border-radius: 5px; margin: 20px 0 50px 0; box-sizing: border-box; } .pay_cont .pay_info p:nth-child(1) {font-size: 18px;} @@ -1055,18 +1075,22 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .charg_cont.current {display: block;} .charg_cont .tab_tit{font-size: 24px; font-weight: bold; color: #222; margin-bottom: 20px; margin-top: 40px;} .charg_cont .area_tab{display: flex; width: 100%; justify-content: space-between;} +/* 간편결제 오픈 시 +.charg_cont .area_tab li{ width: calc((100% - 80px)/5); border: 1px solid #ddd; border-radius: 5px; position: relative; box-sizing: border-box; text-align: center;} */ .charg_cont .area_tab li{ width: calc((100% - 80px)/4); border: 1px solid #ddd; border-radius: 5px; position: relative; box-sizing: border-box; text-align: center;} .charg_cont .area_tab li button {font-size: 22px; font-weight: 400; width: 100%; height: 100%; padding: 60px 20px 40px 20px;position:relative;z-index:1;} .charg_cont .area_tab li.active {border: 3px solid #fbc72b;} .charg_cont .area_tab li.active::before{background-image: url(/publish/images/content/icon_chargeCheck2.png); background-color: #fbc72b; border: 2px solid #fbc72b;} .charg_cont .area_tab li::before{position: absolute; content: " "; width: 31px; height: 31px; border: 3px solid #ccc; right: 15px; top: 15px; border-radius: 100%; background-image: url(/publish/images/content/icon_chargeCheck1.png); background-repeat: no-repeat; background-position: center 58%;} .charg_cont .area_tab button i{width: 65px; height: 55px; display: block; margin: 0 auto 15px auto; background-position: center;} -.charg_cont .area_tab .btn_charge1 i{background-image: url(/publish/images/content/icon_charging1.png);} -.charg_cont .area_tab .btn_charge2 i{background-image: url(/publish/images/content/icon_charging2.png);} -.charg_cont .area_tab .btn_charge3 i{background-image: url(/publish/images/content/icon_charging3.png);} +.charg_cont .area_tab .btn_charge_simple i{background-image: url(/publish/images/simple.png);} +.charg_cont .area_tab .btn_charge1 i{background-image: url(/publish/images/content/icon_charging2.png);} +.charg_cont .area_tab .btn_charge2 i{background-image: url(/publish/images/content/icon_charging3.png);} .charg_cont .area_tab .btn_charge4 i{background-image: url(/publish/images/content/icon_charging4.png);} .charg_cont .area_tab .btn_charge5 i{background-image: url(/publish/images/content/icon_charging5.png);} .charg_cont .area_tab+.checkbox_wrap{margin-top: 18px; color: #666; font-weight: 300; font-size: 18px; text-align: right; width: 100%;} +/* 간편결제 오픈 시 +.charg_cont .area_tab.type03 li {width:calc(100%/4 - 15px);} */ .charg_cont .area_tab.type03 li {width:calc(100%/3 - 15px);} .charg_cont .checkbox_wrap input[type="checkbox"], .charg_cont .checkbox_wrap input[type="radio"]{display: none;} @@ -1143,6 +1167,33 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .charg_cont .tType1 .box_input.flex input{border: 1px solid #ccc;} .charg_cont .tType1 .box_input.flex input[type="text"] {width: 200px;background-color: #fff;} .charg_cont .tType1 .box_input.flex button{background-color: #002c9a; color: #fff; border: 0; margin-left: 10px;} + + +/*누적결제액별 등급 및 단간 추가*/ +.accrue_price{width: 100%; height: 105px; border-radius: 5px; background-color: #f2f2f2;} +.accrue_price p{font-size: 22px; font-weight: 700; line-height: 105px; margin-left: 53px;} +.accrue_price p span{border-radius: 5px; background-color: #fff; padding: 10px 10px 10px 10px; font-size: 18px; font-weight: 400;} +.accrue_price p span img{margin-right: 5px; margin-top: -5px;} +.accrue_price p span span{padding: 0; font-size: 22px; font-weight: 700; color: #e40000;} +.accrue_level .tType1_title{margin-top: 40px;} +.accrue_level .tType1_title img{margin-top: -5px;} +.accrue_level .tType2{width: 100%; border-top: 1px solid #000; text-align: center;} +.accrue_level .tType2 thead tr{background-color: #f7f7f7; border-bottom: 1px solid #e5e5e5;} +.accrue_level .tType2 thead tr th{height: 46px; font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; vertical-align: middle;} +.accrue_level .tType2 thead tr th:last-child{border-right: 0;} +.accrue_level .tType2 tbody tr{border-bottom: 1px solid #e5e5e5;} +.accrue_level .tType2 tbody tr th{font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; height: 42px; vertical-align: middle;} +.accrue_level .tType2 tbody tr td{font-size: 16px; font-weight: 300; border-right: 1px solid #e5e5e5; vertical-align: middle; line-height: 1.4;} +.accrue_level .tType2 tbody tr td:last-child{border-right: 0;} +.accrue_level .tType2 tbody tr td:last-child>span {font-weight: 400;} + +.accrue_level .tType2_level tbody tr th{font-weight: 300;} +.accrue_level .tType2_level tbody tr .level_price{font-weight: 500;} +.accrue_level .level_first{font-weight: 400; font-size: 18px; color: #666;} +.accrue_level .level span{font-weight: 400; font-size: 18px; color: #666;} +.accrue_level .tType2 .th_second span{font-size: 15px; font-weight: 300;} +.accrue_level .reqTxt4_last{text-indent: -12px; margin: 0px 0px 0px 11px;} + /* //결제하기 */ /* 요금안내/견적내기 */ @@ -1153,11 +1204,15 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .fee_cont .tType2 thead tr th{height: 46px; font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; vertical-align: middle;} .fee_cont .tType2 thead tr th:last-child{border-right: 0;} .fee_cont .tType2 tbody tr{border-bottom: 1px solid #e5e5e5;} + .fee_cont .tType2 tbody tr th{font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; height: 50px; vertical-align: middle;} .fee_cont .tType2 tbody tr td{font-size: 16px; font-weight: 300; border-right: 1px solid #e5e5e5; vertical-align: middle; line-height: 1.4;} .fee_cont .tType2 tbody tr td:last-child{border-right: 0;} .fee_cont .tType2 tbody tr td:last-child>span {font-weight: 400;} +/*문자(등급별 요금 안내) 테이블 높이 수정*/ +.fee_cont .tType2 .level_table th{height: 42px;} + .fee_cont .tType1 select, .fee_cont .tType1 input{border: 0; background-color: #f2f2f2;} .fee_cont .btn_add{float: right;} .fee_cont .btn_add img{margin-left: 5px;} @@ -1189,6 +1244,14 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .tb_wrap.totalPrice_tb .tType4 tbody td {font-size: 18px; font-weight: 400; color: #222; height: 52px; line-height: 31px; position: relative;} .tb_wrap.totalPrice_tb .tType4 tbody td select {height: 36px; top: 8px; border: 2px solid; } + +/*문자(등급별 요금 안내)*/ +.fee_cont .tType2_level tbody tr th{font-weight: 300;} +.fee_cont .tType2_level tbody tr .level_price{font-weight: 500;} +.fee_cont .level_first{font-weight: 400; font-size: 18px; color: #666;} +.fee_cont .level span{font-weight: 400; font-size: 18px; color: #666;} +.fee_cont .tType2 .th_second span{font-size: 15px; font-weight: 300;} +.fee_cont .reqTxt4_last{text-indent: -12px; margin: 0px 0px 0px 11px;} /* //요금안내/견적내기 */ /* 예약관리 */ @@ -1559,7 +1622,7 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px /* .fax_content .final_wrap .pay_type {border-radius: 5px; height: 60px; padding: 12px 13px; box-sizing: border-box;} */ .fax_content .final_wrap .pay_type:last-child {margin-top: 10px;} /* .fax_content .final_wrap .pay_type>div:first-child {float: left;margin:0 0 0 5px; background-color: #fff;} */ -.fax_content .final_wrap .pay_type>div:first-child {display:inline-block;width: calc(100% - 187px); background-color: #fff;padding: 8px 15px; border-radius: 5px;} +.fax_content .final_wrap .pay_type>div:first-child {display:inline-block;width: calc(100% - 187px); background-color: #fff; padding: 8px 15px; border-radius: 5px;} .fax_content .final_wrap .pay_type>div .won {display:inline-block;margin:9px 11px 0 -34px;font-size:16px;vertical-align:top;color:#9a9a9a;} .fax_content .final_wrap .pay_type>div:last-child {display:inline-block;max-width: 150px; width: 100%;} .fax_content .final_wrap .pay_type>div:last-child button{width: 100%;} @@ -1598,6 +1661,9 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .fax_content .qmMark:hover+.send_hover_cont{display: block;} .fax_content .qmMark+.send_hover_cont li{text-indent: -9px; margin: 0 0 0 9px;} + + + /* 카톡전송 > 알림톡 소개 */ .kakao_intro_cont{letter-spacing: -0.5px; /*word-break: keep-all;*/} .kakao_intro_cont .heading h2{letter-spacing: 0;} diff --git a/src/main/webapp/publish/css/main.css b/src/main/webapp/publish/css/main.css index aa085512..ae62cd9e 100644 --- a/src/main/webapp/publish/css/main.css +++ b/src/main/webapp/publish/css/main.css @@ -202,6 +202,9 @@ .btn_custom img{vertical-align: middle; margin-top: -4px; margin-right: 2px;} .btn_custom:hover {box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);} +/*요금안내 top 배너 시작*/ +.price_top_banner{position: fixed; right: 4%; top: 160px; z-index: 20;} + /* media queries */ @media screen and (max-width: 1800px){ /* content2 문자샘플 영역 */ diff --git a/src/main/webapp/publish/css/mem.css b/src/main/webapp/publish/css/mem.css index c4a77d07..34ba0deb 100644 --- a/src/main/webapp/publish/css/mem.css +++ b/src/main/webapp/publish/css/mem.css @@ -293,7 +293,7 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare /* //join4 - 가입완료 */ -/* 마이페이지 */ + /* 메인화면 */ .my_dashboard {margin-top: 40px;} @@ -359,6 +359,7 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare .my_dashboard table tbody tr:last-child td {border-bottom: 1px solid transparent; } .my_dashboard table tbody tr:last-child td:first-child {border-bottom: 1px solid transparent; border-radius: 0 0 0 5px;} .my_dashboard table tbody tr:last-child td:last-child {border-bottom: 1px solid transparent; border-radius: 0 0 5px 0 ;} + /* mypage dashboard cont1 */ .my_dashboard .my_dashboard_cont1 {padding: 25px 30px;} .my_dashboard_cont1>div {display: flex; align-items: center;} @@ -367,6 +368,18 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare .my_dashboard .my_dashboard_cont1 button {font-size: 17px; height: 45px; padding: 0 15px; border: 1px solid #002c9a; border-radius: 5px; margin-left: 15px; color: #002c9a; background-color: #fff; position: relative; right: 5px; top: 3px;} .my_dashboard_cont1>span {background-color: #fff; height: 43px; padding: 0 30px; border-radius: 21.5px; align-items: center; display: flex; font-weight: 300;} .my_dashboard_cont1>span>span {font-weight: 500;} + +/* mypage dashboard cont1 등급제 기간 추가 - 기간 지나면 이부분 삭제 */ +.my_dashboard .my_dashboard_cont1 {padding: 25px 30px;} +.my_dashboard_cont1>div {display: flex; align-items: center;} +.my_dashboard_cont1 p {font-size: 16px; font-weight: 300;} +.my_dashboard_cont1 p span {font-size: 24px; font-weight: 600; padding-right: 3px; margin-left: -20px;} +.my_dashboard .my_dashboard_cont1 button {font-size: 17px; height: 45px; padding: 0 8px; border: 1px solid #002c9a; border-radius: 5px; margin-left: 15px; color: #002c9a; background-color: #fff; position: relative; right: 5px; top: 3px;} +.my_dashboard_cont1>span {background-color: #fff; height: 43px; padding: 0 30px; border-radius: 21.5px; align-items: center; display: flex; font-weight: 300;} +.my_dashboard_cont1>span>span {font-weight: 500;} +.my_dashboard .my_dashboard_cont1 .level_icon{margin: 0 7px 0 0; display: block; width: 46px; height: 80px; text-align: center; padding: 0; background-color: transparent; border: 0;} +.my_dashboard_cont1 .level_icon p{font-size: 14px; font-weight: 400; margin-top: 2px; color: #444;} + /* mypage dashboard cont2 */ .my_dashboard .my_dashboard_cont2 {width: 100%; flex-flow: wrap;} .dashboard_info {display: flex; flex-flow: wrap; width: 100%; justify-content: space-between;} @@ -642,6 +655,11 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare .limited_wrap .limited_button {margin:40px 0;} .limited_wrap .limited_button .btnType {width:160px;margin:0 3px;} +/* 마이페이지 */ +/*등급제 아이콘 추가*/ + + + /* media queries */ @@ -652,6 +670,14 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare .my_dashboard .send_price{width: calc(100% - 340px);} .send_top .send_price li{letter-spacing: -1px;} .send_top .send_price .title{padding: 0 4px 0 0;} + + /* mypage dashboard cont1 등급제 기간 추가 - 기간 지나면 이부분 삭제 */ + .my_dashboard_cont1 p {font-size: 17px;} + .my_dashboard_cont1 p span {font-size: 22px;} + .my_dashboard .my_dashboard_cont1 button {font-size: 16px; padding: 0 8px; margin: 0 0 0 13px; color: #002c9a;} + .my_dashboard_cont1 .level_icon{margin: 0 22px 0 0;} + .my_dashboard .send_price{margin: 0 -24px 0 0;} + .my_dashboard .send_price .price_title{width: 75px;} } @media only screen and (max-width:1380px){ diff --git a/src/main/webapp/publish/css/popupLayer.css b/src/main/webapp/publish/css/popupLayer.css index e7d9744a..43ade239 100644 --- a/src/main/webapp/publish/css/popupLayer.css +++ b/src/main/webapp/publish/css/popupLayer.css @@ -1114,6 +1114,15 @@ /* 결제완료 */ +/* 누적결제액 세부내역 팝업 */ +.level_popup .popup_heading p span{font-size: 18px; font-weight: 400;} +.level_popup .candidate_table .tb_wrap{min-height: auto;} +.level_popup .candidate_table table tr:first-child{border-top: 0;} +.level_popup .level_tx{margin: -20px 0 3px 0; font-size: 16px; font-weight: 300;} +.level_popup .layer_in .level_title th{ font-size: 15px; font-weight: 400; text-align: center;} +.level_popup .layer_in .level_text td{font-size: 15px; font-weight: 300; text-align: center; height: 40px;} +.level_popup .pagination{margin-top: 20px;} + /* ie */ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { /* 특수문자 */ diff --git a/src/main/webapp/publish/firstpay_event.html b/src/main/webapp/publish/firstpay_event.html index 4ad4c190..8a5fad62 100644 --- a/src/main/webapp/publish/firstpay_event.html +++ b/src/main/webapp/publish/firstpay_event.html @@ -282,388 +282,7 @@ 문자온 이벤트 및 혜택을 문자, 카카오톡, 메일로 수신하는 것에 동의합니다.
-->
-
-
-

충전수단 선택

-
    -
  • -
  • - -
  • -
  • -
-
- - -
-

신용카드

- - - - - - - - - - - - - - - - - - -
충전금액 - - - -
-
-
-
최종 결제금액 :
-
-
    -
  • 5,000원(공급가액) -
  • -
  • 500원(부가세) -
  • -
  • 5,500원(최종금액) -
  • -
-
-
- -
-
-
- -

- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다. -

-

- 카드사별 정책상 충전금액 제한이 있을 수 있습니다. 단, ARS 신용카드 - 결제는 충전금액 제한 없이 이용하실 수 있습니다.

-
-
-
- - - -
- -

계좌 이미 전용계좌

- - - - - - - - - - - - -
-
- - -

입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능, - 5천원 이상 입금 가능)

-
- -

1. 현재 발급받은 전용계좌가 없습니다.

-

2. 입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능, - 5천원 이상 입금 가능)

-
-
- - -
-
- - -

- -
- - -

계좌 이미 전용계좌

- - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
-
- 보유한 전용 계좌가 없습니다. -
-
-
-

- 전용계좌는 개설일로부터 3개월 미사용 시 자동 - 해지됩니다.

-

- 전용계좌에 5,000원 이상 입금 시, 연중무휴 - 실시간 자동 충전이 가능합니다.

- -

- 계좌번호 문자로 받기(일/3회까지) - - - -

-
-
-
- - - -
-

휴대폰결제

- - - - - - - - - - - - - - - - - - -
충전금액 - - - -
-
-
-
최종 결제금액 :
-
-
    -
  • 5,000원(공급가액) -
  • -
  • 500원(부가세) -
  • -
  • 5,500원(최종금액) -
  • -
-
-
- -
-
-
-

- 월 30만원 한도 내에서 충전하실 수 있습니다.

-

- 휴대폰 소액결제 제한에 관한 사항은 가입하신 통신사를 통해 확인하실 수 - 있습니다.

-

- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다. -

-
-
-
- - - -
-

즉시이체

- - - - - - - - - - - - - - - - - - -
충전금액 - - - -
-
-
-
최종 결제금액 :
-
-
    -
  • 5,000원(공급가액) -
  • -
  • 500원(부가세) -
  • -
  • 5,500원(최종금액) -
  • -
-
-
- -
-
-
-

- 나이스페이 결제를 이용하여 인터넷뱅킹처럼 로그인 없이 간단한 정보 입력만으로 - 실시간 계좌 이체

-

  (일반결제, 간편결제, 앱결제)를 할 수 있는 간편한 결제 - 수단입니다.(소득공제 및 지출증빙 가능)

-
-
-
- -
-
-
diff --git a/src/main/webapp/publish/firstpay_event2.html b/src/main/webapp/publish/firstpay_event2.html index a5896460..0901ce41 100644 --- a/src/main/webapp/publish/firstpay_event2.html +++ b/src/main/webapp/publish/firstpay_event2.html @@ -284,26 +284,24 @@

충전수단 선택

    -
  • -
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • -
  • -
  • + +
-
+
- +
-

신용카드

+

간편결제 간편결제

@@ -314,8 +312,7 @@ + + +
충전금액 - @@ -334,6 +331,7 @@ +

+

- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.

+

- 결제사별 정책상 충전금액 제한이 있을 수 있습니다.

+ +
+
+ + + +
+

신용카드 신용카드

+ + + + + + + + + + + + +
충전금액 + +

+ + +
+
+
+
최종 결제금액 :
+
+
    +
  • 50,000원(공급가액) +
  • +
  • 5,000원(부가세) +
  • +
  • 55,000원(최종금액)
@@ -383,11 +460,9 @@ -
+
-

계좌 이미 전용계좌

+

계좌 이미 전용계좌

@@ -398,18 +473,11 @@ @@ -417,84 +485,55 @@

- +
- - -

입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능, - 5천원 이상 입금 가능)

-
- -

1. 현재 발급받은 전용계좌가 없습니다.

-

2. 입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능, - 5천원 이상 입금 가능)

-
-
- +
+

1. 첫결제 이벤트는 최대 50만원까지만 적용이 됩니다.

+

2. 현재 발급받은 전용계좌가 없습니다.

+

3. 입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능, 5천원 이상 입금 가능)

+
- + -

계좌 이미 전용계좌

+

계좌 이미 전용계좌

- - - - - - - - - - - - - - - - + + + + + @@ -504,7 +543,7 @@ - + - + -
+

즉시이체

@@ -612,6 +651,7 @@ +

    +
  • firstpay_event.html충전수단 선택 내용 삭제
  • +
  • firstpay_event2.html충전수단 선택 내용 수정
  • +
  • payment2.html결제관리 > 결제하기 > 충전수단 선택 > 간편결제추가 + 등급별금액&누적결제액별 등급 및 단가(테이블 및 텍스트 추가)
  • +
  • firstpay_event2.html고객센터 > 이벤트페이지 > 충전수단 선택 내용 추가
  • +
  • index_2023.html로그인 바 > 등급별 아이콘 이미지 추가 + 홍길동(개인)으로 이름 변경 (님)자 제거 + 요금안내 페이지 이동 탑 배너 추가 + 퀵메뉴 > 맞춤제작을 요금안내로 변경
  • +
  • mypage_index_2023.html마이페이지 > 등급별 아이콘 버튼 추가 + 등급별 아이콘 버튼 클릭 > 팝업추가
  • +
  • payment3.html결제관리 > 요금결제내역 > 간편결제 결제내역 tap추가 + 등급 및 누적결제액 확인 버튼 추가 + 등급 및 누적결제액 확인 버튼 클릭 > 팝업추가
  • +
  • sub1_2023.html문자발송 > 문자전송 > 발송금액 > 나의단가 금액 추가
  • +
  • payment1.html결제관리 > 요금안내/견적안내(테이블 및 텍스트 추가)
  • kakao_allimtalk_intro.html카카오톡 소개
  • popup_pay_complete.html결제완료 팝업
  • payment4.html요금사용내역(발송내역, 세부내역 타이틀 추가)
  • diff --git a/src/main/webapp/publish/images/credit_small.png b/src/main/webapp/publish/images/credit_small.png new file mode 100644 index 00000000..087161fb Binary files /dev/null and b/src/main/webapp/publish/images/credit_small.png differ diff --git a/src/main/webapp/publish/images/level/accrue.png b/src/main/webapp/publish/images/level/accrue.png new file mode 100644 index 00000000..7ebdd0d9 Binary files /dev/null and b/src/main/webapp/publish/images/level/accrue.png differ diff --git a/src/main/webapp/publish/images/level/level_btn_icon.png b/src/main/webapp/publish/images/level/level_btn_icon.png new file mode 100644 index 00000000..c3754030 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_btn_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/black_icon.png b/src/main/webapp/publish/images/level/level_icon/black_icon.png new file mode 100644 index 00000000..0aa26ea8 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/black_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/blue_icon.png b/src/main/webapp/publish/images/level/level_icon/blue_icon.png new file mode 100644 index 00000000..ca9cce40 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/blue_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/gold_icon.png b/src/main/webapp/publish/images/level/level_icon/gold_icon.png new file mode 100644 index 00000000..7d2c8e61 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/gold_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/green_icon.png b/src/main/webapp/publish/images/level/level_icon/green_icon.png new file mode 100644 index 00000000..dab4101a Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/green_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/black_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/black_small_icon.png new file mode 100644 index 00000000..8d6ef200 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/black_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/blue_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/blue_small_icon.png new file mode 100644 index 00000000..3349825b Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/blue_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/gold_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/gold_small_icon.png new file mode 100644 index 00000000..d14870e0 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/gold_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/green_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/green_small_icon.png new file mode 100644 index 00000000..c1da37bd Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/green_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/orange_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/orange_small_icon.png new file mode 100644 index 00000000..af27d77a Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/orange_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/purple_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/purple_small_icon.png new file mode 100644 index 00000000..775fb708 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/purple_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/red_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/red_small_icon.png new file mode 100644 index 00000000..f916b1c9 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/red_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/sliver_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/sliver_small_icon.png new file mode 100644 index 00000000..7d4aa479 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/sliver_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/vip_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/vip_small_icon.png new file mode 100644 index 00000000..a88cbce9 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/vip_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/vvip_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/vvip_small_icon.png new file mode 100644 index 00000000..c52e8b65 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/vvip_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/white_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/white_small_icon.png new file mode 100644 index 00000000..81c24e75 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/white_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/level_small/yellow_small_icon.png b/src/main/webapp/publish/images/level/level_icon/level_small/yellow_small_icon.png new file mode 100644 index 00000000..bc4d240a Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/level_small/yellow_small_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/orange_icon.png b/src/main/webapp/publish/images/level/level_icon/orange_icon.png new file mode 100644 index 00000000..74aa9b8e Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/orange_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/purple_icon.png b/src/main/webapp/publish/images/level/level_icon/purple_icon.png new file mode 100644 index 00000000..c093a8e3 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/purple_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/red_icon.png b/src/main/webapp/publish/images/level/level_icon/red_icon.png new file mode 100644 index 00000000..b0c46298 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/red_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/sliver_icon.png b/src/main/webapp/publish/images/level/level_icon/sliver_icon.png new file mode 100644 index 00000000..df96cca0 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/sliver_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/vip_icon.png b/src/main/webapp/publish/images/level/level_icon/vip_icon.png new file mode 100644 index 00000000..6f23d051 Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/vip_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/vvip_icon.png b/src/main/webapp/publish/images/level/level_icon/vvip_icon.png new file mode 100644 index 00000000..0f3fb16f Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/vvip_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/white_icon.png b/src/main/webapp/publish/images/level/level_icon/white_icon.png new file mode 100644 index 00000000..7cdb0abd Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/white_icon.png differ diff --git a/src/main/webapp/publish/images/level/level_icon/yellow_icon.png b/src/main/webapp/publish/images/level/level_icon/yellow_icon.png new file mode 100644 index 00000000..3f72005e Binary files /dev/null and b/src/main/webapp/publish/images/level/level_icon/yellow_icon.png differ diff --git a/src/main/webapp/publish/images/level/quick12.png b/src/main/webapp/publish/images/level/quick12.png new file mode 100644 index 00000000..8b90aa80 Binary files /dev/null and b/src/main/webapp/publish/images/level/quick12.png differ diff --git a/src/main/webapp/publish/images/level/quick12_hover.png b/src/main/webapp/publish/images/level/quick12_hover.png new file mode 100644 index 00000000..36e17d05 Binary files /dev/null and b/src/main/webapp/publish/images/level/quick12_hover.png differ diff --git a/src/main/webapp/publish/images/level/top_banner.png b/src/main/webapp/publish/images/level/top_banner.png new file mode 100644 index 00000000..941763cb Binary files /dev/null and b/src/main/webapp/publish/images/level/top_banner.png differ diff --git a/src/main/webapp/publish/images/main/f_visual_01_20230706.jpg b/src/main/webapp/publish/images/main/f_visual_01_20230706.jpg new file mode 100644 index 00000000..4d1cde5d Binary files /dev/null and b/src/main/webapp/publish/images/main/f_visual_01_20230706.jpg differ diff --git a/src/main/webapp/publish/images/main/f_visual_03_20230706.jpg b/src/main/webapp/publish/images/main/f_visual_03_20230706.jpg new file mode 100644 index 00000000..8e112194 Binary files /dev/null and b/src/main/webapp/publish/images/main/f_visual_03_20230706.jpg differ diff --git a/src/main/webapp/publish/images/main/f_visual_06_20230712.jpg b/src/main/webapp/publish/images/main/f_visual_06_20230712.jpg new file mode 100644 index 00000000..c76b5982 Binary files /dev/null and b/src/main/webapp/publish/images/main/f_visual_06_20230712.jpg differ diff --git a/src/main/webapp/publish/images/main/popup_allimtalk_230712.jpg b/src/main/webapp/publish/images/main/popup_allimtalk_230712.jpg new file mode 100644 index 00000000..a5c3b439 Binary files /dev/null and b/src/main/webapp/publish/images/main/popup_allimtalk_230712.jpg differ diff --git a/src/main/webapp/publish/images/simple.png b/src/main/webapp/publish/images/simple.png new file mode 100644 index 00000000..658b07cb Binary files /dev/null and b/src/main/webapp/publish/images/simple.png differ diff --git a/src/main/webapp/publish/images/simple_small.png b/src/main/webapp/publish/images/simple_small.png new file mode 100644 index 00000000..3a909637 Binary files /dev/null and b/src/main/webapp/publish/images/simple_small.png differ diff --git a/src/main/webapp/publish/index_2023.html b/src/main/webapp/publish/index_2023.html index 0075cb1e..93c8db7d 100644 --- a/src/main/webapp/publish/index_2023.html +++ b/src/main/webapp/publish/index_2023.html @@ -70,7 +70,16 @@
-
+ + 최저 8.1원 요금안내 + + + + + + + + --> + +
+
+

QUICK
MENU

+

QUICK

+ + +
+ +
+ +
-
- - - - -
- -
-
-
- 보유한 전용 계좌가 없습니다. -
-
+
+ 보유한 전용 계좌가 없습니다. +
+
-

- 전용계좌는 개설일로부터 3개월 미사용 시 자동 - 해지됩니다.

-

- 전용계좌에 5,000원 이상 입금 시, 연중무휴 - 실시간 자동 충전이 가능합니다.

+

- 첫결제 이벤트는 최대 50만원까지만 적용이 됩니다.

+

- 전용계좌는 개설일로부터 3개월 미사용 시 자동 해지됩니다.

+

- 전용계좌에 5,000원 이상 입금 시, 연중무휴 실시간 자동 충전이 가능합니다.

-

- 계좌번호 문자로 받기(일/3회까지) +

- 계좌번호 문자로 받기(일/3회까지) - - + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분결제일시결제금액누적금액등급
12023-06-15 10:001,500,0002,100,000오렌지
22023-05-16 10:00500,000600,000옐로우
32023-04-15 10:00100,000100,000화이트
+
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+ +
+ + + +
@@ -149,28 +228,65 @@

마이페이지

-
+
+
-

홍길동회원님 반갑습니다

+

+ 홍길동회원님 반갑습니다 +

+
-
나의
단가
+
나의
단가
-
    -
  • 문자
  • -
  • 단문18
  • -
  • 장문50
  • -
  • 그림90 원 (2장 : 110원 / 3장 : 130원)
  • -
-
    -
  • 카톡
  • -
  • 알림톡6.9
  • -
  • 팩스
  • -
  • 팩스58
  • -
  • -

    ※ 이벤트 단가 적용기간 : 2022-05-13 ~ 2022-07-12(29일 남음)

    -
  • -
+
    +
  • + 문자 +
  • +
  • + 단문 + + 18 + 원 +
  • +
  • + 장문 + + 50 + 원 +
  • +
  • + 그림 + + 90 + 원 + (2장 : 110원 / 3장 : 130원) +
  • +
+
    +
  • + 카톡 +
  • +
  • + 알림톡 + + 6.9 + 원 +
  • +
  • + 팩스 +
  • +
  • + 팩스 + + 58 + 원 +
  • +
diff --git a/src/main/webapp/publish/payment1.html b/src/main/webapp/publish/payment1.html index c3eef265..a60a039a 100644 --- a/src/main/webapp/publish/payment1.html +++ b/src/main/webapp/publish/payment1.html @@ -247,7 +247,7 @@
-

문자이미지 문자

+

문자이미지 문자(등급 : 화이트)

@@ -259,28 +259,173 @@ - + - + - + - +
구분 특징가격단가
단문(SMS) 90Byte 이하 단문 메시지(이미지 첨부 불가)2518.0
장문(LMS) 91~2,000Byte 이하 장문메시지(이미지 첨부 불가)5050.0
그림문자(MMS) 2,000Byte 이하 문자 및 이미지를 포함하는그림메시지(이미지 최대 3장 첨부 가능) 1장 : 90원 / 2장 : 120원/ 3장 : 1501장 : 90.0원 / 2장 : 110.0원/ 3장 : 130.0
- * 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지. + +

문자이미지 문자(등급별 요금 안내)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
등급누적결제액(2023-06-28 ~ 현재)단문장문그림(1장)그림(2장)그림(3장)
VVIP10,000,0008.132657580
VIP9,000,0008.533667683
골드8,000,000934677785
실버7,000,0001035687890
블랙6,000,0001136697995
레드5,000,00012387280100
퍼플4,000,00013407585105
블루3,000,00014427890110
오렌지2,000,00015448195115
그린1,000,000164684100120
옐로우500,000174887105125
화이트0185090110130
+ + * 등급별 요금제는 당사의 정책 및 운영의 필요상 수정, 중단 또는 변경될 수 있습니다.
+ * 누적결제액은 등급별 요금제 적용일로부터 적립된 결제금액을 말하며, 누적결제액에 따라 등급은 자동으로 적용됩니다.
+ * "첫결제 이벤트" 등 이벤트 결제금액은 등급별 요금제 누적결제액에서 제외됩니다.
+
+

+ * 문자피싱, 스미싱, 주식, 도박, 로또, 스팸, 사기, 협박, 범죄, 유사투자, 유사수신 등을 목적으로 하거나 교사 또는 방조하는 내용의 정보, 발신번호 조작 등으로 인지되는 문자에 대해서는 사전 또는 즉시 발송을 차단하고 + 이용을 정지시킬 수 있으며, 이에 대한 어떠한 환불이나 보상을 실시하지 않습니다. 또한, 상기 문자를 발송한 회원에 대해서는 그 즉시 등급별 요금제 혜택을 취소합니다. +

+ +

알림톡 아이콘 이미지 알림톡

diff --git a/src/main/webapp/publish/payment2.html b/src/main/webapp/publish/payment2.html index 81f269f9..19c1c6ec 100644 --- a/src/main/webapp/publish/payment2.html +++ b/src/main/webapp/publish/payment2.html @@ -2,257 +2,381 @@ - - - 문자온 + + + 문자온 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + -
- - - -
-
-

QUICK
MENU

-

QUICK

- - -
-
- - - - -
-
- -
- -
    -
  • -
  • -
  • -
  • -
  • -
+
+ + + + +
+
+

QUICK
MENU

+

QUICK

+ + +
+
+ + + + + + +
+
+ +
+ +
    +
  • +
  • +
  • +
  • +
  • +
+ -
-
-

결제하기

-
-
+
+
+

결제하기

+
+

충전수단 선택

    -
  • -
  • +
  • +
  • +
  • +
  • +
  • -
  • -
  • +
  • +
  • +
  • +
-
선택한 수단을 다음 충전 시에도 +
선택한 수단을 + 다음 충전 시에도 이용합니다.
- +
-

신용카드

+

간편결제 스몰 아이콘 + 간편결제

- - + + + + + + +
충전금액 - + +

- - - - - - ※ 최소 3천원 이상부터 결제 가능합니다. + +
+
+
+
최종 결제금액 :
+
+
    +
  • 50,000원(공급가액)
  • +
  • 5,000원(부가세)
  • +
  • 55,000원(최종금액)
  • +
+
+
+ +
-

- 신용카드 결제가 어려우신 고객께서는 ARS 신용카드 결제(080-1234-5678 전화 후 결제정보 입력)를 통해서도 이용 가능합니다.

-

- 팝업차단 해제 후 충전 가능합니다(도구 → 팝업차단 메뉴에서 설정)

-

- 카드사별 정책상 금액제한이 있을 수 있습니다. 단, ARS 신용카드 결제는 충전금액 제한없이 이용하실 수 있습니다.

+

- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.

+

- 결제사별 정책상 충전금액 제한이 있을 수 있습니다.

+
+
+
+ + +
+

신용카드 + 신용카드

+ + + + + + + + + + + + + + +
충전금액 + + +

+ +
+
+
+
최종 결제금액 :
+
+
    +
  • 50,000원(공급가액)
  • +
  • 5,000원(부가세)
  • +
  • 55,000원(최종금액)
  • +
+
+
+ +
+
+
+

- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.

+

- 카드사별 정책상 충전금액 제한이 있을 수 있습니다. 단, ARS 신용카드 결제는 충전금액 제한 없이 이용하실 수 + 있습니다.

-
- -
- -
- -

계좌 이미 전용계좌

+ +
+ +

계좌 이미 전용계좌

@@ -264,32 +388,32 @@

1. 현재 발급받은 전용계좌가 없습니다.

-

2. 평생 같은 계좌번호로 입금 즉시 자동 충전되는 전용계좌를 사용해보세요(5,000원 이상부터 입금 가능)

-

3. 발급받은 전용계좌는 3개월 미사용시 자동 해지됩니다.

+

2. 입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능, 5천원 이상 입금 가능)

+
- - - - - - - - - - - + + + + + + - +

+
- -

계좌 이미 전용계좌

+ +

계좌 이미 전용계좌

@@ -298,23 +422,28 @@ - - @@ -324,7 +453,7 @@ -
+ -
-

휴대폰결제

+
+

+ 휴대폰결제

-
기업은행 08202827497137
-
+ +
+ 보유한 전용 계좌가 없습니다. +

- 전용계좌는 개설일로부터 3개월 미사용 시 자동 해지됩니다.

-

- 전용계좌에 5,000원 이상 입금 시, 연중무휴 실시간 자동 충전됩니다.

-

- 예금주 : 문자온

-

- 계좌번호 문자로 받기(일/3회까지) - - - -

+

- 전용계좌에 5,000원 이상 입금 시, 연중무휴 실시간 자동 충전이 + 가능합니다.

+ +

- 계좌번호 문자로 받기(일/3회까지) + + + +

@@ -410,39 +548,61 @@ - + + + +
충전금액 - + +

- - - - - - ※ 최소 3천원 이상부터 결제 가능합니다. + +
+
+
+
최종 결제금액 :
+
+
    +
  • 50,000원(공급가액)
  • +
  • 5,000원(부가세)
  • +
  • 55,000원(최종금액)
  • +
+
+
+ +
-

- 월 30만원 한도 내에서 충전할 수 있습니다.

-

- 그 외 휴대폰 소액결제 제한은 가입하신 통신사를 통해 확인할 수 있습니다.

-

- 팝업차단 해제 후 충전 가능합니다.(도구>팝업차단 메뉴에서 설정)

+

- 월 30만원 한도 내에서 충전하실 수 있습니다.

+

- 휴대폰 소액결제 제한에 관한 사항은 가입하신 통신사를 통해 확인하실 수 있습니다.

+

- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.

-
- -
-
-

즉시이체

+
+

+ 즉시이체

@@ -450,70 +610,262 @@ - + + + +
충전금액 - + +

- - - - - - ※ 최소 3천원 이상부터 결제 가능합니다. + +
+
+
+
최종 결제금액 :
+
+
    +
  • 50,000원(공급가액)
  • +
  • 5,000원(부가세)
  • +
  • 55,000원(최종금액)
  • +
+
+
+ +
-

- 결제사의 인터넷뱅킹을 이용한 계좌이체(법인계좌불가)입니다.

-

- 기존 인터넷뱅킹을 이용하시는 경우 해당 이체를 통해 무통장입금을 이용하시는게 편리할 수 있습니다,

+

- 나이스페이 결제를 이용하여 인터넷뱅킹처럼 로그인 없이 간단한 정보 입력만으로 실시간 계좌 이체

+

  (일반결제, 간편결제, 앱결제)를 할 수 있는 간편한 결제 수단입니다.(소득공제 및 지출증빙 가능)

-
- -
+ + +
+

등급 : 등급 스몰 아이콘오렌지(누적결제액 :                  200,000원)

+ +
+
+

누적결제액별 등급 및 단가 아이콘 누적결제액별 등급 및 단가 +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
등급누적결제액(2023-06-28 ~ 현재)단문장문그림(1장)그림(2장)그림(3장)
VVIP10,000,0008.132657580
VIP9,000,0008.533667683
골드8,000,000934677785
실버7,000,0001035687890
블랙6,000,0001136697995
레드5,000,00012387280100
퍼플4,000,00013407585105
블루3,000,00014427890110
오렌지2,000,00015448195115
그린1,000,000164684100120
옐로우500,000174887105125
화이트0185090110130
+ + * 등급별 요금제는 당사의 정책 및 운영의 필요상 수정, 중단 또는 변경될 수 있습니다.
+ * 누적결제액은 등급별 요금제 적용일로부터 적립된 결제금액을 말하며, 누적결제액에 따라 등급은 자동으로 적용됩니다.
+ * "첫결제 이벤트" 등 이벤트 결제금액은 등급별 요금제 누적결제액에서 제외됩니다.
+
+

+ * 문자피싱, 스미싱, 주식, 도박, 로또, 스팸, 사기, 협박, 범죄, 유사투자, 유사수신 등을 목적으로 하거나 교사 또는 방조하는 내용의 정보, 발신번호 조작 + 등으로 인지되는 문자에 대해서는 + 사전 또는 즉시 발송을 차단하고 + 이용을 정지시킬 수 있으며, 이에 대한 어떠한 환불이나 보상을 실시하지 않습니다. 또한, 상기 문자를 발송한 회원에 대해서는 그 즉시 등급별 요금제 혜택을 + 취소합니다. +

+ +
-
-
-
- -
- - -
- + + + + + + +
+ + +
+ + + + \ No newline at end of file diff --git a/src/main/webapp/publish/payment3.html b/src/main/webapp/publish/payment3.html index 61536953..aa1e0c06 100644 --- a/src/main/webapp/publish/payment3.html +++ b/src/main/webapp/publish/payment3.html @@ -6,7 +6,8 @@ 문자온 - + @@ -15,29 +16,32 @@ - - + + - + +
-
- +
- - + + + + - + + + +
@@ -231,331 +329,494 @@
  • - - + + +

    요금결제내역

    -
    - -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    -
    - -
    - - - - - - - - - -
    요금결제내역 기간설정에 대한 표
    기간설정 -
    - -
    - - -
    - ~ - -
    - +
    + +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    + +
    + +
    + + + + + + + + + + + + +
    요금결제내역 기간설정에 대한 표
    기간설정 +
    + +
    + +
    - - - - + ~ + +
    + +
    +
    + + + + +
    +
    +
    +
    ※ 요금 결제내역은 결제일을 기준으로 최대 6개월까지만 조회 가능합니다.
    +
    + + + + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + 번호 +
    + + +
    +
    + 결제일시 +
    + + +
    +
    + 결제방식 +
    + + +
    +
    + 결제금액 +
    + + +
    +
    결제정보증빙서류 발행 요청
    + + + +

    1

    +
    +

    2021-06-25, 09:30:52

    +
    +

    신용카드

    +
    +

    199,000

    +
    +

    신한카드 카드승인번호 : 12345678

    +
    + + + +

    2

    +
    +

    2021-06-25, 09:30:52

    +
    +

    무통장입금

    +
    +

    199,000

    +
    +

    신한카드 우리은행 : 1234-56-78901

    +
    + + + +

    3

    +
    +

    2021-06-25, 09:30:52

    +
    +

    포인트

    +
    +

    199,000

    +
    +

    사용포인트(수수료 포함) : 5,250

    +
    + + + +

    4

    +
    +

    2021-06-25, 09:30:52

    +
    +

    전용계좌

    +
    +

    199,000

    +
    +

    전용계좌번호 : 1234-56-78901

    +
    + + + +

    5

    +
    +

    2021-06-25, 09:30:52

    +
    +

    휴대폰

    +
    +

    199,000

    +
    +

    결제 휴대폰 번호 : 010-1234-5678

    +
    + + + +

    6

    +
    +

    2021-06-25, 09:30:52

    +
    +

    즉시이체

    +
    +

    199,000

    +
    +

    출금계좌 국민은행 : 1234-56-78901

    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + 번호 +
    + + +
    +
    + 결제일시 +
    + + +
    +
    + 결제방식 +
    + + +
    +
    + 결제금액 +
    + + +
    +
    결제정보증빙서류 발행 요청
    + + + +

    1

    +
    +

    2021-06-25, 09:30:52

    +
    +

    신용카드

    +
    +

    199,000

    +
    +

    신한카드 카드승인번호 : 12345678

    +
    + + + +

    2

    +
    +

    2021-06-25, 09:30:52

    +
    +

    무통장입금

    +
    +

    199,000

    +
    +

    신한카드 우리은행 : 1234-56-78901

    +
    +

    세금계산서 발행완료

    +
    + + + +

    3

    +
    +

    2021-06-25, 09:30:52

    +
    +

    포인트

    +
    +

    199,000

    +
    +

    사용포인트(수수료 포함) : 5,250

    +
    -
    + + + +

    4

    +
    +

    2021-06-25, 09:30:52

    +
    +

    전용계좌

    +
    +

    199,000

    +
    +

    전용계좌번호 : 1234-56-78901

    +
    +

    현금계산서 발행완료

    +
    + + + +

    5

    +
    +

    2021-06-25, 09:30:52

    +
    +

    휴대폰

    +
    +

    199,000

    +
    +

    결제 휴대폰 번호 : 010-1234-5678

    +
    +

    세금계산서 발행대기

    +
    + + + +

    6

    +
    +

    2021-06-25, 09:30:52

    +
    +

    즉시이체

    +
    +

    199,000

    +
    +

    출금계좌 국민은행 : 1234-56-78901

    +
    +

    세금계산서 발행대기

    -
    -
    -
    ※ 요금 결제내역은 결제일을 기준으로 최대 6개월까지만 조회 가능합니다.
    -
    - - - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - 번호 -
    - - -
    -
    - 결제일시 -
    - - -
    -
    - 결제방식 -
    - - -
    -
    - 결제금액 -
    - - -
    -
    결제정보증빙서류 발행 요청
    - - -

    1

    2021-06-25, 09:30:52

    신용카드

    199,000

    신한카드 카드승인번호 : 12345678

    - - -

    2

    2021-06-25, 09:30:52

    무통장입금

    199,000

    신한카드 우리은행 : 1234-56-78901

    - - -

    3

    2021-06-25, 09:30:52

    포인트

    199,000

    사용포인트(수수료 포함) : 5,250

    - - -

    4

    2021-06-25, 09:30:52

    전용계좌

    199,000

    전용계좌번호 : 1234-56-78901

    - - -

    5

    2021-06-25, 09:30:52

    휴대폰

    199,000

    결제 휴대폰 번호 : 010-1234-5678

    - - -

    6

    2021-06-25, 09:30:52

    즉시이체

    199,000

    출금계좌 국민은행 : 1234-56-78901

    -
    - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - 번호 -
    - - -
    -
    - 결제일시 -
    - - -
    -
    - 결제방식 -
    - - -
    -
    - 결제금액 -
    - - -
    -
    결제정보증빙서류 발행 요청
    - - -

    1

    2021-06-25, 09:30:52

    신용카드

    199,000

    신한카드 카드승인번호 : 12345678

    - - -

    2

    2021-06-25, 09:30:52

    무통장입금

    199,000

    신한카드 우리은행 : 1234-56-78901

    세금계산서 발행완료

    - - -

    3

    2021-06-25, 09:30:52

    포인트

    199,000

    사용포인트(수수료 포함) : 5,250

    -
    - - -

    4

    2021-06-25, 09:30:52

    전용계좌

    199,000

    전용계좌번호 : 1234-56-78901

    현금계산서 발행완료

    - - -

    5

    2021-06-25, 09:30:52

    휴대폰

    199,000

    결제 휴대폰 번호 : 010-1234-5678

    세금계산서 발행대기

    - - -

    6

    2021-06-25, 09:30:52

    즉시이체

    199,000

    출금계좌 국민은행 : 1234-56-78901

    세금계산서 발행대기

    -
    - +
    +
      -
    • -
    • +
    • +
    • @@ -566,222 +827,236 @@
    • -
    • -
    • +
    • +
    -
    - -
    -
    -

    - 포인트는 환불되지 않습니다.

    -

    - 환불 신청 금액에 따라 환불 수수료가 차감됩니다.

    -

    - 결제 방식에 따라 환불 수수료는 다르게 적용될 수 있습니다.

    -

    - 취소 처리기간 경과시에 증빙서류를 첨부해야 환불처리 가능하며, 결제대행 수수료가 부과됩니다.

    -

    - 1,000원 이하의 잔액은 환불이 불가합니다.

    -

    - 무통장입금 제외 모든 결제는 부분취소가 불가하여, 사용금액(차액) 결제 후 전액취소를 원칙으로 합니다.

    -

     (예) 핸드폰 3만원 결제 후 3천원 사용한 경우, 3,300원(부가세포함)송금 또는 3천원 핸드폰 결제 후 3만원 전액취소

    -

    - 환불업무는 매주 수요일에 순차적으로 처리됩니다.

    -
    - + +
    +
    +

    - 포인트는 환불되지 않습니다.

    +

    - 환불 신청 금액에 따라 환불 수수료가 차감됩니다.

    +

    - 결제 방식에 따라 환불 수수료는 다르게 적용될 수 있습니다.

    +

    - 취소 처리기간 경과시에 증빙서류를 첨부해야 환불처리 가능하며, 결제대행 수수료가 부과됩니다.

    +

    - 1,000원 이하의 잔액은 환불이 불가합니다.

    +

    - 무통장입금 제외 모든 결제는 부분취소가 불가하여, 사용금액(차액) 결제 후 전액취소를 원칙으로 합니다.

    +

     (예) 핸드폰 3만원 결제 후 3천원 사용한 경우, 3,300원(부가세포함)송금 또는 3천원 핸드폰 결제 후 3만원 전액취소

    +

    - 환불업무는 매주 수요일에 순차적으로 처리됩니다.

    +
    + -
      -
    • -
      -
      - 증빙서류 및 환불수수료 안내 - +
        +
      • +
        +
        + 증빙서류 및 환불수수료 안내 + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        증빙서류 및 환불수수료 안내
        결제방법취소가능기간증빙서류환불수수료
        전용계좌명의자 계좌로 환불이체확인증(이체한 통장내역) 통장사본환불금액의 3%
        신용카드결제일 기준 2개월 내 취소가능통장사본환불금액의 5%
        무통장입금명의자 계좌로 환불이체확인증(이체한 통장내역) 통장사본환불금액의 3%
        휴대폰결제결제 당월 취소가능결제당월 일반 전화요금 납입영수증, 일반전화 명의자의 통장사본환불금액의 8%
        즉시이체결제 당일건만 취소가능통장사본환불금액의 5%
        +
        +
      • +
      +

      환불 금액 입력

      + + + + + + + + + + + + + + + + + + + + +
      환불 가능, 신청, 예정에 대한 표
      환불 가능 금액120,000
      환불 신청 금액 + + + + + 전액환불(1,000원 이하 환불 불가) +
      환불 예정 금액120,000(수수료 10% 제외)
      +

      환불 계좌 입력 (가입자가 충전하지 않았거나 타인의 계좌로 환불신청하는 경우 별도 서류가 요구될 수 있으며, 서류 + 불충분 시 환불되지 않습니다.)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      예금주, 계좌정보, 연락처, 통장사본, 증빙서류에 대한 표
      예금주 + + + + + + +
      계좌정보 + + + + + +
      연락처 + + +
      통장사본 + + + + ※ 파일첨부가 안되시는 경우, 메일 munjaon@iten.co.kr로 보내주세요 +
      증빙서류 + + + + ※ 이체확인증 또는 핸드폰 납부 영수증을 첨부해주세요 +
      +

      환불 사유

      + + + + + + + + + + + + + + + + +
      환불사유, 비밀번호에 대한 표
      환불사유 +
      + + + + + +
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      증빙서류 및 환불수수료 안내
      결제방법취소가능기간증빙서류환불수수료
      전용계좌명의자 계좌로 환불이체확인증(이체한 통장내역) 통장사본환불금액의 3%
      신용카드결제일 기준 2개월 내 취소가능통장사본환불금액의 5%
      무통장입금명의자 계좌로 환불이체확인증(이체한 통장내역) 통장사본환불금액의 3%
      휴대폰결제결제 당월 취소가능결제당월 일반 전화요금 납입영수증, 일반전화 명의자의 통장사본환불금액의 8%
      즉시이체결제 당일건만 취소가능통장사본환불금액의 5%
      -
      - - -

      환불 금액 입력

      - - - - - - - - - - - - - - - - - - - - -
      환불 가능, 신청, 예정에 대한 표
      환불 가능 금액120,000
      환불 신청 금액 - - - - - 전액환불(1,000원 이하 환불 불가) -
      환불 예정 금액120,000(수수료 10% 제외)
      -

      환불 계좌 입력 (가입자가 충전하지 않았거나 타인의 계좌로 환불신청하는 경우 별도 서류가 요구될 수 있으며, 서류 불충분 시 환불되지 않습니다.)

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      예금주, 계좌정보, 연락처, 통장사본, 증빙서류에 대한 표
      예금주 - - - - - - -
      계좌정보 - - - - - -
      연락처 - - -
      통장사본 - - - - ※ 파일첨부가 안되시는 경우, 메일 munjaon@iten.co.kr로 보내주세요 -
      증빙서류 - - - - ※ 이체확인증 또는 핸드폰 납부 영수증을 첨부해주세요 -
      -

      환불 사유

      - - - - - - - - - - - - - - - - -
      환불사유, 비밀번호에 대한 표
      환불사유 -
      - - - - - - -
      -
      - - - - - - -
      -
      비밀번호 - - -
      -
      - -
      - - - +
      + + + + + + +
      +
      비밀번호 + + +
      +
      + +
      +
      +
      +
    +
    -
    +
    +
    -
    - + + + + + \ No newline at end of file diff --git a/src/main/webapp/publish/sub1_2023.html b/src/main/webapp/publish/sub1_2023.html index 3fcf0dcc..e27bc753 100644 --- a/src/main/webapp/publish/sub1_2023.html +++ b/src/main/webapp/publish/sub1_2023.html @@ -1507,6 +1507,30 @@
    + +
    +
    +
      +
    • + 나의 단가  :   +
    • +
    • + 단문 + 18원 + /   +
    • +
    • + 장문 + 50원 + /   +
    • +
    • + 그림 + 90원 + (2장 : 110원 / 3장 : 130원) +
    • +
    +