Merge branch 'master' into 5102_친구톡_발송속도_개선

This commit is contained in:
hehihoho3@gmail.com 2025-04-28 16:18:06 +09:00
commit dfc2ad11d5
14 changed files with 251 additions and 24 deletions

View File

@ -126,8 +126,13 @@ public class KakaoSentDAO extends EgovAbstractDAO {
} }
//발송 관리 문자발송 내용 상세보기 팝업[그룹] //발송 관리 문자발송 내용 상세보기 팝업[그룹]
public MjonKakaoATVO selectKakaoSentDetailViewPhoneAjax(MjonKakaoATVO KakaoSentVO) throws Exception{ public MjonKakaoATVO selectKakaoSentDetailViewPhoneAjax(MjonKakaoATVO KakaoSentVO) throws Exception{
return (MjonKakaoATVO) select("KakaoSentDAO.selectKakaoSentDetailViewPhoneAjax", KakaoSentVO); return (MjonKakaoATVO) select("KakaoSentDAO.selectKakaoSentDetailViewPhoneAjax", KakaoSentVO);
} }
@SuppressWarnings("unchecked")
public List<KakaoSentVO> selectAllKakaoSentListExcel_advc(KakaoSentVO kakaoSentVO) throws Exception{
return (List<KakaoSentVO>) list("KakaoSentDAO.selectAllKakaoSentListExcel_advc",kakaoSentVO);
}
} }

View File

@ -302,10 +302,14 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
result.setKakaoResendSuccCount(eachCnt.getKakaoResendSuccCount()); result.setKakaoResendSuccCount(eachCnt.getKakaoResendSuccCount());
result.setKakaoResendFailCount(eachCnt.getKakaoResendFailCount()); result.setKakaoResendFailCount(eachCnt.getKakaoResendFailCount());
result.setMsgGroupCnt(
Integer.valueOf(result.getSuccessCount() + result.getWaitCount() + result.getFailCount()).toString()
);
//완료상태 시작 //완료상태 시작
result = this.codeProc(result); result = this.codeProc(result);
//완료상태 //완료상태
//======================================================= //=======================================================
@ -470,7 +474,7 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
} }
//예약 관리 리스트 불러오기 //예약 관리 리스트 불러오기
List<KakaoSentVO> resultList = kakaoSentDAO.selectAllKakaoSentList_advc(kakaoSentVO); List<KakaoSentVO> resultList = kakaoSentDAO.selectAllKakaoSentListExcel_advc(kakaoSentVO);
// long startTime = System.nanoTime(); // 시작 시간 측정 // long startTime = System.nanoTime(); // 시작 시간 측정
// resultAllSentList = makeDetailFunction(resultAllSentList); // resultAllSentList = makeDetailFunction(resultAllSentList);

View File

@ -211,7 +211,7 @@ public class MjonMsgCampainDataController {
// 외부에서 선거발송 페이지로 들어오는걸 막음 // 외부에서 선거발송 페이지로 들어오는걸 막음
// 20250102 이호영 // 20250102 이호영
if (!"localhost".equals(hostName)) { if (!"localhost".equals(hostName) && !"119.193.215.98".equals(hostName)) {
return "redirect:/web/mjon/msgdata/selectMsgDataView.do"; return "redirect:/web/mjon/msgdata/selectMsgDataView.do";
} }

View File

@ -1357,6 +1357,111 @@
<!-- 전체 발송결과 조회 (그룹별)--> <!-- 전체 발송결과 조회 (그룹별)-->
<select id="KakaoSentDAO.selectAllKakaoSentList_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO"> <select id="KakaoSentDAO.selectAllKakaoSentList_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
/* KakaoSentDAO.selectAllKakaoSentList_advc */
SELECT COUNT(B.USER_ID) OVER () AS totMsgCnt,
B.USER_ID AS userId,
B.MSG_GROUP_ID AS msgGroupId,
B.SMS_TXT AS smsTxt,
B.SUBJECT AS subject,
B.SUBJECT_CHK_YN AS subjectChkYn,
B.REGDATE AS regDate,
B.REQ_DATE AS reqDate,
CASE
WHEN B.DELAY_YN = 'Y' AND B.DELAY_COMPLETE_YN = 'N'
THEN DATE_ADD(B.REQ_DATE, INTERVAL -30 MINUTE)
ELSE B.REQ_DATE
END AS delayOrgTime,
B.CALL_FROM AS callFrom,
B.TOT_PRICE AS totPrice,
B.EACH_PRICE AS eachPrice,
B.MSG_TYPE AS msgType,
B.FILE_CNT AS fileCnt,
B.AGENT_CODE AS agentCode,
B.CANCELDATE AS canceldate,
B.DEL_FLAG AS delFlag,
B.SEND_KIND AS sendKind,
B.MSG_KIND AS msgKind,
B.DELAY_YN AS delayYn,
B.DELAY_COMPLETE_YN AS delayCompleteYn,
B.RESERVE_YN AS reserveYn,
B.RESERVE_C_YN AS reserveCYn,
TIMESTAMPDIFF(
MINUTE,
CAST(DATE_FORMAT(B.REQ_DATE, '%Y-%m-%d %H:%i') AS CHAR),
DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i')
) AS diffMin,
B.AT_DELAY_YN AS atDelayYn,
B.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn,
A.MSG_NOTICETALK_SENDER_KEY AS msgNoticetalkSenderKey,
A.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn,
CASE
WHEN B.AT_DELAY_YN = 'Y' AND B.AT_DELAY_COMPLETE_YN = 'N'
THEN DATE_ADD(B.REQ_DATE, INTERVAL -30 MINUTE)
ELSE B.REQ_DATE
END AS atDelayOrgTime,
C.YELLOW_ID AS yellowId
FROM MJ_MSG_GROUP_DATA B
INNER JOIN (
select MSG_GROUP_ID, MSG_TYPE, DEL_FLAG, MSG_NOTICETALK_SENDER_KEY, BIZ_KAKAO_RESEND_YN
from MJ_MSG_DATA
where DEL_FLAG = 'N'
<isNotEmpty property="tabType">
<isEqual property="tabType" compareValue="at">
AND MSG_TYPE = '8'
</isEqual>
<isEqual property="tabType" compareValue="ft">
AND MSG_TYPE = '9'
</isEqual>
<isEqual property="tabType" compareValue="all">
AND MSG_TYPE IN ('8','9')
</isEqual>
</isNotEmpty>
<isEmpty property="tabType">
AND MSG_TYPE IN ('8','9')
</isEmpty>
group by MSG_GROUP_ID) A
ON A.MSG_GROUP_ID = B.MSG_GROUP_ID
LEFT JOIN MJ_KAKAO_PROFILE_INFO C
ON A.MSG_NOTICETALK_SENDER_KEY = C.SENDER_KEY
WHERE (
B.DEL_FLAG = 'N' OR B.DEL_FLAG IS NULL
)
AND B.USER_ID = #userId#
<isNotEmpty property="startDate">
AND DATE_FORMAT(B.REGDATE, '%Y-%m-%d') <![CDATA[ >= ]]> DATE_FORMAT(#startDate#, '%Y-%m-%d')
</isNotEmpty>
<isNotEmpty property="endDate">
AND DATE_FORMAT(B.REGDATE, '%Y-%m-%d') <![CDATA[ <= ]]> DATE_FORMAT(#endDate#, '%Y-%m-%d')
</isNotEmpty>
<isNotEmpty property="stateType">
<isEqual property="stateType" compareValue="Y">
AND B.RESERVE_YN = 'Y'
</isEqual>
<isEqual property="stateType" compareValue="N">
AND B.RESERVE_YN = 'N'
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="3">
AND B.SMS_TXT like CONCAT('%', #searchKeyword#, '%')
</isEqual>
</isNotEmpty>
GROUP BY B.MSG_GROUP_ID
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage#
OFFSET #firstIndex#
</select>
<!-- 전체 발송결과 조회 (그룹별)-->
<select id="KakaoSentDAO.selectAllKakaoSentListExcel_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
/* KakaoSentDAO.selectAllKakaoSentList_advc */ /* KakaoSentDAO.selectAllKakaoSentList_advc */
SELECT t1.totMsgCnt, SELECT t1.totMsgCnt,
t1.userId, t1.userId,
@ -1612,7 +1717,7 @@
WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y' WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y'
ELSE 'N' ELSE 'N'
END AS divideYN END AS divideYN
FROM mj_msg_data t1 FROM mj_msg_data t1 FORCE INDEX (idx_msgdata_groupid_delfalg_msgtype_curstate)
LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID
WHERE WHERE
t1.DEL_FLAG = 'N' t1.DEL_FLAG = 'N'

View File

@ -970,7 +970,7 @@ function fnByteString(contents){
var denyTxtLeng = conByteLeng('무료 거부 080-880-0858'); var denyTxtLeng = conByteLeng('무료 거부 080-880-0858');
var campFrtTxtLeng = conByteLeng('(선거운동정보)'); var campFrtTxtLeng = conByteLeng('(선거운동정보)');
var campLstTxtLeng = conByteLeng('후보자전화번호 불법수집정보 신고번호 118번 무료 거부 080-880-0858'); var campLstTxtLeng = conByteLeng('후보자전화번호 불법수집정보 신고번호 : 선거관리위원회 ☎1390 무료 거부 080-880-0858');
//일반문자, 광고문자에 따른 문자 길이 변경해주기 //일반문자, 광고문자에 따른 문자 길이 변경해주기
if(msgKind == "N"){ if(msgKind == "N"){
@ -4595,7 +4595,8 @@ function fnInputSmsTxt(){
<td> <td>
<c:choose> <c:choose>
<c:when test="${not empty mjonMsgDelaySentList.regDate}"> <c:when test="${not empty mjonMsgDelaySentList.regDate}">
<fmt:formatDate value="${mjonMsgDelaySentList.regDate}" pattern="yyyy-MM-dd HH:mm"/> <%-- <fmt:formatDate value="${mjonMsgDelaySentList.regDate}" pattern="yyyy-MM-dd HH:mm"/> --%>
<c:out value="${mjonMsgDelaySentList.regDate}" />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
- -
@ -4613,7 +4614,8 @@ function fnInputSmsTxt(){
<c:otherwise> <c:otherwise>
<c:choose> <c:choose>
<c:when test="${mjonMsgDelaySentList.delayYn eq 'Y'}"> <c:when test="${mjonMsgDelaySentList.delayYn eq 'Y'}">
[스미싱의심] <fmt:formatDate value="${mjonMsgDelaySentList.reqDate}" pattern="yyyy-MM-dd HH:mm"/> [스미싱의심] <c:out value="${mjonMsgDelaySentList.regDate}" />
<%-- [스미싱의심] <fmt:formatDate value="${mjonMsgDelaySentList.reqDate}" pattern="yyyy-MM-dd HH:mm"/> --%>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
- -

View File

@ -903,6 +903,8 @@ function previewPhone(){
<input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition }' />" /> <input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition }' />" />
<input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword }' />" /> <input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword }' />" />
<input type="hidden" name="pageUnit" value="<c:out value='${searchVO.pageUnit }' />" /> <input type="hidden" name="pageUnit" value="<c:out value='${searchVO.pageUnit }' />" />
<input type="hidden" name="tabType" value="<c:out value='${searchVO.tabType }' />" />
<input type="hidden" name="stateType" value="<c:out value='${searchVO.stateType }' />" />
</form> </form>
<!-- 예약 취소 --> <!-- 예약 취소 -->

View File

@ -16,8 +16,83 @@ var thisfuledtlday = ""; //당원 마지막일
var threefulstday = ""; //3개월전 시작일 var threefulstday = ""; //3개월전 시작일
var threefuledday = ""; //3개월전 마지막일 var threefuledday = ""; //3개월전 마지막일
function firstLodingSet(){
var html = "";
html += '<div class="list_info">';
html += ' <p>총 발송건수 <span class="c_e40000">0</span>건</p>';
html += ' <div>';
html += ' <p class="cf_text c_e40000">※ 예약 발송취소는 예약 발송시간 기준 5분 전까지만 가능</p>';
html += ' <label for="pageUnit" class="label">줄보기 선택</label>';
html += ' <select id="pageUnit" name="pageUnit" class="selType2">';
html += ' <option value="10" selected>10개보기</option>';
html += ' </select>';
html += ' </div>';
html += '</div>';
html += '<div class="tb_wrap">';
html += ' <table class="tType4">';
html += ' <colgroup>';
html += ' <col style="width: 45px;">';
html += ' <col style="width: 12%;">';
html += ' <col style="width: 7%;">';
html += ' <col style="width: auto;">';
html += ' <col style="width: 7%;">';
html += ' <col style="width: 6%;">';
html += ' <col style="width: 6%;">';
html += ' <col style="width: 6%;">';
html += ' <col style="width: 6%;">';
html += ' <col style="width: 6%;">';
html += ' <col style="width: 8%;">';
html += ' <col style="width: 8%;">';
html += ' </colgroup>';
html += ' <thead>';
html += ' <tr>';
html += ' <th rowspan="2">';
html += ' <label for="" class="label">전체 선택</label>';
html += ' <input type="checkbox" id="allCheck" name="allCheck">';
html += ' </th>';
html += ' <th rowspan="2">발송일시';
html += ' <div class="sort_wrap">';
html += ' <input type="button" class="sort sortBtn" id="sort_reqdate">';
html += ' </div>';
html += ' </th>';
html += ' <th rowspan="2">형태';
html += ' <div class="sort_wrap">';
html += ' <input type="button" class="sort sortBtn" id="sort_orderByCode">';
html += ' </div>';
html += ' </th>';
html += ' <th rowspan="2">내용</th>';
html += ' <th rowspan="2">발송건수';
html += ' <div class="sort_wrap">';
html += ' <input type="button" class="sort sortBtn" id="sort_msgGroupCnt">';
html += ' </div>';
html += ' </th>';
html += ' <th rowspan="2">대기</th>';
html += ' <th colspan="2">카카오톡결과</th>';
html += ' <th colspan="2">대체문자결과</th>';
html += ' <th rowspan="2">금액(원)</th>';
html += ' <th rowspan="2">진행상황</th>';
html += ' </tr>';
html += ' <tr>';
html += ' <th>성공</th>';
html += ' <th>실패</th>';
html += ' <th>성공</th>';
html += ' <th>실패</th>';
html += ' </tr>';
html += ' </thead>';
html += ' <tbody>';
html += ' <tr><td colspan="12">LOADING...</td></tr>';
html += ' </tbody>';
html += ' </table>';
html += '</div>';
$(".msgSentAllLoad").html(html);
}
$(document).ready(function(){ $(document).ready(function(){
firstLodingSet();
//초기 전체 리스트 페이지 보여주기 //초기 전체 리스트 페이지 보여주기
var form = document.searchForm; var form = document.searchForm;
form.listType.value = "groupList"; form.listType.value = "groupList";
@ -417,8 +492,10 @@ function fn_sentDetailView(msgGroupId) {
<input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/> <input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" /> <input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" /> <input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<input type="hidden" id="tabType" name="tabType" value="all"/><!-- 탭 종류 --> <!-- <input type="hidden" id="tabType" name="tabType" value="all"/>탭 종류 -->
<input type="hidden" id="stateType" name="stateType" value="all"/><!-- 발송상태 종류 --> <input type="hidden" id="tabType" name="tabType" value="${searchVO.tabType}"/><!-- 탭 종류 -->
<!-- <input type="hidden" id="stateType" name="stateType" value="all"/>발송상태 종류 -->
<input type="hidden" id="stateType" name="stateType" value="${searchVO.stateType}"/><!-- 발송상태 종류 -->
<input type="hidden" id="listType" name="listType" value="groupList"/><!-- 리스트 종류 --> <input type="hidden" id="listType" name="listType" value="groupList"/><!-- 리스트 종류 -->
<input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/><!-- 주소록 그룹 이름 --> <input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/><!-- 주소록 그룹 이름 -->
<input type="hidden" id="mberId" name="mberId" value="${LoginVO.id}"/><!-- 주소록 그룹 이름 --> <input type="hidden" id="mberId" name="mberId" value="${LoginVO.id}"/><!-- 주소록 그룹 이름 -->
@ -584,7 +661,7 @@ function fn_sentDetailView(msgGroupId) {
<!-- <div class="on_active">받는사람(전송건별)</div> --> <!-- <div class="on_active">받는사람(전송건별)</div> -->
<!-- </div> --> <!-- </div> -->
<ul> <ul>
<li class="tab active"> <li class="tab <c:if test="${searchVO.stateType eq 'all' || searchVO.stateType eq '' || empty searchVO.stateType}">active</c:if>">
<button type="button" onclick="fnListLoad('all','0'); return false;">전체</button> <button type="button" onclick="fnListLoad('all','0'); return false;">전체</button>
</li> </li>
<!-- <li class="tab"> <!-- <li class="tab">
@ -596,10 +673,10 @@ function fn_sentDetailView(msgGroupId) {
<li class="tab"> <li class="tab">
<button type="button" onclick="fnListLoad('fail','3'); return false;">수신오류</button> <button type="button" onclick="fnListLoad('fail','3'); return false;">수신오류</button>
</li> --> </li> -->
<li class="tab"> <li class="tab <c:if test="${searchVO.stateType eq 'N'}">active</c:if>">
<button type="button" onclick="fnListLoad('N','1'); return false;">즉시</button> <button type="button" onclick="fnListLoad('N','1'); return false;">즉시</button>
</li> </li>
<li class="tab"> <li class="tab" <c:if test="${searchVO.stateType eq 'Y'}">active</c:if>>
<button type="button" onclick="fnListLoad('Y','2'); return false;">예약</button> <button type="button" onclick="fnListLoad('Y','2'); return false;">예약</button>
</li> </li>
</ul> </ul>

View File

@ -2475,10 +2475,10 @@ function advMsgInsert(){
var callFrom = $("#callFromList option:selected").val(); var callFrom = $("#callFromList option:selected").val();
var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>'; var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>';
var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 118번<br/>무료거부 0808800858</div>'; var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br/>무료거부 0808800858</div>';
var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>'; var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>';
var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 118번<br>무료거부 0808800858</p>'; var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br>무료거부 0808800858</p>';
//광고 및 무료수신거부 텍스트 추가 //광고 및 무료수신거부 텍스트 추가
if ($("#send_adYnY").val() == 'Y'){ if ($("#send_adYnY").val() == 'Y'){

View File

@ -2755,10 +2755,10 @@ function advMsgInsert(){
var callFrom = $("#callFromList option:selected").val(); var callFrom = $("#callFromList option:selected").val();
var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>'; var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>';
var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 118번<br/>무료거부 0808800858</div>'; var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br/>무료거부 0808800858</div>';
var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>'; var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>';
var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 118번<br>무료거부 0808800858</p>'; var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br>무료거부 0808800858</p>';
//선거 및 무료수신거부 텍스트 추가 //선거 및 무료수신거부 텍스트 추가
if ($('input[name=send_adYn]:checked').val() == 'Y'){ if ($('input[name=send_adYn]:checked').val() == 'Y'){

View File

@ -3102,10 +3102,10 @@ function advMsgInsert(){
var callFrom = $("#callFromList option:selected").val(); var callFrom = $("#callFromList option:selected").val();
var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>'; var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>';
var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 118번<br/>무료거부 0808800858</div>'; var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br/>무료거부 0808800858</div>';
var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>'; var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>';
var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 118번<br>무료거부 0808800858</p>'; var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br>무료거부 0808800858</p>';
//광고 및 무료수신거부 텍스트 추가 //광고 및 무료수신거부 텍스트 추가
if ($('input[name=send_adYn]:checked').val() == 'Y'){ if ($('input[name=send_adYn]:checked').val() == 'Y'){

View File

@ -3365,10 +3365,10 @@ function advMsgInsert(){
var callFrom = $("#callFromList option:selected").val(); var callFrom = $("#callFromList option:selected").val();
var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>'; var advStr = '<div class="ad_txt"><p>(선거운동정보)</p></div>';
var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 118번<br/>무료거부 0808800858</div>'; var advDenyStr = '<div class="deny_txt">후보자전화번호 ' + callFrom + '<br/>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br/>무료거부 0808800858</div>';
var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>'; var preAdvStr = '<p class="ad_tit">(선거운동정보)</p>';
var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 118번<br>무료거부 0808800858</p>'; var preAdvDenyStr = '<p class="deny_receipt">후보자전화번호 ' + callFrom + '<br>불법수집정보 신고번호 : 선거관리위원회 ☎1390<br>무료거부 0808800858</p>';
//광고 및 무료수신거부 텍스트 추가 //광고 및 무료수신거부 텍스트 추가
if (!advMsgSts){//선거문자 필수문구 추가해주기 if (!advMsgSts){//선거문자 필수문구 추가해주기

View File

@ -198,7 +198,8 @@ function fnRevDetailPop(msgGroupId, msgId, fileCnt){
</c:if> </c:if>
<tr> <tr>
<td> <td>
<fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${result.reqdate}" /> <%-- <fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${result.reqDate}" /> --%>
<c:out value="${result.reqDate}" />
</td> </td>
<td> <td>
<c:choose> <c:choose>

View File

@ -296,7 +296,7 @@
.histroy_trans ul {background-color: #f5f5f5; padding: 0 20px; border: 1px solid #dadada; border-radius: 0 0 5px 5px; margin-top: -3px;} .histroy_trans ul {background-color: #f5f5f5; padding: 0 20px; border: 1px solid #dadada; border-radius: 0 0 5px 5px; margin-top: -3px;}
.histroy_trans ul li {position: relative; height: 30px; line-height: 30px; border-bottom: 1px solid #e8e8e8;} .histroy_trans ul li {position: relative; height: 30px; line-height: 30px; border-bottom: 1px solid #e8e8e8;}
.histroy_trans ul li:only-child {border-bottom: 0;} .histroy_trans ul li:only-child {border-bottom: 0;}
.histroy_trans ul li p {display: inline-block; width: 100%; color: #666; font-size: 14px; font-weight: 300; letter-spacing: 0.5px; text-align:center;} .histroy_trans ul li p {display: inline-block; color: #666; font-size: 14px; font-weight: 300; letter-spacing: 0.5px; text-align:center;}
.histroy_trans ul li button {position: absolute; right: 0; top: 50%; transform: translateY(-50%);} .histroy_trans ul li button {position: absolute; right: 0; top: 50%; transform: translateY(-50%);}
.popup_btn_wrap2.hisroy_btn {width: 178px;} .popup_btn_wrap2.hisroy_btn {width: 178px;}
.popup_btn_wrap2.hisroy_btn button {width: calc(100%/2 - 2.5px); height: 32px; font-size: 14px;} .popup_btn_wrap2.hisroy_btn button {width: calc(100%/2 - 2.5px); height: 32px; font-size: 14px;}

View File

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>문자온 시스템 점검 안내</title>
<style>
body {background-color: #EEE;display:flex; justify-content: center; font-family: 'Noto Sans KR', sans-serif; }
.textbox {margin:100px 0 0 0; width:480px; border:15px solid #d8d8d8; padding:25px 40px 50px 40px; background-color: #fff;}
.textbox h1 {color:#222; font-size:24px; text-align: center; border-bottom:1px solid #a8a8a8; padding:0 0 20px 0; font-weight: 600;}
.textbox h3 {color:#333; font-size:16px; font-weight: 400; text-align: center; padding: 12px 0 14px 0; background-color: #f8f8f8; margin:20px 0 20px 0; border:1px solid #ededed; }
.textbox h3 strong {font-size:17px; font-weight:500px;}
.textbox p {text-align: center; margin: 8px 0 0 0; font-size:16px; font-weight: 400; color:#555; line-height: 26px; }
.textbox p span {color:#333;font-weight: 500; }
</style>
</head>
<body>
<div class="textbox">
<h1>문자온 시스템 점검중입니다.</h1>
<h3>· 점검일시 : <strong>2025년 4월 28일(월) 08:30 ~ 08:35</strong> (약 5분간)</h3>
<p>현재 홈페이지 인증서 교체 작업을 위한 시스템 점검중에 있습니다.</p>
<p><span>(기)예약 설정 건은 정상 발송되며, <br>작업 이전 '발송대기'건은 작업 완료 후 발송 시도됩니다.</span></p>
<p>항상 더 나은 서비스 제공을 위해 노력하겠습니다.<br>
감사합니다.</p>
</div>
</body>
</html>