This commit is contained in:
JSYOO 2021-08-31 14:07:55 +09:00
commit 763a2db4b2
19 changed files with 563 additions and 237 deletions

View File

@ -5,7 +5,9 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -24,6 +26,7 @@ import nlib.bbs.web.BoardController;
import nlib.cmm.exception.ErrorMessage; import nlib.cmm.exception.ErrorMessage;
import nlib.restful.service.DataApiResVO; import nlib.restful.service.DataApiResVO;
import nlib.security.SecUserVO; import nlib.security.SecUserVO;
import nlib.user.service.LoginService;
import nlib.user.service.NlibLoginVO; import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil; import nlib.util.StringUtil;
@ -53,12 +56,17 @@ public class NlibCommonController {
private static final Logger log = LoggerFactory.getLogger(BoardController.class); private static final Logger log = LoggerFactory.getLogger(BoardController.class);
@Resource(name = "loginService")
private LoginService _loginService;
/** /**
* AuthKey 생성 , 로그인하지 않은 사용자의 AuthKey 생성시 사용되는 접두어 * AuthKey 생성 , 로그인하지 않은 사용자의 AuthKey 생성시 사용되는 접두어
*/ */
static final String ANONYMOUS_AUTH_KEY_PREFIX = "GST-"; static final String ANONYMOUS_AUTH_KEY_PREFIX = "GST-";
private static final int INFO_ID_COUNCIL_CD = 1; /* 현재 지방문화원 코드를 지칭하는 식별자 */
private static final int INFO_ID_COUNCIL_NM = 2; /* 현재 지방문화원 명칭을 지칭하는 식별자 */
/** /**
* 스프링 시큐리티 Authentication를 통해서 사용자로그인정보 NlibLoginVO를 리턴한다. * 스프링 시큐리티 Authentication를 통해서 사용자로그인정보 NlibLoginVO를 리턴한다.
* *
@ -290,4 +298,41 @@ public class NlibCommonController {
return; return;
} }
/**
* 현재 요청(또는 세션)하고 있는 지방문화원 코드를 리턴한다.
*
* @param request
* @return
*/
private String getCurCouncilInfo(HttpServletRequest request, int which) {
HttpSession session = request.getSession();
String councilInfo = (String)session.getAttribute( (which == INFO_ID_COUNCIL_CD ? "curCouncilCd" : "curCouncilNm"));
if(StringUtil.isNotEmpty(councilInfo)) {
return councilInfo;
}
// 지방문화원 코드 확인
String curCouncilDnsHost = StringUtil.getHostName(request.getRequestURL().toString());
HashMap<String, String> councilInfoMap = _loginService.selectCouncilInfoByDnsHost(curCouncilDnsHost);
String curCouncilCd = councilInfoMap.get("councilCd");
String curCouncilNm = councilInfoMap.get("councilNm");
session.setAttribute("curCouncilNm", curCouncilNm);
session.setAttribute("curCouncilCd", curCouncilCd);
session.setAttribute("curCouncilDnsHost", curCouncilDnsHost);
return which == INFO_ID_COUNCIL_CD ? curCouncilCd : curCouncilNm;
}
public String getCurCouncilCd(HttpServletRequest request) {
return getCurCouncilInfo(request, INFO_ID_COUNCIL_CD);
}
public String getCurCouncilNm(HttpServletRequest request) {
return getCurCouncilInfo(request, INFO_ID_COUNCIL_NM);
}
} }

View File

@ -0,0 +1,72 @@
package nlib.cmm.interceptor;
import java.util.HashMap;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import nlib.cmm.service.NlibProperty;
import nlib.user.service.LoginService;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : NlibInterceptor.java
*
* @Description : 소장자료관 인터셉터로써 지방문화원 접속 정보를 세션에 담기위한 기능을 가짐
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 8. 31. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 8. 31.
* @version 1.0
*
*/
public class NlibInterceptor extends HandlerInterceptorAdapter {
private static final Logger log = LoggerFactory.getLogger(NlibInterceptor.class);
@Resource(name = "loginService")
private LoginService loginService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//---------------------------------------
// 지방문화원 접속 정보를 세션에 담기
//---------------------------------------
HttpSession session = request.getSession();
String curCouncilCd = (String)session.getAttribute("curCouncilCd");
if(StringUtil.isEmpty(curCouncilCd)) {
// 지방문화원 코드 확인
String curCouncilDnsHost = StringUtil.getHostName(request.getRequestURL().toString());
HashMap<String, String> councilInfoMap = loginService.selectCouncilInfoByDnsHost(curCouncilDnsHost);
curCouncilCd = councilInfoMap.get("councilCd");
if(StringUtil.equals(NlibProperty.getString(""), curCouncilCd)) {
}
session.setAttribute("curCouncilCd" , curCouncilCd);
session.setAttribute("curCouncilNm" , councilInfoMap.get("councilNm"));
session.setAttribute("curCouncilDnsHost", curCouncilDnsHost);
}
return true;
}
}

View File

@ -5,6 +5,28 @@ import java.util.List;
import egovframework.rte.psl.dataaccess.mapper.Mapper; import egovframework.rte.psl.dataaccess.mapper.Mapper;
/**
* <pre>
* @Class Name : CodeDAO.java
*
* @Description : 공통코드 조회 DAO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
@Mapper("codeDAO") @Mapper("codeDAO")
public interface CodeDAO { public interface CodeDAO {

View File

@ -4,16 +4,13 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.annotation.WebListener; import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener; import javax.servlet.http.HttpSessionListener;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import nlib.user.service.impl.LoginServiceImpl; import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import nlib.util.StringUtil; import nlib.util.StringUtil;
/** /**
@ -47,7 +44,10 @@ public class SessionConfig implements HttpSessionListener {
private static final String DELIMITER = "\t"; private static final String DELIMITER = "\t";
/* 세션별 로그인 처리 가능한 정보 목록 */ /* 세션별 로그인 처리 가능한 정보 목록 */
private static final Map<String, String> sessions = new ConcurrentHashMap<>(); private static final Map<String, String> loginSessions = new ConcurrentHashMap<>();
/* 세션별 회원가입 처리 가능한 정보 목록 */
private static final Map<String, OAuthUniversalUser> memberSessions = new ConcurrentHashMap<>();
@Override @Override
public void sessionCreated(HttpSessionEvent se) { public void sessionCreated(HttpSessionEvent se) {
@ -56,12 +56,27 @@ public class SessionConfig implements HttpSessionListener {
@Override @Override
public void sessionDestroyed(HttpSessionEvent se) { public void sessionDestroyed(HttpSessionEvent se) {
log.debug("Session sessionDestroyed (X) : " + se.getSession().getId()); String sessionId = se.getSession().getId();
if(sessions.get(se.getSession().getId()) != null){ log.debug("Session sessionDestroyed (X) : " + sessionId);
removeLoginInfo(se.getSession().getId()); if(loginSessions.get(sessionId) != null){
removeLoginInfo(sessionId);
}
if(memberSessions.get(sessionId) != null){
removeNewMemberInfo(sessionId);
} }
} }
/**
* 지방문화원 해당 세션에 로그인 처리 가능한 SNS유형 SNSID 정보를 저장한다.
*
* @param sessionId
* @param snsType
* @param snsId
*/
public static void setLoginInfo(String sessionId, String snsType, String snsId) {
log.debug("setLoginInfo : " + sessionId + ", " + snsType + ", " + snsId);
loginSessions.put(sessionId, StringUtil.getString(snsType, "NONE") + DELIMITER + StringUtil.getString(snsId, "NONE"));
}
/** /**
* 지방문화원 해당 세션에 로그인 처리 가능한 SNS 유형 SNS ID 정보를 리턴한다. * 지방문화원 해당 세션에 로그인 처리 가능한 SNS 유형 SNS ID 정보를 리턴한다.
@ -76,7 +91,7 @@ public class SessionConfig implements HttpSessionListener {
if(StringUtil.isEmpty(sessionId)) return null; if(StringUtil.isEmpty(sessionId)) return null;
String loginInfo = sessions.get(sessionId); String loginInfo = loginSessions.get(sessionId);
if(StringUtil.isEmpty(loginInfo)) return null; if(StringUtil.isEmpty(loginInfo)) return null;
String ret[] = loginInfo.split(DELIMITER); String ret[] = loginInfo.split(DELIMITER);
@ -86,18 +101,6 @@ public class SessionConfig implements HttpSessionListener {
return ret; return ret;
} }
/**
* 지방문화원 해당 세션에 로그인 처리 가능한 SNS유형 SNSID 정보를 저장한다.
*
* @param sessionId
* @param snsType
* @param snsId
*/
public static void setLoginInfo(String sessionId, String snsType, String snsId) {
log.debug("setLoginInfo : " + sessionId + ", " + snsType + ", " + snsId);
sessions.put(sessionId, StringUtil.getString(snsType, "NONE") + DELIMITER + StringUtil.getString(snsId, "NONE"));
}
/** /**
* 지방문화원 해당 세션에 로그인 처리 가능한 정보를 삭제한다. * 지방문화원 해당 세션에 로그인 처리 가능한 정보를 삭제한다.
* (로그인 처리 완료 또는 세션 종료 , 삭제) * (로그인 처리 완료 또는 세션 종료 , 삭제)
@ -108,9 +111,46 @@ public class SessionConfig implements HttpSessionListener {
*/ */
public static void removeLoginInfo(String sessionId) { public static void removeLoginInfo(String sessionId) {
if(StringUtil.isNotEmpty(sessionId)){ if(StringUtil.isNotEmpty(sessionId)){
sessions.remove(sessionId); loginSessions.remove(sessionId);
log.debug("removeLoginInfo > sessionId = " + sessionId); log.debug("removeLoginInfo > sessionId = " + sessionId);
} }
} }
/**
* 지방문화원 해당 세션에 회원가입 처리 가능한 SNS유형 SNS 프로파일 정보를 저장한다.
*
* @param sessionId
* @param snsType
* @param snsId
*/
public static void setNewMemberInfo(String sessionId, OAuthUniversalUser oUser) {
log.debug("setLoginInfo : " + sessionId + ", " + oUser.getSnsId());
memberSessions.put(sessionId, oUser);
}
/**
* 지방문화원 해당 세션에 회원가입 처리 가능한 SNS 유형 SNS 프로파일 정보를 리턴한다.
*
* @param sessionId
* @return
*/
public static OAuthUniversalUser getNewMemberInfo(String sessionId) {
if(StringUtil.isEmpty(sessionId)) return null;
return memberSessions.get(sessionId);
}
/**
* 지방문화원 해당 세션에 회원가입 처리 가능한 정보를 삭제한다.
* (회원가입 처리 완료 또는 세션 종료 , 삭제)
*
* @param sessionId
* @param snsType
* @param snsId
*/
public static void removeNewMemberInfo(String sessionId) {
if(StringUtil.isNotEmpty(sessionId)){
memberSessions.remove(sessionId);
log.debug("removeNewMemberInfo > sessionId = " + sessionId);
}
}
} }

View File

@ -1,20 +1,61 @@
package nlib.info.service; package nlib.info.service;
import nlib.restful.service.DataApiReqVO; import java.util.HashMap;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : InformService.java
*
* @Description : 정보성 컨텐츠를 조회하는 서비스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 8. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 8. 27.
* @version 1.0
*
*/
public interface InformService public interface InformService
{ {
public DataApiResVO selectTermsInfo(DataApiReqVO reqVO);
public DataApiResVO selectPrivacyInfo(DataApiReqVO reqVO); /*
* 이용약관을 조회한다.
*/
public HashMap<String, String> selectInfoContent(String councilCd, String contentType) throws Exception;
public DataApiResVO selectGreeting(DataApiReqVO reqVO); /*
* 이용약관을 조회한다.
*/
public HashMap<String, String> selectTermsInfo(String councilCd) throws Exception;
public DataApiResVO selectNCultureOperationInfo(DataApiReqVO reqVO); /*
* 개인정보처리방침을 조회한다.
*/
public HashMap<String, String> selectPrivacyInfo(String councilCd) throws Exception;
public DataApiResVO selectNCultureLocationInfo(DataApiReqVO reqVO); /*
* 인사말을 조회한다.
*/
public HashMap<String, String> selectGreeting(String councilCd) throws Exception;
/*
* 이용안내를 조회한다.
*/
public HashMap<String, HashMap<String, String>> selectNCultureOperationInfo(String councilCd) throws Exception ;
/*
* 찾아오는길 조회한다.
*/
public HashMap<String, String> selectNCultureLocationInfo(String councilCd) throws Exception;
} }

View File

@ -1,12 +1,9 @@
package nlib.info.service.impl; package nlib.info.service.impl;
import org.slf4j.Logger; import java.util.HashMap;
import org.slf4j.LoggerFactory; import java.util.List;
import org.springframework.stereotype.Repository;
import nlib.restful.DataApi; import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/** /**
* <pre> * <pre>
@ -30,69 +27,21 @@ import nlib.restful.service.DataApiResVO;
* @version 1.0 * @version 1.0
* *
*/ */
@Repository("informDAO") @Mapper("informDAO")
public class InformDAO extends DataApi public interface InformDAO
{ {
private static final Logger log = LoggerFactory.getLogger(InformDAO.class);
/** /**
* 자원의 URI * 컨텐츠를 조회한다.
*/
public static final String RESOURCE_URI = "/uac/service/inform";
/**
* 이용약관을 조회한다.
* *
* @param reqVO * @param reqVO
* @return * @return
*/ */
public DataApiResVO selectTermsInfo(DataApiReqVO reqVO) { public HashMap<String, String> selectInfoContent(String conDivAndCounCd) throws Exception;
reqVO.setReqUrl(RESOURCE_URI + "/terms");
return get(reqVO);
}
/** public HashMap<String, String> selectOperationEnv(String councilCd) throws Exception;
* 개인정보처리방침을 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO selectPrivacyInfo(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/privacy");
return get(reqVO);
}
/** public HashMap<String, String> selectNCultureAddr(String councilCd) throws Exception;
* 인사말을 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO selectGreeting(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/greeting");
return get(reqVO);
}
/**
* 이용안내를 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO selectNCultureOperationInfo(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/operation");
return get(reqVO);
}
/**
* 찾아오는길 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO selectNCultureLocationInfo(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/location");
return get(reqVO);
}
} }

View File

@ -8,15 +8,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import nlib.cmm.service.NlibProperty;
import nlib.info.service.InformService; import nlib.info.service.InformService;
import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO; import nlib.restful.service.DataApiResVO;
import nlib.util.StringUtil;
/** /**
* <pre> * <pre>
* @Class Name : InformServiceImpl.java * @Class Name : InformServiceImpl.java
* *
* @Description : 이용안내 약관관련 정보 제공 서비스 * @Description : 정보성 컨텐츠를 조회하는 서비스
* *
* *
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021) * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
@ -48,10 +50,29 @@ public class InformServiceImpl implements InformService
* (non-Javadoc) * (non-Javadoc)
* @see nlib.info.service.InformService#selectTermsInfo(nlib.restful.service.DataApiReqVO) * @see nlib.info.service.InformService#selectTermsInfo(nlib.restful.service.DataApiReqVO)
*/ */
public DataApiResVO selectTermsInfo(DataApiReqVO reqVO) { public HashMap<String, String> selectInfoContent(String councilCd, String contentType) throws Exception {
DataApiResVO resVO= informDAO.selectTermsInfo(reqVO); if(StringUtil.isEmpty(councilCd)) councilCd = NlibProperty.getString("nlib.council.cd");
return resVO;
HashMap<String, String> ret = informDAO.selectInfoContent(contentType + "@" + councilCd); // conDivAndCounCd
if(ret == null) {
ret = new HashMap<String, String>();
ret.put("TITLE", "(없음)");
ret.put("CONTENT", "(해당 자료가 존재하지 않습니다.)");
}
return ret;
}
/*
* 이용약관을 조회한다.
*
* (non-Javadoc)
* @see nlib.info.service.InformService#selectTermsInfo(nlib.restful.service.DataApiReqVO)
*/
public HashMap<String, String> selectTermsInfo(String councilCd) throws Exception {
return selectInfoContent(councilCd, "TERMS");
} }
/* /*
@ -60,10 +81,9 @@ public class InformServiceImpl implements InformService
* (non-Javadoc) * (non-Javadoc)
* @see nlib.info.service.InformService#selectPrivacyInfo(nlib.restful.service.DataApiReqVO) * @see nlib.info.service.InformService#selectPrivacyInfo(nlib.restful.service.DataApiReqVO)
*/ */
public DataApiResVO selectPrivacyInfo(DataApiReqVO reqVO) { public HashMap<String, String> selectPrivacyInfo(String councilCd) throws Exception {
DataApiResVO resVO= informDAO.selectPrivacyInfo(reqVO); return selectInfoContent(councilCd, "PRIVACY");
return resVO;
} }
/* /*
@ -72,10 +92,9 @@ public class InformServiceImpl implements InformService
* (non-Javadoc) * (non-Javadoc)
* @see nlib.info.service.InformService#selectGreeting(nlib.restful.service.DataApiReqVO) * @see nlib.info.service.InformService#selectGreeting(nlib.restful.service.DataApiReqVO)
*/ */
public DataApiResVO selectGreeting(DataApiReqVO reqVO) { public HashMap<String, String> selectGreeting(String councilCd) throws Exception {
DataApiResVO resVO= informDAO.selectGreeting(reqVO); return selectInfoContent(councilCd, "GREETING");
return resVO;
} }
/* /*
@ -84,10 +103,38 @@ public class InformServiceImpl implements InformService
* (non-Javadoc) * (non-Javadoc)
* @see nlib.info.service.InformService#selectNCultureOperationInfo(nlib.restful.service.DataApiReqVO) * @see nlib.info.service.InformService#selectNCultureOperationInfo(nlib.restful.service.DataApiReqVO)
*/ */
public DataApiResVO selectNCultureOperationInfo(DataApiReqVO reqVO) { public HashMap<String, HashMap<String, String>> selectNCultureOperationInfo(String councilCd) throws Exception {
DataApiResVO resVO= informDAO.selectNCultureOperationInfo(reqVO); HashMap<String, HashMap<String, String>> operationInfo = new HashMap<String, HashMap<String, String>>();
return resVO;
HashMap<String, String> envValues = informDAO.selectOperationEnv(councilCd);
//-----------------------------
// 전체 문화원 공통 사항
//-----------------------------
HashMap<String, String> operation1 = selectInfoContent(NlibProperty.getString("nlib.council.cd"), "OPERATION1");
if(envValues != null && operation1 != null && operation1.get("CONTENT") != null) {
String content = operation1.get("CONTENT");
for(String key : envValues.keySet()) {
content = content.replaceAll("%" + key + "%", StringUtil.getString(envValues.get(key), ""));
}
operation1.put("CONTENT", content);
}
HashMap<String, String> operation2 = selectInfoContent(NlibProperty.getString("nlib.council.cd"), "OPERATION2");
HashMap<String, String> operation3 = selectInfoContent(NlibProperty.getString("nlib.council.cd"), "OPERATION3");
//-----------------------------
// 해당 문화원 특정 사항
//-----------------------------
HashMap<String, String> operation4 = selectInfoContent(councilCd, "OPERATION4");
operationInfo.put("OPERATION1", operation1);
operationInfo.put("OPERATION2", operation2);
operationInfo.put("OPERATION3", operation3);
operationInfo.put("OPERATION4", operation4);
return operationInfo;
} }
/* /*
@ -96,11 +143,22 @@ public class InformServiceImpl implements InformService
* (non-Javadoc) * (non-Javadoc)
* @see nlib.info.service.InformService#selectNCultureLocationInfo(nlib.restful.service.DataApiReqVO) * @see nlib.info.service.InformService#selectNCultureLocationInfo(nlib.restful.service.DataApiReqVO)
*/ */
public DataApiResVO selectNCultureLocationInfo(DataApiReqVO reqVO) { public HashMap<String, String> selectNCultureLocationInfo(String councilCd) throws Exception {
DataApiResVO resVO= informDAO.selectNCultureLocationInfo(reqVO); HashMap<String, String> locInfo = selectInfoContent(councilCd, "LOCATION");
return resVO; HashMap<String, String> addrInfo = informDAO.selectNCultureAddr(councilCd);
if(addrInfo != null) {
locInfo.put("ZIPCODE", addrInfo.get(""));
locInfo.put("ADDR1", addrInfo.get("ADDR1"));
locInfo.put("ADDR2", addrInfo.get("ADDR2"));
locInfo.put("TEL_NO", addrInfo.get("TEL_NO"));
locInfo.put("FAX_NO", addrInfo.get("FAX_NO"));
locInfo.put("LATITUDE", addrInfo.get("LATITUDE"));
locInfo.put("LONGITUDE", addrInfo.get("LONGITUDE"));
}
return locInfo;
} }
} }

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import nlib.cmm.NlibCommonController; import nlib.cmm.NlibCommonController;
import nlib.cmm.service.NlibProperty;
import nlib.info.service.InformService; import nlib.info.service.InformService;
import nlib.info.service.impl.InformServiceImpl; import nlib.info.service.impl.InformServiceImpl;
import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiReqVO;
@ -61,21 +62,12 @@ public class InformController extends NlibCommonController {
* @return * @return
*/ */
@RequestMapping("/inform/selectTermsInfo.do") @RequestMapping("/inform/selectTermsInfo.do")
public String selectTermsInfo(HttpServletRequest req, Authentication authentication, ModelMap model) { public String selectTermsInfo(HttpServletRequest request, ModelMap model) throws Exception {
log.debug("selectTermsInfo : init"); HashMap<String, String> ret = informService.selectTermsInfo(NlibProperty.getString("nlib.council.cd"));
//------------------------------- model.addAttribute("informTitle", ret.get("TITLE"));
// REQ VO 구성 model.addAttribute("informContent", ret.get("CONTENT"));
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
// 요청
DataApiResVO resVO = informService.selectTermsInfo(reqVO);
// 반환 정보
model.addAttribute("informContent", resVO.getInfoItem("informContent"));
return "nlib/inform/selectTermsInfo"; return "nlib/inform/selectTermsInfo";
} }
@ -89,21 +81,12 @@ public class InformController extends NlibCommonController {
* @return * @return
*/ */
@RequestMapping("/inform/selectPrivacyInfo.do") @RequestMapping("/inform/selectPrivacyInfo.do")
public String selectPrivacyInfo(HttpServletRequest req, Authentication authentication, ModelMap model) { public String selectPrivacyInfo(HttpServletRequest request, Authentication authentication, ModelMap model) throws Exception {
log.debug("selectPrivacyInfo : init"); HashMap<String, String> ret = informService.selectPrivacyInfo(NlibProperty.getString("nlib.council.cd"));
//------------------------------- model.addAttribute("informTitle", ret.get("TITLE"));
// REQ VO 구성 model.addAttribute("informContent", ret.get("CONTENT"));
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
// 요청
DataApiResVO resVO = informService.selectPrivacyInfo(reqVO);
// 반환 정보
model.addAttribute("informContent", resVO.getInfoItem("informContent"));
return "nlib/inform/selectPrivacyInfo"; return "nlib/inform/selectPrivacyInfo";
} }
@ -117,22 +100,14 @@ public class InformController extends NlibCommonController {
* @return * @return
*/ */
@RequestMapping("/inform/selectGreeting.do") @RequestMapping("/inform/selectGreeting.do")
public String selectGreeting(HttpServletRequest req, Authentication authentication, ModelMap model) { public String selectGreeting(HttpServletRequest request, Authentication authentication, ModelMap model) throws Exception {
log.debug("selectGreeting : init");
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
// 요청 HashMap<String, String> ret = informService.selectGreeting(getCurCouncilCd(request));
DataApiResVO resVO = informService.selectGreeting(reqVO);
// 반환 정보 model.addAttribute("informTitle", ret.get("TITLE"));
model.addAttribute("deptName", resVO.getInfoItem("deptName")); model.addAttribute("informContent", ret.get("CONTENT"));
model.addAttribute("logoUrl", resVO.getInfoItem("logoUrl")); model.addAttribute("councilNm", getCurCouncilNm(request));
model.addAttribute("informContent", resVO.getInfoItem("informContent"));
return "nlib/inform/selectGreeting"; return "nlib/inform/selectGreeting";
} }
@ -146,24 +121,20 @@ public class InformController extends NlibCommonController {
* @return * @return
*/ */
@RequestMapping("/inform/selectNCultureOperationInfo.do") @RequestMapping("/inform/selectNCultureOperationInfo.do")
public String selectNCultureOperationInfo(HttpServletRequest req, Authentication authentication, ModelMap model) { public String selectNCultureOperationInfo(HttpServletRequest request, Authentication authentication, ModelMap model) throws Exception {
log.debug("selectNCultureOperationInfo : init");
//------------------------------- HashMap<String, HashMap<String, String>> ret = informService.selectNCultureOperationInfo(getCurCouncilCd(request));
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
// 요청 model.addAttribute("informTitle", ret.get("TITLE"));
DataApiResVO resVO = informService.selectNCultureOperationInfo(reqVO); if(ret.get("OPERATION1") != null) model.addAttribute("informContent1", ((HashMap<String, String>)ret.get("OPERATION1")).get("CONTENT"));
if(ret.get("OPERATION2") != null) model.addAttribute("informContent2", ((HashMap<String, String>)ret.get("OPERATION2")).get("CONTENT"));
// 반환 정보 if(ret.get("OPERATION3") != null) model.addAttribute("informContent3", ((HashMap<String, String>)ret.get("OPERATION3")).get("CONTENT"));
model.addAttribute("informContent", resVO.getInfoItem("informContent")); if(ret.get("OPERATION4") != null) model.addAttribute("informContent4", ((HashMap<String, String>)ret.get("OPERATION4")).get("CONTENT"));
return "nlib/inform/selectNCultureOperationInfo"; return "nlib/inform/selectNCultureOperationInfo";
} }
/** /**
* 찾아오는길 조회한다. * 찾아오는길 조회한다.
* *
@ -173,25 +144,20 @@ public class InformController extends NlibCommonController {
* @return * @return
*/ */
@RequestMapping("/inform/selectNCultureLocationInfo.do") @RequestMapping("/inform/selectNCultureLocationInfo.do")
public String selectNCultureLocationInfo(HttpServletRequest req, Authentication authentication, ModelMap model) { public String selectNCultureLocationInfo(HttpServletRequest request, Authentication authentication, ModelMap model) throws Exception {
log.debug("selectNCultureLocationInfo : init");
//------------------------------- HashMap<String, String> ret = informService.selectNCultureLocationInfo(getCurCouncilCd(request));
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
// 요청 model.addAttribute("informTitle", ret.get("TITLE"));
DataApiResVO resVO = informService.selectNCultureLocationInfo(reqVO); model.addAttribute("informContent", ret.get("CONTENT"));
// 반환 정보 model.addAttribute("zipCode", ret.get("ZIPCODE"));
model.addAttribute("informContent", resVO.getInfoItem("informContent")); model.addAttribute("addr1", ret.get("ADDR1"));
model.addAttribute("zipcode", resVO.getInfoItem("zipcode")); model.addAttribute("addr2", ret.get("ADDR2"));
model.addAttribute("addr1", resVO.getInfoItem("addr1")); model.addAttribute("telNo", ret.get("TEL_NO"));
model.addAttribute("addr2", resVO.getInfoItem("addr2")); model.addAttribute("faxNo", ret.get("FAX_NO"));
model.addAttribute("tel", resVO.getInfoItem("tel")); model.addAttribute("latitude", ret.get("LATITUDE"));
model.addAttribute("fax", resVO.getInfoItem("fax")); model.addAttribute("longitude", ret.get("LONGITUDE"));
return "nlib/inform/selectNCultureLocationInfo"; return "nlib/inform/selectNCultureLocationInfo";
} }
@ -205,25 +171,12 @@ public class InformController extends NlibCommonController {
* @return * @return
*/ */
@RequestMapping("/inform/selectNCultureLocationInfoPopup.do") @RequestMapping("/inform/selectNCultureLocationInfoPopup.do")
public String selectNCultureLocationInfoPopup(HttpServletRequest req, Authentication authentication, ModelMap model) { public String selectNCultureLocationInfoPopup(HttpServletRequest request, Authentication authentication, ModelMap model) throws Exception {
log.debug("selectNCultureLocationInfo : init");
//------------------------------- HashMap<String, String> ret = informService.selectNCultureLocationInfo(getCurCouncilCd(request));
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
// 요청 model.addAttribute("informTitle", ret.get("TITLE"));
DataApiResVO resVO = informService.selectNCultureLocationInfo(reqVO); model.addAttribute("informContent", ret.get("CONTENT"));
// 반환 정보
model.addAttribute("informContent", resVO.getInfoItem("informContent"));
model.addAttribute("zipcode", resVO.getInfoItem("zipcode"));
model.addAttribute("addr1", resVO.getInfoItem("addr1"));
model.addAttribute("addr2", resVO.getInfoItem("addr2"));
model.addAttribute("tel", resVO.getInfoItem("tel"));
model.addAttribute("fax", resVO.getInfoItem("fax"));
return "nlib/inform/selectNCultureLocationInfoPopup"; return "nlib/inform/selectNCultureLocationInfoPopup";
} }

View File

@ -62,6 +62,11 @@ import nlib.util.StringUtil;
@Controller @Controller
public class LoginController { public class LoginController {
public LoginController() {
super();
log.debug("==========================> LoginController Create : !!!! " + (new java.util.Date()));
}
private static final Logger log = LoggerFactory.getLogger(LoginController.class); private static final Logger log = LoggerFactory.getLogger(LoginController.class);
//------------------------------------------- //-------------------------------------------
@ -107,6 +112,13 @@ public class LoginController {
String councilReturnUrl = councilHomeUrl + (StringUtil.isEmpty(returnUrl) ? "/" : returnUrl); String councilReturnUrl = councilHomeUrl + (StringUtil.isEmpty(returnUrl) ? "/" : returnUrl);
String councilDnsHost = StringUtil.getHostName(url); String councilDnsHost = StringUtil.getHostName(url);
RequestCache cache = new HttpSessionRequestCache();
SavedRequest savedRequest = cache.getRequest(req, res);
if (savedRequest != null) {
councilReturnUrl = savedRequest.getRedirectUrl();
log.debug("loginCouncil > HttpSessionRequestCache에서 획득 councilReturnUrl = " + councilReturnUrl);
}
// returnUrl 정보 설정 // returnUrl 정보 설정
// if(StringUtil.isEmpty(returnUrl)) { // if(StringUtil.isEmpty(returnUrl)) {
// RequestCache cache = new HttpSessionRequestCache(); // RequestCache cache = new HttpSessionRequestCache();

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?><!--Converted at: Wed May 11 15:49:38 KST 2016-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="nlib.info.service.impl.InformDAO">
<select id="selectInfoContent" parameterType="String" resultType="HashMap">
SELECT
CONTENT_ID
, CONTENT_TYPE
, MNG_COUNCIL_CD
, TITLE
, CONTENT
, BD_ATTACH_FILE_ATTACH_FILE_ID
FROM BD_NLIB_CONTENT_PAGE A
WHERE A.CONTENT_TYPE = SUBSTRING(#{conDivAndCounCd}, 1, INSTR(#{conDivAndCounCd}, '@') - 1)
AND A.MNG_COUNCIL_CD = SUBSTRING(#{conDivAndCounCd}, INSTR(#{conDivAndCounCd}, '@') + 1)
</select>
<select id="selectOperationEnv" parameterType="String" resultType="HashMap">
<!-- Param : councilCd -->
SELECT
MAX(CASE WHEN GUBUN = 'MAX_LEND_DAYS' THEN ENV_VAL ELSE NULL END) AS MAX_LEND_DAYS
, MAX(CASE WHEN GUBUN = 'MAX_LEND_COUNT' THEN ENV_VAL ELSE NULL END) AS MAX_LEND_COUNT
FROM(
SELECT 'MAX_LEND_DAYS' AS GUBUN, ENV_VAL
FROM SM_ENV
WHERE ENV_ID = 'MAX_LEND_DAYS'
UNION ALL
SELECT 'MAX_LEND_COUNT' AS GUBUN, ENV_VAL
FROM SM_ENV
WHERE ENV_ID = 'MAX_LEND_COUNT'
) A
</select>
<select id="selectNCultureAddr" parameterType="String" resultType="HashMap">
SELECT
'서울 마포구 삼개로 16' AS ADDR1
, '근신빌딩' AS ADDR2
, '04173' AS ZIPCODE
, '02-1111-2222' AS TEL_NO
, '02-1111-3333' AS FAX_NO
, '37.5392866' AS LATITUDE
, '126.9472778' AS LONGITUDE
FROM SM_DEPT A
WHERE DEPT_SEQ = #{councilCd}
</select>
</mapper>

View File

@ -28,6 +28,15 @@ login.back.url = /login/loginForm.do
# \uc9c0\ubc29\ubb38\ud654\uc6d0\uc5d0\uc11c \uc811\uc18d\uc2dc \ub9ac\ub2e4\uc774\ub809\ud2b8\ub420 URL \uc815\ubcf4 # \uc9c0\ubc29\ubb38\ud654\uc6d0\uc5d0\uc11c \uc811\uc18d\uc2dc \ub9ac\ub2e4\uc774\ub809\ud2b8\ub420 URL \uc815\ubcf4
nculture.login.redirect.url = http://nlib.nculture.org/nlib/login/loginForm.do nculture.login.redirect.url = http://nlib.nculture.org/nlib/login/loginForm.do
#----------------------------------------
# NLIB \uc9c0\ubc29\ubb38\ud654\uc6d0\uc815\ubcf4
#----------------------------------------
# \uacf5\ud1b5 \uc9c0\ubc29\ubb38\ud654\uc6d0\uc815\ubcf4 \ucf54\ub4dc
nlib.council.cd = KCCF
nlib.council.nm = \uc18c\uc7a5\uc790\ub8cc\uad00
nlib.council.dns.host = nlib
#---------------------------------------- #----------------------------------------
# DataAPI \uc811\uc18d\uc815\ubcf4 # DataAPI \uc811\uc18d\uc815\ubcf4
#---------------------------------------- #----------------------------------------

View File

@ -28,6 +28,7 @@
<property name="interceptors"> <property name="interceptors">
<list> <list>
<ref bean="localeChangeInterceptor" /> <ref bean="localeChangeInterceptor" />
<ref bean="NlibInterceptor" />
</list> </list>
</property> </property>
</bean> </bean>
@ -38,6 +39,9 @@
<property name="paramName" value="language" /> <property name="paramName" value="language" />
</bean> </bean>
<!-- 접속한 지방문화원 정보 세션 설정 인터셉터 (2021.08.31 KKN) -->
<bean id="NlibInterceptor" class="nlib.cmm.interceptor.NlibInterceptor" />
<!-- <!--
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmmn/egovError"/> <property name="defaultErrorView" value="cmmn/egovError"/>

View File

@ -40,13 +40,17 @@
</head> </head>
<body> <body>
<h1>${pageTitle } - ${deptName }</h1> <h1>${pageTitle }</h1>
<img src="${logoUrl }" /> <img src="${logoUrl }" />
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;"> <div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent } ${informContent }
</div> </div>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
<h3>${informTitle }</h3>
<script type="text/javaScript" language="javascript"> <script type="text/javaScript" language="javascript">
window.onload = function() { window.onload = function() {

View File

@ -26,8 +26,8 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> <%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
@ -44,28 +44,73 @@
<a href="javascript:void(0);" onclick="openPopup('${pageContext.request.contextPath}/inform/selectNCultureLocationInfoPopup.do','_SPPOP',700, 600)">샘플팝업</a> <a href="javascript:void(0);" onclick="openPopup('${pageContext.request.contextPath}/inform/selectNCultureLocationInfoPopup.do','_SPPOP',700, 600)">샘플팝업</a>
&nbsp;<br/>
주소 : ${zipcode } ${addr1 } ${addr2 } <br />
전화번호 : ${tel } <br />
팩스번호 : ${fax } <br />
&nbsp;<br/>
<!-- 카카오맵 지도 : 이미지 방식 -->
<div style="font: 12px AppleSDGothicNeo-Regular, dotum, sans-serif; letter-spacing: -1px; width: 640px; height: 392px; color: rgb(51, 51, 51); position: relative;">
<div style="height: 360px;">
<a href="https://map.kakao.com/?urlX=488368&amp;urlY=1122104&amp;itemId=8207584&amp;q=%EA%B7%BC%EC%8B%A0%EB%B9%8C%EB%94%A9%20%EB%B3%B8%EA%B4%80&amp;srcid=8207584&amp;map_type=TYPE_MAP&amp;from=roughmap" target="_blank"><img class="map" src="http://t1.daumcdn.net/roughmap/imgmap/cd2c856fde36adb381e3ad251ec754b834e3b8c31384e2850a98e16c16eac72d" width="638" height="358" style="border: 1px solid rgb(204, 204, 204);"></a>
</div>
</div>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;"> <div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent } ${informContent }
</div> </div>
<script type="text/javaScript" language="javascript"> <br>
${zipCode }<br>
${addr1 }<br>
${addr2 }<br>
${telNo }<br>
${faxNo }<br>
</script> <br>
<section class="list-box">
<div class="title">
<h2>네이버 맵</h2>
</div>
<div id="map" style="width:80%;height:300px;"></div>
</section><!-- //위치정보 -->
<script src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=532wx3i985"></script>
<script>
function initMap() {
var lon = "${longitude}";
var lat = "${latitude}";
var map = new naver.maps.Map(
document.getElementById('map'),
{
useStyleMap: true, // 신규 맵 타일(StyleMap)으로 전환 (2019.12.20)
mapDataControl:false,
draggable: true,
mapTypeControl: false,
mapTypeControlOptions: {
style: naver.maps.MapTypeControlStyle.BUTTON,
position: naver.maps.Position.TOP_LEFT
},
mapTypeId: naver.maps.MapTypeId.NORMAL,
zoomControl: false,
zoomControlOptions: {
style: naver.maps.ZoomControlStyle.SMALL,
position: naver.maps.Position.TOP_LEFT
},
zoom: 15,
minZoom: 5,
maxZoom: 20,
scaleControl: true,
scaleControlOptions: {
position: naver.maps.Position.LEFT_BOTTOM
},
logoControl: false,
logoControlOptions: {
position: naver.maps.Position.TOP_LEFT
},
mapDataControl: false,
mapDataControlOptions: {
position: naver.maps.Position.BOTTOM_LEFT
},
keyboardShortcuts : false,
}
);
var marker = new naver.maps.Marker({
position: new naver.maps.Point(lon, lat),
map: map
});
map.setCenter(new naver.maps.Point(lon,lat));
}
initMap();
</script>
&nbsp;<br/> &nbsp;<br/>

View File

@ -42,8 +42,28 @@
<h1>${pageTitle }</h1> <h1>${pageTitle }</h1>
<br>
대출안내
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;"> <div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent } ${informContent1 }
</div>
<br>
반납안내
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent2 }
</div>
<br>
열람안내
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent3 }
</div>
<br>
온라인열람서비스
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent4 }
</div> </div>

View File

@ -40,7 +40,7 @@
</head> </head>
<body> <body>
<h1>${pageTitle }</h1> <h1>${informTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;"> <div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent } ${informContent }

View File

@ -40,7 +40,7 @@
</head> </head>
<body> <body>
<h1>${pageTitle }</h1> <h1>${informTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;"> <div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent } ${informContent }

View File

@ -6,6 +6,9 @@
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
<!-- HOME --> <!-- HOME -->
<%
%>
<sec:authorize access="isAuthenticated()"> <sec:authorize access="isAuthenticated()">
<dir id="title"><a href="javascript:void(0)" onclick="javascript:location.href='<%=session.getAttribute("councilHomeUrl") %>';">온라인자료대출관리 (<%=session.getAttribute("councilHomeUrl") %>)</a></dir> <dir id="title"><a href="javascript:void(0)" onclick="javascript:location.href='<%=session.getAttribute("councilHomeUrl") %>';">온라인자료대출관리 (<%=session.getAttribute("councilHomeUrl") %>)</a></dir>
</sec:authorize> </sec:authorize>