File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2023-06-22
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<script type="text/javascript" src="<c:url value='/js/txtSpecialReplace.js?date=202209210001'/>"></script>
<script type="text/javascript" src="<c:url value='/js/MJUtill.js'/>"></script>
<script>
$(document).ready(function (){
var phoneIn = $(".send_right .phone", opener.document).html();
//팝업으로 보내기 전에 realtime class 삭제 - 스크립트 제외
phoneIn = phoneIn.replace(' class="realtime"',"");
$("#phonePreview").html(phoneIn)
});
//문자발송 처리 함수
function fn_testSendMsgData(){
var form = document.msgForm;
//회원 보유 잔액 비교
var totPriceOnly = stringReplaceAll(form.totPrice.value, ",", "");
var userMoneyOnly = stringReplaceAll(form.myPrice.value, ",", "");
if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){
alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다.");
return false;
}
//이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요.
var eventStatus = form.eventStatus.value;
var eventRemainCash = parseFloat(form.eventRemainCash.value);
if(eventStatus == 'Y'){
if(parseFloat(eventRemainCash) < parseFloat(totPriceOnly)){
alert("고객님의 이벤트 캐시 잔액은 " + eventRemainCash + "원으로 입력하신 수량의 문자를 전부 발송할 수 없습니다. 잔액 이하로 발송건수를 재설정하시기 바랍니다.");
return false;
}
//이벤트 발송 문자 종류로 셋팅
form.eventYn.value = "Y"; //이벤트문자 종류 설정
}
if(confirm("테스트 문자를 전송하시겠습니까?")){
var imgFilePath = [];
var imgFileId = [];
var templateYn = [];
// $('.thumb_wrap').find('.thumb_img').each(function(idx, el) {
$('.preiew_img').find('.preBoxF').each(function(idx, el) {
var imgSrc = $(el).find("img").attr("src");
//if($(el).hasClass("edit_y")) {
//에디터에서 넘어온 이미지인지 확인, 해당 문자열이 없으면 -1 반환
if(imgSrc.indexOf('base64') > 0) {
//이미지 변환
const imgBase64 = $(el).find("img").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);
templateYn.push('N');
} else if(status== 'fail'){
alert(returnData.message);
}
},
error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); }
});
} else {
var fileId = imgSrc.substring(imgSrc.indexOf("=")+1, imgSrc.indexOf("&"));
//에디터 안거친 템플릿 이미지면 바로 src 때림
imgFilePath.push(imgSrc);
imgFileId.push(fileId);
templateYn.push('Y');
}
});
form.templateYn.value = templateYn; // 템플릿 사용여부 담아주기
form.imgFilePath.value = imgFilePath; // 저장한 이미지 경로 담아주기
form.callFrom.value = removeDash(form.callFrom.value); // 발신번호 대쉬(-) 문자 없애주기
form.reserveYn.value = "N"; // 즉시 / 예약 문자 선택 여부
form.imgFileId.value = imgFileId;
//광고, 선거문자 후처리
var msgKind = form.msgKind.value;
if(msgKind == 'A') { //광고
var adTxt = $('.ad_tit').text();
var denyTxt = $('.deny_receipt').text();
form.smsTxt.value = adTxt + $(".preview_auto").find("pre").text() + '\n' + denyTxt + " "; //광고 문구 뒤에 공백을 붙이게되므로, 뒤에 한칸 추가하여 바이트수를 맞춤
} else if (msgKind == 'C') { //선거문자
var adTxt = '';
var denyTxt = '';
var adverYn = opener.document.msgForm.send_adYn.value;
//선거문자 20건 발송에서는 선거 필수문구가 필수가 아니어서 선거문자 필수 문구가 있는지 체크하여 처리함.20231214 추가
if(adverYn == 'Y'){
adTxt = $('.ad_tit').text();
denyTxt = $('.deny_receipt').html();
denyTxt = denyTxt.replaceAll("<br>","\n");
}
form.smsTxt.value = adTxt + '\n' + $(".preview_auto").find("pre").text() + '\n' + denyTxt;
} else { //일반문자
form.smsTxt.value = $(".preview_auto").find("pre").text();
}
var data = new FormData(form);
url = "/web/mjon/msgdata/sendMsgDataAjax.do";
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
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){
alert(returnData.message);
}else{
var resultCnt = returnData.resultSts;
var resultBlockCnt = returnData.resultBlockSts;
//차단한 번호 제외하고 발송건수가 1 미만인 경우는 발송이 안된 것
if(resultCnt < 1) {
alert("테스트 문자가 발송되지 않았습니다. \n"+ resultBlockCnt + "건의 번호가 수신거부 상태입니다.");
} else if (resultCnt >= 1) {
alert("테스트 문자가 발송되었습니다.");
}
//내 충전금액 변경해 주기 - 헤더, 충전금액 두군데 수정
var afterCash = opener.numberWithCommas(returnData.afterCash);
//$("#hdUserMoney").text(afterCash); // 헤더 보유잔액 부분
//$("#spUserMoney").text(afterCash); // 문자발송 내 충전금
//$("#userMoney").attr('placeholder', afterCash); // 문자발송 내 충전금
$("#hdUserMoney",opener.document).text(afterCash); // 헤더 보유잔액 부분
$("#spUserMoney",opener.document).text(afterCash); // 문자발송 내 충전금
$("#userMoney",opener.document).text(afterCash); // 문자발송 내 충전금
$("#userMoney",opener.document).attr('placeholder', afterCash); // 문자발송 내 충전금
window.close();
}
} else if(status== 'fail'){
alert(returnData.message);
}
},
error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
</script>
<form id="msgForm" name="msgForm" method="post">
<input type="hidden" id="msgKind" name="msgKind" value="${searchVO.msgKind}" /><!-- 문자종류(일반:N, 광고:A , 선거:C,관리자:S) -->
<input type="hidden" id="msgType" name="msgType" value="${searchVO.msgType}" /><!-- 문자 종류 : 단문 - 4, 장문/그림 - 6 -->
<input type="hidden" id="imgFilePath" name="imgFilePath" value="" /><!-- 선택 이미지 파일 경로 정보 , 로 구분 최대 3장까지 -->
<input type="hidden" id="imgFileId" name="imgFileId" value="" /><!-- 선택 이미지 파일 아이디 정보 , 로 구분 최대 3장까지 -->
<input type="hidden" id="fileCnt" name="fileCnt" value="0" /><!-- 첨부파일 추가 갯수 -->
<input type="hidden" id="mmsSubject" name="mmsSubject" value="${mmsSubject}"/> <!-- mms 제목 -->
<input type="hidden" id="callFrom" name="callFrom" value="${callFrom}"/> <!-- 발신자 전화번호 -->
<input type="hidden" id="eachPrice" name="eachPrice" value="${eachPrice}"/> <!-- 문자 개별 단가 금액 -->
<input type="hidden" id="totPrice" name="totPrice" value="${eachPrice}"/> <!-- 총 결제 금액 -->
<input type="hidden" id="smsLen" name="smsLen" value="0"/> <!-- 문자 길이 정보 -->
<input type="hidden" id="reserveYn" name="reserveYn" value="N"/> <!-- 즉시/예약 선택여부 -->
<input type="hidden" id="reqDate" name="reqDate" value=""/><!-- 예약문자 날짜 -->
<input type="hidden" id="imgCnt" value="0" />
<input type="hidden" id="templateYn" name="templateYn" value="" />
<input type="hidden" id="smsTxt" name="smsTxt" value=""/><!-- 문자발송 문자 내용 -->
<input type="hidden" id="myPrice" name="myPrice" value="<c:out value="${userMoney}"/>"/><!-- 보유 캐시금액 -->
<input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/><!-- 변환문자 유무 -->
<!-- <input type="hidden" id="shortMsgCnt" name="shortMsgCnt" value="0"/> --><!-- 단문 변환문자 건수 -->
<!-- <input type="hidden" id="longMsgCnt" name="longMsgCnt" value="0"/> --><!-- 장문 변환문자 건수 -->
<!-- 이벤트 관련 변수 -->
<input type="hidden" id="eventStatus" name="eventStatus" value="<c:out value='${eventMberInfo.eventStatus}'/>"/>
<input type="hidden" id="eventRemainCash" name="eventRemainCash" value="<c:out value='${eventMberInfo.eventRemainCash}'/>"/>
<input type="hidden" id="eventYn" name="eventYn" value="N"/>
<div class="test_sendpop">
<div class="info_popup">
<div class="popup_heading">
<p>테스트 발송</p>
</div>
<div class="layer_in">
<ul class="info_list">
<li>테스트 발송은 문자를 본인에게 발송하여 문자내용을 미리 확인하는 서비스 입니다.</li>
</ul>
</div>
</div>
<div class="test_wrap">
<div class="number">
<dl>
<dt>수신번호</dt>
<dd><input type="text" name="callToList" id="callToList" value="${mberManageVO.moblphonNo}"/></dd>
</dl>
<dl class="price">
<dt>발송금액</dt>
<dd><span>${eachPrice}</span>원</dd>
</dl>
<p class="text">발송하시겠습니까?<span>※ 문자 발송과 동일하게 요금이 차감됩니다.</span></p>
<button type="button" class="btnType btnType10" onclick="fn_testSendMsgData(); return false;">테스트발송</button>
</div>
<div class="phone" id="phonePreview"></div>
</div>
</div>
</form>