메인화면 속도

This commit is contained in:
KNKIM 2021-11-23 16:30:56 +09:00
parent d8e7db7d68
commit 7a3b0cfe87
3 changed files with 22 additions and 46 deletions

View File

@ -100,26 +100,11 @@ public class MainController extends NlibCommonController {
model.addAttribute("listOrgPicks", mainService.listOrgPicks(mngOrgCd)); model.addAttribute("listOrgPicks", mainService.listOrgPicks(mngOrgCd));
// 유형별 인기자료 // 유형별 인기자료
List<Map<String, String>> listTypeDivCodes = codeService.listTypeDivCodes(); //List<Map<String, String>> listTypeDivCodes = codeService.listTypeDivCodes();
List<CollectionVO> listPops = new ArrayList<CollectionVO>(); //model.addAttribute("listTypeDivCodes", listTypeDivCodes);
if(listTypeDivCodes != null) {
Map<String, String> itemMap = null; List<CollectionVO> listPops = mainService.listPops(mngOrgCd, null); // 전체
String typeDivCd = null;
for(int i = (listTypeDivCodes.size() - 1); i>=0; i--) {
itemMap = listTypeDivCodes.get(i);
typeDivCd = itemMap.get("typeDivCd");
List<CollectionVO> listPopsTemp = mainService.listPops(mngOrgCd, typeDivCd);
if(listPopsTemp == null || listPopsTemp.size() < 1) {
listTypeDivCodes.remove(i);
continue;
}
for(CollectionVO col : listPopsTemp) {
listPops.add(col);
}
}
}
model.addAttribute("listPops", listPops); model.addAttribute("listPops", listPops);
model.addAttribute("listTypeDivCodes", listTypeDivCodes);
// 온라인자료관 // 온라인자료관
model.addAttribute("listOnline", mainService.listOnline(mngOrgCd)); model.addAttribute("listOnline", mainService.listOnline(mngOrgCd));

View File

@ -10,13 +10,13 @@
FROM ( FROM (
SELECT SELECT
TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(replace(RM.KEYWORD,',',';'), ';', NUMBERS.N), ';', -1)) AS KEY_NAME TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(replace(RM.KEYWORD,',',';'), ';', NUMBERS.N), ';', -1)) AS KEY_NAME
FROM ( /* 키워드 길이 1000 이므로, 최대 가능 키워드수 500으로 맞춤 */ FROM ( /* 키워드 길이 1000 이므로, 최대 가능 키워드수 500이나 속도 개선으로 10개로 제한 */
WITH RECURSIVE W1 AS ( WITH RECURSIVE W1 AS (
SELECT 1 AS N SELECT 1 AS N
UNION ALL UNION ALL
SELECT 1+W1.N AS N SELECT 1+W1.N AS N
FROM W1 FROM W1
WHERE W1.N < 500 WHERE W1.N < 10
) )
SELECT N FROM W1 SELECT N FROM W1
) NUMBERS ) NUMBERS
@ -60,7 +60,6 @@
<!-- 유형별인기자료 --> <!-- 유형별인기자료 -->
<select id="listPops" parameterType="CollectionVO" resultType="CollectionVO"> <select id="listPops" parameterType="CollectionVO" resultType="CollectionVO">
<![CDATA[
/* listPops */ /* listPops */
SELECT SELECT
M.MASTER_ID M.MASTER_ID
@ -86,22 +85,24 @@
FROM RG_MASTER M FROM RG_MASTER M
INNER JOIN ( INNER JOIN (
/* 자료 상세조회 이력 현황 */ /* 자료 상세조회 이력 현황 */
SELECT A.MASTER_ID , COUNT(1) AS CNT SELECT A.MASTER_ID
, COUNT(1) AS CNT
FROM MB_VIEW_LOG A FROM MB_VIEW_LOG A
INNER JOIN RG_MASTER B ON (A.MASTER_ID = B.MASTER_ID) INNER JOIN RG_MASTER B ON (A.MASTER_ID = B.MASTER_ID)
WHERE A.MNG_ORG_CD = #{mngOrgCd} WHERE A.MNG_ORG_CD = #{mngOrgCd}
<if test='typeDivCd != null'>
AND B.TYPE_DIV_CD = #{typeDivCd}
</if>
AND B.USE_FLAG = 'Y'
AND B.OPEN_DIV_CD != '3' /* 공개구분 : 공개, 부분공개 */
AND B.REG_STATUS = 'REG_OK' /* 등록상태 : 등록완료 */
GROUP BY A.MASTER_ID GROUP BY A.MASTER_ID
ORDER BY COUNT(1) DESC) M2 ON (M.MASTER_ID = M2.MASTER_ID) ORDER BY COUNT(1) DESC
LIMIT 4) M2 ON (M.MASTER_ID = M2.MASTER_ID)
LEFT OUTER JOIN SM_CODE_S C1 ON M.TYPE_DIV_CD = C1.S_CODE_ID AND C1.L_CODE_ID = 'MASTER_TYPE_DIV_CD' LEFT OUTER JOIN SM_CODE_S C1 ON M.TYPE_DIV_CD = C1.S_CODE_ID AND C1.L_CODE_ID = 'MASTER_TYPE_DIV_CD'
LEFT OUTER JOIN SM_CODE_S C2 ON M.DTLS_TYPE_DIV_CD = C2.S_CODE_ID AND C2.L_CODE_ID = 'DTLS_TYPE_DIV_CD' LEFT OUTER JOIN SM_CODE_S C2 ON M.DTLS_TYPE_DIV_CD = C2.S_CODE_ID AND C2.L_CODE_ID = 'DTLS_TYPE_DIV_CD'
WHERE M.MNG_ORG_CD = #{mngOrgCd}
AND M.TYPE_DIV_CD = #{typeDivCd}
AND M.USE_FLAG = 'Y'
AND M.OPEN_DIV_CD != '3' /* 공개구분 : 공개, 부분공개 */
AND M.REG_STATUS = 'REG_OK' /* 등록상태 : 등록완료 */
ORDER BY M2.CNT DESC, M.MOD_DD DESC, M.REG_DD DESC ORDER BY M2.CNT DESC, M.MOD_DD DESC, M.REG_DD DESC
LIMIT 4 LIMIT 4
]]>
</select> </select>
<!-- 온라인자료관 --> <!-- 온라인자료관 -->

View File

@ -230,28 +230,19 @@ function fn_listPops(typeDivCd) {
</section> </section>
<!-- 섹션5 --> <!-- 섹션5 -->
<c:if test="${fn:length(listTypeDivCodes) > 0 }"> <c:if test="${fn:length(listPops) > 0 }">
<section class="sec5"> <section class="sec5">
<h2 class="blind">인기자료 섹션영역</h2> <h2 class="blind">인기자료 섹션영역</h2>
<div class="inner"> <div class="inner">
<h3 class="title"><span>유형별</span> 인기자료</h3> <h3 class="title"><span>인기</span> 자료</h3>
<p class="desc">자료유형별로 이런 인기자료들이 있어요!</p> <p class="desc">이런 인기자료들이 있어요!</p>
<div class="tab"> <div class="tab">
<div class="mo_tabs_wrap">
<ul class="tabs">
<c:forEach var="itemTypeDivCode" items="${listTypeDivCodes }">
<li><a href="javascript:void(0)" onclick="javascript:fn_listPops('${itemTypeDivCode.typeDivCd}')">${itemTypeDivCode.typeDivNm}</a></li>
</c:forEach>
</ul>
</div>
<div class="tab_content"> <div class="tab_content">
<c:forEach var="itemTypeDivCode" items="${listTypeDivCodes }"> <div class="tabs_item" id="listPops_ALL">
<div class="tabs_item" id="listPops_${itemTypeDivCode.typeDivCd}">
<div class="swiper popularSwiper"> <div class="swiper popularSwiper">
<ul class="swiper-wrapper"> <ul class="swiper-wrapper">
<c:forEach var="itemPop" items="${listPops }"> <c:forEach var="itemPop" items="${listPops }">
<c:if test='${itemPop.typeDivCd eq itemTypeDivCode.typeDivCd }'>
<li class="swiper-slide"> <li class="swiper-slide">
<div class="con-1"> <div class="con-1">
<div class="block"><span class="cla">${itemPop.typeDivNm }</span></div> <div class="block"><span class="cla">${itemPop.typeDivNm }</span></div>
@ -263,14 +254,13 @@ function fn_listPops(typeDivCd) {
<p class="yea"><span>생산년도</span><span><c:if test="${empty itemPop.creatYyyy }">-</c:if>${itemPop.creatYyyy }</span></p> <p class="yea"><span>생산년도</span><span><c:if test="${empty itemPop.creatYyyy }">-</c:if>${itemPop.creatYyyy }</span></p>
</div> </div>
</li> </li>
</c:if>
</c:forEach> </c:forEach>
</ul> </ul>
<div class="swiper-pagination"></div> <div class="swiper-pagination"></div>
</div> </div>
</div> </div>
</c:forEach>
</div> </div>
</div> </div>
</div> </div>
</section> </section>