Merge remote-tracking branch 'origin/master'

This commit is contained in:
com02 2021-11-24 13:26:22 +09:00
commit baf28f38a7
15 changed files with 173 additions and 64 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;
*/
}

View File

@ -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);

View File

@ -64,6 +64,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/temp/**")
.antMatchers("/favicon/**")
.antMatchers("/html/**")
.antMatchers("/banner/**")
;
}

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>
<!-- 온라인자료관 -->
@ -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>

View File

@ -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>

View File

@ -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}

View File

@ -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
#----------------------------------------

View File

@ -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} /&nbsp; ${searchArticle.email} &nbsp; (답변 수신메일 주소는 내 정보에서 수정하실 수 있습니다.)</label>
<label for="emailRecvYn"> (답변 수신메일 주소는 내 정보에서 수정하실 수 있습니다.)</label>
</div>
</li>
<li class="wt-question">

View File

@ -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="" />

View File

@ -89,9 +89,7 @@
</div>
</div>
</div>
<div class="info-box">
${informContent }
</div>
</div>
</div>
</div>

View File

@ -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);