친구톡 요금 계산 및 발송시간 제한 처리
@9a9977af1af1c8c4a328b3f6bc007885566ccf41
--- src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
... | ... | @@ -171,6 +171,10 @@ |
| 171 | 171 |
if(mberManageVO.getKakaoAtPrice() == 0.0f) |
| 172 | 172 |
mberManageVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); |
| 173 | 173 |
|
| 174 |
+ //카카오 친구톡 개인 단가가 없는 경우 시스템 단가로 |
|
| 175 |
+ if(mberManageVO.getKakaoFtPrice() == 0.0f) |
|
| 176 |
+ mberManageVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); |
|
| 177 |
+ |
|
| 174 | 178 |
|
| 175 | 179 |
// SMS 인경우 |
| 176 | 180 |
// 사용자 개인 단가가 없으면 시스템 단가로 |
--- src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
... | ... | @@ -146,7 +146,7 @@ |
| 146 | 146 |
String friendId = kakaoVO.getFriendId(); |
| 147 | 147 |
KakaoVO resultTemplateVO = new KakaoVO(); |
| 148 | 148 |
|
| 149 |
- if(!friendId.equals("") || friendId != null) {
|
|
| 149 |
+ if(friendId != null) {
|
|
| 150 | 150 |
|
| 151 | 151 |
System.out.println("+++++++++++++++++++++++ friendId ::: "+friendId);
|
| 152 | 152 |
|
... | ... | @@ -155,6 +155,41 @@ |
| 155 | 155 |
} |
| 156 | 156 |
|
| 157 | 157 |
model.addAttribute("resultTemplateVO", resultTemplateVO);
|
| 158 |
+ |
|
| 159 |
+ |
|
| 160 |
+ //친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지 |
|
| 161 |
+ |
|
| 162 |
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
| 163 |
+ |
|
| 164 |
+ Date nows = new Date(); |
|
| 165 |
+ String nowDate = sdf1.format(nows); |
|
| 166 |
+ cal.setTime(nows); |
|
| 167 |
+ |
|
| 168 |
+ int hours = cal.get(Calendar.HOUR_OF_DAY); |
|
| 169 |
+ int minuts = cal.get(Calendar.MINUTE); |
|
| 170 |
+ |
|
| 171 |
+ boolean sendStatus = true; |
|
| 172 |
+ |
|
| 173 |
+ if(hours >= 20) {
|
|
| 174 |
+ |
|
| 175 |
+ if(minuts >= 50) {
|
|
| 176 |
+ |
|
| 177 |
+ System.out.println("발송금지 시간" + hours + ":" + minuts);
|
|
| 178 |
+ sendStatus = false; |
|
| 179 |
+ |
|
| 180 |
+ } |
|
| 181 |
+ |
|
| 182 |
+ } |
|
| 183 |
+ |
|
| 184 |
+ if(hours < 8) {
|
|
| 185 |
+ |
|
| 186 |
+ System.out.println("발송금지 시간" + hours + ":" + minuts);
|
|
| 187 |
+ sendStatus = false; |
|
| 188 |
+ |
|
| 189 |
+ } |
|
| 190 |
+ |
|
| 191 |
+ System.out.println("발송상태는 ::: "+sendStatus);
|
|
| 192 |
+ model.addAttribute("sendStatus", sendStatus);
|
|
| 158 | 193 |
|
| 159 | 194 |
} |
| 160 | 195 |
|
--- src/main/java/itn/let/sym/site/service/JoinSettingVO.java
+++ src/main/java/itn/let/sym/site/service/JoinSettingVO.java
... | ... | @@ -36,6 +36,7 @@ |
| 36 | 36 |
private float customEdit3Price; // 이미지 편집(첨부이미지 3장이하) |
| 37 | 37 |
private float customTextPrice; // 텍스트 단순수정 |
| 38 | 38 |
private float kakaoAtPrice; // 카카오 알림톡 단가 |
| 39 |
+ private float kakaoFtPrice; // 카카오 친구톡 단가 |
|
| 39 | 40 |
private float faxPrice; // 팩스 단가 |
| 40 | 41 |
|
| 41 | 42 |
private float refundPer; //환불 비율 |
... | ... | @@ -209,6 +210,14 @@ |
| 209 | 210 |
this.kakaoAtPrice = kakaoAtPrice; |
| 210 | 211 |
} |
| 211 | 212 |
|
| 213 |
+ public float getKakaoFtPrice() {
|
|
| 214 |
+ return kakaoFtPrice; |
|
| 215 |
+ } |
|
| 216 |
+ |
|
| 217 |
+ public void setKakaoFtPrice(float kakaoFtPrice) {
|
|
| 218 |
+ this.kakaoFtPrice = kakaoFtPrice; |
|
| 219 |
+ } |
|
| 220 |
+ |
|
| 212 | 221 |
public float getFaxPrice() {
|
| 213 | 222 |
return faxPrice; |
| 214 | 223 |
} |
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
... | ... | @@ -2104,6 +2104,7 @@ |
| 2104 | 2104 |
, CUSTOM_TEXT_PRICE AS customTextPrice |
| 2105 | 2105 |
, POINT_PER AS pointPer |
| 2106 | 2106 |
, KAKAO_AT_PRICE AS kakaoAtPrice |
| 2107 |
+ , KAKAO_FT_PRICE AS kakaoFtPrice |
|
| 2107 | 2108 |
, FAX_PRICE AS faxPrice |
| 2108 | 2109 |
FROM MJ_MBER_SETTING |
| 2109 | 2110 |
|
... | ... | @@ -2120,6 +2121,7 @@ |
| 2120 | 2121 |
, PICTURE2_PRICE AS picture2Price |
| 2121 | 2122 |
, PICTURE3_PRICE AS picture3Price |
| 2122 | 2123 |
, KAKAO_AT_PRICE AS kakaoAtPrice |
| 2124 |
+ , KAKAO_FT_PRICE AS kakaoFtPrice |
|
| 2123 | 2125 |
, FAX_PRICE AS faxPrice |
| 2124 | 2126 |
, USER_MONEY AS userMoney |
| 2125 | 2127 |
, USER_POINT AS userPoint |
--- src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
... | ... | @@ -94,7 +94,9 @@ |
| 94 | 94 |
</script> |
| 95 | 95 |
<ul class="tabType4"> |
| 96 | 96 |
<li id="tabAt" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabAlim');">알림톡</button></li>
|
| 97 |
- <c:if test="${loginVO.id eq 'rosewiper'}">
|
|
| 97 |
+ <c:if test="${fn:contains(pageContext.request.requestURL , 'localhost')
|
|
| 98 |
+ || fn:contains(pageContext.request.requestURL , '192.168.0.33') |
|
| 99 |
+ || fn:contains(pageContext.request.requestURL , '119.193.215.98')}"> |
|
| 98 | 100 |
<li id="tabFt" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabFriend');">친구톡</button></li>
|
| 99 | 101 |
</c:if> |
| 100 | 102 |
<li id="tabConf" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabConf');">카카오톡 설정</button></li>
|
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
... | ... | @@ -2,12 +2,15 @@ |
| 2 | 2 |
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> |
| 3 | 3 |
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> |
| 4 | 4 |
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> |
| 5 |
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
|
| 5 | 6 |
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> |
| 6 | 7 |
|
| 7 | 8 |
<script src="/js/kakao/templateComm.js"></script> |
| 8 | 9 |
|
| 9 | 10 |
<script type="text/javascript" src="<c:out value='/js/MJUtill.js' />"></script> |
| 11 |
+<script type="text/javascript" src="<c:out value='/js/kakao/ft/ftPriceClclt.js' />"></script> |
|
| 10 | 12 |
<script type="text/javascript" src="<c:out value='/js/kakao/ft/ftTabulator.js' />"></script> |
| 13 |
+<script type="text/javascript" src="<c:out value='/js/txtSpecialReplace.js' />"></script> |
|
| 11 | 14 |
<script type="text/javascript" src="<c:out value='/js/kakao/at/addr.js' />"></script> |
| 12 | 15 |
<script type="text/javascript" src="<c:out value='/js/common/popup.js' />"></script> |
| 13 | 16 |
<script type="text/javascript" src="<c:out value='/js/kakao/ft/friendstalkExcel.js' />"></script> |
... | ... | @@ -42,6 +45,14 @@ |
| 42 | 45 |
$('#bizForm #reserveYn').val($(this).val());
|
| 43 | 46 |
}); |
| 44 | 47 |
|
| 48 |
+ //예약 발송 라디오 버튼 선택시 숨김 해제처리 |
|
| 49 |
+ $("#reserYnY").on('click', function(){
|
|
| 50 |
+ $('.rev_selected').show();
|
|
| 51 |
+ $('.send_rev .send_content').css('padding-bottom','0');
|
|
| 52 |
+ $('.send_btn .btnType:first-child').html('예약하기');
|
|
| 53 |
+ $('#bizForm #reserveYn').val($(this).val());
|
|
| 54 |
+ }); |
|
| 55 |
+ |
|
| 45 | 56 |
//템플릿 내용 입력 글자수 체크 해주기 |
| 46 | 57 |
$("#inputTemplateContent").keyup(function(e){
|
| 47 | 58 |
|
... | ... | @@ -67,7 +78,6 @@ |
| 67 | 78 |
return false; |
| 68 | 79 |
|
| 69 | 80 |
} |
| 70 |
- |
|
| 71 | 81 |
|
| 72 | 82 |
}); |
| 73 | 83 |
}); |
... | ... | @@ -124,6 +134,16 @@ |
| 124 | 134 |
//초기 광고포함 여부 처리 |
| 125 | 135 |
var adFlagVal = $("input[name=ad_flag]:checked").val();
|
| 126 | 136 |
advTextChange(adFlagVal); |
| 137 |
+ |
|
| 138 |
+ var reserYn = $("input[name=reserYn]:checked").val();
|
|
| 139 |
+ if(reserYn == 'N'){
|
|
| 140 |
+ |
|
| 141 |
+ $('.rev_selected').hide();
|
|
| 142 |
+ $('.send_rev .send_content').css('padding-bottom','108px');
|
|
| 143 |
+ $('.send_btn .btnType:first-child').html('발송하기');
|
|
| 144 |
+ $('#bizForm #reserveYn').val('N');
|
|
| 145 |
+ |
|
| 146 |
+ } |
|
| 127 | 147 |
|
| 128 | 148 |
} |
| 129 | 149 |
|
... | ... | @@ -430,9 +450,6 @@ |
| 430 | 450 |
//저장 템플릿 불러오기 선택시 |
| 431 | 451 |
function myTemplateSelect(ftId){
|
| 432 | 452 |
|
| 433 |
- //alert(ftId); |
|
| 434 |
- console.log(ftId); |
|
| 435 |
- |
|
| 436 | 453 |
var form = document.templateForm; |
| 437 | 454 |
|
| 438 | 455 |
form.friendId.value = ftId; |
... | ... | @@ -618,6 +635,48 @@ |
| 618 | 635 |
|
| 619 | 636 |
} |
| 620 | 637 |
|
| 638 |
+//분할전송 건수 데이터 체크 |
|
| 639 |
+function checkNumber(event) {
|
|
| 640 |
+ var divideCnt = $('#frmDivideCnt').val();
|
|
| 641 |
+ if(!(event.key >= 0 && event.key <= 9)) {
|
|
| 642 |
+ return false; |
|
| 643 |
+ } |
|
| 644 |
+ |
|
| 645 |
+ var totCnt = divideCnt + "" + event.key; |
|
| 646 |
+ if(Number(totCnt) > 5000){
|
|
| 647 |
+ alert("분할전송 건수는 5,000건을 초과할 수 없습니다.");
|
|
| 648 |
+ $('#frmDivideCnt').val("20");
|
|
| 649 |
+ return false; |
|
| 650 |
+ } |
|
| 651 |
+ |
|
| 652 |
+ return true; |
|
| 653 |
+} |
|
| 654 |
+ |
|
| 655 |
+function fnSelectMinChk(){
|
|
| 656 |
+ |
|
| 657 |
+ var resHour = $("#msgResHour option:selected").val();
|
|
| 658 |
+ var resMin = $("#msgResMin option:selected").val();
|
|
| 659 |
+ |
|
| 660 |
+ if(resHour == '20'){
|
|
| 661 |
+ |
|
| 662 |
+ if(resMin >= 50 && resMin <= 59){
|
|
| 663 |
+ |
|
| 664 |
+ alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다.");
|
|
| 665 |
+ $("#msgResMin").val("40").prop("selected", true);
|
|
| 666 |
+ |
|
| 667 |
+ } |
|
| 668 |
+ |
|
| 669 |
+ } |
|
| 670 |
+ |
|
| 671 |
+} |
|
| 672 |
+ |
|
| 673 |
+function fn_noTimeSend(){
|
|
| 674 |
+ |
|
| 675 |
+ alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다.");
|
|
| 676 |
+ return false; |
|
| 677 |
+ |
|
| 678 |
+} |
|
| 679 |
+ |
|
| 621 | 680 |
</script> |
| 622 | 681 |
|
| 623 | 682 |
<!-- 로딩바 --> |
... | ... | @@ -640,12 +699,12 @@ |
| 640 | 699 |
</div> |
| 641 | 700 |
|
| 642 | 701 |
<!-- 유저 보유잔액 --> |
| 643 |
- <input type="hidden" id="oriUserMoney" value="<c:out value='${userMoney }' />">
|
|
| 702 |
+ <input type="hidden" id="oriUserMoney" value="<c:out value='${userMoney}' />">
|
|
| 644 | 703 |
|
| 645 | 704 |
<!-- 각 금액 단가 --> |
| 646 |
- <input type="hidden" id="kakaoAtPrice" value="<c:out value='${sendPrice.kakaoAtPrice }' />"> <!-- 알림톡 단가 -->
|
|
| 647 |
- <input type="hidden" id="longPrice" value="<c:out value='${sendPrice.longPrice }' />"> <!-- mms 단가 -->
|
|
| 648 |
- <input type="hidden" id="shortPrice" value="<c:out value='${sendPrice.shortPrice }' />"> <!-- sms 단가 -->
|
|
| 705 |
+ <input type="hidden" id="kakaoFtPrice" value="<c:out value='${sendPrice.kakaoFtPrice}' />"> <!-- 친구톡 단가 -->
|
|
| 706 |
+ <input type="hidden" id="longPrice" value="<c:out value='${sendPrice.longPrice}' />"> <!-- mms 단가 -->
|
|
| 707 |
+ <input type="hidden" id="shortPrice" value="<c:out value='${sendPrice.shortPrice}' />"> <!-- sms 단가 -->
|
|
| 649 | 708 |
|
| 650 | 709 |
<form id="bizForm" name="bizForm" method="multipart/form-data"> |
| 651 | 710 |
<input type="hidden" id="menuTopTab" name="menuTopTab" value="tabFriend"> |
... | ... | @@ -657,6 +716,11 @@ |
| 657 | 716 |
<input type="hidden" id="templateName" name="templateName" value=""/> |
| 658 | 717 |
<input type="hidden" id="adFlag" name="adFlag" value=""/> |
| 659 | 718 |
<input type="hidden" id="templateContent" name="templateContent" value=""/> |
| 719 |
+ |
|
| 720 |
+ <!-- 예약발송 여부 --> |
|
| 721 |
+ <input type="hidden" id="reserveYn" name="reserveYn" value="N"/> |
|
| 722 |
+ <!-- 변환문자 유무 --> |
|
| 723 |
+ <input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/> |
|
| 660 | 724 |
|
| 661 | 725 |
<div class="send_general friend_talk_wrap kakao_wrap"> |
| 662 | 726 |
<div class="send_left"> |
... | ... | @@ -1087,18 +1151,18 @@ |
| 1087 | 1151 |
<button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주보내는 번호</button> |
| 1088 | 1152 |
</div> |
| 1089 | 1153 |
<div class="btn_popup_wrap check_validity_wrap"> |
| 1090 |
- <button type="button" class="btnType btnType7">오류 검사<i class="qmMark error_qm"></i></button> |
|
| 1154 |
+ <button type="button" class="btnType btnType7 check_validity">오류 검사<i class="qmMark error_qm"></i></button> |
|
| 1091 | 1155 |
<div class="error_hover_cont send_hover_cont"> |
| 1092 |
- <p>등록하신 전화번호(형식 등)가 정확하게 입력되었는지 오류여부를 자동으로 검사할 수 있습니다.</p> |
|
| 1093 |
- <span>(예시) 010-1234-0001(O),<br> 010-123-0001(X)</span> |
|
| 1156 |
+ <p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p> |
|
| 1157 |
+ <span>(예시) 010-1234-0001(O) / 010-12345-0001(X)</span> |
|
| 1094 | 1158 |
</div> |
| 1095 | 1159 |
</div> |
| 1096 | 1160 |
</div> |
| 1097 | 1161 |
</div> |
| 1098 | 1162 |
<div class="list_bottom clearfix"> |
| 1099 | 1163 |
<div class="remove_btnWrap"> |
| 1100 |
- <button type="button" class="btnType15" id="all_del"><i class="remove_img"></i>전체삭제</button> |
|
| 1101 |
- <button type="button" class="btnType15" id="select_del"><i class="remove_img"></i>선택삭제</button> |
|
| 1164 |
+ <button type="button" class="btnType15 all_del"><i class="remove_img"></i>전체삭제</button> |
|
| 1165 |
+ <button type="button" class="btnType15 select_del"><i class="remove_img"></i>선택삭제</button> |
|
| 1102 | 1166 |
</div> |
| 1103 | 1167 |
<div class="list_bottom_right"> |
| 1104 | 1168 |
<p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p> |
... | ... | @@ -1127,7 +1191,8 @@ |
| 1127 | 1191 |
<input type="radio" id="radio_bill_1" name="radio_bill" checked="checked"> |
| 1128 | 1192 |
<label for="radio_bill_1">보유잔액</label> |
| 1129 | 1193 |
<label for="userMoney" class="label">보유잔액</label> |
| 1130 |
- <input type="text" id="userMoney" name="userMoney" value="0" readonly=""> |
|
| 1194 |
+ <fmt:formatNumber type="number" maxFractionDigits="3" value="${sendPrice.userMoney}" var="commaPrice" />
|
|
| 1195 |
+ <input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly="">
|
|
| 1131 | 1196 |
<span class="won">원</span> |
| 1132 | 1197 |
<button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button> |
| 1133 | 1198 |
</div> |
... | ... | @@ -1205,7 +1270,7 @@ |
| 1205 | 1270 |
</table> |
| 1206 | 1271 |
</div> |
| 1207 | 1272 |
<div class="send_right"> |
| 1208 |
- <div class="phone"> |
|
| 1273 |
+ <div class="phone" style="top: 201px;"> |
|
| 1209 | 1274 |
<div class="phoneIn"> |
| 1210 | 1275 |
<p class="prev_p"> |
| 1211 | 1276 |
<img src="/publish/images/content/kakao_prev_icon.png" alt=""> |
... | ... | @@ -1248,11 +1313,19 @@ |
| 1248 | 1313 |
</ul> |
| 1249 | 1314 |
</div> |
| 1250 | 1315 |
<div class="send_btn"> |
| 1251 |
- <button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button> |
|
| 1316 |
+ <%-- 친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지 --%> |
|
| 1317 |
+ <c:choose> |
|
| 1318 |
+ <c:when test="${sendStatus eq 'true'}">
|
|
| 1319 |
+ <button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button> |
|
| 1320 |
+ </c:when> |
|
| 1321 |
+ <c:otherwise> |
|
| 1322 |
+ <button type="button" class="btnType btnType11" onclick="javascript:fn_noTimeSend(); return false;">발송하기</button> |
|
| 1323 |
+ </c:otherwise> |
|
| 1324 |
+ </c:choose> |
|
| 1252 | 1325 |
<button type="button" class="btnType btnType10" onclick="javascript:fnTestSend(); return false;">테스트발송</button> |
| 1253 | 1326 |
</div> |
| 1254 | 1327 |
</div> |
| 1255 |
- <div class="rev_selected"> |
|
| 1328 |
+ <div class="rev_selected" > |
|
| 1256 | 1329 |
<div class="rev_top"> |
| 1257 | 1330 |
<span>날짜 :</span> |
| 1258 | 1331 |
<div class="calendar_wrap"> |
... | ... | @@ -1261,7 +1334,7 @@ |
| 1261 | 1334 |
<div class="selBox"> |
| 1262 | 1335 |
<label for="msgResHour" class="label">시 선택</label> |
| 1263 | 1336 |
<select class="selType1" id="msgResHour" name="msgResHour"> |
| 1264 |
- <c:forEach var="hour" begin="0" end="23" step="1" varStatus="status"> |
|
| 1337 |
+ <c:forEach var="hour" begin="8" end="20" step="1" varStatus="status"> |
|
| 1265 | 1338 |
<c:choose> |
| 1266 | 1339 |
<c:when test="${hour < 10}">
|
| 1267 | 1340 |
<option value="0${hour}">0${hour}시</option>
|
... | ... | @@ -1273,8 +1346,8 @@ |
| 1273 | 1346 |
</c:forEach> |
| 1274 | 1347 |
</select> |
| 1275 | 1348 |
<label for="msgResMin" class="label">분 선택</label> |
| 1276 |
- <select class="selType1" id="msgResMin" name="msgResMin"> |
|
| 1277 |
- <c:forEach var="min" begin="0" end="55" step="5"> |
|
| 1349 |
+ <select class="selType1" id="msgResMin" name="msgResMin" onChange="fnSelectMinChk();"> |
|
| 1350 |
+ <c:forEach var="min" begin="0" end="59" step="1"> |
|
| 1278 | 1351 |
<c:choose> |
| 1279 | 1352 |
<c:when test="${min < 10}">
|
| 1280 | 1353 |
<option value="0${min}">0${min}분</option>
|
... | ... | @@ -1287,15 +1360,10 @@ |
| 1287 | 1360 |
</select> |
| 1288 | 1361 |
</div> |
| 1289 | 1362 |
</div> |
| 1290 |
- <div class="rev_bottom"> |
|
| 1363 |
+ <%-- <div class="rev_bottom"> |
|
| 1291 | 1364 |
<input type="checkbox" id="inputDivideChk" name="inputDivideChk"> |
| 1292 | 1365 |
<label for="inputDivideChk">분할전송</label> |
| 1293 |
- <select class="selType1" id="divideCnt" name="divideCnt"> |
|
| 1294 |
- <option value="2">2</option> |
|
| 1295 |
- <option value="10">10</option> |
|
| 1296 |
- <option value="20">20</option> |
|
| 1297 |
- <option value="30">30</option> |
|
| 1298 |
- </select> |
|
| 1366 |
+ <input type="text" class="dividType1" id="frmDivideCnt" name="frmDivideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/> |
|
| 1299 | 1367 |
<label for="divideCnt">건</label> |
| 1300 | 1368 |
<select class="selType1" id="divideTime" name="divideTime"> |
| 1301 | 1369 |
<option value="5">05분</option> |
... | ... | @@ -1305,7 +1373,7 @@ |
| 1305 | 1373 |
<option value="30">30분</option> |
| 1306 | 1374 |
</select> |
| 1307 | 1375 |
<label for="divideTime">간격</label> |
| 1308 |
- </div> |
|
| 1376 |
+ </div> --%> |
|
| 1309 | 1377 |
</div> |
| 1310 | 1378 |
</div> |
| 1311 | 1379 |
</div> |
--- src/main/webapp/js/kakao/ft/friendstalkExcel.js
+++ src/main/webapp/js/kakao/ft/friendstalkExcel.js
... | ... | @@ -100,7 +100,7 @@ |
| 100 | 100 |
if(checkHpNum(item.phone)){
|
| 101 | 101 |
|
| 102 | 102 |
excelAddr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4});
|
| 103 |
- console.log(item.phone); |
|
| 103 |
+ |
|
| 104 | 104 |
}/* else{
|
| 105 | 105 |
|
| 106 | 106 |
alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다.");
|
--- src/main/webapp/js/kakao/ft/ftTabulator.js
+++ src/main/webapp/js/kakao/ft/ftTabulator.js
... | ... | @@ -185,15 +185,6 @@ |
| 185 | 185 |
//연락처 추가해 주기 |
| 186 | 186 |
addPhoneInfo(tabledata); |
| 187 | 187 |
|
| 188 |
- //tableL.addData(tabledata); |
|
| 189 |
- |
|
| 190 |
- //전체 데이터 갯수 구하기 |
|
| 191 |
- //totRows = tableL.getRows().length; |
|
| 192 |
- //updateTotCnt(totRows); |
|
| 193 |
- |
|
| 194 |
- //결제 금액 구하기 |
|
| 195 |
- totalPriceSum(totRows); |
|
| 196 |
- |
|
| 197 | 188 |
$('#callTo').val("");
|
| 198 | 189 |
|
| 199 | 190 |
} |
... | ... | @@ -217,9 +208,63 @@ |
| 217 | 208 |
tableL.clearData(); |
| 218 | 209 |
$("#rowTotCnt").text(0); //총건수 수정
|
| 219 | 210 |
$("#rowDupCnt").text(0); //중복건수 수정
|
| 220 |
- totalPriceSum(0); //결제 금액 수정 |
|
| 211 |
+ totalFtPriceSum(0); //결제 금액 수정 |
|
| 221 | 212 |
} |
| 222 | 213 |
|
| 214 |
+ } |
|
| 215 |
+ |
|
| 216 |
+ }); |
|
| 217 |
+ |
|
| 218 |
+ // 받는사람 선택삭제 버튼 처리해주기 |
|
| 219 |
+ $('.select_del').click(function(){
|
|
| 220 |
+ |
|
| 221 |
+ if(tableL == null || tableL == ""){
|
|
| 222 |
+ |
|
| 223 |
+ alert("받는사람을 추가해 주세요.");
|
|
| 224 |
+ return false; |
|
| 225 |
+ |
|
| 226 |
+ } |
|
| 227 |
+ |
|
| 228 |
+ var selectedData = tableL.getSelectedRows(); |
|
| 229 |
+ |
|
| 230 |
+ if(selectedData == "" || selectedData == null){
|
|
| 231 |
+ |
|
| 232 |
+ alert("삭제할 연락처를 선택해주세요.");
|
|
| 233 |
+ return false; |
|
| 234 |
+ |
|
| 235 |
+ }else{ // 선택한 Row 데이터 삭제하기
|
|
| 236 |
+ |
|
| 237 |
+ if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){
|
|
| 238 |
+ |
|
| 239 |
+ for(var i=0; i < selectedData.length; i++){
|
|
| 240 |
+ |
|
| 241 |
+ selectedData[i].delete(); |
|
| 242 |
+ |
|
| 243 |
+ } |
|
| 244 |
+ |
|
| 245 |
+ totRows = tableL.getRows().length; |
|
| 246 |
+ |
|
| 247 |
+ var smsTxtArea = $('#inputTemplateContent').val();
|
|
| 248 |
+ |
|
| 249 |
+ //일괄변환 문구 결제금액 처리 |
|
| 250 |
+ if(smsTxtArea.indexOf("#{이름}") > -1
|
|
| 251 |
+ || smsTxtArea.indexOf("#{1}") > -1
|
|
| 252 |
+ || smsTxtArea.indexOf("#{2}") > -1
|
|
| 253 |
+ || smsTxtArea.indexOf("#{3}") > -1
|
|
| 254 |
+ || smsTxtArea.indexOf("#{4}") > -1){
|
|
| 255 |
+ |
|
| 256 |
+ fnFtReplCell(); |
|
| 257 |
+ |
|
| 258 |
+ }else{
|
|
| 259 |
+ //결제 금액 구하기 |
|
| 260 |
+ totalFtPriceSum(totRows); |
|
| 261 |
+ } |
|
| 262 |
+ |
|
| 263 |
+ //결제금액 합계 파라이터에 입력 |
|
| 264 |
+ $('#rowTotCnt').text(numberWithCommas(totRows));
|
|
| 265 |
+ |
|
| 266 |
+ } |
|
| 267 |
+ |
|
| 223 | 268 |
} |
| 224 | 269 |
|
| 225 | 270 |
}); |
... | ... | @@ -510,24 +555,27 @@ |
| 510 | 555 |
_fileIdx = 0; //form file idx 초기화 |
| 511 | 556 |
|
| 512 | 557 |
totRows = tableL.getRows().length; |
| 513 |
- updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 514 | 558 |
|
| 515 |
- var smsTxtArea = $('#smsTxtArea').val();
|
|
| 559 |
+ var smsTxtArea = $('#inputTemplateContent').val();
|
|
| 560 |
+ |
|
| 516 | 561 |
//일괄변환 문구 결제금액 처리 |
| 517 |
- if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
| 518 |
- || smsTxtArea.indexOf("[*1*]") > -1
|
|
| 519 |
- || smsTxtArea.indexOf("[*2*]") > -1
|
|
| 520 |
- || smsTxtArea.indexOf("[*3*]") > -1
|
|
| 521 |
- || smsTxtArea.indexOf("[*4*]") > -1){
|
|
| 522 |
- |
|
| 523 |
- fnReplCell(); |
|
| 562 |
+ if(smsTxtArea.indexOf("#{이름}") > -1
|
|
| 563 |
+ || smsTxtArea.indexOf("#{1}") > -1
|
|
| 564 |
+ || smsTxtArea.indexOf("#{2}") > -1
|
|
| 565 |
+ || smsTxtArea.indexOf("#{3}") > -1
|
|
| 566 |
+ || smsTxtArea.indexOf("#{4}") > -1){
|
|
| 567 |
+ |
|
| 568 |
+ fnFtReplCell(); |
|
| 524 | 569 |
|
| 525 | 570 |
}else{
|
| 526 | 571 |
|
| 527 | 572 |
//결제 금액 구하기 |
| 528 |
- totalPriceSum(totRows); |
|
| 573 |
+ totalFtPriceSum(totRows); |
|
| 529 | 574 |
|
| 530 | 575 |
} |
| 576 |
+ |
|
| 577 |
+ //결제금액 합계 파라이터에 입력 |
|
| 578 |
+ $('#rowTotCnt').text(numberWithCommas(totRows));
|
|
| 531 | 579 |
|
| 532 | 580 |
} |
| 533 | 581 |
|
... | ... | @@ -569,3 +617,212 @@ |
| 569 | 617 |
} |
| 570 | 618 |
|
| 571 | 619 |
} |
| 620 |
+ |
|
| 621 |
+ |
|
| 622 |
+//특정문구 일괄변환 문자길이 체크 하기 |
|
| 623 |
+function fnFtReplCell(){
|
|
| 624 |
+ |
|
| 625 |
+ var smsTxtArea = $('#inputTemplateContent').val();
|
|
| 626 |
+ |
|
| 627 |
+ //이벤트 잔여 캐시 자동 처리 관련 변수 |
|
| 628 |
+ var eachPrice = parseFloat($("#eachPrice").val());
|
|
| 629 |
+ var kakaoFtPrice = parseFloat($("#kakaoFtPrice").val());
|
|
| 630 |
+ var shortPrice = parseFloat($("#shortPrice").val());
|
|
| 631 |
+ var longPrice = parseFloat($("#longPrice").val());
|
|
| 632 |
+ |
|
| 633 |
+ if(smsTxtArea.indexOf("#{이름}") > -1
|
|
| 634 |
+ || smsTxtArea.indexOf("#{1}") > -1
|
|
| 635 |
+ || smsTxtArea.indexOf("#{2}") > -1
|
|
| 636 |
+ || smsTxtArea.indexOf("#{3}") > -1
|
|
| 637 |
+ || smsTxtArea.indexOf("#{4}") > -1){
|
|
| 638 |
+ |
|
| 639 |
+ |
|
| 640 |
+ var rowData = tableL.getRows(); |
|
| 641 |
+ var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장 |
|
| 642 |
+ //var tableData = []; |
|
| 643 |
+ |
|
| 644 |
+ var msg_short = 0; //단문문자 갯수 |
|
| 645 |
+ var msg_long = 0; //장문문자 갯수 |
|
| 646 |
+ |
|
| 647 |
+ //일괄변환문자 포함 여부 변경 - 문자내용에 치환변환 문자는 있지만 받는사람 데이터에 치환 데이터를 안넣는 경우 오류가 발생하여 상태값 입력 위치 상단으로 변경함. |
|
| 648 |
+ //치환데이터가 없는 경우 Alert 띄우고 빠져나가기 때문에 치환문자 상태 체크값이 누락되어서 변경함 - 20230407 우영두 |
|
| 649 |
+ $('#txtReplYn').val("Y");
|
|
| 650 |
+ |
|
| 651 |
+ var nmStatus = false; |
|
| 652 |
+ var rep1Status = false; |
|
| 653 |
+ var rep2Status = false; |
|
| 654 |
+ var rep3Status = false; |
|
| 655 |
+ var rep4Status = false; |
|
| 656 |
+ |
|
| 657 |
+ if(smsTxtArea.indexOf("#{이름}") > -1){
|
|
| 658 |
+ |
|
| 659 |
+ nmStatus = true; |
|
| 660 |
+ } |
|
| 661 |
+ |
|
| 662 |
+ if(smsTxtArea.indexOf("#{1}") > -1){
|
|
| 663 |
+ |
|
| 664 |
+ rep1Status = true; |
|
| 665 |
+ } |
|
| 666 |
+ |
|
| 667 |
+ if(smsTxtArea.indexOf("#{2}") > -1){
|
|
| 668 |
+ |
|
| 669 |
+ rep2Status = true; |
|
| 670 |
+ } |
|
| 671 |
+ |
|
| 672 |
+ if(smsTxtArea.indexOf("#{3}") > -1){
|
|
| 673 |
+ |
|
| 674 |
+ rep3Status = true; |
|
| 675 |
+ } |
|
| 676 |
+ |
|
| 677 |
+ if(smsTxtArea.indexOf("#{4}") > -1){
|
|
| 678 |
+ |
|
| 679 |
+ rep4Status = true; |
|
| 680 |
+ } |
|
| 681 |
+ |
|
| 682 |
+ |
|
| 683 |
+ //기존 받는사람 리스트를 배열에 미리 담아둔다. |
|
| 684 |
+ if(recTableData.length > 0){
|
|
| 685 |
+ |
|
| 686 |
+ for(var j=0; j < recTableData.length; j++){
|
|
| 687 |
+ |
|
| 688 |
+ var smsTxt = smsTxtArea; |
|
| 689 |
+ |
|
| 690 |
+ if(typeof recTableData[j].getData().name != 'undefined' && recTableData[j].getData().name != null && recTableData[j].getData().name != ""){
|
|
| 691 |
+ |
|
| 692 |
+ var name = recTableData[j].getData().name; |
|
| 693 |
+ smsTxt = stringReplaceAll(smsTxt, "#{이름}", name);
|
|
| 694 |
+ |
|
| 695 |
+ } |
|
| 696 |
+ |
|
| 697 |
+ if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null && recTableData[j].getData().rep1 != ""){
|
|
| 698 |
+ |
|
| 699 |
+ var rep1 = recTableData[j].getData().rep1; |
|
| 700 |
+ smsTxt = stringReplaceAll(smsTxt, "#{1}", rep1);
|
|
| 701 |
+ |
|
| 702 |
+ } |
|
| 703 |
+ |
|
| 704 |
+ if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null && recTableData[j].getData().rep2 != ""){
|
|
| 705 |
+ |
|
| 706 |
+ var rep2 = recTableData[j].getData().rep2; |
|
| 707 |
+ smsTxt = stringReplaceAll(smsTxt, "#{2}", rep2);
|
|
| 708 |
+ |
|
| 709 |
+ } |
|
| 710 |
+ |
|
| 711 |
+ if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null && recTableData[j].getData().rep3 != ""){
|
|
| 712 |
+ |
|
| 713 |
+ var rep3 = recTableData[j].getData().rep3; |
|
| 714 |
+ smsTxt = stringReplaceAll(smsTxt, "#{3}", rep3);
|
|
| 715 |
+ |
|
| 716 |
+ } |
|
| 717 |
+ |
|
| 718 |
+ if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null && recTableData[j].getData().rep4 != ""){
|
|
| 719 |
+ |
|
| 720 |
+ var rep4 = recTableData[j].getData().rep4; |
|
| 721 |
+ smsTxt = stringReplaceAll(smsTxt, "#{4}", rep4);
|
|
| 722 |
+ |
|
| 723 |
+ } |
|
| 724 |
+ |
|
| 725 |
+ |
|
| 726 |
+ var msgLen = strMaxCharacterCnt(smsTxt); |
|
| 727 |
+ var maxLenChar = 1000; |
|
| 728 |
+ |
|
| 729 |
+ var imgType = $("#imageType").val();
|
|
| 730 |
+ |
|
| 731 |
+ //일반 이미지 첨부시 글자수 최대 400글자 |
|
| 732 |
+ if(imgType == "I"){
|
|
| 733 |
+ |
|
| 734 |
+ maxLenChar = 400; |
|
| 735 |
+ |
|
| 736 |
+ }else if(imgType == "W"){
|
|
| 737 |
+ //와이드 이미지 첨부시 글자수 최대 76글자 |
|
| 738 |
+ maxLenChar = 76; |
|
| 739 |
+ |
|
| 740 |
+ } |
|
| 741 |
+ |
|
| 742 |
+ if(msgLen < 1){
|
|
| 743 |
+ |
|
| 744 |
+ |
|
| 745 |
+ }else if(msgLen > maxLenChar){
|
|
| 746 |
+ |
|
| 747 |
+ alert("친구톡 내용은 "+ maxLenChar +" 자를 넘을 수 없습니다.");
|
|
| 748 |
+ tableL.clearData(); //기존 받는사람 목록을 삭제. |
|
| 749 |
+ return false; |
|
| 750 |
+ |
|
| 751 |
+ } |
|
| 752 |
+ |
|
| 753 |
+ //첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자. |
|
| 754 |
+ if(j == 0){
|
|
| 755 |
+ |
|
| 756 |
+ //미리보기에 내용 입력해 주기 |
|
| 757 |
+ $('.template_text').text(smsTxt);
|
|
| 758 |
+ |
|
| 759 |
+ } |
|
| 760 |
+ |
|
| 761 |
+ } |
|
| 762 |
+ |
|
| 763 |
+ } |
|
| 764 |
+ |
|
| 765 |
+ //결제 금액 구하기 |
|
| 766 |
+ totalFtPriceSum(tableL.getRows().length); |
|
| 767 |
+ |
|
| 768 |
+ } |
|
| 769 |
+ |
|
| 770 |
+} |
|
| 771 |
+ |
|
| 772 |
+ |
|
| 773 |
+//오류 검사 버튼 처리 |
|
| 774 |
+$('.check_validity').click(function(){
|
|
| 775 |
+ |
|
| 776 |
+ var invalid = tableL.getInvalidCells(); //오류 데이터 체크 |
|
| 777 |
+ var dataLen = tableL.getRows().length; //연락처 데이터 갯수 |
|
| 778 |
+ var totLen = invalid.length; //오류 데이터 갯수 |
|
| 779 |
+ var errMsg = ""; //최종 alert에 표시할 메시지 저장 변수 |
|
| 780 |
+ |
|
| 781 |
+ if(dataLen > 0){ //연락처 정보가 있으면 수행
|
|
| 782 |
+ |
|
| 783 |
+ if(totLen > 0){ //내용에 오류가 있으면 수행
|
|
| 784 |
+ |
|
| 785 |
+ //오류 데이터 값 저장 |
|
| 786 |
+ for(var i=0; i < totLen; i++){
|
|
| 787 |
+ |
|
| 788 |
+ var cellValue = invalid[i].getValue(); |
|
| 789 |
+ |
|
| 790 |
+ if(i == 0){
|
|
| 791 |
+ |
|
| 792 |
+ errMsg = cellValue; |
|
| 793 |
+ |
|
| 794 |
+ }else{
|
|
| 795 |
+ |
|
| 796 |
+ errMsg = errMsg +", "+ cellValue; |
|
| 797 |
+ |
|
| 798 |
+ } |
|
| 799 |
+ |
|
| 800 |
+ } |
|
| 801 |
+ |
|
| 802 |
+ if(errMsg == "" || errMsg == null){
|
|
| 803 |
+ |
|
| 804 |
+ alert("내용에 오류가 있습니다.");
|
|
| 805 |
+ return false; |
|
| 806 |
+ |
|
| 807 |
+ }else{
|
|
| 808 |
+ |
|
| 809 |
+ alert(errMsg + "의 내용에 오류가 있습니다."); |
|
| 810 |
+ return false; |
|
| 811 |
+ |
|
| 812 |
+ } |
|
| 813 |
+ |
|
| 814 |
+ }else{
|
|
| 815 |
+ |
|
| 816 |
+ alert("오류 데이터가 없습니다.");
|
|
| 817 |
+ return false; |
|
| 818 |
+ |
|
| 819 |
+ } |
|
| 820 |
+ |
|
| 821 |
+ }else{
|
|
| 822 |
+ |
|
| 823 |
+ alert("연락처를 입력해 주세요.");
|
|
| 824 |
+ return false; |
|
| 825 |
+ |
|
| 826 |
+ } |
|
| 827 |
+ |
|
| 828 |
+}); |
--- src/main/webapp/js/kakao/templateComm.js
+++ src/main/webapp/js/kakao/templateComm.js
... | ... | @@ -70,27 +70,26 @@ |
| 70 | 70 |
|
| 71 | 71 |
} |
| 72 | 72 |
|
| 73 |
- |
|
| 73 |
+ //제한글자수를 넘겼을 경우 최대 글자수까지 잘라주고 미리보기 및 글자수 표시처리 |
|
| 74 | 74 |
if(conLeng > limitLeng){
|
| 75 | 75 |
|
| 76 | 76 |
var splicecon = strMaxLengthSubstring(contents, limitLeng-1); |
| 77 | 77 |
$('#inputTemplateContent').val(splicecon);
|
| 78 |
- return false; |
|
| 78 |
+ contents = splicecon; |
|
| 79 |
+ conLeng = strMaxCharacterCnt(contents); |
|
| 79 | 80 |
|
| 80 |
- }else{//현재 입력한 글자수 우측 하단에 표시해 주기
|
|
| 81 |
- |
|
| 82 |
- var repContent = ""; |
|
| 83 |
- repContent = contents.replace(/(?:\r\n|\r|\n)/g, '<br/>'); |
|
| 84 |
- |
|
| 85 |
- $('.nowChar').text(conLeng + " /");
|
|
| 86 |
- $('.totChar').text(" "+limitLeng);
|
|
| 87 |
- $('.template_text').show();
|
|
| 88 |
- if(repContent != ''){
|
|
| 89 |
- $('.template_text').html(repContent);
|
|
| 90 |
- }else{
|
|
| 91 |
- $('.template_text').html("내용 미리보기");
|
|
| 92 |
- } |
|
| 93 |
- |
|
| 81 |
+ } |
|
| 82 |
+ |
|
| 83 |
+ var repContent = ""; |
|
| 84 |
+ repContent = contents.replace(/(?:\r\n|\r|\n)/g, '<br/>'); |
|
| 85 |
+ |
|
| 86 |
+ $('.nowChar').text(conLeng + " /");
|
|
| 87 |
+ $('.totChar').text(" "+limitLeng);
|
|
| 88 |
+ $('.template_text').show();
|
|
| 89 |
+ if(repContent != ''){
|
|
| 90 |
+ $('.template_text').html(repContent);
|
|
| 91 |
+ }else{
|
|
| 92 |
+ $('.template_text').html("내용 미리보기");
|
|
| 94 | 93 |
} |
| 95 | 94 |
|
| 96 | 95 |
}(No newline at end of file) |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?