문자전송순위 성능개선

This commit is contained in:
itn 2023-09-06 12:18:48 +09:00
parent 0227226679
commit d490a7160e
2 changed files with 90 additions and 107 deletions

View File

@ -2687,91 +2687,66 @@
</select> </select>
<select id="mjonMsgDAO.selectRankNumberList_230125" parameterClass="mjPhoneMemberVO" resultClass="mjPhoneMemberVO"> <select id="mjonMsgDAO.selectRankNumberList_230125" parameterClass="mjPhoneMemberVO" resultClass="mjPhoneMemberVO">
SELECT SELECT
COUNT(A.USER_ID) OVER() AS totCnt, M.totCnt,
A.USER_ID AS userId, M.userId,
A.CNT AS msgGroupCnt, M.msgGroupCnt,
RANK() OVER (ORDER BY CNT DESC) AS rank, M.rank,
M.sbscrbDe,
DATE_FORMAT(D.SBSCRB_DE, '%Y-%m-%d %H:%i' ) AS sbscrbDe, M.userMoney,
F.totPrice, M.frstRegistPnttm,
E.USER_MONEY AS userMoney
, DATE_FORMAT(a.frstRegistPnttm, '%H:%i:%s') AS frstRegistPnttm
FROM
( (
SELECT AA.MBER_ID AS user_id, SELECT ABS(SUM(CASH))
sum(cnt) CNT FROM MJ_CASH C
, max(regist_pnttm) as frstRegistPnttm WHERE 1=1
FROM mj_sttst_msg_rank AA AND M.userId = C.USER_ID
WHERE 1=1 AND C.DEL_FLAG = 'N'
<isNotEmpty property="msgType"> AND MSG_GROUP_ID IS NOT NULL
AND MSG_TYPE = #msgType# AND 0 > C.CASH
</isNotEmpty> GROUP BY C.USER_ID
<isNotEmpty property="agentCode"> ) totPrice
AND AGENT_CODE = #agentCode# FROM (
</isNotEmpty> SELECT
GROUP BY AA.MBER_ID COUNT(A.USER_ID) OVER() AS totCnt,
) A A.USER_ID AS userId,
/* A.CNT AS msgGroupCnt,
LEFT JOIN ( RANK() OVER (ORDER BY CNT DESC) AS rank,
SELECT CODE_NM , CODE , CODE_DC DATE_FORMAT(D.SBSCRB_DE, '%Y-%m-%d %H:%i' ) AS sbscrbDe,
FROM LETTCCMMNDETAILCODE E.USER_MONEY AS userMoney
WHERE USE_AT = 'Y' , DATE_FORMAT(a.frstRegistPnttm, '%H:%i:%s') AS frstRegistPnttm
AND CODE_ID = 'ITN022' FROM
) B ON A.MSG_TYPE = B.CODE LEFT JOIN ( (
SELECT CODE_NM , CODE , CODE_DC SELECT AA.MBER_ID AS user_id,
FROM LETTCCMMNDETAILCODE sum(cnt) CNT
WHERE USE_AT = 'Y' , max(regist_pnttm) as frstRegistPnttm
AND CODE_ID = 'ITN019' FROM mj_sttst_msg_rank AA
) C ON A.AGENT_CODE = C.CODE WHERE 1=1
*/ <isNotEmpty property="msgType">
LEFT JOIN COMVNUSERMASTER D ON A.USER_ID = D.USER_ID AND MSG_TYPE = #msgType#
LEFT JOIN LETTNGNRLMBER E ON A.USER_ID = E.MBER_ID </isNotEmpty>
<isNotEmpty property="agentCode">
LEFT OUTER JOIN ( AND AGENT_CODE = #agentCode#
</isNotEmpty>
select USER_ID GROUP BY AA.MBER_ID
, sum(totcnt) totPrice ) A
LEFT JOIN COMVNUSERMASTER D ON A.USER_ID = D.USER_ID
from ( LEFT JOIN LETTNGNRLMBER E ON A.USER_ID = E.MBER_ID
SELECT A.USER_ID, WHERE 1=1
ifnull(totCnt, '0') AS totCnt, <isNotEmpty property="ntceBgnde">
'CASH' AS divFlag AND <![CDATA[ DATE_FORMAT(E.SBSCRB_DE, '%Y-%m-%d') >= #ntceBgnde# ]]>
FROM ( </isNotEmpty>
SELECT USER_ID, <isNotEmpty property="ntceEndde">
ABS(SUM(CASH)) AS totCnt AND <![CDATA[ DATE_FORMAT(E.SBSCRB_DE, '%Y-%m-%d') <= #ntceEndde# ]]>
FROM MJ_CASH A </isNotEmpty>
WHERE 1=1 ORDER BY 1=1
AND A.DEL_FLAG = 'N' <isNotEmpty property="searchSortCnd">
AND MSG_GROUP_ID IS NOT NULL ,$searchSortCnd$
AND 0 > A.CASH </isNotEmpty>
GROUP BY USER_ID <isNotEmpty property="searchSortOrd">
) $searchSortOrd$
A </isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
)aa ) M
group by aa.USER_ID
)F
ON A.USER_ID = F.USER_ID
WHERE 1=1
<isNotEmpty property="ntceBgnde">
AND <![CDATA[ DATE_FORMAT(E.SBSCRB_DE, '%Y-%m-%d') >= #ntceBgnde# ]]>
</isNotEmpty>
<isNotEmpty property="ntceEndde">
AND <![CDATA[ DATE_FORMAT(E.SBSCRB_DE, '%Y-%m-%d') <= #ntceEndde# ]]>
</isNotEmpty>
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select> </select>
<!-- today 전송사별 전송건수 --> <!-- today 전송사별 전송건수 -->

View File

@ -114,6 +114,13 @@ function fnSetCalMonth(val) {
} }
function fnSelectMber(mberId) {
document.modiForm2.mberId.value = mberId;
window.open("about:blank", 'popupSelectMber', 'width=900, height=1800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.modiForm2.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserView.do'/>";
document.modiForm2.target = "popupSelectMber";
document.modiForm2.submit();
}
</script> </script>
<style> <style>
.calBtn { .calBtn {
@ -203,25 +210,23 @@ function fnSetCalMonth(val) {
<div class="tableWrap"> <div class="tableWrap">
<table class="tbType1"> <table class="tbType1">
<colgroup> <colgroup>
<col style="width: 5%"> <col style="width: 7%">
<col style="width: 5%"> <col style="width: *%">
<col style="width: 15%"> <col style="width: 15%">
<col style="width: 15%"> <col style="width: 15%">
<col style="width: 15%">
<col style="width: 5%">
<col style="width: 10%"> <col style="width: 10%">
<col style="width: 15%"> <col style="width: 15%">
<col style="width: 15%">
<col style="width: 10%"> <col style="width: 10%">
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th>번호<input type="button" class="sort sortBtn" id="sort_rank"></th> <th>순위<input type="button" class="sort sortBtn" id="sort_rank"></th>
<th>순위</th>
<th>아이디(사용자)<input type="button" class="sort sortBtn" id="sort_userId"></th> <th>아이디(사용자)<input type="button" class="sort sortBtn" id="sort_userId"></th>
<th>가입일시<input type="button" class="sort sortBtn" id="sort_sbscrbDe"></th> <th>가입일시<input type="button" class="sort sortBtn" id="sort_sbscrbDe"></th>
<th>보유잔액<input type="button" class="sort sortBtn" id="sort_sbscrbDe"></th> <th>보유잔액<input type="button" class="sort sortBtn" id="sort_userMoney"></th>
<th>발송건수<input type="button" class="sort sortBtn" id="sort_msgGroupCnt"></th> <th>발송건수<input type="button" class="sort sortBtn" id="sort_msgGroupCnt"></th>
<th>발송금액<input type="button" class="sort sortBtn" id="sort_totPrice"></th> <th>발송금액</th>
<th>메세지타입</th> <th>메세지타입</th>
<th>전송사</th> <th>전송사</th>
</tr> </tr>
@ -229,27 +234,25 @@ function fnSetCalMonth(val) {
<tbody> <tbody>
<c:forEach var="result" items="${resultList}" varStatus="status"> <c:forEach var="result" items="${resultList}" varStatus="status">
<tr> <tr>
<td>
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
<c:if test="${searchVO.searchSortOrd eq 'asc' }">
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td><c:out value="${result.rank}"/></td> <td><c:out value="${result.rank}"/></td>
<td> <td>
<a href="#" onclick="fn_send_member_list('${result.userId}'); return false;"> <a href="#" onclick="javascript:fnSelectMber('<c:out value="${result.userId}"/>'); return false;">
<c:out value="${result.userId}"/> <c:out value="${result.userId}"/>
</a> </a>
</td> </td>
<td><c:out value="${result.sbscrbDe}"/></td> <td>
<a href="#" onclick="fn_send_member_list('${result.userId}'); return false;"><c:out value="${result.sbscrbDe}"/></a>
<td>${result.userMoney}</td> </td>
<td>
<td><c:out value="${result.msgGroupCnt}"/></td> <a href="#" onclick="fn_send_member_list('${result.userId}'); return false;">${result.userMoney}</a>
<td><c:out value="${result.totPrice}"/></td> </td>
<td>
<a href="#" onclick="fn_send_member_list('${result.userId}'); return false;"><c:out value="${result.msgGroupCnt}"/></a>
</td>
<td>
<a href="#" onclick="fn_send_member_list('${result.userId}'); return false;"><c:out value="${result.totPrice}"/></a>
</td>
<td> <td>
<c:if test="${empty searchVO.msgType}"> <c:if test="${empty searchVO.msgType}">
메시지타입(전체) 메시지타입(전체)
@ -291,5 +294,10 @@ function fnSetCalMonth(val) {
<form name="modiForm" method="get" action="<c:url value='/uss/ion/msg/SendMsgList.do'/>" > <form name="modiForm" method="get" action="<c:url value='/uss/ion/msg/SendMsgList.do'/>" >
<input name="userId" type="hidden" /> <input name="userId" type="hidden" />
</form> </form>
<form name="modiForm2" id="modiForm2" method="post">
<input name="mberId" type="hidden" />
</form>
</body> </body>
</html> </html>