친구톡 개발완료
This commit is contained in:
parent
7527b7dd8a
commit
f3ddd22598
@ -217,6 +217,7 @@ public class MjonKakaoATVO extends ComDefaultVO{
|
||||
private int regComCount;
|
||||
private int orderByCode; // 문자타입 정렬번호
|
||||
private String detailType;
|
||||
private String adFlag;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -493,17 +493,9 @@ public class KakaoSendUtil {
|
||||
|
||||
|
||||
private Calendar setupBaseDate(KakaoVO kakaoVO, boolean isNotified) throws ParseException {
|
||||
// 예약 시간 기본값 설정
|
||||
Date now = new Date();
|
||||
// ReqDate가 비어 있으면 현재 시간으로 설정, 그렇지 않으면 ReqDate로 설정
|
||||
// 화면에서 예약문자면 예약시간을 regDate로 설정한다.
|
||||
Date baseDate;
|
||||
if (StringUtils.isEmpty(kakaoVO.getReqDate())) {
|
||||
kakaoVO.setReqDate(DATE_FORMATTER.format(now)); // ReqDate에 현재 시간 설정
|
||||
baseDate = now;
|
||||
} else {
|
||||
baseDate = DATE_FORMATTER.parse(kakaoVO.getReqDate()); // ReqDate를 baseDate로 설정
|
||||
}
|
||||
|
||||
// baseDate 추출
|
||||
Date baseDate = resolveBaseDate(kakaoVO);
|
||||
|
||||
// 시간 성정
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
@ -518,6 +510,31 @@ public class KakaoSendUtil {
|
||||
return calendar;
|
||||
}
|
||||
|
||||
public Date resolveBaseDate(KakaoVO kakaoVO) throws ParseException {
|
||||
Date now = new Date();
|
||||
|
||||
if (StringUtils.isEmpty(kakaoVO.getReqDate())) {
|
||||
kakaoVO.setReqDate(DATE_FORMATTER.format(now));
|
||||
return now;
|
||||
}
|
||||
return DATE_FORMATTER.parse(kakaoVO.getReqDate());
|
||||
}
|
||||
|
||||
// 2. 친구톡 발송 제한 시간인지 확인
|
||||
public boolean isRestrictedFriendTalkTime(Date baseDate) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(baseDate);
|
||||
|
||||
int hour = cal.get(Calendar.HOUR_OF_DAY);
|
||||
int minute = cal.get(Calendar.MINUTE);
|
||||
|
||||
// 20:50 이후 ~ 익일 08:00 이전은 제한
|
||||
if ((hour == 20 && minute >= 50) || hour > 20 || hour < 8) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @methodName : createSendVO
|
||||
* @author : 이호영
|
||||
|
||||
@ -105,6 +105,15 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 친구톡은 발송 시간 제약이 있음
|
||||
*/
|
||||
if(kakaoSendUtil.isRestrictedFriendTalkTime(kakaoSendUtil.resolveBaseDate(kakaoVO))) {
|
||||
// UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때
|
||||
return new StatusResponse(HttpStatus.BAD_REQUEST,
|
||||
"친구톡은 20시 50분부터 익일 08시까지 발송이 제한됩니다.");
|
||||
}
|
||||
|
||||
|
||||
/** @isHolidayNotified
|
||||
* @false : 알림 X
|
||||
|
||||
@ -1042,13 +1042,11 @@ public class KakaoSentController {
|
||||
|
||||
//발송 관리 문자발송 내용 상세보기 팝업 => 문자내용(MJ_MSG_DATA)
|
||||
MjonKakaoATVO mjonKakaoATResultVO = kakaoSentService.selectKakaoSentDetailDataAjax(mjonKakaoATVO);
|
||||
log.info(" 1 resultMsgDetail.bizKakaoResendOrgnlTxt : [{}]", mjonKakaoATResultVO.getBizKakaoResendOrgnlTxt());
|
||||
// 대체문자 엔터키 치환
|
||||
if(StringUtils.isNotEmpty(mjonKakaoATResultVO.getSmsTxt())) {
|
||||
mjonKakaoATResultVO.setSmsTxt(StringUtil2.replaceBR(mjonKakaoATResultVO.getSmsTxt()));
|
||||
}
|
||||
model.addAttribute("resultMsgDetail", mjonKakaoATResultVO);
|
||||
log.info(" 2 resultMsgDetail.bizKakaoResendOrgnlTxt : [{}]", mjonKakaoATResultVO.getBizKakaoResendOrgnlTxt());
|
||||
|
||||
String msgType = mjonKakaoATResultVO.getMsgType();
|
||||
|
||||
@ -1080,7 +1078,6 @@ public class KakaoSentController {
|
||||
}
|
||||
model.addAttribute("msgType", msgType);
|
||||
|
||||
log.info(" 3 resultMsgDetail.bizKakaoResendOrgnlTxt : [{}]", mjonKakaoATResultVO.getBizKakaoResendOrgnlTxt());
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
||||
@ -926,6 +926,7 @@
|
||||
, MGD.BIZ_KAKAO_RESEND_ORGNL_TXT as bizKakaoResendOrgnlTxt /* 대체 문자( 치환X ) */
|
||||
, MD.BIZ_KAKAO_JSON_FILE as bizKakaoJsonFile /* Json 파일 경로 */
|
||||
, BA.CONTENTS as contents
|
||||
, MGD.AD_FLAG as adFlag
|
||||
FROM MJ_MSG_GROUP_DATA MGD
|
||||
INNER JOIN MJ_MSG_DATA MD
|
||||
ON MGD.MSG_GROUP_ID = MD.MSG_GROUP_ID
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
|
||||
<%@ page import="itn.com.cmm.LoginVO" %>
|
||||
<script src="/js/kakao/templateComm.js"></script>
|
||||
<script src="/js/kakao/ft/templateComm.js"></script>
|
||||
|
||||
<script type="text/javascript" src="<c:out value='/js/MJUtill.js' />"></script>
|
||||
<script type="text/javascript" src="<c:out value='/js/kakao/ft/ftPriceClclt.js' />"></script>
|
||||
@ -66,6 +66,7 @@ $(document).ready(function (){
|
||||
|
||||
fnAgentCodeChg();
|
||||
}
|
||||
thisFnByteString($('#smsTxtArea').val());
|
||||
});
|
||||
$("#send_fail_check").change(function(){
|
||||
if($("#send_fail_check").is(":checked")){
|
||||
@ -126,7 +127,7 @@ $(document).ready(function (){
|
||||
});
|
||||
|
||||
|
||||
//대체문자 초기화 버튼 선택 처리
|
||||
/* //대체문자 초기화 버튼 선택 처리
|
||||
$("#failCheckInit").click(function(){
|
||||
|
||||
$('#smsTxtArea').val("");
|
||||
@ -140,7 +141,7 @@ $(document).ready(function (){
|
||||
fn_insertErrorYN('N');
|
||||
|
||||
});
|
||||
|
||||
*/
|
||||
|
||||
// 광고포함여부 체크 이벤트
|
||||
$("#ad_Y").click(function () {
|
||||
@ -942,7 +943,7 @@ function fnSelectMinChk(){
|
||||
|
||||
if(resMin >= 50 && resMin <= 59){
|
||||
|
||||
alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다.");
|
||||
alert("친구톡은 20시 50분부터 익일 08시까지 발송이 제한됩니다.");
|
||||
$("#msgResMin").val("40").prop("selected", true);
|
||||
|
||||
}
|
||||
@ -1353,13 +1354,18 @@ function thisFnByteString(contents){
|
||||
|
||||
$('#msgLeng').html("");
|
||||
$('#limitLeng').html("");
|
||||
|
||||
if ($("#ad_Y").is(":checked")) {
|
||||
contents = "(광고)"+contents+"\n무료거부 0808800858"
|
||||
}
|
||||
console.log(contents);
|
||||
var conLeng = conByteLeng(contents); // 내용 문자 입력 바이트 수 계산하기
|
||||
|
||||
|
||||
$('#msgLeng').text(conLeng);
|
||||
|
||||
//문자 길이 변수에 저장해주기
|
||||
$('#smsLen').val(conLeng);
|
||||
// $('#smsLen').val(conLeng);
|
||||
|
||||
|
||||
if(conLeng > 90){
|
||||
@ -2201,9 +2207,15 @@ function updateButtons(){
|
||||
<!-- 업로드한 이미지의 썸네일 영역 -->
|
||||
<ul class="thumb_wrap liOnImg ui-sortable"></ul>
|
||||
<!-- //업로드한 이미지의 썸네일 영역 -->
|
||||
<div class="ad_txt" style="">
|
||||
<p>(광고)</p>
|
||||
</div>
|
||||
<label for="smsTxtArea" class="label"></label>
|
||||
<textarea id="smsTxtArea" class="put_text"></textarea>
|
||||
<div class="text_length">
|
||||
<div class="sub_ad_text">
|
||||
<p>무료거부 0808800858</p>
|
||||
</div>
|
||||
<div name="afterDeny">
|
||||
<p>
|
||||
<span class="fwMd" id="msgLeng">0 /</span>
|
||||
|
||||
@ -19,18 +19,21 @@
|
||||
|
||||
<!-- 카카오 알림톡 미리보기 -->
|
||||
<div class="tab_phone current" id="tab_phone_1">
|
||||
<div class="phone_kakako">
|
||||
<div class="phone_kakako friendtalk">
|
||||
<div class="phoneIn">
|
||||
<p class="prev_p"><img src="/publish/images/content/kakao_prev_icon.png" alt=""><c:out value="${resultMsgDetail.yellowId}"/></p>
|
||||
<p class="prev_p"><img src="/publish/images/content/kakao_prev_icon.png" alt=""><c:out value="${searchVO.yellowId}"/></p>
|
||||
<!-- 텍스트 미리보기 -->
|
||||
<div class="text_preview">
|
||||
<div class="allimtalk_title">
|
||||
<%--< div class="allimtalk_title">
|
||||
<img src="/publish/images/content/icon_allimtalk.png" alt="">
|
||||
<c:choose>
|
||||
<c:when test="${msgType eq '8'}">알림톡 도착</c:when>
|
||||
<c:when test="${msgType eq '9'}">친구톡 도착</c:when>
|
||||
</c:choose>
|
||||
</div>
|
||||
</div> --%>
|
||||
<c:if test="${resultMsgDetail.adFlag eq 'Y'}">
|
||||
<p class="friend_talk_title"><span>(광고)</span></p>
|
||||
</c:if>
|
||||
<div class="allimtalk_content">
|
||||
<c:choose>
|
||||
<c:when test="${kakaoTemplateInfo.templateEmphasizeType eq 'TEXT'}">
|
||||
@ -68,6 +71,11 @@
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
</div>
|
||||
|
||||
<c:if test="${resultMsgDetail.adFlag eq 'Y'}">
|
||||
<p class="kakao_block_text">수신거부 : 홈 > 채널차단</p>
|
||||
</c:if>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p>
|
||||
@ -105,15 +113,23 @@
|
||||
</c:otherwise>
|
||||
</c:choose> --%>
|
||||
</c:if>
|
||||
<div>
|
||||
<!-- <div>
|
||||
<span>글자크기</span>
|
||||
<button type="button" onclick="changeFontSize('plus');"><img src="/publish/images/content/font_plus.png"></button>
|
||||
<button type="button" onclick="changeFontSize('minus');"><img src="/publish/images/content/font_minus.png"></button>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="text_preview">
|
||||
<div class="preview_auto">
|
||||
|
||||
<c:if test="${resultMsgDetail.adFlag eq 'Y'}">
|
||||
<p class="ad_tit">(광고)</p>
|
||||
</c:if>
|
||||
<p class="realtime">${fn:replace(resultMsgDetail.bizKakaoResendOrgnlTxt, newLineChar, "<br/>")}</p>
|
||||
|
||||
<c:if test="${resultMsgDetail.adFlag eq 'Y'}">
|
||||
<p class="deny_receipt">무료거부 0808800858</p>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -753,41 +753,50 @@ function previewPhone(){
|
||||
<p>상세결과</p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="res_num">
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>전체건수</dt>
|
||||
<dd><a href="#" data-tooltip="rev_popup04"><span class="c_222_g"><fmt:formatNumber value="${result.msgGroupCnt}" type="number" groupingUsed="true" /></span>건</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>성공건수</dt>
|
||||
<dd><span class="c_002c9a_g"><fmt:formatNumber value="${result.successCount + result.kakaoResendSuccCount}" type="number" groupingUsed="true" /></span>건(${result.successPct})</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<div class="res_num">
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>대기건수</dt>
|
||||
<dd><span class="c_666_g"><fmt:formatNumber value="${result.waitCount}" type="number" groupingUsed="true" /></span>건(${result.waitingPct})</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>실패건수</dt>
|
||||
<%-- 대체문자 기능 on
|
||||
카카오톡 실패 + 대체문자 실패 = 실패
|
||||
대체문자 기능 off
|
||||
카카오톡 실패 = 실패
|
||||
*카카오톡 실패임에도 대체문자로 발송이 성공한 경우 실패로 체크하지 않음 --%>
|
||||
<dd><span class="c_e40000_g"><fmt:formatNumber value="${result.failCount - result.kakaoResendSuccCount}" type="number" groupingUsed="true" /></span>건(${result.failedPct})</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<p class="table_bottom_txt">* 전체건수를 클릭하면 받는 사람 상세정보를 확인하실 수 있습니다.</p>
|
||||
<p class="table_bottom_txt">* 대체문자 발송 성공 시, 성공건수로 집계됩니다.</p>
|
||||
<div class="res_num">
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>전체건수</dt>
|
||||
<dd><a href="#" data-tooltip="rev_popup04"><span class="c_222_g"><fmt:formatNumber value="${result.msgGroupCnt}" type="number" groupingUsed="true" /></span>건</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>성공건수</dt>
|
||||
<dd><span class="c_002c9a_g"><fmt:formatNumber value="${result.successCount + result.kakaoResendSuccCount}" type="number" groupingUsed="true" /></span>건(${result.successPct})</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<div class="res_num">
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>대기건수</dt>
|
||||
<dd><span class="c_666_g"><fmt:formatNumber value="${result.waitCount}" type="number" groupingUsed="true" /></span>건(${result.waitingPct})</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="res_info_btm1">
|
||||
<dl>
|
||||
<dt>실패건수</dt>
|
||||
<%-- 대체문자 기능 on
|
||||
카카오톡 실패 + 대체문자 실패 = 실패
|
||||
대체문자 기능 off
|
||||
카카오톡 실패 = 실패
|
||||
*카카오톡 실패임에도 대체문자로 발송이 성공한 경우 실패로 체크하지 않음 --%>
|
||||
<dd><span class="c_e40000_g"><fmt:formatNumber value="${result.failCount - result.kakaoResendSuccCount}" type="number" groupingUsed="true" /></span>건(${result.failedPct})</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table_btn clearfix">
|
||||
<div class="table_btn_left">
|
||||
<!-- <button type="button" data-tooltip="rev_popup02" class="btnType btnType14"><i class="add_img"></i>주소록 등록</button>
|
||||
<button type="button" class="excel_btn btnType"><i class="downroad"></i>엑셀 다운로드</button> -->
|
||||
<p class="table_bottom_txt">* 전체건수를 클릭하면 받는 사람 상세정보를 확인하실 수 있습니다.</p>
|
||||
<p class="table_bottom_txt" style="padding:5px 0 0 0;">* 대체문자 발송 성공 시, 성공건수로 집계됩니다.</p>
|
||||
</div>
|
||||
<div class="table_btn_right">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--// 상세결과-->
|
||||
@ -928,6 +937,7 @@ function previewPhone(){
|
||||
|
||||
<form id="resPopForm" name="resPopForm" method="post">
|
||||
<input type="hidden" id="msgGroupId" name="msgGroupId" value="${result.msgGroupId}"/>
|
||||
<input type="hidden" name="yellowId" value="${result.yellowId}"/>
|
||||
<!-- <input type="hidden" id="msgId" name="msgId" value=""/> -->
|
||||
</form>
|
||||
|
||||
|
||||
127
src/main/webapp/js/kakao/ft/templateComm.js
Normal file
127
src/main/webapp/js/kakao/ft/templateComm.js
Normal file
@ -0,0 +1,127 @@
|
||||
/**
|
||||
* 알림톡 템플릿 내용 글자수 체크 및 표시, 미리보기 내용 표시
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
function setContentsLeng(contents){
|
||||
|
||||
|
||||
if ($("#ad_Y").is(":checked")) {
|
||||
contents = "(광고)"+contents+"\n무료거부 0808800858"
|
||||
}
|
||||
|
||||
var conLeng = strMaxCharacterCnt(contents);
|
||||
|
||||
if ($("#ad_Y").is(":checked")) {
|
||||
// 광고문구 제거
|
||||
contents = contents
|
||||
.replace(/^\(광고\)/, '') // 맨 앞의 (광고) 제거
|
||||
.replace(/\n무료거부\s*0808800858\s*$/, ''); // 맨 뒤의 '무료거부 0808800858' 제거
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(conLeng > 1000){
|
||||
|
||||
alert("알림톡 내용은 1000자를 넘을 수 없습니다.");
|
||||
var splicecon = strMaxLengthSubstring(contents, 999);
|
||||
$('#inputTemplateContent').val(splicecon);
|
||||
return false;
|
||||
|
||||
}else{//현재 입력한 글자수 우측 하단에 표시해 주기
|
||||
|
||||
var repContent = "";
|
||||
repContent = contents.replace(/(?:\r\n|\r|\n)/g, '<br/>');
|
||||
|
||||
$('.nowChar').text(conLeng + " /");
|
||||
$('.template_text').show();
|
||||
if(repContent != ''){
|
||||
$('.template_text').html(repContent);
|
||||
}else{
|
||||
$('.template_text').html("내용 미리보기");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 친구톡 템플릿 내용 글자수 체크 및 표시, 미리보기 내용 표시
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
function setContentsLengForFriends(contents){
|
||||
|
||||
|
||||
if ($("#ad_Y").is(":checked")) {
|
||||
contents = "(광고)"+contents+"\n무료거부 0808800858"
|
||||
}
|
||||
|
||||
var conLeng = strMaxCharacterCnt(contents);
|
||||
|
||||
if ($("#ad_Y").is(":checked")) {
|
||||
// 광고문구 제거
|
||||
contents = contents
|
||||
.replace(/^\(광고\)/, '') // 맨 앞의 (광고) 제거
|
||||
.replace(/\n무료거부\s*0808800858\s*$/, ''); // 맨 뒤의 '무료거부 0808800858' 제거
|
||||
|
||||
}
|
||||
|
||||
|
||||
var imageType = $("input[name=img_file_add]:checked").val();
|
||||
var limitLeng = 1000;
|
||||
|
||||
if(imageType == 'I'){
|
||||
|
||||
limitLeng = 400;
|
||||
|
||||
if(conLeng > limitLeng){
|
||||
|
||||
alert("일반 이미지 첨부시 친구톡 내용은 400자를 넘을 수 없습니다.");
|
||||
|
||||
}
|
||||
|
||||
}else if(imageType == 'W'){
|
||||
|
||||
limitLeng = 76;
|
||||
|
||||
if(conLeng > limitLeng){
|
||||
|
||||
alert("와이드 이미지 첨부시 친구톡 내용은 76자를 넘을 수 없습니다.");
|
||||
|
||||
}
|
||||
|
||||
}else if(conLeng > 1000){
|
||||
|
||||
alert("친구톡 내용은 1000자를 넘을 수 없습니다.");
|
||||
|
||||
}
|
||||
|
||||
//제한글자수를 넘겼을 경우 최대 글자수까지 잘라주고 미리보기 및 글자수 표시처리
|
||||
if(conLeng > limitLeng){
|
||||
|
||||
var splicecon = strMaxLengthSubstring(contents, limitLeng-1);
|
||||
$('#inputTemplateContent').val(splicecon);
|
||||
contents = splicecon;
|
||||
conLeng = strMaxCharacterCnt(contents);
|
||||
|
||||
}
|
||||
|
||||
var repContent = "";
|
||||
repContent = contents.replace(/(?:\r\n|\r|\n)/g, '<br/>');
|
||||
|
||||
$('.nowChar').text(conLeng + " /");
|
||||
$('.totChar').text(" "+limitLeng);
|
||||
$('.template_text').show();
|
||||
if(repContent != ''){
|
||||
$('.template_text').html(repContent);
|
||||
$('#smsTxtArea').val(
|
||||
$('.template_text').html().trim().replace(/(<br>|<br\/>|<br \/>)/g, '\r\n')
|
||||
);
|
||||
}else{
|
||||
$('.template_text').html("내용 미리보기");
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user