This commit is contained in:
hehihoho3@gmail.com 2025-05-08 18:01:45 +09:00
commit 22eea6e937
15 changed files with 1031 additions and 895 deletions

View File

@ -242,7 +242,7 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
int failed = 0; // 실패 건수 int failed = 0; // 실패 건수
if("Y".equals(resultVO.getBizKakaoResendYn())) { if("Y".equals(resultVO.getBizKakaoResendYn())) {
success = resultVO.getSuccessCount() + resultVO.getKakaoResendSuccCount(); success = resultVO.getSuccessCount() + resultVO.getKakaoResendSuccCount();
failed = resultVO.getKakaoResendFailCount(); failed = resultVO.getFailCount() - resultVO.getKakaoResendSuccCount();
}else { }else {
success = resultVO.getSuccessCount(); success = resultVO.getSuccessCount();
failed = resultVO.getFailCount(); failed = resultVO.getFailCount();
@ -254,8 +254,8 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
String failedPct = total > 0 ? String.format("%.1f%%", (failed / (double) total) * 100) : "0.0%"; String failedPct = total > 0 ? String.format("%.1f%%", (failed / (double) total) * 100) : "0.0%";
resultVO.setSuccessPct(successPct); resultVO.setSuccessPct(successPct);
resultVO.setFailedPct(waitingPct); resultVO.setFailedPct(failedPct);
resultVO.setWaitingPct(failedPct); resultVO.setWaitingPct(waitingPct);
resultVO.setTotPrice(this.priceProc(resultVO.getSuccessPrice(), resultVO.getKakaoResendSuccPrice())); resultVO.setTotPrice(this.priceProc(resultVO.getSuccessPrice(), resultVO.getKakaoResendSuccPrice()));
@ -290,6 +290,7 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
//성공 건수 세팅 //성공 건수 세팅
KakaoSentVO eachCnt = new KakaoSentVO(); KakaoSentVO eachCnt = new KakaoSentVO();
eachCnt.setMsgGroupId(result.getMsgGroupId()); eachCnt.setMsgGroupId(result.getMsgGroupId());
eachCnt.setBizKakaoResendYn("Y".equals(result.getBizKakaoResendYn()) ? "Y" : "N");
try { try {
eachCnt = kakaoSentDAO.selectKakaoSentCntEachCnt_advc(eachCnt); eachCnt = kakaoSentDAO.selectKakaoSentCntEachCnt_advc(eachCnt);
} catch (Exception e) { } catch (Exception e) {

View File

@ -66,6 +66,7 @@ import itn.let.sym.site.service.SiteManagerVO;
import itn.let.sym.site.service.TermsVO; import itn.let.sym.site.service.TermsVO;
import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.EgovUserManageService;
import itn.let.uss.umt.service.UserManageVO; import itn.let.uss.umt.service.UserManageVO;
import itn.let.utl.user.service.IndexNowUtil;
import itn.let.utl.user.service.MjonNoticeSendUtil; import itn.let.utl.user.service.MjonNoticeSendUtil;
/** /**
@ -130,6 +131,9 @@ public class EgovSiteManagerController {
@Resource(name = "userManageService") @Resource(name = "userManageService")
private EgovUserManageService userManageService; private EgovUserManageService userManageService;
@Resource(name="indexNowUtil")
private IndexNowUtil indexNowUtil;
/** 알림전송 Util */ /** 알림전송 Util */
@Resource(name = "mjonNoticeSendUtil") @Resource(name = "mjonNoticeSendUtil")
private MjonNoticeSendUtil mjonNoticeSendUtil; private MjonNoticeSendUtil mjonNoticeSendUtil;
@ -2063,6 +2067,55 @@ public class EgovSiteManagerController {
return "redirect:/sym/site/selectMetaTagList.do"; return "redirect:/sym/site/selectMetaTagList.do";
} }
/**
* 메타태그 인택스
*
* @param metaTagVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/sym/site/selectMetaTagIndex.do")
public String selectMetaTagIndex(@ModelAttribute("searchVO") MetaTagVO metaTagVO, ModelMap model) throws Exception{
/** paging */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(1);
paginationInfo.setRecordCountPerPage(100000);
paginationInfo.setPageSize(1);
metaTagVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
metaTagVO.setLastIndex(paginationInfo.getLastRecordIndex());
metaTagVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(metaTagVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
metaTagVO.setSearchSortCnd("frstRegistPnttm");
metaTagVO.setSearchSortOrd("desc");
}
metaTagVO.setSearchKeyword("10");
metaTagVO.setSearchCondition("10");
List<MetaTagVO> metaTagList = egovSiteManagerService.selectMetaTagList(metaTagVO);
/*
model.addAttribute("metaTagList", metaTagList);
paginationInfo.setTotalRecordCount( metaTagList.size()> 0 ? metaTagList.get(0).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo);
*/
for (int i=0;i<metaTagList.size();i++) {
indexNowUtil.submitUrl("https://www.munjaon.co.kr" + metaTagList.get(i).getUrl());
//if (i>2) break;
}
//submitUrl("https://yourdomain.com/new-post.html"); // 🔁 여기에 전송할 실제 URL 입력
//return "/sym/site/metaTagList";
return "redirect:/sym/site/selectMetaTagList.do";
}
/** /**
* 관리자 알림 여부 * 관리자 알림 여부
* *

View File

@ -0,0 +1,56 @@
package itn.let.utl.user.service;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import org.springframework.stereotype.Service;
@Service("indexNowUtil")
public class IndexNowUtil {
private static final String INDEXNOW_API_URL = "https://api.indexnow.org/indexnow";
private static final String INDEXNOW_KEY = "d09a9f949e6e48eeb221d7a13bdb1d14"; // 🔁 여기에 실제 입력
private static final String HOST = "www.munjaon.co.kr"; // 🔁 도메인만 입력 (https:// 없이)
public static void submitUrl(String urlToSubmit) {
try {
URL url = new URL(INDEXNOW_API_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setDoOutput(true);
// JSON 데이터 구성
String jsonInputString = "{"
+ "\"host\":\"" + HOST + "\","
+ "\"key\":\"" + INDEXNOW_KEY + "\","
+ "\"urlList\":[\"" + urlToSubmit + "\"]"
+ "}";
try (OutputStream os = connection.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
int responseCode = connection.getResponseCode();
if (responseCode == 200 || responseCode == 202) {
System.out.println("✅ IndexNow 전송 성공: " + urlToSubmit);
} else {
System.out.println("❌ 전송 실패 - 응답 코드: " + responseCode + " : " + urlToSubmit);
}
} catch (Exception e) {
System.err.println("🚫 오류 발생: " + e.getMessage());
}
}
/*
public static void main(String[] args) {
// 테스트용 URL 전송
submitUrl("https://yourdomain.com/new-post.html"); // 🔁 여기에 전송할 실제 URL 입력
}
*/
}

View File

@ -1664,63 +1664,48 @@
<select id="KakaoSentDAO.selectKakaoSentCntEachCnt_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO"> <select id="KakaoSentDAO.selectKakaoSentCntEachCnt_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
SELECT SELECT
a.MSG_GROUP_ID AS msgGroupId, a.MSG_GROUP_ID AS msgGroupId
a.successCount, , a.successCount
a.waitCount, , a.waitCount
a.failCount, , a.failCount
a.kakaoResendSuccCount, , a.divideYn
a.kakaoResendFailCount, <isEqual property="bizKakaoResendYn" compareValue="Y">
a.successCount * bkp.BIZ_KAKAO_AT_PRICE AS successPrice, , a.kakaoResendSuccCount
(a.smsCnt * bkp.BIZ_SMS_PRICE) + (a.mmsCnt * bkp.BIZ_MMS_PRICE) AS kakaoResendSuccPrice, , a.kakaoResendFailCount
a.divideYn , a.successCount * bkp.BIZ_KAKAO_AT_PRICE AS successPrice
, (a.smsCnt * bkp.BIZ_SMS_PRICE) + (a.mmsCnt * bkp.BIZ_MMS_PRICE) AS kakaoResendSuccPrice
</isEqual>
<isNotEqual property="bizKakaoResendYn" compareValue="Y">
, 0 AS kakaoResendSuccCount
, 0 AS kakaoResendFailCount
, 0 AS successPrice
, 0 AS kakaoResendSuccPrice
</isNotEqual>
FROM ( FROM (
SELECT SELECT
t1.MSG_GROUP_ID, t1.MSG_GROUP_ID
SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE = '7000', 1, 0)) AS successCount, , SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE = '7000', 1, 0)) AS successCount
SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE IS NULL AND t1.SENT_DATE IS NULL AND t1.RSLT_DATE IS NULL, 1, 0)) AS waitCount, , SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE IS NULL AND t1.SENT_DATE IS NULL AND t1.RSLT_DATE IS NULL, 1,0)) AS waitCount
SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE != '7000' AND t1.RSLT_CODE IS NOT NULL, 1, 0)) AS failCount, , SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE != '7000' AND t1.RSLT_CODE IS NOT NULL, 1, 0)) AS failCount
SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100'), 1, 0)) AS kakaoResendSuccCount, , CASE
SUM(IF(
t1.BIZ_KAKAO_RESEND_YN = 'Y' AND
NOT EXISTS (
SELECT 1
FROM (
SELECT '6600' AS status UNION ALL SELECT '4100'
) AS status_list
WHERE status_list.status = BL1.CALL_STATUS
), 1, 0
)) AS kakaoResendFailCount,
SUM(IF(
t1.BIZ_KAKAO_RESEND_YN = 'Y' AND
NOT EXISTS (
SELECT 1
FROM (
SELECT '6600' AS status UNION ALL SELECT '4100'
) AS status_list
WHERE status_list.status = BL1.CALL_STATUS
) AND t1.BIZ_KAKAO_RESEND_TYPE = 'SMS', 1, 0
)) AS smsCnt,
SUM(IF(
t1.BIZ_KAKAO_RESEND_YN = 'Y' AND
NOT EXISTS (
SELECT 1
FROM (
SELECT '6600' AS status UNION ALL SELECT '4100'
) AS status_list
WHERE status_list.status = BL1.CALL_STATUS
) AND t1.BIZ_KAKAO_RESEND_TYPE = 'MMS', 1, 0
)) AS mmsCnt,
CASE
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
<isEqual property="bizKakaoResendYn" compareValue="Y">
, SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100'), 1,0)) AS kakaoResendSuccCount
, SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS not IN ('6600', '4100'), 1,0)) AS kakaoResendFailCount
, SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100') AND t1.BIZ_KAKAO_RESEND_TYPE = 'SMS', 1, 0)) AS smsCnt
, SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100') AND t1.BIZ_KAKAO_RESEND_TYPE = 'MMS', 1, 0)) AS mmsCnt
</isEqual>
FROM mj_msg_data t1 FORCE INDEX (idx_msgdata_groupid_delfalg_msgtype_curstate) FROM mj_msg_data t1 FORCE INDEX (idx_msgdata_groupid_delfalg_msgtype_curstate)
<isEqual property="bizKakaoResendYn" compareValue="Y">
LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID
</isEqual>
WHERE WHERE
t1.DEL_FLAG = 'N' t1.MSG_GROUP_ID = #msgGroupId#
AND t1.MSG_TYPE IN ('8', '9') AND t1.MSG_TYPE IN ('8', '9')
AND t1.CUR_STATE IN ('0', '1', '2', '3') AND t1.CUR_STATE IN ('0', '1', '2', '3')
AND t1.MSG_GROUP_ID = #msgGroupId# AND t1.DEL_FLAG = 'N'
GROUP BY t1.MSG_GROUP_ID GROUP BY t1.MSG_GROUP_ID
) a ) a
LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp ON bkp.MSG_GROUP_ID = a.MSG_GROUP_ID LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp ON bkp.MSG_GROUP_ID = a.MSG_GROUP_ID

View File

@ -400,6 +400,7 @@
WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0') then '성공' WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0') then '성공'
WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE in ('100', '101', '110', '800')) then '성공' WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE in ('100', '101', '110', '800')) then '성공'
WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE in ('4100', '6600', '7000')) then '성공' WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE in ('4100', '6600', '7000')) then '성공'
WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE not in ('4100', '6600', '7000')) AND A.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100') then '성공(대체문자)'
WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE in ('1000', '1001')) then '성공' WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE in ('1000', '1001')) then '성공'
WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE in ('6', '1000')) then '성공' WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE in ('6', '1000')) then '성공'
WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE in ('1000', '1001')) then '성공' WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE in ('1000', '1001')) then '성공'
@ -409,6 +410,7 @@
END as statusTxt END as statusTxt
from from
MJ_MSG_DATA A MJ_MSG_DATA A
LEFT OUTER JOIN BIZ_LOG BL1 ON A.BIZ_UMID = BL1.CMID
where where
A.MSG_GROUP_ID = #msgGroupId# A.MSG_GROUP_ID = #msgGroupId#

View File

@ -669,6 +669,7 @@
) )
</insert> </insert>
<!-- 사용자 캐쉬 업데이트 -->
<insert id="mjonPayDAO.updateMemberCash" parameterClass="mjonPayVO"> <insert id="mjonPayDAO.updateMemberCash" parameterClass="mjonPayVO">
<selectKey keyProperty="strCash" resultClass="String"> <selectKey keyProperty="strCash" resultClass="String">
SELECT NVL(B.CASH , 0) AS cash FROM LETTNGNRLMBER A SELECT NVL(B.CASH , 0) AS cash FROM LETTNGNRLMBER A

View File

@ -906,6 +906,7 @@
FROM MJ_META_TAG a FROM MJ_META_TAG a
WHERE 1 = 1 WHERE 1 = 1
<isNotEmpty property="searchKeyword"> <isNotEmpty property="searchKeyword">
<isEqual prepend="AND" property="searchCondition" compareValue=""> <isEqual prepend="AND" property="searchCondition" compareValue="">
( URL LIKE CONCAT('%' , #searchKeyword#, '%') OR MENU_NM LIKE CONCAT('%' , #searchKeyword#, '%') ) ( URL LIKE CONCAT('%' , #searchKeyword#, '%') OR MENU_NM LIKE CONCAT('%' , #searchKeyword#, '%') )
</isEqual> </isEqual>
@ -915,6 +916,10 @@
<isEqual prepend="AND" property="searchCondition" compareValue="2"> <isEqual prepend="AND" property="searchCondition" compareValue="2">
MENU_NM LIKE CONCAT('%' , #searchKeyword#, '%') MENU_NM LIKE CONCAT('%' , #searchKeyword#, '%')
</isEqual> </isEqual>
<isEqual prepend="AND" property="searchCondition" compareValue="10">
DATE_FORMAT(a.LAST_UPDT_PNTTM,'%Y%m%d') >= DATE_FORMAT(DATE_ADD(NOW(), interval -7 day),'%Y%m%d')
</isEqual>
</isNotEmpty> </isNotEmpty>
ORDER BY 1=1 ORDER BY 1=1
<isNotEmpty property="searchSortCnd"> <isNotEmpty property="searchSortCnd">

View File

@ -40,6 +40,16 @@ function fnInsertView(){
document.listForm.action = "<c:url value='/sym/site/metaTagInsertView.do'/>"; document.listForm.action = "<c:url value='/sym/site/metaTagInsertView.do'/>";
document.listForm.submit(); document.listForm.submit();
} }
//indexnow
function fnIndexNow(){
if(confirm("index 처리 합니까?")) {
document.listForm.action = "<c:url value='/sym/site/selectMetaTagIndex.do'/>";
document.listForm.submit();
}
}
function fnView(metaTagNo){ function fnView(metaTagNo){
document.listForm.metaTagNo.value = metaTagNo ; document.listForm.metaTagNo.value = metaTagNo ;
document.listForm.action = "<c:url value='/sym/site/metaTagModifyView.do'/>"; document.listForm.action = "<c:url value='/sym/site/metaTagModifyView.do'/>";
@ -103,6 +113,8 @@ function fnDelete(){
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option> <option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option> <option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option> <option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${searchVO.pageUnit == '100'}">selected</c:if>>100줄</option>
<option value='500' <c:if test="${searchVO.pageUnit == '500'}">selected</c:if>>500줄</option>
</select> </select>
</div> </div>
</div> </div>
@ -181,6 +193,7 @@ function fnDelete(){
<input type="button" class="btnType1" onclick="fnInsertView(); return false;" value="등록"> <input type="button" class="btnType1" onclick="fnInsertView(); return false;" value="등록">
</div> </div>
<c:if test="${!empty metaTagList}"> <c:if test="${!empty metaTagList}">
<div class="page"> <div class="page">
<ul class="inline"> <ul class="inline">
@ -189,6 +202,10 @@ function fnDelete(){
</div> </div>
</c:if> </c:if>
<div class="btnWrap">
<input type="button" class="btnType1" onclick="fnIndexNow(); return false;" value="indexnow">
</div>
</div> </div>
</div> </div>
</form> </form>

View File

@ -104,16 +104,23 @@ function fnReservCancel(msgGroupId){
} }
function pageUnitChg(obj){
document.searchForm.pageUnit.value = obj.value;
linkPage(1);
}
</script> </script>
<div class="list_info"> <div class="list_info">
<p>총 발송건수 <span class="c_e40000"><c:out value="${totalRecordCount}"/></span>건</p> <p>총 발송건수 <span class="c_e40000"><c:out value="${totalRecordCount}"/></span>건</p>
<div> <div>
<p class="cf_text c_e40000">※ 예약 발송취소는 예약 발송시간 기준 5분 전까지만 가능</p> <p class="cf_text c_e40000">※ 예약 발송취소는 예약 발송시간 기준 5분 전까지만 가능</p>
<label for="pageUnit" class="label">줄보기 선택</label> <label for="pageUnit" class="label">줄보기 선택</label>
<select id="pageUnit" name="pageUnit" class="selType2"> <!-- <select id="pageUnit" name="pageUnit" class="selType2"> -->
<select class="selType2" onchange="pageUnitChg(this);">
<option value="10" <c:if test="${paginationInfo.recordCountPerPage == '10'}">selected</c:if> >10개보기</option> <option value="10" <c:if test="${paginationInfo.recordCountPerPage == '10'}">selected</c:if> >10개보기</option>
<option value="20" <c:if test="${paginationInfo.recordCountPerPage == '20'}">selected</c:if> >20개보기</option> <option value="20" <c:if test="${paginationInfo.recordCountPerPage == '20'}">selected</c:if> >20개보기</option>
<option value="30" <c:if test="${paginationInfo.recordCountPerPage == '30'}">selected</c:if> >30개보기</option> <option value="30" <c:if test="${paginationInfo.recordCountPerPage == '30'}">selected</c:if> >30개보기</option>
<option value="100" <c:if test="${paginationInfo.recordCountPerPage == '100'}">selected</c:if> >100개보기</option>
</select> </select>
</div> </div>
</div> </div>

View File

@ -659,7 +659,7 @@ function previewPhone(){
<c:if test="${result.reserveYn eq 'Y' }"> <c:if test="${result.reserveYn eq 'Y' }">
<dl><!-- 예약 시 --> <dl><!-- 예약 시 -->
<dt>등록일시</dt> <dt>등록일시</dt>
<dd>${result.regDate}</dd> <dd><fmt:formatDate pattern = "yyyy-MM-dd HH:mm:ss" value = "${result.regdate}" /></dd>
</dl> </dl>
</c:if> </c:if>
<dl> <dl>
@ -760,7 +760,7 @@ function previewPhone(){
<div class="res_info_btm1"> <div class="res_info_btm1">
<dl> <dl>
<dt>성공건수</dt> <dt>성공건수</dt>
<dd><span class="c_002c9a_g"><fmt:formatNumber value="${result.successCount}" type="number" groupingUsed="true" /></span>건(${result.successPct})</dd> <dd><span class="c_002c9a_g"><fmt:formatNumber value="${result.successCount + result.kakaoResendSuccCount}" type="number" groupingUsed="true" /></span>건(${result.successPct})</dd>
</dl> </dl>
</div> </div>
</div> </div>
@ -774,7 +774,12 @@ function previewPhone(){
<div class="res_info_btm1"> <div class="res_info_btm1">
<dl> <dl>
<dt>실패건수</dt> <dt>실패건수</dt>
<dd><span class="c_e40000_g"><fmt:formatNumber value="${result.failCount}" type="number" groupingUsed="true" /></span>건(${result.failedPct})</dd> <%-- 대체문자 기능 on
카카오톡 실패 + 대체문자 실패 = 실패
대체문자 기능 off
카카오톡 실패 = 실패
*카카오톡 실패임에도 대체문자로 발송이 성공한 경우 실패로 체크하지 않음 --%>
<dd><span class="c_e40000_g"><fmt:formatNumber value="${result.failCount - result.kakaoResendSuccCount}" type="number" groupingUsed="true" /></span>건(${result.failedPct})</dd>
</dl> </dl>
</div> </div>
</div> </div>

View File

@ -156,11 +156,11 @@ $(document).ready(function(){
}); });
$(document).on('change','#pageUnit', function(){ /* $(document).on('change','#pageUnit', function(){
linkPage(1); linkPage(1);
}); }); */
//발송건수 셋 //발송건수 셋
cntSet(); cntSet();

View File

@ -38,6 +38,7 @@
<div class="banner"> <div class="banner">
<img src="/publish/publish_adv/img/banner.jpg" alt="배너"> <img src="/publish/publish_adv/img/banner.jpg" alt="배너">
<div class="title"> <div class="title">
<h1 style="color:lightgray;">단체문자 발송하는 방법 총정리(갤럭시, 아이폰, 문자사이트)</h1>
<p>단체문자 발송하는 방법 총정리<span>(갤럭시, 아이폰, 문자사이트)</span></p> <p>단체문자 발송하는 방법 총정리<span>(갤럭시, 아이폰, 문자사이트)</span></p>
</div> </div>
</div> </div>

View File

@ -67,6 +67,7 @@
<div class="banner"> <div class="banner">
<img src="/publish/publish_adv/img/banner.jpg" alt="배너"> <img src="/publish/publish_adv/img/banner.jpg" alt="배너">
<div class="title"> <div class="title">
<h1 style="color:lightgray;">단체문자</h1>
<p>단체문자</p> <p>단체문자</p>
</div> </div>
</div> </div>

View File

@ -66,6 +66,7 @@
<div class="banner"> <div class="banner">
<img src="/publish/publish_adv/img/banner.jpg" alt="배너"> <img src="/publish/publish_adv/img/banner.jpg" alt="배너">
<div class="title"> <div class="title">
<h1 style="color:lightgray;">문자보내기</h1>
<p>문자보내기</p> <p>문자보내기</p>
</div> </div>
</div> </div>

View File

@ -67,6 +67,7 @@
<div class="banner"> <div class="banner">
<img src="/publish/publish_adv/img/banner.jpg" alt="배너"> <img src="/publish/publish_adv/img/banner.jpg" alt="배너">
<div class="title"> <div class="title">
<h1 style="color:lightgray;">문자발송</h1>
<p>문자발송</p> <p>문자발송</p>
</div> </div>
</div> </div>