메인화면 속도

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));
// 유형별 인기자료
List<Map<String, String>> listTypeDivCodes = codeService.listTypeDivCodes();
List<CollectionVO> listPops = new ArrayList<CollectionVO>();
if(listTypeDivCodes != null) {
Map<String, String> itemMap = 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);
}
}
}
//List<Map<String, String>> listTypeDivCodes = codeService.listTypeDivCodes();
//model.addAttribute("listTypeDivCodes", listTypeDivCodes);
List<CollectionVO> listPops = mainService.listPops(mngOrgCd, null); // 전체
model.addAttribute("listPops", listPops);
model.addAttribute("listTypeDivCodes", listTypeDivCodes);
// 온라인자료관
model.addAttribute("listOnline", mainService.listOnline(mngOrgCd));

View File

@ -10,13 +10,13 @@
FROM (
SELECT
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 (
SELECT 1 AS N
UNION ALL
SELECT 1+W1.N AS N
FROM W1
WHERE W1.N < 500
WHERE W1.N < 10
)
SELECT N FROM W1
) NUMBERS
@ -60,7 +60,6 @@
<!-- 유형별인기자료 -->
<select id="listPops" parameterType="CollectionVO" resultType="CollectionVO">
<![CDATA[
/* listPops */
SELECT
M.MASTER_ID
@ -86,22 +85,24 @@
FROM RG_MASTER M
INNER JOIN (
/* 자료 상세조회 이력 현황 */
SELECT A.MASTER_ID , COUNT(1) AS CNT
SELECT A.MASTER_ID
, COUNT(1) AS CNT
FROM MB_VIEW_LOG A
INNER JOIN RG_MASTER B ON (A.MASTER_ID = B.MASTER_ID)
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
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 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
LIMIT 4
]]>
</select>
<!-- 온라인자료관 -->

View File

@ -230,28 +230,19 @@ function fn_listPops(typeDivCd) {
</section>
<!-- 섹션5 -->
<c:if test="${fn:length(listTypeDivCodes) > 0 }">
<c:if test="${fn:length(listPops) > 0 }">
<section class="sec5">
<h2 class="blind">인기자료 섹션영역</h2>
<div class="inner">
<h3 class="title"><span>유형별</span> 인기자료</h3>
<p class="desc">자료유형별로 이런 인기자료들이 있어요!</p>
<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>
<h3 class="title"><span>인기</span> 자료</h3>
<p class="desc">이런 인기자료들이 있어요!</p>
<div class="tab">
<div class="tab_content">
<c:forEach var="itemTypeDivCode" items="${listTypeDivCodes }">
<div class="tabs_item" id="listPops_${itemTypeDivCode.typeDivCd}">
<div class="tabs_item" id="listPops_ALL">
<div class="swiper popularSwiper">
<ul class="swiper-wrapper">
<c:forEach var="itemPop" items="${listPops }">
<c:if test='${itemPop.typeDivCd eq itemTypeDivCode.typeDivCd }'>
<li class="swiper-slide">
<div class="con-1">
<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>
</div>
</li>
</c:if>
</c:forEach>
</ul>
<div class="swiper-pagination"></div>
</div>
</div>
</c:forEach>
</div>
</div>
</div>
</section>