diff --git a/src/main/java/itn/com/cmm/MjonMsgTabulVO.java b/src/main/java/itn/com/cmm/MjonMsgTabulVO.java new file mode 100644 index 00000000..69294e16 --- /dev/null +++ b/src/main/java/itn/com/cmm/MjonMsgTabulVO.java @@ -0,0 +1,20 @@ +package itn.com.cmm; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +public class MjonMsgTabulVO{ + + private static final long serialVersionUID = 1L; + + private String name; + private String phone; + private String rep1; + private String rep2; + private String rep3; + private String rep4; +} 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 98e93fe0..8b8402b6 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java @@ -1,9 +1,18 @@ package itn.let.mjo.msg.service; +import java.util.ArrayList; import java.util.List; -import itn.com.cmm.ComDefaultVO; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import itn.com.cmm.ComDefaultVO; +import itn.com.cmm.MjonMsgTabulVO; +import lombok.Getter; +import lombok.Setter; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Getter +@Setter public class MjonMsgVO extends ComDefaultVO{ private static final long serialVersionUID = 1L; @@ -68,6 +77,7 @@ public class MjonMsgVO extends ComDefaultVO{ private String msgGroupId; // 전송그룹ID (대량문자의 경우 하나의 그룹으로 세팅) private String msgGroupCnt; // 전송그룹 카운트 private String[] imgFilePath; // 그림 이미지 경로 + private String imgFilePathAdvc; // 그림 이미지 경로 private String neoType; // 아이엠오 장문, 그림 타입 지정 private int msgCnt; // 아이엠오 장문, 그림 타입 지정 private String eachPrice ; // 전송문자 개별가격 @@ -84,7 +94,9 @@ public class MjonMsgVO extends ComDefaultVO{ private String ntceBgnde; // 검색일(현시점 범위 검색은 아님) : 04-21 private String ntceEndde; // 검색일(현시점 범위 검색은 아님) : 04-21 private String[] imgFileId; //이미지 atchId 배열 + private String imgFileIdAdvc; //이미지 atchId 배열 private String[] templateYn; //템플릿 이미지 사용 여부 + private String templateYnAdvc; //템플릿 이미지 사용 여부 private String divideChk; //분할문자 사용 여부 private String divideCnt; //분할문자 건수 @@ -212,273 +224,15 @@ public class MjonMsgVO extends ComDefaultVO{ private String cancelResultYn = ""; //야간스미싱 알림에 따른 관리자 결과(회원이용정지 또는 문자발송 취소) 처리 여부 N:미처리, Y:처리완료 private String admSmsImgAuto = "N"; //관리자 SMS 문자내용 자동 이미치 처리 유무 - - public String getSearchDelayMsgYn() { - return searchDelayMsgYn; - } - public void setSearchDelayMsgYn(String searchDelayMsgYn) { - this.searchDelayMsgYn = searchDelayMsgYn; - } - public int getSmsGroupSCntSum() { - return smsGroupSCntSum; - } - public void setSmsGroupSCntSum(int smsGroupSCntSum) { - this.smsGroupSCntSum = smsGroupSCntSum; - } - public int getSmsTotSPriceSum() { - return smsTotSPriceSum; - } - public void setSmsTotSPriceSum(int smsTotSPriceSum) { - this.smsTotSPriceSum = smsTotSPriceSum; - } - public int getSmsGroupFWCntSum() { - return smsGroupFWCntSum; - } - public void setSmsGroupFWCntSum(int smsGroupFWCntSum) { - this.smsGroupFWCntSum = smsGroupFWCntSum; - } - public int getSmsTotFWPriceSum() { - return smsTotFWPriceSum; - } - public void setSmsTotFWPriceSum(int smsTotFWPriceSum) { - this.smsTotFWPriceSum = smsTotFWPriceSum; - } - public int getLmsGroupSCntSum() { - return lmsGroupSCntSum; - } - public void setLmsGroupSCntSum(int lmsGroupSCntSum) { - this.lmsGroupSCntSum = lmsGroupSCntSum; - } - public int getLmsTotSPriceSum() { - return lmsTotSPriceSum; - } - public void setLmsTotSPriceSum(int lmsTotSPriceSum) { - this.lmsTotSPriceSum = lmsTotSPriceSum; - } - public int getLmsGroupFWCntSum() { - return lmsGroupFWCntSum; - } - public void setLmsGroupFWCntSum(int lmsGroupFWCntSum) { - this.lmsGroupFWCntSum = lmsGroupFWCntSum; - } - public int getLmsTotFWPriceSum() { - return lmsTotFWPriceSum; - } - public void setLmsTotFWPriceSum(int lmsTotFWPriceSum) { - this.lmsTotFWPriceSum = lmsTotFWPriceSum; - } - public int getMmsGroupSCntSum() { - return mmsGroupSCntSum; - } - public void setMmsGroupSCntSum(int mmsGroupSCntSum) { - this.mmsGroupSCntSum = mmsGroupSCntSum; - } - public int getMmsTotSPriceSum() { - return mmsTotSPriceSum; - } - public void setMmsTotSPriceSum(int mmsTotSPriceSum) { - this.mmsTotSPriceSum = mmsTotSPriceSum; - } - public int getMmsGroupFWCntSum() { - return mmsGroupFWCntSum; - } - public void setMmsGroupFWCntSum(int mmsGroupFWCntSum) { - this.mmsGroupFWCntSum = mmsGroupFWCntSum; - } - public int getMmsTotFWPriceSum() { - return mmsTotFWPriceSum; - } - public void setMmsTotFWPriceSum(int mmsTotFWPriceSum) { - this.mmsTotFWPriceSum = mmsTotFWPriceSum; - } - public int getRateSuccessCount() { - return rateSuccessCount; - } - public void setRateSuccessCount(int rateSuccessCount) { - this.rateSuccessCount = rateSuccessCount; - } - public int getRateApiSuccessCount() { - return rateApiSuccessCount; - } - public void setRateApiSuccessCount(int rateApiSuccessCount) { - this.rateApiSuccessCount = rateApiSuccessCount; - } - public int getTotalSendCount() { - return totalSendCount; - } - public void setTotalSendCount(int totalSendCount) { - this.totalSendCount = totalSendCount; - } - public int getTotalSuccessCount() { - return totalSuccessCount; - } - public void setTotalSuccessCount(int totalSuccessCount) { - this.totalSuccessCount = totalSuccessCount; - } - public int getRateTotalSuccessCount() { - return rateTotalSuccessCount; - } - public void setRateTotalSuccessCount(int rateTotalSuccessCount) { - this.rateTotalSuccessCount = rateTotalSuccessCount; - } - public int getaSuccessCount() { - return aSuccessCount; - } - public void setaSuccessCount(int aSuccessCount) { - this.aSuccessCount = aSuccessCount; - } - public int getaSendCount() { - return aSendCount; - } - public void setaSendCount(int aSendCount) { - this.aSendCount = aSendCount; - } - public String getSendKind() { - return sendKind; - } - public void setSendKind(String sendKind) { - this.sendKind = sendKind; - } - public String getBlineCode() { - return blineCode; - } - public void setBlineCode(String blineCode) { - this.blineCode = blineCode; - } - public String getReqFullDate() { - return reqFullDate; - } - public void setReqFullDate(String reqFullDate) { - this.reqFullDate = reqFullDate; - } - public String getSearchMsgResultCode() { - return searchMsgResultCode; - } - public void setSearchMsgResultCode(String searchMsgResultCode) { - this.searchMsgResultCode = searchMsgResultCode; - } - public String getSearchExceptSpamYn() { - return searchExceptSpamYn; - } - public void setSearchExceptSpamYn(String searchExceptSpamYn) { - this.searchExceptSpamYn = searchExceptSpamYn; - } - public String getStatDate() { - return statDate; - } - public void setStatDate(String statDate) { - this.statDate = statDate; - } - public String getKakaoSubMagOrgnlTxt() { - return kakaoSubMagOrgnlTxt; - } - public void setKakaoSubMagOrgnlTxt(String kakaoSubMagOrgnlTxt) { - this.kakaoSubMagOrgnlTxt = kakaoSubMagOrgnlTxt; - } - public String getVisitCnt() { - return visitCnt; - } - public void setVisitCnt(String visitCnt) { - this.visitCnt = visitCnt; - } - public String getMemCnt() { - return memCnt; - } - public void setMemCnt(String memCnt) { - this.memCnt = memCnt; - } - public String getConversRate() { - return conversRate; - } - public void setConversRate(String conversRate) { - this.conversRate = conversRate; - } + private String visitCnt; // 방문수 private String memCnt; // 회원수 private String conversRate; // 방문자수 대비 회원전환률 - public String getMsgDiv() { - return msgDiv; - } - public void setMsgDiv(String msgDiv) { - this.msgDiv = msgDiv; - } - public Float getAgentPrice() { - return agentPrice; - } - public void setAgentPrice(Float agentPrice) { - this.agentPrice = agentPrice; - } + + private String registPnttm; //통계등록일시 - public String getNowDate() { - return nowDate; - } - public void setNowDate(String nowDate) { - this.nowDate = nowDate; - } - public String getTodayYn() { - return todayYn; - } - public void setTodayYn(String todayYn) { - this.todayYn = todayYn; - } - public String getReserveType() { - return reserveType; - } - public void setReserveType(String reserveType) { - this.reserveType = reserveType; - } - public String getAtchFiles() { - return atchFiles; - } - public void setAtchFiles(String atchFiles) { - this.atchFiles = atchFiles; - } - public String getApprovalPnttm() { - return approvalPnttm; - } - public void setApprovalPnttm(String approvalPnttm) { - this.approvalPnttm = approvalPnttm; - } - public String getPayCnt() { - return payCnt; - } - public void setPayCnt(String payCnt) { - this.payCnt = payCnt; - } - public String getPayPct() { - return payPct; - } - public void setPayPct(String payPct) { - this.payPct = payPct; - } - public String getAdminSmsNoticeYn() { - return adminSmsNoticeYn; - } - public void setAdminSmsNoticeYn(String adminSmsNoticeYn) { - this.adminSmsNoticeYn = adminSmsNoticeYn; - } - - public String getSearchAdminSmsNoticeYn() { - return searchAdminSmsNoticeYn; - } - public void setSearchAdminSmsNoticeYn(String searchAdminSmsNoticeYn) { - this.searchAdminSmsNoticeYn = searchAdminSmsNoticeYn; - } - - public String getMaxRegDate() { - return maxRegDate; - } - public void setMaxRegDate(String maxRegDate) { - this.maxRegDate = maxRegDate; - } - public String getMinRegDate() { - return minRegDate; - } - public void setMinRegDate(String minRegDate) { - this.minRegDate = minRegDate; - } private String resultCode; //문자 결과 코드 정보 @@ -541,1132 +295,16 @@ public class MjonMsgVO extends ComDefaultVO{ private String bizLogCallStatusTxt; //다우기술 biz_log 테이블의 발송결과 내용 텍스트. private String bizLogStatus; //다우기술 biz_log 테이블의 전송상태값 - - private String accessKey; // 'API Key', - - public String getUserCallbackYn() { - return userCallbackYn; - } - public void setUserCallbackYn(String userCallbackYn) { - this.userCallbackYn = userCallbackYn; - } - - public String getCallbackYn() { - return callbackYn; - } - public void setCallbackYn(String callbackYn) { - this.callbackYn = callbackYn; - } - - public int getCallRejectionCount() { - return callRejectionCount; - } - public void setCallRejectionCount(int callRejectionCount) { - this.callRejectionCount = callRejectionCount; - } - public int getSuccessCount() { - return successCount; - } - public void setSuccessCount(int successCount) { - this.successCount = successCount; - } - + private String accessKey; // 'API Key', private int regCount; - public int getRegCount() { - return regCount; - } - public void setRegCount(int regCount) { - this.regCount = regCount; - } - public int getRegComCount() { - return regComCount; - } - public void setRegComCount(int regComCount) { - this.regComCount = regComCount; - } - - + private int regComCount; - public String getAddrGrpId() { - return addrGrpId; - } - public void setAddrGrpId(String addrGrpId) { - this.addrGrpId = addrGrpId; - } - public String getAddrGrpNm() { - return addrGrpNm; - } - public void setAddrGrpNm(String addrGrpNm) { - this.addrGrpNm = addrGrpNm; - } - - private int orderByCode; // 문자타입 정렬번호 + private String detailType; - - public int getOrderByCode() { - return orderByCode; - } - public void setOrderByCode(int orderByCode) { - this.orderByCode = orderByCode; - } - public String getRegDate() { - return regDate; - } - public void setRegDate(String regDate) { - this.regDate = regDate; - } - public String getMsgId() { - return msgId; - } - public void setMsgId(String msgId) { - this.msgId = msgId; - } - public String getUserId() { - return userId; - } - 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; - } - public void setAgentFlag(String agentFlag) { - this.agentFlag = agentFlag; - } - public String getUserData() { - return userData; - } - public void setUserData(String userData) { - this.userData = userData; - } - public String getMsgSeq() { - return msgSeq; - } - public void setMsgSeq(String msgSeq) { - this.msgSeq = msgSeq; - } - public String getCurState() { - return curState; - } - public void setCurState(String curState) { - this.curState = curState; - } - public String getSentDate() { - return sentDate; - } - public void setSentDate(String sentDate) { - this.sentDate = sentDate; - } - public String getRsltDate() { - return rsltDate; - } - public void setRsltDate(String rsltDate) { - this.rsltDate = rsltDate; - } - public String getReportDate() { - return reportDate; - } - public void setReportDate(String reportDate) { - this.reportDate = reportDate; - } - public String getReqDate() { - return reqDate; - } - public void setReqDate(String reqDate) { - this.reqDate = reqDate; - } - public String getRsltCode() { - return rsltCode; - } - public void setRsltCode(String rsltCode) { - this.rsltCode = rsltCode; - } - public String getRsltCode2() { - return rsltCode2; - } - public void setRsltCode2(String rsltCode2) { - this.rsltCode2 = rsltCode2; - } - public String getRsltNet() { - return rsltNet; - } - public void setRsltNet(String rsltNet) { - this.rsltNet = rsltNet; - } - public String getCallTo() { - return callTo; - } - public void setCallTo(String callTo) { - this.callTo = callTo; - } - public String getCallFrom() { - return callFrom; - } - public void setCallFrom(String callFrom) { - this.callFrom = callFrom; - } - public String getSmsTxt() { - return smsTxt; - } - public void setSmsTxt(String smsTxt) { - this.smsTxt = smsTxt; - } - public String getSmsTxtArea() { - return smsTxtArea; - } - public void setSmsTxtArea(String smsTxtArea) { - this.smsTxtArea = smsTxtArea; - } - public String getMsgType() { - return msgType; - } - public void setMsgType(String msgType) { - this.msgType = msgType; - } - public String getMsgKind() { - return msgKind; - } - public void setMsgKind(String msgKind) { - this.msgKind = msgKind; - } - public String getMsgPayCode() { - return msgPayCode; - } - public void setMsgPayCode(String msgPayCode) { - this.msgPayCode = msgPayCode; - } - public String getContSeq() { - return contSeq; - } - public void setContSeq(String contSeq) { - this.contSeq = contSeq; - } - public String getMsgTypeResend() { - return msgTypeResend; - } - public void setMsgTypeResend(String msgTypeResend) { - this.msgTypeResend = msgTypeResend; - } - public String getCenterSeqResend() { - return centerSeqResend; - } - public void setCenterSeqResend(String centerSeqResend) { - this.centerSeqResend = centerSeqResend; - } - public String getMsgNoticetalkSenderKey() { - return msgNoticetalkSenderKey; - } - public void setMsgNoticetalkSenderKey(String msgNoticetalkSenderKey) { - this.msgNoticetalkSenderKey = msgNoticetalkSenderKey; - } - public String getMsgNoticetalkTmpKey() { - return msgNoticetalkTmpKey; - } - public void setMsgNoticetalkTmpKey(String msgNoticetalkTmpKey) { - this.msgNoticetalkTmpKey = msgNoticetalkTmpKey; - } - public String getMsgResendCount() { - return msgResendCount; - } - public void setMsgResendCount(String msgResendCount) { - this.msgResendCount = msgResendCount; - } - public String getMsgResenddate() { - return msgResenddate; - } - public void setMsgResenddate(String msgResenddate) { - this.msgResenddate = msgResenddate; - } - public String getSentDatePre() { - return sentDatePre; - } - public void setSentDatePre(String sentDatePre) { - this.sentDatePre = sentDatePre; - } - public String getRsltDatePre() { - return rsltDatePre; - } - public void setRsltDatePre(String rsltDatePre) { - this.rsltDatePre = rsltDatePre; - } - public String getReportDatePre() { - return reportDatePre; - } - public void setReportDatePre(String reportDatePre) { - this.reportDatePre = reportDatePre; - } - public String getRsltCodePre() { - return rsltCodePre; - } - public void setRsltCodePre(String rsltCodePre) { - this.rsltCodePre = rsltCodePre; - } - public String getRsltCode2Pre() { - return rsltCode2Pre; - } - public void setRsltCode2Pre(String rsltCode2Pre) { - this.rsltCode2Pre = rsltCode2Pre; - } - public String getRsltNetPre() { - return rsltNetPre; - } - public void setRsltNetPre(String rsltNetPre) { - this.rsltNetPre = rsltNetPre; - } - public String getConectMthd() { - return conectMthd; - } - public void setConectMthd(String conectMthd) { - this.conectMthd = conectMthd; - } - public String getAgentCode() { - return agentCode; - } - public void setAgentCode(String agentCode) { - this.agentCode = agentCode; - } - public String getConectMthdTxt() { - return conectMthdTxt; - } - public void setConectMthdTxt(String conectMthdTxt) { - this.conectMthdTxt = conectMthdTxt; - } - public String getAgentCodeTxt() { - return agentCodeTxt; - } - public void setAgentCodeTxt(String agentCodeTxt) { - this.agentCodeTxt = agentCodeTxt; - } - public String getCurStateTxt() { - return curStateTxt; - } - public void setCurStateTxt(String curStateTxt) { - this.curStateTxt = curStateTxt; - } - public String getMsgTypeTxt() { - return msgTypeTxt; - } - public void setMsgTypeTxt(String msgTypeTxt) { - this.msgTypeTxt = msgTypeTxt; - } - public String getSentDateTxt() { - return sentDateTxt; - } - public void setSentDateTxt(String sentDateTxt) { - this.sentDateTxt = sentDateTxt; - } - public String getSearchCondition2() { - return searchCondition2; - } - public void setSearchCondition2(String searchCondition2) { - this.searchCondition2 = searchCondition2; - } - public String getDelFlag() { - return delFlag; - } - public void setDelFlag(String delFlag) { - this.delFlag = delFlag; - } - public String getDelFlagTxt() { - return delFlagTxt; - } - public void setDelFlagTxt(String delFlagTxt) { - this.delFlagTxt = delFlagTxt; - } - public String getSearchCondition3() { - return searchCondition3; - } - public void setSearchCondition3(String searchCondition3) { - this.searchCondition3 = searchCondition3; - } - public String getSearchCondition4() { - return searchCondition4; - } - public void setSearchCondition4(String searchCondition4) { - this.searchCondition4 = searchCondition4; - } - public String getMmsSubject() { - return mmsSubject; - } - public void setMmsSubject(String mmsSubject) { - this.mmsSubject = mmsSubject; - } - public String getFileCnt() { - return fileCnt; - } - public void setFileCnt(String fileCnt) { - this.fileCnt = fileCnt; - } - public String getFileType1() { - return fileType1; - } - public void setFileType1(String fileType1) { - this.fileType1 = fileType1; - } - public String getFileName1() { - return fileName1; - } - public void setFileName1(String fileName1) { - this.fileName1 = fileName1; - } - public String getFileType2() { - return fileType2; - } - public void setFileType2(String fileType2) { - this.fileType2 = fileType2; - } - public String getFileName2() { - return fileName2; - } - public void setFileName2(String fileName2) { - this.fileName2 = fileName2; - } - public String getFileType3() { - return fileType3; - } - public void setFileType3(String fileType3) { - this.fileType3 = fileType3; - } - public String getFileName3() { - return fileName3; - } - public void setFileName3(String fileName3) { - this.fileName3 = fileName3; - } - public String getSubject() { - return subject; - } - public void setSubject(String subject) { - this.subject = subject; - } - public String getMsgGroupId() { - return msgGroupId; - } - public void setMsgGroupId(String msgGroupId) { - this.msgGroupId = msgGroupId; - } - public String getMsgGroupCnt() { - return msgGroupCnt; - } - public void setMsgGroupCnt(String msgGroupCnt) { - this.msgGroupCnt = msgGroupCnt; - } - public String[] getCallToList() { - return callToList; - } - public void setCallToList(String[] strings) { - this.callToList = strings; - } - public String[] getImgFilePath() { - return imgFilePath; - } - public void setImgFilePath(String[] imgFilePath) { - this.imgFilePath = imgFilePath; - } - public String getNeoType() { - return neoType; - } - public void setNeoType(String neoType) { - this.neoType = neoType; - } - public int getMsgCnt() { - return msgCnt; - } - public void setMsgCnt(int msgCnt) { - this.msgCnt = msgCnt; - } - public String getSearchCondition5() { - return searchCondition5; - } - public void setSearchCondition5(String searchCondition5) { - this.searchCondition5 = searchCondition5; - } - public String getNtceBgnde() { - return ntceBgnde; - } - public void setNtceBgnde(String ntceBgnde) { - this.ntceBgnde = ntceBgnde; - } - public String getEachPrice() { - return eachPrice; - } - public void setEachPrice(String eachPrice) { - this.eachPrice = eachPrice; - } - public String getTotPrice() { - return totPrice; - } - public void setTotPrice(String totPrice) { - this.totPrice = totPrice; - } - public String getBeforeUrl() { - return beforeUrl; - } - public void setBeforeUrl(String beforeUrl) { - this.beforeUrl = beforeUrl; - } - public String getReserveYn() { - return reserveYn; - } - public void setReserveYn(String reserveYn) { - this.reserveYn = reserveYn; - } - public String getReserveCYn() { - return reserveCYn; - } - public void setReserveCYn(String reserveCYn) { - this.reserveCYn = reserveCYn; - } - public String getCancelDate() { - return cancelDate; - } - public void setCancelDate(String cancelDate) { - this.cancelDate = cancelDate; - } - public String[] getImgFileId() { - return imgFileId; - } - public void setImgFileId(String[] imgFileId) { - this.imgFileId = imgFileId; - } - public String[] getTemplateYn() { - return templateYn; - } - public void setTemplateYn(String[] templateYn) { - this.templateYn = templateYn; - } - public String getNtceEndde() { - return ntceEndde; - } - public void setNtceEndde(String ntceEndde) { - this.ntceEndde = ntceEndde; - } - public static long getSerialversionuid() { - return serialVersionUID; - } - public String getSendRate() { - return sendRate; - } - public void setSendRate(String sendRate) { - this.sendRate = sendRate; - } - public float getSendRateInfo() { - return sendRateInfo; - } - public void setSendRateInfo(float sendRateInfo) { - this.sendRateInfo = sendRateInfo; - } - public String getDivideChk() { - return divideChk; - } - public void setDivideChk(String divideChk) { - this.divideChk = divideChk; - } - public String getDivideCnt() { - return divideCnt; - } - public void setDivideCnt(String divideCnt) { - this.divideCnt = divideCnt; - } - public String getDivideTime() { - return divideTime; - } - public void setDivideTime(String divideTime) { - this.divideTime = divideTime; - } - public String getBefCash() { - return befCash; - } - public void setBefCash(String befCash) { - this.befCash = befCash; - } - public String getRecommId() { - return recommId; - } - public void setRecommId(String recommId) { - this.recommId = recommId; - } - public String getBefPoint() { - return befPoint; - } - public void setBefPoint(String befPoint) { - this.befPoint = befPoint; - } - public String[] getNameList() { - return nameList; - } - public void setNameList(String[] nameList) { - this.nameList = nameList; - } - public String[] getRep1List() { - return rep1List; - } - public void setRep1List(String[] rep1List) { - this.rep1List = rep1List; - } - public String[] getRep2List() { - return rep2List; - } - public void setRep2List(String[] rep2List) { - this.rep2List = rep2List; - } - public String[] getRep3List() { - return rep3List; - } - public void setRep3List(String[] rep3List) { - this.rep3List = rep3List; - } - public String[] getRep4List() { - return rep4List; - } - public void setRep4List(String[] rep4List) { - this.rep4List = rep4List; - } - public String getThisPoint() { - return thisPoint; - } - public void setThisPoint(String thisPoint) { - this.thisPoint = thisPoint; - } - public String getEndDate() { - return endDate; - } - public void setEndDate(String endDate) { - this.endDate = endDate; - } - public String getStartDate() { - return startDate; - } - public void setStartDate(String startDate) { - this.startDate = startDate; - } - public int getPhoneNumberCnt() { - return phoneNumberCnt; - } - public void setPhoneNumberCnt(int phoneNumberCnt) { - this.phoneNumberCnt = phoneNumberCnt; - } - public String getPhmAuthType() { - return phmAuthType; - } - public void setPhmAuthType(String phmAuthType) { - this.phmAuthType = phmAuthType; - } - public String getRefundYn() { - return refundYn; - } - public void setRefundYn(String refundYn) { - this.refundYn = refundYn; - } - public String getFilePath1() { - return filePath1; - } - public void setFilePath1(String filePath1) { - this.filePath1 = filePath1; - } - public String getFilePath2() { - return filePath2; - } - public void setFilePath2(String filePath2) { - this.filePath2 = filePath2; - } - public String getFilePath3() { - return filePath3; - } - public void setFilePath3(String filePath3) { - this.filePath3 = filePath3; - } - public String getResultCodeTxt() { - return resultCodeTxt; - } - public void setResultCodeTxt(String resultCodeTxt) { - this.resultCodeTxt = resultCodeTxt; - } - public String getTxtReplYn() { - return txtReplYn; - } - public void setTxtReplYn(String txtReplYn) { - this.txtReplYn = txtReplYn; - } - public String getsPrice() { - return sPrice; - } - public void setsPrice(String sPrice) { - this.sPrice = sPrice; - } - public String getmPrice() { - return mPrice; - } - public void setmPrice(String mPrice) { - this.mPrice = mPrice; - } - public String getpPrice() { - return pPrice; - } - public void setpPrice(String pPrice) { - this.pPrice = pPrice; - } - public String getP2Price() { - return p2Price; - } - public void setP2Price(String p2Price) { - this.p2Price = p2Price; - } - public String getP3Price() { - return p3Price; - } - public void setP3Price(String p3Price) { - this.p3Price = p3Price; - } - public String getShortMsgCnt() { - return shortMsgCnt; - } - public void setShortMsgCnt(String shortMsgCnt) { - this.shortMsgCnt = shortMsgCnt; - } - public String getLongMsgCnt() { - return longMsgCnt; - } - public void setLongMsgCnt(String longMsgCnt) { - this.longMsgCnt = longMsgCnt; - } - public String getAtchFileId1() { - return atchFileId1; - } - public void setAtchFileId1(String atchFileId1) { - this.atchFileId1 = atchFileId1; - } - public String getAtchFileId2() { - return atchFileId2; - } - public void setAtchFileId2(String atchFileId2) { - this.atchFileId2 = atchFileId2; - } - public String getAtchFileId3() { - return atchFileId3; - } - public void setAtchFileId3(String atchFileId3) { - this.atchFileId3 = atchFileId3; - } - public String getAtchFileSn1() { - return atchFileSn1; - } - public void setAtchFileSn1(String atchFileSn1) { - this.atchFileSn1 = atchFileSn1; - } - public String getAtchFileSn2() { - return atchFileSn2; - } - public void setAtchFileSn2(String atchFileSn2) { - this.atchFileSn2 = atchFileSn2; - } - public String getAtchFileSn3() { - return atchFileSn3; - } - public void setAtchFileSn3(String atchFileSn3) { - this.atchFileSn3 = atchFileSn3; - } - - public String getMsgTypeName() { - return msgTypeName; - } - public void setMsgTypeName(String msgTypeName) { - this.msgTypeName = msgTypeName; - } - public int getSendCount() { - return sendCount; - } - public void setSendCount(int sendCount) { - this.sendCount = sendCount; - } - public double getSupplyPrice() { - return supplyPrice; - } - public void setSupplyPrice(double supplyPrice) { - this.supplyPrice = supplyPrice; - } - public double getVatPrice() { - return vatPrice; - } - public void setVatPrice(double vatPrice) { - this.vatPrice = vatPrice; - } - public double getTotalPrice() { - return totalPrice; - } - public void setTotalPrice(double totalPrice) { - this.totalPrice = totalPrice; - } - public String getAddVatType() { - return addVatType; - } - public void setAddVatType(String addVatType) { - this.addVatType = addVatType; - } - public String getDetailType() { - return detailType; - } - public void setDetailType(String detailType) { - this.detailType = detailType; - } - public String getMsgGroupSCnt() { - return msgGroupSCnt; - } - public void setMsgGroupSCnt(String msgGroupSCnt) { - this.msgGroupSCnt = msgGroupSCnt; - } - public String getMsgGroupFWCnt() { - return MsgGroupFWCnt; - } - public void setMsgGroupFWCnt(String msgGroupFWCnt) { - MsgGroupFWCnt = msgGroupFWCnt; - } - public String getTotSPrice() { - return totSPrice; - } - public void setTotSPrice(String totSPrice) { - this.totSPrice = totSPrice; - } - public String getTotFWPrice() { - return totFWPrice; - } - public void setTotFWPrice(String totFWPrice) { - this.totFWPrice = totFWPrice; - } - public String getMsgGroupSCntSum() { - return msgGroupSCntSum; - } - public void setMsgGroupSCntSum(String msgGroupSCntSum) { - this.msgGroupSCntSum = msgGroupSCntSum; - } - public String getMsgGroupFWCntSum() { - return MsgGroupFWCntSum; - } - public void setMsgGroupFWCntSum(String msgGroupFWCntSum) { - MsgGroupFWCntSum = msgGroupFWCntSum; - } - public String getTotSPriceSum() { - return totSPriceSum; - } - public void setTotSPriceSum(String totSPriceSum) { - this.totSPriceSum = totSPriceSum; - } - public String getTotFWPriceSum() { - return totFWPriceSum; - } - public void setTotFWPriceSum(String totFWPriceSum) { - this.totFWPriceSum = totFWPriceSum; - } - public String getSmiId() { - return smiId; - } - public void setSmiId(String smiId) { - this.smiId = smiId; - } - public List getDividDay() { - return dividDay; - } - public void setDividDay(List dividDay) { - this.dividDay = dividDay; - } - public String getUserNm() { - return userNm; - } - public void setUserNm(String userNm) { - this.userNm = userNm; - } - public String getMbtlnum() { - return mbtlnum; - } - public void setMbtlnum(String mbtlnum) { - this.mbtlnum = mbtlnum; - } - public String getEmailAdres() { - return emailAdres; - } - public void setEmailAdres(String emailAdres) { - this.emailAdres = emailAdres; - } - public String getAuthorCode() { - return authorCode; - } - public void setAuthorCode(String authorCode) { - this.authorCode = authorCode; - } - public String getResultLogUpdtPnttm() { - return resultLogUpdtPnttm; - } - public void setResultLogUpdtPnttm(String resultLogUpdtPnttm) { - this.resultLogUpdtPnttm = resultLogUpdtPnttm; - } - public String getRepAgent() { - return repAgent; - } - public void setRepAgent(String repAgent) { - this.repAgent = repAgent; - } - public String getEventYn() { - return eventYn; - } - public void setEventYn(String eventYn) { - this.eventYn = eventYn; - } + private List mjonMsgTabulListVO = new ArrayList<>(); - public String getSpamKeyword() { - return spamKeyword; - } - public void setSpamKeyword(String spamKeyword) { - this.spamKeyword = spamKeyword; - } - public String getSpamMsgGroupId() { - return spamMsgGroupId; - } - public void setSpamMsgGroupId(String spamMsgGroupId) { - this.spamMsgGroupId = spamMsgGroupId; - } - public String getSpamStatus() { - return spamStatus; - } - public void setSpamStatus(String spamStatus) { - this.spamStatus = spamStatus; - } - - public String getSmishingYn() { - return smishingYn; - } - public void setSmishingYn(String smishingYn) { - this.smishingYn = smishingYn; - } - public int getTotalCallCnt() { - return totalCallCnt; - } - public void setTotalCallCnt(int totalCallCnt) { - this.totalCallCnt = totalCallCnt; - } - public String getDelayYn() { - return delayYn; - } - public void setDelayYn(String delayYn) { - this.delayYn = delayYn; - } - public String getDelayCompleteYn() { - return delayCompleteYn; - } - public void setDelayCompleteYn(String delayCompleteYn) { - this.delayCompleteYn = delayCompleteYn; - } - public String getVipYn() { - return vipYn; - } - public void setVipYn(String vipYn) { - this.vipYn = vipYn; - } - public String getResultCode() { - return resultCode; - } - public void setResultCode(String resultCode) { - this.resultCode = resultCode; - } - public String getResultCode2() { - return resultCode2; - } - public void setResultCode2(String resultCode2) { - this.resultCode2 = resultCode2; - } - public String getRegistPnttm() { - return registPnttm; - } - public void setRegistPnttm(String registPnttm) { - this.registPnttm = registPnttm; - } - public String getBizLogCallStatus() { - return bizLogCallStatus; - } - public void setBizLogCallStatus(String bizLogCallStatus) { - this.bizLogCallStatus = bizLogCallStatus; - } - public String getBizLogCallStatusCode() { - return bizLogCallStatusCode; - } - public void setBizLogCallStatusCode(String bizLogCallStatusCode) { - this.bizLogCallStatusCode = bizLogCallStatusCode; - } - public String getBizLogCallStatusTxt() { - return bizLogCallStatusTxt; - } - public void setBizLogCallStatusTxt(String bizLogCallStatusTxt) { - this.bizLogCallStatusTxt = bizLogCallStatusTxt; - } - public String getBizLogStatus() { - return bizLogStatus; - } - public void setBizLogStatus(String bizLogStatus) { - this.bizLogStatus = bizLogStatus; - } - public float getSmsPrice() { - return smsPrice; - } - public void setSmsPrice(float smsPrice) { - this.smsPrice = smsPrice; - } - public float getMmsPrice() { - return mmsPrice; - } - public void setMmsPrice(float mmsPrice) { - this.mmsPrice = mmsPrice; - } - public float getKakaoAtPrice() { - return kakaoAtPrice; - } - public void setKakaoAtPrice(float kakaoAtPrice) { - this.kakaoAtPrice = kakaoAtPrice; - } - public float getKakaoFtPrice() { - return kakaoFtPrice; - } - public void setKakaoFtPrice(float kakaoFtPrice) { - this.kakaoFtPrice = kakaoFtPrice; - } - public String getMyNameFlag() { - return myNameFlag; - } - public void setMyNameFlag(String myNameFlag) { - this.myNameFlag = myNameFlag; - } - public float getKakaoFtImgPrice() { - return kakaoFtImgPrice; - } - public void setKakaoFtImgPrice(float kakaoFtImgPrice) { - this.kakaoFtImgPrice = kakaoFtImgPrice; - } - public float getKakaoFtWideImgPrice() { - return kakaoFtWideImgPrice; - } - public void setKakaoFtWideImgPrice(float kakaoFtWideImgPrice) { - this.kakaoFtWideImgPrice = kakaoFtWideImgPrice; - } - public String getMberSttus() { - return mberSttus; - } - public void setMberSttus(String mberSttus) { - this.mberSttus = mberSttus; - } - public String getAccessKey() { - return accessKey; - } - 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; - } - public int getShtSendCount() { - return shtSendCount; - } - public void setShtSendCount(int shtSendCount) { - this.shtSendCount = shtSendCount; - } - public int getLongSendCount() { - return longSendCount; - } - public void setLongSendCount(int longSendCount) { - this.longSendCount = longSendCount; - } - public int getPictSendCount() { - return pictSendCount; - } - public void setPictSendCount(int pictSendCount) { - this.pictSendCount = pictSendCount; - } - public int getAtSendCount() { - return atSendCount; - } - public void setAtSendCount(int atSendCount) { - this.atSendCount = atSendCount; - } - public int getFtSendCount() { - return ftSendCount; - } - public void setFtSendCount(int ftSendCount) { - this.ftSendCount = ftSendCount; - } - public int getFaxSendCount() { - return faxSendCount; - } - public void setFaxSendCount(int faxSendCount) { - this.faxSendCount = faxSendCount; - } - public int getSuccSendCnt() { - return succSendCnt; - } - public void setSuccSendCnt(int succSendCnt) { - this.succSendCnt = succSendCnt; - } - public int getFailSendCnt() { - return failSendCnt; - } - public void setFailSendCnt(int failSendCnt) { - this.failSendCnt = failSendCnt; - } - public double getSuccSendPrice() { - return succSendPrice; - } - public void setSuccSendPrice(double succSendPrice) { - this.succSendPrice = succSendPrice; - } - public double getFailSendPrice() { - return failSendPrice; - } - public void setFailSendPrice(double failSendPrice) { - this.failSendPrice = failSendPrice; - } - public String getTotSuccSendPrice() { - return totSuccSendPrice; - } - public void setTotSuccSendPrice(String totSuccSendPrice) { - this.totSuccSendPrice = totSuccSendPrice; - } - public String getBookmarkYn() { - return bookmarkYn; - } - public void setBookmarkYn(String bookmarkYn) { - this.bookmarkYn = bookmarkYn; - } - public String getCancelResultYn() { - return cancelResultYn; - } - public void setCancelResultYn(String cancelResultYn) { - this.cancelResultYn = cancelResultYn; - } - public String getAdmSmsImgAuto() { - return admSmsImgAuto; - } - public void setAdmSmsImgAuto(String admSmsImgAuto) { - this.admSmsImgAuto = admSmsImgAuto; - } } 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 68735999..b12dbcc3 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 @@ -3987,7 +3987,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M @Override public StatusResponse sendMsgData_advc(MjonMsgVO mjonMsgVO, HttpServletRequest request) throws Exception { - + log.info(" :: sendMsgData_advc :: "); LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); @@ -4000,34 +4000,57 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M //발신번호가 등록된 유효한 번호인지 확인 int sendCallFromCnt = mjonMsgDAO.selectCallFromNumberChk(mjonMsgVO); - log.info("sendCallFromCnt :: [{}]", sendCallFromCnt); + System.out.println("sendCallFromCnt : "+ sendCallFromCnt); if(sendCallFromCnt < 1) { return new StatusResponse(HttpStatus.BAD_REQUEST, "등록된 발신번호를 찾을 수 없습니다."); } - + /** * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 * 현재 로그인 세션도 만료 처리함 * */ boolean mberSttus = userManageService.selectUserStatusInfo(userId); if(!mberSttus) { - request.getSession().invalidate(); - // UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때 - return new StatusResponse(HttpStatus.UNAUTHORIZED, "현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 문자를 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다."); - + request.getSession().invalidate(); + // UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때 + return new StatusResponse(HttpStatus.UNAUTHORIZED, "현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 문자를 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다."); } + + String smsTxt = mjonMsgVO.getSmsTxtArea(); + // 광고문자면 처리 - 광고 A + if("A".equals(mjonMsgVO.getMsgKind())) { + smsTxt = "(광고)"+smsTxt + +"\n"+"무료거부 0808800858"; + } + + log.debug(" :: smsTxt :: [{}]", smsTxt); + + StatusResponse statusResponse = new StatusResponse(); + mjonMsgVO = setImagesSetting(mjonMsgVO, statusResponse); + + if(mjonMsgVO == null) { + return statusResponse; + } + + log.debug(" + mjonMsgVO.getFileCnt() :: [{}]", mjonMsgVO.getFileCnt()); + + ////////////////////////////////// + ////////////////////////////////// + ////////////////////////////////// + if(true) { + return new StatusResponse(HttpStatus.BAD_REQUEST, "문자 테스트 실패"); + } + ////////////////////////////////// + ////////////////////////////////// + ////////////////////////////////// + /* - * 어디에 사용하는지 모르겠음 - * set 후에 사용하는 곳이 없음 - * //회원정보에서 스미싱 회원 여부 정보 조회 - UserManageVO userManageVO = new UserManageVO(); - - userManageVO.setMberId(userId); - UserManageVO resultUserVO = userManageService.selectSmishingYnUserInfo(userManageVO); - String smishingYn = resultUserVO.getSmishingYn(); - mjonMsgVO.setSmishingYn(smishingYn); - */ + * 화면에서 넘어오는 단가 금액 및 총 결제 캐시 금액 체크 해주기 + * 검증을 위해서 시스템 단가, 회원 협의 단가, 이벤트 단가 정보 조회 + * 조회 단가를 이용하여 총 결제 캐시 금액 계산 + * 파라미터로 넘어온 개별단가(eachPrice), 총 결제캐시(totPrice)를 비요하여 동일하지 않으면 컨트롤러에서 계산한 금액으로 입력해줌. + */ int smsTxtByte = MsgSendUtils.getSmsTxtBytes(mjonMsgVO.getSmsTxt()); if(smsTxtByte > 2000) { @@ -4040,74 +4063,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return new StatusResponse(HttpStatus.BAD_REQUEST, "문자 내용은 2000Byte를 넘을 수 없습니다."); } mjonMsgVO.setMsgType(msgType); - - - - int fileCount = 0; - // 장문 메시지일 경우 + 그림 이미지가 첨부된 경우 - if (msgType.equals("6") - && mjonMsgVO.getImgFilePath() != null - && mjonMsgVO.getImgFilePath().length > 0 - ) - { - //그림 이미지가 첨부된 경우 - - String[] path = mjonMsgVO.getImgFilePath(); - String[] fileId = mjonMsgVO.getImgFileId(); - String[] templateYn = mjonMsgVO.getTemplateYn(); - - for(int i=0; i sendMsgData_advc(@ModelAttribute("searchVO") MjonMsgVO mjonMsgVO, - RedirectAttributes redirectAttributes, - HttpServletRequest request, - ModelMap model) throws Exception{ - + + @RequestMapping(value = "/web/mjon/msgdata/sendMsgDataAjax_advc.do") + public ResponseEntity sendMsgData_advc( + @RequestBody MjonMsgVO mjonMsgVO, + HttpServletRequest request, + ModelMap model) throws Exception { + + // 디버깅 출력 + System.out.println("mjonMsgVO : " + mjonMsgVO.getMjonMsgTabulListVO().toString()); + System.out.println("mjonMsgVO : " + mjonMsgVO.getMjonMsgTabulListVO().size()); return ResponseEntity.ok().body(mjonMsgDataService.sendMsgData_advc(mjonMsgVO, request)) ; +// return null; } diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp index 6dc6d8ac..3fadab27 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -3777,7 +3777,9 @@ function getMjMsgSentListAll(pageNo) {
+ + @@ -3794,6 +3796,7 @@ function getMjMsgSentListAll(pageNo) { + "/> "/> "/> @@ -4055,7 +4058,7 @@ function getMjMsgSentListAll(pageNo) { placeholder="번호를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" - style="width:340px;"> + style="width:340px;">01083584250
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView2_advc_backup_20241106.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView2_advc_backup_20241106.jsp new file mode 100644 index 00000000..6dc6d8ac --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView2_advc_backup_20241106.jsp @@ -0,0 +1,4354 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + + + + +<% pageContext.setAttribute("newLineChar", "\r\n"); %> + + +
+
+
+
Loading
+
+
+ + + + + + + + + + +
+ +
+ + + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + + +
+ +
+ +
+ +
+ + + + <%--
+ +
--%> + + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + "/> + "/> + "/> + "/> + "/> + "/> + + + + + + + + + + + + + + + + + + + + + "/> + "/> + "/> + "/> + "/> + + + + + "/> + + +
+

문자전송

+ + +
+
+
+ <%--
+
나의 요금제
+
+
    +
  • 단문
  • +
  • 장문
  • +
  • 그림(2장 : 원 / 3장 : 원)
  • +
+
+
--%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- + + + --%> + +
일반 문자보내기 분류 번호 내용 등을 입력하는 표
문자분류 + + + + +
발신번호 + + + +
제목 +
    +
  • + + + + +
  • +
  • + + +
  • +
+
내용 +
+
+ +
    + + + +
    +
    +

    + 0 / + 90byte +

    + 단문 +
    +
    +
    +
    +
    + +
    + + +
    +
    + + + + + +
    +
    + +
    +
    + + + ${symbolList.symbol} + + +
    +
    + + +
    +
    + + + ${symbolList.symbol} + + +
    +
    + + +
    +
    + + + ${symbolList.symbol} + + +
    +
    + + +
    +
    + + + ${symbolList.symbol} + + +
    +
    + + +
    +
    + + + ${symbolList.symbol} + + +
    +
    + + +
    +
    +
    + +
    +
    +
    + 특정문구 일괄변환이란? +

    주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의
    메시지를 발송하는 기능

    +
    + +
    + [*1*] + [*2*] + [*3*] + [*4*] +
    +
    + +
    +
    + + <%-- --%> + +
    + + +
    +
    +
    +

    * 현재 [단문] 0건 발송 가능합니다.

    +
    받는사람 +
    + + + + + + + + + +
    + + + + + +
    + + * 중복번호는 한번만 추가됩니다. +
    +

    휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능

    + (예시) 010-1234-0001(O) / 010-12345-0001(X) +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +

    휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능

    + (예시) 010-1234-0001(O) / 010-12345-0001(X) +
    +
    +
    +
    +
    +
    + + +
    +
    +

    0건 / 중복 0

    + <%----%> + +
    +
    +
    +
    +
    +
    +
    +

    발송금액 :

    +
    + 단문 : 20/장문 : 150/그림문자 : 30건 +
    +
    +

    0

    +
    + +

    * 이벤트회원의 발송금액은 이벤트단가를 적용하여 계산된 금액이므로 실제 발송금액과 다를 수 있습니다.

    +
    +
    + +
    + + + <%-- --%> + + + + +
    + +
    +
    +
    + + + + + +
    +
    추천인 ID + + + + +
    + + + +
    +
    +
    +
    +
    +
    +
    +

    미리보기

    +
    + 단문 +
    + 글자크기 + + +
    +
    +
    + 포토 +
      +
    • 1
    • +
    • 2
    • +
    • 3
    • +
    +
    + 글자크기 + + +
    +
    + +
    +
    +
    +

    내용을 입력해주세요.

    +
    
    +								
    +
    + +
    +
    +

    ※ 단말기 설정에 따라 다르게 보일 수 있습니다

    +
    + + +

    미리보기

    + + +
    +
    +
    +
    +
    +
    +
      +
    • +
    • +
    +
    +
    + + +
    +
    +
    +
    + 날짜 : +
    + +
    + +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    + +
    +
    + + + + + + + + +
    + diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView_back.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView_back.jsp deleted file mode 100644 index 9de8c0ba..00000000 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView_back.jsp +++ /dev/null @@ -1,1107 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> -<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> - - - - - - - - - - - -
    - - - - - - - - - - -
    -
    -

    문자전송

    -
      -
    • 단문8.2
    • -
    • 장문24.6
    • -
    • 그림57.3
    • -
    -
    -
    -

    - 90byte 초과 시, 장문으로 전환됩니다. 장문 문자는 최대 2,000byte까지 작성할 수 있습니다.

    -

    - 포토문자 1건에 포토 최대 3장 첨부가능 [권장 사이즈 : 640 x 960픽셀 / 최대용량 : 10MB]

    -

    - 광고성 메시지는 반드시 유의사항 확인 후 발송해 주시기 바랍니다. [광고문자 유의사항 보기]

    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    일반 문자보내기 분류 번호 내용 등을 입력하는 표
    문자분류 - - - - -
    발신번호 - - - - -
    제목 - - - - - -
    내용 -
    -
    - -
      - - - - -
      - -
      -

      - 0 / - 90byte -

      - 단문 -
      -
      -
      -
      - - - - -
      - - -
      -
      -
      -

      * 현재 [단문] 120,000건 발송 가능합니다.

      -
      받는사람 -
      -
      - - - - * 중복번호는 한번만 발송됩니다. -
      -
      -

      120건 /

      -

      중복 9

      -
      -
      -
      -
      -
      - - -
      -
      -

      번호

      - - -
      -
      -

      이름

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

      번호

      - - -
      -
      -

      이름

      - - -
      -
      -
      -
      -
      - -

      Drag and Drop

      - 파일을 여기에 끌어 놓으세요 -
      -
      - or -
      -
      -

      Ctrl+C → Ctrl+V

      - 복사해서 붙여넣으세요 -
      -
      -
      -
      -
      -
      - - - -
      -
      -
      -
      -
      -
      -
      -

      결제금액 :

      -

      0(부가세 포함)

      - -
      -
      -
      - - - -
      -
      - - - -
      -
      -
      -
      - - -
      -
      - - -
      -
      -
      -
      추천인 ID - - - - -
      - - - -
      -
      -
      -
      -
      -
      -
      -

      미리보기

      -
      - 단문 -
      - 글자크기 - - -
      -
      -
      - 포토 -
        -
      • 1
      • -
      • 2
      • -
      • 3
      • -
      -
      - 글자크기 - - -
      -
      - -
      -
      -
      - -

      -

      - -
      -
      - -
      -
      -

      ※ 단말기 설정에 따라 다르게 보일 수 있습니다

      -
      -
      -
      -
      - - - - -
      -
      -
      - 날짜 : -
      - -
      - -
      - - - -
      -
      -
      - - - - - - -
      -
      -
      -
      - - -
      -
      -
      -
      -
      -
      - - \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp index 217a2ef7..7d298332 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp @@ -1055,10 +1055,13 @@ function fn_sendMsgData(){ var totPriceOnly = stringReplaceAll(form.totPrice.value, ",", ""); var userMoneyOnly = stringReplaceAll(form.myPrice.value, ",", ""); + // test 주석 + /* if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){ alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다."); return false; - } + } + */ // 폼 유효성 검사 if (!validateForm(form)) return false; @@ -1075,607 +1078,223 @@ function fn_sendMsgData(){ } } - //MJ_MSG_GROUP_DATA 누락데이터 체크 - //if (getMsgGroupDataErrorCheck() == false) { - // alert("고객님께서 발송한 최근문자가 발송결과에 표시되지않아, 문자발송이 임시로 차단되었습니다.\n문자온 고객센터에 문의해주세요."); - // return false; - //} + + if(!confirm("문자를 전송하시겠습니까?")){ + return false; + } + + //총 결제금액 천단위 콤마 삭제 후 전송 + var totPrice = form.totPrice.value; + form.totPrice.value = totPrice.replace(",",""); + //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. + //이벤트 캐시가 부족한 경우 이벤트 캐시로 발송 가능한 만큼만 이벤트 금액으로 발송 처리해줌. + //이 후 나머지 발송 건수는 이벤트 캐시가 아닌 일반 단가로 발송 처리를 진행 함. + var eventStatus = form.eventStatus.value; - //광고 문자 내용 합쳐주기 + if(eventStatus == 'Y'){ //이벤트 진행 대상자이면 문자종류에 이벤트로 구분 + + form.eventYn.value = "Y"; //이벤트문자 종류 설정 + + } + + var eventRemainCash = parseFloat(form.eventRemainCash.value); + console.log('eventStatus : ', eventStatus); + + if(eventStatus == 'Y' + && parseFloat(eventRemainCash) < parseFloat(totPriceOnly)) + { + if(!confirm("고객님의 이벤트 캐시 잔액(" + eventRemainCash + "원) 부족으로 요청하신 문자("+numberWithCommas($selectedData.length)+"건)를 모두 발송할 수 없습니다. 이벤트 캐시 초과 건에 대해서는 일반 단가를 적용하여 발송하시겠습니까?")){ + return false; + } + } + + console.log(' !!! imgFilePath : ', imgFilePath); + + // img 처리 영역 + imgFilePath = []; + $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { + if($("#delLi"+idx).hasClass("Template")){ + templateYn.push("Y"); + } else { + templateYn.push("N"); + } + + if($(el).hasClass("edit_y")) { + //이미지 변환 + const imgBase64 = $(el).attr("src"); + const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 + + + let array = []; + for (let i = 0; i < decodImg.length; i++) { + array.push(decodImg.charCodeAt(i)); + } + + const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); + const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; + let formData = new FormData(); + formData.append('file', file, fileName); + + $.ajax({ + type: 'post', + url: '/web/mjon/msgdata/insertEditImageAjax.do', + cache: false, + data: formData, + dataType:'json', + processData: false, + contentType: false, + async: false, + success: function (returnData, status) { + if(status == 'success'){ + console.log('returnData : ',returnData) + // imgFilePath 에 배열로 담아주기(이미지 순서대로) + //console.log(imgFilePath); + imgFilePath.push(returnData.filefullPath); + imgFileId.push(returnData.atchFileId); + + } else if(status== 'fail'){ + alert(returnData.message); + } + }, + error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } + }); + + } else { + if(imgFilePath.length != imgFileId.length){ + //에디터 안거친 템플릿 이미지면 바로 src 때림 + imgFilePath.push($(el).attr("src")); + } + } + }); + + + //form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 + form.templateYnAdvc.value = templateYn; + console.log('imgFilePath : ', imgFilePath); + console.log('imgFilePath : ', JSON.stringify(imgFilePath)); + console.log('imgFileId : ', imgFileId); + console.log('imgFileId : ', JSON.stringify(imgFileId)); + form.imgFilePathAdvc.value = imgFilePath; + form.imgFileIdAdvc.value = imgFileId; +// form.imgFilePath.value = JSON.stringify(imgFilePath).replace(/\\/g, ''); +// form.imgFileId.value = JSON.stringify(imgFileId).replace(/\\/g, ''); + form.callFrom.value = removeDash($('#callFromList').val()); // 발신번호 대쉬(-) 문자 없애주기 + + //광고 종류 설정 var adverYn = $("input[name='send_adYn']:checked").val(); if(adverYn == 'Y'){ form.msgKind.value = "A"; //광고문자 종류 설정 }else{ form.msgKind.value = "N"; //일반문자 종류 설정 } - - //수신번호 리스트 체크하기 - var numCnt = 0; - var nameList = []; //치환문자 이름 - var phoneNum = []; //받는사람 - var rep1List = []; //치환문자1 - var rep2List = []; //치환문자2 - var rep3List = []; //치환문자3 - var rep4List = []; //치환문자4 - - var selectedData = tableL.getRows(); - -/* - var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 - - if(reserYn == 'Y'){ - - var date = $(".resDate").val();//form.msgResDate.value; - var hour = form.msgResHour.value; - var min = form.msgResMin.value; - - if(date == ""){ - - alert("예약전송 날짜를 선택해 주세요."); - return false; - - }else{ - - var now = new Date(); - var reqDate = date + " " + hour + ":" + min + ":00"; - var gapDate = getGapDayTime(date, hour, min); - - if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜. - alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요."); - return false; - }else{ - form.reqDate.value = reqDate; //예약일자 파라미터 저장 - } - } - }else{ - - form.reqDate.value = ""; - - } */ - -/* - var conLeng = conByteLeng($('#smsTxt').val()); // 내용 문자 입력 바이트 수 계산하기 - - if(conLeng > 2000){ - - alert("문자 내용은 2000byte를 넘을 수 없습니다."); - return false; - - } - - */ - - console.log(' : 전송하시겠습니까 : ') - if(confirm("문자를 전송하시겠습니까?")){ - imgFilePath = []; - $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { - if($("#delLi"+idx).hasClass("Template")){ - templateYn.push("Y"); - } else { - templateYn.push("N"); - } - - if($(el).hasClass("edit_y")) { - //이미지 변환 - const imgBase64 = $(el).attr("src"); - const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 - - - let array = []; - for (let i = 0; i < decodImg.length; i++) { - array.push(decodImg.charCodeAt(i)); - } - - const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); - const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; - let formData = new FormData(); - formData.append('file', file, fileName); - - $.ajax({ - type: 'post', - url: '/web/mjon/msgdata/insertEditImageAjax.do', - cache: false, - data: formData, - dataType:'json', - processData: false, - contentType: false, - async: false, - success: function (returnData, status) { - if(status == 'success'){ - // imgFilePath 에 배열로 담아주기(이미지 순서대로) - //console.log(imgFilePath); - imgFilePath.push(returnData.filefullPath); - imgFileId.push(returnData.atchFileId); - - } else if(status== 'fail'){ - alert(returnData.message); - } - }, - error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } - }); - - } else { - - if(imgFilePath.length != imgFileId.length){ - //에디터 안거친 템플릿 이미지면 바로 src 때림 - imgFilePath.push($(el).attr("src")); - } - - } - }); - - form.imgFilePath.value = imgFilePath; // 저장한 이미지 경로 담아주기 - form.callToList.value = phoneNum; //수신자번호 리스트 저장해주기 - form.callFrom.value = removeDash(form.callFromList.value); // 발신번호 대쉬(-) 문자 없애주기 - form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 - form.templateYn.value = templateYn; - form.imgFileId.value = imgFileId; -// form.nameList.value = nameList; -// form.rep1List.value = rep1List; -// form.rep2List.value = rep2List; -// form.rep3List.value = rep3List; -// form.rep4List.value = rep4List; - - //총 결제금액 천단위 콤마 삭제 후 전송 - var totPrice = form.totPrice.value; - totPrice = totPrice.replace(",",""); - form.totPrice.value = totPrice; - - //문자내용이 입력된 경우 스팸 필터링 실행 - if(!form.smsTxtArea.value == "" && exceptSpamYn == "N"){ - console.log(' : selectSpamTxtChkAjax : ') - var spmData = new FormData(form); - url = "/web/mjon/msgdata/selectSpamTxtChkAjax.do"; - - $.ajax({ - type: "POST", - url: url, - data: spmData, - - dataType:'json', - async: false, - processData: false, - contentType: false, - cache: false, - success: function (returnData, status) { - return false; - - if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 - - if("fail" == returnData.result){ - - alert(returnData.message); - return false; - - }else if("loginFail" == returnData.result){ - - alert(returnData.message); - return false; - - }else if("spams" == returnData.result){ - -// var spmFilterTxt = returnData.spmFilterTxt; - spamStatus = true; - -// form.spamKeyword.value = spmFilterTxt; - form.spamStatus.value='Y'; - }else{ - form.spamKeyword.value = ''; - form.spamStatus.value='N'; - - } - - } else if(status== 'fail'){ - alert(returnData.message); - return false; - } - }, - error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); return false;} - }); - - } - - - //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. - //이벤트 캐시가 부족한 경우 이벤트 캐시로 발송 가능한 만큼만 이벤트 금액으로 발송 처리해줌. - //이 후 나머지 발송 건수는 이벤트 캐시가 아닌 일반 단가로 발송 처리를 진행 함. - var eventStatus = form.eventStatus.value; - - if(eventStatus == 'Y'){ //이벤트 진행 대상자이면 문자종류에 이벤트로 구분 - - form.eventYn.value = "Y"; //이벤트문자 종류 설정 - - } - - var eventRemainCash = parseFloat(form.eventRemainCash.value); - console.log('eventStatus : ', eventStatus); - - if(eventStatus == 'Y'){ - - if(parseFloat(eventRemainCash) < parseFloat(totPriceOnly)){ - - if(confirm("고객님의 이벤트 캐시 잔액(" + eventRemainCash + "원) 부족으로 요청하신 문자("+numberWithCommas(phoneNum.length)+"건)를 모두 발송할 수 없습니다. 이벤트 캐시 초과 건에 대해서는 일반 단가를 적용하여 발송하시겠습니까?")){ - - var smsTxtArea = $('#smsTxtArea').val(); - var evnMsgType = $("#msgType").val(); - var evnEachPrice = $("#eachPrice").val(); //form 에 저장된 이벤트 개별 단가 불러오기 - var evnSendCnt = Math.floor(eventRemainCash / evnEachPrice); - var norEachPrice = 0; - var imgCnt = $("#imgCnt").val(); //그림 이미지 갯수 - var txtReplYn = $("#txtReplYn").val(); //치환문자 포함 여부 - var evnPhoneNumCnt = Number($("#evnPhoneNumCnt").val()); //치환문자 체크하면서 단/장문 건수 카운팅하면서 이벤트 금액으로 발송가능한 수신자 갯수 정보 - var myPrice = parseFloat($("#myPrice").val()); //회원보유 잔여 캐시 금액 - - //수신목록 저장 배열 변수 - var evnPhoneNum = []; //이벤트 단가 받는사람 - var norPhoneNum = []; //일반 단가 받는 사람 - - //치환문자 포함 문자 저장 배열 변수(이벤트 문자 저장) - var evnName = []; - var evnRep1 = []; - var evnRep2 = []; - var evnRep3 = []; - var evnRep4 = []; - - //치환문자 포함 문자 저장 배열 변수(일반 문자 저장) - var norName = []; - var norRep1 = []; - var norRep2 = []; - var norRep3 = []; - var norRep4 = []; - - - /** - Desc: 1. 그림, 치환, 일반 문자에 대해서 각각 이벤트 단가로 전송할 리스트 와 일반단가로 전송할 리스트를 분리 하는 로직 - 2. 그림 및 일반 문자는 단순 이벤트 금액으로 보낼수 있는 건수를 계산하여 리스트[0] 부터 발송 건수만큼 추출하여 evnPhoneNum 배열에 입력 후 이벤트 금액으로 발송 진행 - 3. 이벤트 발송이 완료되면, 이벤트 건수를 제외한 나머지 건수를 norPhoneNum 배열에 입력 후 일반 금액으로 발송 진행 - 4. 일반 발송시에 전송 단가(eachPrice), 전체금액(totPrice) 등 변수 정보 변경 - ===== - 5. 그림문자가 아닌 치환문자인 경우 치환 처리를 진행하면서 단문, 장문을 구분하고 이때 이벤트 금액에서 단문, 장문 가격을 차감하여 보낼 수량을 카운팅 함. - 6. 치환 체크가 완료되면 치환시 나온 카운트 갯수만큼 이벤트 배열과 일반 배열에 분리처리 후 전송함. - 7. 이벤트 발송 처리후 일반 단가 문자 발송시 보유 캐시 부족시 팝업으로 현재까지 발송된 이벤트 건수와 발송하지 못하는 일반단가 건수 정보를 표시해줌. 문자 발송은 중단 된다. - Param Array : evnPhoneNum, norPhoneNum - function : getNorEachPrice - 메세지 타입(msgType)에 따른 단문, 장문, 그림문자 개별 단가 금액 확인 - sendMsgAjax - 문자 발송 요청 Ajax 처리 - */ - - //그림문자인 경우 - if(imgCnt > 0){ - - //이벤트 가격으로 전송 할 받는 사람 리스트 저장처리 - for(var i=0; i< evnSendCnt; i++){ - evnPhoneNum[i]= phoneNum[i]; - - //그림문자에 치환문자가 포함된 경우 - if(txtReplYn == 'Y'){ - - evnPhoneNum[i] = phoneNum[i]; - evnName[i] = nameList[i]; - evnRep1[i] = rep1List[i]; - evnRep2[i] = rep2List[i]; - evnRep3[i] = rep3List[i]; - evnRep4[i] = rep4List[i]; - - } - } - - //일반 가격으로 전송 할 받는 사람 리스트 저장처리 - for(var j=0; j < phoneNum.length - evnSendCnt; j++){ - norPhoneNum[j]= phoneNum[j + evnSendCnt]; - - //그림문자에 치환문자가 포함된 경우 - if(txtReplYn == 'Y'){ - - norPhoneNum[j]= phoneNum[j + evnSendCnt]; - norName[j] = nameList[j + evnSendCnt]; - norRep1[j] = rep1List[j + evnSendCnt]; - norRep2[j] = rep2List[j + evnSendCnt]; - norRep3[j] = rep3List[j + evnSendCnt]; - norRep4[j] = rep4List[j + evnSendCnt]; - - } - - }; - - - }else if(txtReplYn == 'Y'){//치환 문자가 있는 경우 , 그림문자에 치환이 있는 경우 그림문자 가격으로 발송 - - //이벤트 가격으로 전송 할 받는 사람 리스트 저장처리 - for(var i=0; i< evnPhoneNumCnt; i++){ - evnPhoneNum[i] = phoneNum[i]; - evnName[i] = nameList[i]; - evnRep1[i] = rep1List[i]; - evnRep2[i] = rep2List[i]; - evnRep3[i] = rep3List[i]; - evnRep4[i] = rep4List[i]; - } - - //일반 가격으로 전송 할 받는 사람 리스트 저장처리 - for(var j=0; j < phoneNum.length - evnPhoneNumCnt; j++){ - norPhoneNum[j]= phoneNum[j + evnPhoneNumCnt]; - norName[j] = nameList[j + evnPhoneNumCnt]; - norRep1[j] = rep1List[j + evnPhoneNumCnt]; - norRep2[j] = rep2List[j + evnPhoneNumCnt]; - norRep3[j] = rep3List[j + evnPhoneNumCnt]; - norRep4[j] = rep4List[j + evnPhoneNumCnt]; - - }; - - }else{//치환문자 없는 경우 처리 - - //이벤트 가격으로 전송 할 받는 사람 리스트 저장처리 - for(var i=0; i< evnSendCnt; i++){ - evnPhoneNum[i]= phoneNum[i]; - } - - //일반 가격으로 전송 할 받는 사람 리스트 저장처리 - for(var j=0; j < phoneNum.length - evnSendCnt; j++){ - norPhoneNum[j]= phoneNum[j + evnSendCnt]; - }; - } - - var orgShortMsgCnt = $("#shortMsgCnt").val(); //단문 총 건수 백업 - var orgLongMsgCnt = $("#longMsgCnt").val(); //장문 총 건수 백업 - //이벤트 단가 문자 전송 처리 시작 - if(evnPhoneNum.length > 0){ - - form.callToList.value = evnPhoneNum; //수신자번호 리스트 저장해주기 - form.totPrice.value = evnEachPrice * evnSendCnt; //이벤트 단가 총 결제금액 셋팅해주기 - form.eventStatus.value = 'Y'; - form.eventYn.value = 'Y'; - - - var evnTotPrice = parseFloat(form.totPrice.value); - - if(myPrice < evnTotPrice){ - - alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다.evn"); - return false; - - }else{ - - myPrice = myPrice - evnTotPrice; - - } - - //치환문자가 있는 경우 변수 정보 담아주기(그림문자 아닌경우) - if(txtReplYn == 'Y' && imgCnt < 1){ - - var evnShortMsgCnt = $("#evnShortMsgCnt").val(); - var evnLongMsgCnt = $("#evnLongMsgCnt").val(); - - form.shortMsgCnt.value = evnShortMsgCnt; - form.longMsgCnt.value = evnLongMsgCnt; - form.nameList.value = evnName; - form.rep1List.value = evnRep1; - form.rep2List.value = evnRep2; - form.rep3List.value = evnRep3; - form.rep4List.value = evnRep4; - - }else if(txtReplYn == 'Y' && imgCnt > 0){//치환문자가 있는 경우 변수 정보 담아주기(그림문자인 경우) - - form.nameList.value = evnName; - form.rep1List.value = evnRep1; - form.rep2List.value = evnRep2; - form.rep3List.value = evnRep3; - form.rep4List.value = evnRep4; - - } - - //이벤트 발송 실행 해주기 - var form = document.msgForm; - - var data = new FormData(form); -// url = "/web/mjon/msgdata/sendMsgDataAjax.do"; - url = "/web/mjon/msgdata/sendMsgDataAjax_advc.do"; - console.log('url :: ', url); - $.ajax({ - type: "POST", - url: url, - data: data, - dataType:'json', - async: true, - processData: false, - contentType: false, - cache: false, - success: function (returnData, status) { - console.log('returnData : ', returnData); - if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 - if("fail" == returnData.result){ - - alert(returnData.message); - return false; - - }else if("loginFail" == returnData.result){ - - alert(returnData.message); - return false; - - }else if("smsLengFail" == returnData.result){ - - alert(returnData.message); - return false; - - }else if("imgSourceFail" == returnData.result){ - - $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); - $('.pop_msg_fails .msg_text').html(returnData.message); - $('.mask').addClass('on'); - - }else if("spamKeyWordFail" == returnData.result){//스팸 및 스미싱 단어가 들어간 문자 발송시 회원 이용정지 처리 - - $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); - $('.pop_msg_spam .msg_text').html(returnData.message); - $('.mask').addClass('on'); - - }else if("statusFail" == returnData.result){ - - alert(returnData.message); - //문자발송 URL Move - goMsgUrlMove(); - return false; - - }else{ - - var smsCnt = returnData.resultSts; - var blockCnt = returnData.resultBlockSts; - - //이벤트 발송 처리가 완료 되면 나머지 일반 캐시로 발송할 문자 처리를 진행해 준다. - var norPhoneNumCnt = norPhoneNum.length; - if(norPhoneNumCnt > 0){ - - var norEachPrice = getNorEachPrice(evnMsgType); //일반 개별 단가 금액 셋팅해주기 - - form.callToList.value = norPhoneNum; //수신자번호 리스트 저장해주기 - form.eachPrice.value = norEachPrice; //일반 개별 단가 금액 셋팅해주기 - form.totPrice.value = norEachPrice * norPhoneNumCnt; //일반 단가 총 결제 금액 셋팅해주기 - form.sPrice.value = $("#norsPrice").val(); - form.mPrice.value = $("#normPrice").val(); - form.pPrice.value = $("#norpPrice").val(); - form.p2Price.value = $("#norp2Price").val(); - form.p3Price.value = $("#norp3Price").val(); - form.eventStatus.value = 'N'; - form.eventYn.value = 'N'; - - var norTotPrice = parseFloat(form.totPrice.value); - - if(myPrice < norTotPrice){//보유캐시 부족시 알림 레이어 팝업 보여주기, 발송된 이벤트 건수 및 미발송 일반 방송 건수 정보 표시해줌 - - var failMsg = "이벤트 캐시 잔액으로 발송한 문자("+smsCnt+"건)의 발송이 완료되었으나 일반 문자 발송("+norPhoneNumCnt+"건)에 필요한 회원님의 보유 잔액이 부족 합니다."; - - $('.loading_layer').removeClass('active'); - - $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); - $('.pop_msg_fails .msg_text').html(failMsg); - $('.mask').addClass('on'); - - return false; - - } - - //치환문자가 있는 경우 변수 정보 담아주기(그림문자가 아닌경우) - if(txtReplYn == 'Y' && imgCnt < 1){ - - //치환문자 단/장문 혼용된 경우 각 타입별 건수를 재 계산해준다. - //총 단/장문 각각 건수에서 이벤트로 발송한 건수를 빼준다. - var evnShortMsgCnt = $("#evnShortMsgCnt").val(); - var evnLongMsgCnt = $("#evnLongMsgCnt").val(); - - //일반 장문/단문 발송 건수 계산해주기 총 건수에서 이벤트로 발송해준 건수를 빼준다. - var shortMsgCnt = Number(orgShortMsgCnt) - Number(evnShortMsgCnt); - var longMsgCnt = Number(orgLongMsgCnt) - Number(evnLongMsgCnt); - - - //계산 값이 음수로 나오는 경우 0건으로 간주한다. - if(shortMsgCnt <= 0){ - - shortMsgCnt = 0; - - } - - if(longMsgCnt <= 0){ - - longMsgCnt = 0; - - } - - form.shortMsgCnt.value = shortMsgCnt; - form.longMsgCnt.value = longMsgCnt; - - form.nameList.value = norName; - form.rep1List.value = norRep1; - form.rep2List.value = norRep2; - form.rep3List.value = norRep3; - form.rep4List.value = norRep4; - - }else if(txtReplYn == 'Y' && imgCnt > 0){//치환문자가 있는 경우 변수 정보 담아주기(그림문자인 경우) - - form.nameList.value = norName; - form.rep1List.value = norRep1; - form.rep2List.value = norRep2; - form.rep3List.value = norRep3; - form.rep4List.value = norRep4; - - } - - sendMsgAjax(smsCnt, blockCnt); - } - - } - - } else if(status== 'fail'){ - alert(returnData.message); - } - }, - beforeSend : function(xmlHttpRequest) { - //로딩창 show - $('.loading_layer').addClass('active'); - }, - complete : function(xhr, textStatus) { - //로딩창 hide - //$('.loading_layer').removeClass('active'); - }, - error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } - }); - - }else{ - - //이벤트 건수로 발송 할 수 없는 경우 일반 캐시 단가로 발송처리하기 - if(norPhoneNum.length > 0){ - - form.callToList.value = norPhoneNum; //수신자번호 리스트 저장해주기 - form.eachPrice.value = getNorEachPrice(evnMsgType); //일반 개별 단가 금액 셋팅해주기 - form.sPrice.value = $("#norsPrice").val(); - form.mPrice.value = $("#normPrice").val(); - form.pPrice.value = $("#norpPrice").val(); - form.p2Price.value = $("#norp2Price").val(); - form.p3Price.value = $("#norp3Price").val(); - form.eventStatus.value = 'N'; - form.eventYn.value = 'N'; - - sendMsgAjax_advc(0,0); -// sendMsgAjax(0,0); - - }else{ - - alert("문자 전송 중 오류가 발생하였습니다.!!"); - return false; - - } - - } - - return false; - }else{ - - return false; - - } - - }else{ - - //발송 Ajax 호출해주기 - sendMsgAjax_advc(0,0); -// sendMsgAjax(0,0); - - } - - }else{ - - //발송 Ajax 호출해주기 - sendMsgAjax_advc(0,0); -// sendMsgAjax(0,0); - - } - - } - + //발송 Ajax 호출해주기 + sendMsgAjax_advc(); } +function sendMsgAjax_advc(){ + // 타블레이터 호출 + var $selectedData = tableL.getData(); // 데이터 가져오기 + + // 폼 데이터를 배열로 직렬화 + var form = $('#msgForm'); + var formDataArray = form.serializeArray(); + + // 배열을 객체로 변환 + var formData = {}; + $.each(formDataArray, function(index, field) { + formData[field.name] = field.value; + }); + + // 빈 값 제거 + removeEmptyValues(formData); + + // 선택된 데이터 추가 + formData["mjonMsgTabulListVO"] = $selectedData; + + // JSON 데이터 확인 + console.log("최종 formData:", JSON.stringify(formData)); + + + var url = "/web/mjon/msgdata/sendMsgDataAjax_advc.do"; + + $.ajax({ + type: "POST", + url: url, + data: JSON.stringify(formData), + contentType: 'application/json', + dataType: 'json', + success: function (data) { + console.log('data : ', data); + /* message:"특정문구 일괄변환 치환문자 데이터가 없습니다." + status:"BAD_REQUEST" */ + + var status = data.status; + if("OK" == status){ + + var smsCnt = Number(data.object.resultSts); + var blockCnt = Number(data.object.resultBlockSts); + + smsCnt = Number(smsCnt) + Number(paramSmsCnt); + blockCnt = Number(blockCnt) + Number(paramBlockCnt); + + if((smsCnt + blockCnt) == 0){ + + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.
      다시 시도해주세요.
      * 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지
      또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); + $('.mask').addClass('on'); + + }else{ + + $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + //예약발송 건의 경우 결과 팝업 문구 변경 + if(reserYn == 'Y'){ + $('.pop_msg_success .msg_text').html("예약 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
      문자가 예약 되었습니다."); + }else{ + $('.pop_msg_success .msg_text').html("발송 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
      문자가 발송 되었습니다."); + } + + $('.mask').addClass('on'); + + } + + + }else if("BAD_REQUEST" == status){ + + alert(data.message); + return false; + + }else if("UNAUTHORIZED" == status){ + + alert(data.message); + //문자발송 URL Move + goMsgUrlMove(); + return false; + + }else if("NO_CONTENT" == status){ + + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); + $('.pop_msg_fails .msg_text').html(returnData.message); + $('.mask').addClass('on'); + + } + + }, + beforeSend : function(xmlHttpRequest) { + //로딩창 show + $('.loading_layer').addClass('active'); + }, + complete : function(xhr, textStatus) { + //로딩창 hide + $('.loading_layer').removeClass('active'); + }, + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } + }); + +} //폼 유효성 검사 함수 function validateForm(form) { @@ -1757,98 +1376,16 @@ function getNorEachPrice(evnMsgType){ return norEachPrice; } - -function sendMsgAjax_advc(paramSmsCnt, paramBlockCnt){ - console.log('sendMsgAjax : '); - var form = document.msgForm; - var reserYn = $("#reserveYn").val(); - - var data = new FormData(form); -// url = "/web/mjon/msgdata/sendMsgDataAjax.do"; - url = "/web/mjon/msgdata/sendMsgDataAjax_advc.do"; - - $.ajax({ - type: "POST", - url: url, - data: data, - dataType:'json', - async: true, - processData: false, - contentType: false, - cache: false, - success: function (data) { - console.log('data : ', data); - /* message:"특정문구 일괄변환 치환문자 데이터가 없습니다." - status:"BAD_REQUEST" */ - - var status = data.status; -// if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 - if("OK" == status){ - - var smsCnt = Number(data.object.resultSts); - var blockCnt = Number(data.object.resultBlockSts); - - smsCnt = Number(smsCnt) + Number(paramSmsCnt); - blockCnt = Number(blockCnt) + Number(paramBlockCnt); - - if((smsCnt + blockCnt) == 0){ - - $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); - $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.
      다시 시도해주세요.
      * 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지
      또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); - $('.mask').addClass('on'); - - }else{ - - $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); - //예약발송 건의 경우 결과 팝업 문구 변경 - if(reserYn == 'Y'){ - $('.pop_msg_success .msg_text').html("예약 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
      문자가 예약 되었습니다."); - }else{ - $('.pop_msg_success .msg_text').html("발송 성공 : "+ smsCnt + "건,수신거부 : " + blockCnt + "건의
      문자가 발송 되었습니다."); - } - - $('.mask').addClass('on'); - - } - - - }else if("BAD_REQUEST" == status){ - - alert(data.message); - return false; - - }else if("UNAUTHORIZED" == status){ - - alert(data.message); - //문자발송 URL Move - goMsgUrlMove(); - return false; - - }else if("NO_CONTENT" == status){ - - $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); - $('.pop_msg_fails .msg_text').html(returnData.message); - $('.mask').addClass('on'); - - } - -// } else if(status== 'fail'){ -// alert(returnData.message); -// } - }, - beforeSend : function(xmlHttpRequest) { - //로딩창 show - $('.loading_layer').addClass('active'); - }, - complete : function(xhr, textStatus) { - //로딩창 hide - $('.loading_layer').removeClass('active'); - }, - error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } +//빈 값이나 null 값을 제거하는 함수 +function removeEmptyValues(obj) { + Object.keys(obj).forEach(function(key) { + if (obj[key] === null || obj[key] === '') { + delete obj[key]; + } }); - } + function sendMsgAjax(paramSmsCnt, paramBlockCnt){ var form = document.msgForm; var reserYn = $("#reserveYn").val(); diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView_Back.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView_Back.jsp deleted file mode 100644 index 744147ae..00000000 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView_Back.jsp +++ /dev/null @@ -1,1361 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> -<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> - - - - - - - - - - - - - -
      - -
      - -
        -
      • -
      • -
      - -
      - - -
      -
      -

      문자전송

      -
        -
      • 단문8.2
      • -
      • 장문24.6
      • -
      • 그림57.3
      • -
      -
      -
      -

      - 90byte 초과 시, 장문으로 전환됩니다. 장문 문자는 최대 2,000byte까지 작성할 수 있습니다.

      -

      - 포토문자 1건에 포토 최대 3장 첨부가능 [권장 사이즈 : 640 x 960픽셀 / 최대용량 : 10MB]

      -

      - 광고성 메시지는 반드시 유의사항 확인 후 발송해 주시기 바랍니다. [광고문자 유의사항 보기]

      - -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      일반 문자보내기 분류 번호 내용 등을 입력하는 표
      문자분류 - - - - -
      발신번호 - - - -
      제목 - - - - - -
      내용 -
      -
      -
        - -
      - - -
      -
      -

      - 0 / - 90byte -

      - 단문 - -
      -
      -
      -
      - - - - -
      - - -
      -
      -
      -
      받는사람 -
      -
      - - - - * 중복번호는 한번만 발송됩니다. -
      -
      -

      120건 /

      -

      중복 9

      -
      -
      -
      -
      -
      - - -
      -
      -

      번호

      - - -
      -
      -

      이름

      - - -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

      -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

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

      번호

      - - -
      -
      -

      이름

      - - -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

      -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

      -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

      -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

      -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

      -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

      -
      -
      -
      -
      - - -
      -
      -

      010-1234-5678

      -
      -
      -

      홍길동

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

      결제금액 :

      -

      200,000(부가세 포함)

      -
      - -
      추천인 ID - - - - -
      - - - -
      -
      -
      -
      -
      -
      -

      미리보기

      -
      - 단문 -
      - 글자크기 - - -
      -
      -
      - 포토 -
        -
      • 1
      • -
      • 2
      • -
      • 3
      • -
      -
      - 글자크기 - - -
      -
      - -
      -
      - -
      -
      - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. -
      -
      - -
      -
      -

      ※ 단말기 설정에 따라 다르게 보일 수 있습니다

      -
      -
      - - - - -
      -
      -
      - 날짜 : -
      - -
      - -
      - - - -
      -
      -
      - - - - - - -
      -
      -
      -
      - - -
      -
      -
      -
      -
      - -
      -
      -

      엑셀문자

      -
        -
      • 단문8.2
      • -
      • 장문24.6
      • -
      • 그림57.3
      • -
      -
      -
      -

      - 각각 다른 사람에게 다른 내용의 메시지를 한번에 보낼 수 있습니다. (최대 1만 건)

      -

      - 광고성 메시지는 반드시 유의사항 확인 후 발송해 주시기 바랍니다. [광고문자 유의사항 보기]

      -

      - 엑셀영역은 복사, 붙여넣기가 가능합니다.

      - -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - -
      일반 문자보내기 분류 번호 내용 등을 입력하는 표
      문자분류 - - - - -
      발신번호 - - - -
      제목 - - - - -
      내용 -
      -
      - - -
      -
      -

      15 / 2000byte

      - 장문 -
      -
      -
      -
      - - - - -
      - - -
      -
      -
      -
      -
      -
      -
      -
      -

      미리보기

      -
      - 장문 -
      - 글자크기 - - -
      -
      - -
      -
      - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. - 해마다 찾아오는 봄이지만 - 봄맞이 대청소라는 말처럼, - 새 봄을 맞아 봄맞이 마음청소 한번하고 가실께요~ㅎㅎ -

      - "새술은 새부대에"라는 말처럼 버리고 싶은 기억들을 - 깨끗이 비워보는 겁니다. -
      -
      - -
      -
      -

      ※ 단말기 설정에 따라 다르게 보일 수 있습니다

      -
      -
      - -
      -
      -
      - - - * 보내실 주소록 그룹을 선택하세요. - -
      -
      -
      -
      - - - - -
      -
      - - - -
      -
      -
      - -
      -
      -
      -
      - - - - - - - - - - - - - - - -
      일반 문자보내기 분류 번호 내용 등을 입력하는 표
      -
      -

      결제금액 :

      -

      200,000(부가세 포함)

      -
      - -
      추천인 ID - - - - -
      - - - -
      -
      -
      -
      -
      -
      - - - - -
      -
      -
      - 날짜 : -
      - -
      - -
      - - - -
      -
      -
      - - - - - - -
      -
      -
      -
      - - -
      -
      -
      -
      -
      - -
      - -
        -
      • -
      • -
      • -
      • -
      - -
      - - - - - - -
      - - -
      - -
      -
      -
      - - - -
      -
      -
      - All - - - - - -
      - -
      - -
      -
      -
      -
      - <%--
        - -
      • -

        화이트데이

        -
        -
        -
        -

        0 / 90byte

        -
      • -
        -
      --%> - - - <%-- -
        - -
      -
      --%> - -
      -
      -
      - -
      -
      -
      -
      - 전체 - 기업 - 개인 -
      전체
      -
      - - -
      -
      -
      - All - - - - - - -
      - -
      -
      -
        - - -
      • - -
        -

        <%-- --%>제목

        -
        - -
        -
      • -
        -
      - - - -
        - -
      -
      - -
      - -
      - -
      - -
      -
      - - \ No newline at end of file