친구톡 요금 계산 js cnrk
This commit is contained in:
parent
9a9977af1a
commit
297e46ce88
315
src/main/webapp/js/kakao/ft/ftPriceClclt.js
Normal file
315
src/main/webapp/js/kakao/ft/ftPriceClclt.js
Normal file
@ -0,0 +1,315 @@
|
||||
/**
|
||||
*
|
||||
* @author : 우영두
|
||||
* @fileName : ftPriceClclt.js
|
||||
* @date : 2024.01.12
|
||||
* @description : 친구톡 및 대체문자 금액 연산.js
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* ----------------------------------------------------------- *
|
||||
* 2024.01.12 우영두 최초 생성
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} totRows 수신자 수
|
||||
* @description 금액 계산 function
|
||||
* 대체 문자 X
|
||||
* 카카오 금액 * 수신자 수 계산
|
||||
*/
|
||||
function totalFtPriceSum(totRows){
|
||||
|
||||
var collNumCnt = parseInt(totRows); //받는사람 건수
|
||||
var price = $("#kakaoFtPrice").val(); //개별 건수 금액
|
||||
var totalPrice = 0; //전체 금액
|
||||
var totalStr = "0"; //전체 합계 금액
|
||||
var userMoney = $('#hdUserMoney').text(); //헤더 영역 보유 금액 불러오기
|
||||
|
||||
if(!userMoney > 0){
|
||||
|
||||
userMoney = 0;
|
||||
|
||||
}
|
||||
//헤더 영역 보유 금액 콤마 문자 제거
|
||||
if(userMoney != ''){
|
||||
|
||||
userMoney = userMoney.replaceAll("," , "");
|
||||
|
||||
}
|
||||
|
||||
totalPrice = price * collNumCnt;
|
||||
|
||||
// 소수점 첫째자리 까지 표시
|
||||
totalPrice = totalPrice.toFixed(1);
|
||||
|
||||
if(totalPrice > 0){
|
||||
|
||||
//totalStr = totalPrice.toFixed(2);
|
||||
totalStr = totalPrice;
|
||||
|
||||
}
|
||||
|
||||
//개별 문자 단가 파라미터에 입력
|
||||
$('#eachPrice').val(numberWithCommas(price));
|
||||
|
||||
//결제금액 합계 파라이터에 입력
|
||||
$('#totPrice').val(numberWithCommas(totalStr));
|
||||
|
||||
//결제금액 합계 화면에 표시
|
||||
$('#totalPriceTxt').text(numberWithCommas(totalStr));
|
||||
|
||||
$('#repPriceTxt').hide();
|
||||
|
||||
return totalStr;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ======================================================================================================================
|
||||
*
|
||||
* */
|
||||
|
||||
//카카오 mms sms 단가 셋팅
|
||||
var KAKAO_FT_PRICE = '';
|
||||
var SHORT_PRICE = '';
|
||||
var LONG_PRICE = '';
|
||||
|
||||
/*$(document).ready(function(){
|
||||
|
||||
// 카카오 mms sms 단가 셋팅
|
||||
KAKAO_FT_PRICE = $('#kakaoFtPrice').val();
|
||||
SHORT_PRICE = $('#shortPrice').val();
|
||||
LONG_PRICE = $('#longPrice').val();
|
||||
|
||||
///////////////////////////////////////// Mutation Observer
|
||||
// 감시 대상 node 선택
|
||||
// 변수X 수신자 목록
|
||||
let target01 = document.getElementById('wrap01_body');
|
||||
// 변수O 수신자 목록
|
||||
let target02 = document.getElementById('wrap02');
|
||||
// 대체 문자 단문 장문 텍스트 노드
|
||||
let target03 = document.getElementById('afterDeny');
|
||||
|
||||
// 감시자의 설정
|
||||
let option = {
|
||||
subtree : true // 대상 노드의 자식 요소뿐만 아니라 후손 요소의 변화까지 감지
|
||||
, childList : true // 대상 노드의 자식 요소(텍스트 포함)의 변화 감지
|
||||
, attributes : true // 해당 노드의 attribute 속성
|
||||
|
||||
// , characterData: true // 대상 노드의 데이터 변화 감지
|
||||
};
|
||||
|
||||
|
||||
// wrap01 감시자 인스턴스 만들기
|
||||
let observer_wrap01 = new MutationObserver((mutations) => {
|
||||
// 노드가 변경 됐을 때의 작업
|
||||
fn_priceClclt();
|
||||
});
|
||||
|
||||
// wrap02 감시자 인스턴스 만들기
|
||||
let observer_wrap02 = new MutationObserver((mutations) => {
|
||||
// 노드가 변경 됐을 때의 작업
|
||||
fn_priceClclt();
|
||||
});
|
||||
|
||||
// wrap03 감시자 인스턴스 만들기
|
||||
let observer_wrap03 = new MutationObserver((mutations) => {
|
||||
// 노드가 변경 됐을 때의 작업
|
||||
fn_priceClclt();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
// 대상 노드에 감시자 전달
|
||||
observer_wrap01.observe(target01, option);
|
||||
observer_wrap02.observe(target02, option);
|
||||
observer_wrap03.observe(target03, option);
|
||||
|
||||
///////////////////////////////////////// //Mutation Observer
|
||||
|
||||
});*/
|
||||
|
||||
/**
|
||||
* @description 금액 계산 function
|
||||
*/
|
||||
function fn_priceClclt(){
|
||||
|
||||
// 미리보기 텍스트
|
||||
var templateHtml = $('#smsTxtArea').val();
|
||||
// var templateHtml = $('.template_text').html();
|
||||
|
||||
// 수신 번호 개수
|
||||
var phoneSu = $('.phoneArea').length;
|
||||
// 대체문자 있는지 확인
|
||||
var isSendFailChecked = $("#send_fail_check").is(":checked");
|
||||
// 치환문자 여부 확인
|
||||
var txtReplYn = $('#txtReplYn').val()
|
||||
// 대체문자 하위에 장문 / 단문 select
|
||||
var msgTypeText = $('.msg_com').text().trim();
|
||||
|
||||
if(typeof templateHtml == 'undefined') return false;
|
||||
else if(isSendFailChecked && txtReplYn=='Y') fn_sendFailCheckedAndTxtRepl_Y(templateHtml, msgTypeText, phoneSu); // 대체문자 체크 & 치환문자 Y
|
||||
else if(isSendFailChecked && txtReplYn=='N') fn_sendFailCheckedAndTxtRepl_N(msgTypeText, phoneSu); // 대체문자 체크 & 치환문자 N
|
||||
else fn_sendFailUnChecked(phoneSu);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} phoneSu 수신자 수
|
||||
* @description 금액 계산 function
|
||||
* 대체 문자 X
|
||||
* 카카오 금액 * 수신자 수 계산
|
||||
*/
|
||||
function fn_sendFailUnChecked(phoneSu){
|
||||
|
||||
// 카카오 금액 * 수신자 수
|
||||
// fn_writePriceText() 첫 파라미터가 null이면 카카오 전송으로 인식
|
||||
fn_writePriceText('', phoneSu);
|
||||
// $('#totalPriceTxt').text((KAKAO_AT_PRICE * phoneSu).toFixed(1));
|
||||
fn_priceText('알림톡', phoneSu);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} templateHtml 템플릿html
|
||||
* @param {*} msgTypeText 발송 타입
|
||||
* @param {*} phoneSu 수신자 수
|
||||
* @description 금액 계산 function
|
||||
* 대체 문자 O
|
||||
* 치환 문자 O
|
||||
*/
|
||||
function fn_sendFailCheckedAndTxtRepl_Y(templateHtml, msgTypeText, phoneSu){
|
||||
|
||||
// 대체문자 하위에 html 그대로의 byte 계산이 단문일 경우에만 치환 후 장문이 있는지 확인
|
||||
if(msgTypeText == '단문'){
|
||||
msgTypeText = fn_transHtml(msgTypeText, templateHtml);
|
||||
}
|
||||
|
||||
fn_writePriceText(msgTypeText, phoneSu);
|
||||
fn_priceText(msgTypeText, phoneSu);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} msgTypeText 발송 타입
|
||||
* @param {*} phoneSu 수신자 수
|
||||
* @description 금액 계산 function
|
||||
* 대체 문자 O
|
||||
* 치환 문자 X
|
||||
*/
|
||||
function fn_sendFailCheckedAndTxtRepl_N(msgTypeText, phoneSu){
|
||||
|
||||
fn_priceText(msgTypeText, phoneSu);
|
||||
fn_writePriceText(msgTypeText, phoneSu);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} msgTypeText 발송 타입
|
||||
* @param {*} phoneSu 수신자 수
|
||||
* @returns
|
||||
* @description 발송 금액 계산 / 노출
|
||||
*/
|
||||
function fn_priceText(msgTypeText, phoneSu){
|
||||
|
||||
// $("#repPriceTxt").is(":visible") => 발송 금액 show hide 여부
|
||||
if(phoneSu === 0){
|
||||
|
||||
$('#repPriceTxt').empty();
|
||||
$('#repPriceTxt').hide();
|
||||
return false;
|
||||
}
|
||||
// 텍스트 초기화
|
||||
$('#repPriceTxt').show();
|
||||
$('#repPriceTxt').empty();
|
||||
|
||||
var priceText = '$SENDTYPE$ :<strong>$SU$</strong>건';
|
||||
priceText = priceText.replace('$SENDTYPE$', msgTypeText).replace('$SU$', phoneSu);
|
||||
|
||||
$('#repPriceTxt').append(priceText);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 발송금액 라인 text / 금액 초기화
|
||||
*/
|
||||
function priceInit(){
|
||||
if($("#repPriceTxt").is(":visible")){
|
||||
$('#repPriceTxt').empty();
|
||||
$('#repPriceTxt').hide();
|
||||
}
|
||||
$('#totalPriceTxt').text(0.0);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} msgTypeText 발송 타입
|
||||
* @param {*} phoneSu 수신자 수
|
||||
* @description 발송 금액 '발송타입:00건' 노출
|
||||
*/
|
||||
function fn_writePriceText(msgTypeText, phoneSu){
|
||||
|
||||
var price;
|
||||
msgTypeText = msgTypeText.trim();
|
||||
if(msgTypeText == '단문') price = SHORT_PRICE * phoneSu;
|
||||
else if(msgTypeText == '장문') price = LONG_PRICE * phoneSu;
|
||||
else price = KAKAO_AT_PRICE * phoneSu; // 카카오
|
||||
|
||||
$('#totalPriceTxt').text((price).toFixed(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {*} msgTypeText 발송 타입 : 단문
|
||||
* @param {*} templateHtml 템플릿 html
|
||||
* @returns msgTypeText : 단문 or 장문
|
||||
* @description 치환 데이터 있는 경우 단문일 경우만 호출
|
||||
* 치환 후 장문 데이터일경우 'returns 장문'으로 끝남
|
||||
*/
|
||||
function fn_transHtml(msgTypeText, templateHtml){
|
||||
|
||||
// 템플릿
|
||||
templateHtml = templateHtml.trim().replace(/(<br>|<br\/>|<br \/>)/g, '\n');
|
||||
// 치환 부분 '#{내용}'만 추출
|
||||
var varList = $("#excelTemplateContent").val().match(/#\{([^}]+)\}/g);
|
||||
// 템플릿을 반복할때마다 담는 temp 선언
|
||||
var tempTemplateHtml;
|
||||
// 치환 데이터 담는 변수 선언
|
||||
var replaceStr;
|
||||
|
||||
// excelBody 부분 반복 시작
|
||||
$('.excelBody').each(function(i, t){
|
||||
tempTemplateHtml = templateHtml;
|
||||
|
||||
$(this).find('.transData').each(function(index, item){
|
||||
// console.log('item text :: ', $(item).text().trim());
|
||||
replaceStr = $(item).text().trim();
|
||||
tempTemplateHtml = tempTemplateHtml.replace(varList[index], replaceStr);
|
||||
});
|
||||
// 치환 후 byte 계산
|
||||
// 장문이면 break;
|
||||
if(90 < conByteLeng(tempTemplateHtml))
|
||||
{
|
||||
msgTypeText = '장문';
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return msgTypeText;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user