Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
baf28f38a7
@ -58,4 +58,20 @@ public interface MainService
|
||||
*/
|
||||
public List<CollectionVO> listOnline(String mngOrgCd);
|
||||
|
||||
}
|
||||
/**
|
||||
* 지방문화원별 배너 정보를 조회한다.
|
||||
*
|
||||
* @param mngOrgCd
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String, String>> listBannerInfos(String mngOrgCd);
|
||||
|
||||
/**
|
||||
* 메인화면 배너ID에 대한 정보를 가져온다.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, String> getBannerInfo(String bannerId);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -42,4 +42,18 @@ public interface MainDAO {
|
||||
*/
|
||||
public List<CollectionVO> listOnline(String mngOrgCd);
|
||||
|
||||
/**
|
||||
* 지방문화원별 배너 정보를 조회한다.
|
||||
*
|
||||
* @param mngOrgCd
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String, String>> listBannerInfos(String mngOrgCd);
|
||||
|
||||
/**
|
||||
* 메인화면 배너ID에 대한 정보를 가져온다.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, String> getBannerInfo(String bannerId);
|
||||
}
|
||||
|
||||
@ -93,4 +93,23 @@ public class MainServiceImpl implements MainService
|
||||
return mainDAO.listOnline(mngOrgCd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 지방문화원별 배너 정보를 조회한다.
|
||||
*
|
||||
* @param mngOrgCd
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String, String>> listBannerInfos(String mngOrgCd) {
|
||||
return mainDAO.listBannerInfos(mngOrgCd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 메인화면 배너ID에 대한 정보를 가져온다.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Map<String, String> getBannerInfo(String bannerId) {
|
||||
return mainDAO.getBannerInfo(bannerId);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,9 +1,12 @@
|
||||
package nlib.cmm.web;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.activation.MimetypesFileTypeMap;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@ -16,6 +19,7 @@ import org.springframework.security.web.savedrequest.RequestCache;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import nlib.bbs.service.ArticleVO;
|
||||
import nlib.bbs.service.BoardService;
|
||||
@ -100,26 +104,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));
|
||||
@ -142,6 +131,10 @@ public class MainController extends NlibCommonController {
|
||||
List<ArticleVO> listQna = qnaService.listArticles(searchArticleVO);
|
||||
model.addAttribute("listQna", listQna);
|
||||
|
||||
// 메인 화면 배너
|
||||
List<Map<String, String>> listBannerInfos = mainService.listBannerInfos(mngOrgCd);
|
||||
model.addAttribute("listBannerInfos", listBannerInfos);
|
||||
|
||||
return "nlib/cmm/home";
|
||||
}
|
||||
|
||||
@ -188,4 +181,37 @@ public class MainController extends NlibCommonController {
|
||||
return "nlib/cmm/headerSubPart";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/main/bannerImage.do")
|
||||
public void getBannerImage(HttpServletRequest request, HttpServletResponse response, String bannerId) throws IOException {
|
||||
|
||||
Map<String, String> bannerInfo = mainService.getBannerInfo(bannerId);
|
||||
boolean exists = false;
|
||||
|
||||
if(bannerInfo != null && StringUtil.isNotEmpty(bannerInfo.get("fileStreCours")) && StringUtil.isNotEmpty(bannerInfo.get("streFileNm")) && StringUtil.isNotEmpty(bannerInfo.get("orignlFileNm"))) {
|
||||
try {
|
||||
String fileName = bannerInfo.get("fileStreCours") + bannerInfo.get("streFileNm");
|
||||
MimetypesFileTypeMap mimetypesFileTypeMap = new MimetypesFileTypeMap();
|
||||
response.setContentType(mimetypesFileTypeMap.getContentType(bannerInfo.get("orignlFileNm")));
|
||||
response.getOutputStream().write(Files.readAllBytes(Paths.get(fileName)));
|
||||
exists = true;
|
||||
} catch(Exception e) {
|
||||
log.error("메인 화면 배너 관련 파일을 확인할 수 없습니다. : bannerId=" + bannerId);
|
||||
}
|
||||
}
|
||||
|
||||
if(!exists) {
|
||||
try {
|
||||
String fileName = NlibProperty.getString("main.banner.img.path");
|
||||
MimetypesFileTypeMap mimetypesFileTypeMap = new MimetypesFileTypeMap();
|
||||
response.setContentType(mimetypesFileTypeMap.getContentType(bannerInfo.get("orignlFileNm")));
|
||||
response.getOutputStream().write(Files.readAllBytes(Paths.get(fileName)));
|
||||
exists = true;
|
||||
} catch(Exception e) {
|
||||
log.error("메인 화면 배너 기본 배너 파일을 확인할 수 없습니다. : main.banner.img.path=" + NlibProperty.getString("main.banner.img.path"));
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
@ -8,11 +8,4 @@ public interface NlibSearchService {
|
||||
/** 검색결과 받기
|
||||
* @return */
|
||||
NlibSearchVO getSearch(NlibSearchVO searchVO) throws Exception;
|
||||
/*
|
||||
String getSearchEtc(SearchVO searchVO , Sf1VO sf1Vo) throws Exception;
|
||||
|
||||
int getSearch_All_cnt(SearchVO searchVO, Sf1VO sf1Vo) throws Exception;
|
||||
|
||||
SearchCollectionResult getSearch_ajax(SearchVO searchVO , Sf1VO sf1Vo) throws Exception;
|
||||
*/
|
||||
}
|
||||
|
||||
@ -264,9 +264,6 @@ public class NlibSearchController extends NlibCommonController {
|
||||
List<String> mngOrgList = new ArrayList<>();
|
||||
List<String> keywordList = new ArrayList<>();
|
||||
|
||||
//사용자 정보를 가져온다.
|
||||
NlibLoginVO loginVO = getNlibLoginVO(authentication);
|
||||
|
||||
CollectionVO vo = new CollectionVO();
|
||||
vo.setMasterId(masterId);
|
||||
|
||||
|
||||
@ -64,6 +64,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
.antMatchers("/temp/**")
|
||||
.antMatchers("/favicon/**")
|
||||
.antMatchers("/html/**")
|
||||
.antMatchers("/banner/**")
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
<!-- 온라인자료관 -->
|
||||
@ -142,5 +143,53 @@
|
||||
LIMIT 10
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 메인 배너 롤링 : 2021.11.23 추가 -->
|
||||
<select id="listBannerInfos" parameterType="String" resultType="egovMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
A.ORDER_SEQ
|
||||
, A.BANNER_ID
|
||||
, A.MNG_ORG_CD
|
||||
, A.TITLE
|
||||
, A.BANNER_DESC
|
||||
, A.URL
|
||||
, A.ATTACH_FILE_ID
|
||||
, B.FILE_STRE_COURS
|
||||
, B.STRE_FILE_NM
|
||||
, B.ORIGNL_FILE_NM
|
||||
, B.FILE_EXTSN
|
||||
FROM BD_NLIB_BANNER A
|
||||
LEFT OUTER JOIN BD_FILEDETAIL B ON (A.ATTACH_FILE_ID = B.ATTACH_FILE_ID AND IFNULL(B.USE_AT,'Y') = 'Y')
|
||||
WHERE A.MNG_ORG_CD = #{mngOrgCd}
|
||||
AND DATE_FORMAT(NOW(), '%Y%m%d%H') BETWEEN IFNULL(A.POST_START_DT, '1901010101') AND IFNULL(A.POST_END_DT , '9999123123')
|
||||
AND IFNULL(USE_YN, 'Y') = 'Y'
|
||||
AND DELETE_YN = 'N'
|
||||
ORDER BY ORDER_SEQ
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 메인 배너 롤링 : 2021.11.24 추가 -->
|
||||
<select id="getBannerInfo" parameterType="String" resultType="egovMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
A.ORDER_SEQ
|
||||
, A.BANNER_ID
|
||||
, A.MNG_ORG_CD
|
||||
, A.TITLE
|
||||
, A.BANNER_DESC
|
||||
, A.URL
|
||||
, A.ATTACH_FILE_ID
|
||||
, B.FILE_STRE_COURS
|
||||
, B.STRE_FILE_NM
|
||||
, B.ORIGNL_FILE_NM
|
||||
, B.FILE_EXTSN
|
||||
FROM BD_NLIB_BANNER A
|
||||
LEFT OUTER JOIN BD_FILEDETAIL B ON (A.ATTACH_FILE_ID = B.ATTACH_FILE_ID AND IFNULL(B.USE_AT,'Y') = 'Y')
|
||||
WHERE A.BANNER_ID = #{bannerId}
|
||||
AND IFNULL(USE_YN, 'Y') = 'Y'
|
||||
]]>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@ -140,12 +140,11 @@
|
||||
AND M.REG_STATUS = 'REG_OK' /* 등록상태 : 등록완료 */
|
||||
AND M.USE_FLAG = 'Y'
|
||||
AND IFNULL(M.PE_STATUS, '') = '' /* 보존상태 */
|
||||
AND M.DIGITAL_READ_YN = 'Y' /* 디지탈열람여부 */
|
||||
AND IFNULL(M.M_INTERFACE_ID, '') != ''/* IF존재하는 건 */
|
||||
AND ( M.OPER_OUT_RANGE_CD = '01' OR M.OPER_READ_RANGE_CD = '01' OR M.DIGITAL_READ_YN = 'Y')/* 대출 OR 열람 OR 온라인열람 가능 */
|
||||
AND M.TITLE = REPLACE(#{title},' ','')
|
||||
AND M.CREAT_YYYY = REPLACE(#{creatYyyy},' ','')
|
||||
AND REPLACE(M.TITLE,' ','') = REPLACE(#{title},' ','')
|
||||
AND M.CREAT_YYYY LIKE CONCAT(#{creatYyyy},'%')
|
||||
AND M.ORG_NM = REPLACE(#{orgNm},' ','')
|
||||
AND M.MASTER_ID != #{masterId}
|
||||
ORDER BY M.MOD_DD DESC
|
||||
LIMIT 10
|
||||
</select>
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
, CONTENT_TYPE
|
||||
, MNG_ORG_CD
|
||||
, TITLE
|
||||
, CONTENT
|
||||
, CONVERT(A.CONTENT_LBL USING UTF8) AS CONTENT
|
||||
FROM BD_NLIB_CONTENT_PAGE A
|
||||
WHERE A.CONTENT_TYPE = #{contentType}
|
||||
AND A.MNG_ORG_CD = #{mngOrgCd}
|
||||
|
||||
@ -80,6 +80,15 @@ crypto.aria.defaultKey = gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ=
|
||||
list.paging.page.size = 10
|
||||
|
||||
|
||||
#----------------------------------------
|
||||
# \uba54\uc778\ud654\uba74 \uae30\ubcf8 \ubc30\ub108
|
||||
#----------------------------------------
|
||||
# \uba54\uc778\ud654\uba74 \uae30\ubcf8 \ubc30\ub108 \uc704\uce58
|
||||
# \ub85c\uceec LLLLLLLLLLLLLLL
|
||||
#main.banner.img.path = C:/iams/workspace/nlib/src/main/webapp/images/bg/bg-mainbanner.jpg
|
||||
# \uac1c\ubc1c\uc11c\ubc84
|
||||
main.banner.img.path = /apps/tomcat/apache-tomcat-8.5.46_nlib/webapps/images/bg/bg-mainbanner.jpg
|
||||
|
||||
#----------------------------------------
|
||||
# \ucca8\ubd80\ud30c\uc77c \uacbd\ub85c \uc815\ubcf4
|
||||
#----------------------------------------
|
||||
|
||||
@ -325,7 +325,7 @@ function fn_downloadFile(attachFileId, fileSn) {
|
||||
<div class="w-tit">답변메일 수신여부</div>
|
||||
<div class="w-form">
|
||||
<input type="checkbox" name="emailRecvYn" id="emailRecvYn" value="Y" <c:if test='${searchArticle.emailRecvYn == "Y" }'> checked </c:if> />
|
||||
<label for="emailRecvYn">${searchArticle.loginedName} / ${searchArticle.email} (답변 수신메일 주소는 내 정보에서 수정하실 수 있습니다.)</label>
|
||||
<label for="emailRecvYn"> (답변 수신메일 주소는 내 정보에서 수정하실 수 있습니다.)</label>
|
||||
</div>
|
||||
</li>
|
||||
<li class="wt-question">
|
||||
|
||||
@ -211,7 +211,7 @@ function fn_search_article(pageIndex) {
|
||||
</script>
|
||||
|
||||
<!-- 소장자료 섹션 -->
|
||||
<form name="referencelistForm" id="referencelistForm" method="get" action="/search/searchList.do">
|
||||
<form name="referencelistForm" id="referencelistForm" method="post" action="/search/searchList.do">
|
||||
<input type="hidden" name="collection" id="collection" value="<c:out value='${searchVO.collection}'/>" />
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" title="페이지번호" value="<c:out value='${searchVO.pageIndex }' />"/>
|
||||
<input type="hidden" id="masterId" name="masterId" value="" />
|
||||
|
||||
@ -89,9 +89,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-box">
|
||||
${informContent }
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -406,21 +406,9 @@ function gfn_showDocPdf(interfaceId,masterId,typeDivCd,dtlsTypeDivCd) {
|
||||
|
||||
var openNewWindow = window.open(url + interfaceId, "_blank");
|
||||
}
|
||||
function gfn_setSnsShare(interfaceId,masterId,typeDivCd,dtlsTypeDivCd){
|
||||
function gfn_setSnsShare(masterId){
|
||||
var url=window.location.protocol + "//" + window.location.host + window.location.pathname + "?masterId=" + masterId;
|
||||
|
||||
if(!fn_isEmpty(interfaceId))
|
||||
{
|
||||
if(typeDivCd == "IT_PHOTO" && (dtlsTypeDivCd == "C199" || dtlsTypeDivCd == "C01")){
|
||||
url = IMAGE_VIEW_URL;
|
||||
}else if((typeDivCd == "IT_VIDEO") && (dtlsTypeDivCd == "C290" || dtlsTypeDivCd == "C02" || dtlsTypeDivCd == "C03")){
|
||||
url = VIDEO_VIEW_URL;
|
||||
}else{
|
||||
url = DOC_VIEW_URL;
|
||||
}
|
||||
url += interfaceId
|
||||
}
|
||||
|
||||
$('#div_pop-sharing img').attr('data-cUrl',url); // url 모두 맵핑
|
||||
if(url != null && url != ''){
|
||||
getShortUrlData(url);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user