package kcc.web;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.stream.Collectors;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.annotation.Resource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.CmmUtil;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovCmmUseService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.util.WebUtil;
import kcc.com.uss.ion.bnr.service.EgovBannerService;
import kcc.com.uss.ion.cnf.service.MetaTagManageService;
import kcc.com.uss.ion.cyb.service.CyberAlertManageService;
import kcc.com.uss.ion.fms.service.FmsFileVO;
import kcc.com.uss.ion.pwm.service.EgovPopupManageService;
import kcc.com.uss.ion.pwm.service.MainzoneVO;
import kcc.com.uss.ion.pwm.service.PopupManageVO;
import kcc.com.uss.ion.pwm.service.PopupzoneVO;
import kcc.com.utl.fcc.service.EgovStringUtil;
import kcc.let.cop.bbs.service.BoardMasterVO;
import kcc.let.cop.bbs.service.BoardVO;
import kcc.let.cop.bbs.service.EgovBBSAttributeManageService;
import kcc.let.cop.bbs.service.EgovBBSManageService;
import kcc.let.sts.cst.service.EgovConectStatsService;
import kcc.let.sym.ccm.cde.service.EgovCcmCmmnDetailCodeManageService;
import kcc.let.sym.log.clg.service.EgovLoginLogService;
import kcc.let.sym.log.clg.service.LoginLog;
import kcc.let.sym.mnu.mcm.service.EgovMenuCreateManageService;
import kcc.let.sym.mnu.mpm.service.EgovMenuManageService;
import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO;
import kcc.let.sym.mnu.mpm.service.MenuManageVO;
import kcc.let.sym.prm.service.EgovProgrmManageService;
import kcc.let.sym.prm.service.ProgrmManageVO;
import kcc.let.sym.site.service.EgovSiteManagerService;
import kcc.let.sym.site.service.SiteManagerVO;
/**
* 템플릿 메인 페이지 컨트롤러 클래스(Sample 소스)
*
* @author 실행환경 개발팀 JJY
* @since 2011.08.31
* @version 1.0
* @see
*
*
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2011.08.31 JJY 최초 생성
*
*
*/
@Controller
@SessionAttributes(types = ComDefaultVO.class)
public class MainController {
/** EgovProgrmManageService */
@Resource(name = "progrmManageService")
private EgovProgrmManageService progrmManageService;
/** EgovPropertyService */
@Resource(name = "propertiesService")
protected EgovPropertyService propertiesService;
/**
* EgovBBSManageService
*/
@Resource(name = "EgovBBSManageService")
private EgovBBSManageService bbsMngService;
/** EgovMenuManageService */
@Resource(name = "meunManageService")
private EgovMenuManageService menuManageService;
@Resource(name = "egovBannerService")
private EgovBannerService egovBannerService;
/** EgovPopupManageService */
@Resource(name = "egovPopupManageService")
private EgovPopupManageService egovPopupManageService;
/** cyberAlertManageService */
@Resource(name = "cyberAlertManageService")
private CyberAlertManageService cyberAlertManageService;
@Resource(name = "EgovLoginLogService")
private EgovLoginLogService loginLogService;
@Resource(name = "conectStatsService")
private EgovConectStatsService conectStatsService;
@Resource(name = "databaseSecurityMetadataSource")
EgovReloadableFilterInvocationSecurityMetadataSource databaseSecurityMetadataSource;
/** cmmUseService */
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
/** EgovMenuManageService */
@Resource(name = "meunCreateManageService")
private EgovMenuCreateManageService menuCreateManageService;
@Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService;
@Resource(name = "EgovBBSAttributeManageService")
private EgovBBSAttributeManageService bbsAttrbService;
/** metaTagManageService 메타태그 */
@Resource(name = "metaTagManageService")
private MetaTagManageService metaTagManageService;
@Resource(name = "EgovFileMngUtil")
private EgovFileMngUtil fileUtil;
@Value("#{globalSettings['Globals.email.host']}")
private String Globals_email_host;
@Value("#{globalSettings['Globals.email.port']}")
private String Globals_email_port;
@Value("#{globalSettings['Globals.email.fromUser']}")
private String Globals_email_fromUser;
@Value("#{globalSettings['Globals.email.fromEmail']}")
private String Globals_email_fromEmail;
@Value("#{globalSettings['Globals.email.fromEmail.password']}")
private String Globals_email_fromEmail_password;
@Value("#{globalSettings['Globals.email.toEmail']}")
private String Globals_email_toEmail;
@Value("#{globalSettings['Globals.email.toEmail.BCC']}")
private String Globals_email_toEmail_BCC;
@Resource(name = "CmmnDetailCodeManageService")
private EgovCcmCmmnDetailCodeManageService cmmnDetailCodeManageService;
@RequestMapping(value = "/web/main/mainPage.do")
public String siteMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception {
/** EgovPropertyService.sample */
MainzoneVO mainzoneVO = new MainzoneVO();
mainzoneVO.setPageUnit(propertiesService.getInt("pageUnit"));
mainzoneVO.setPageSize(propertiesService.getInt("pageSize"));
CmmUtil.getPageing(mainzoneVO, 10);
/** pageing */
mainzoneVO.setUseYn("Y"); // 사용하는것만
mainzoneVO.setDeviceType("P"); // PC
List mainzoneList = (List)egovPopupManageService.selectMainzoneList(mainzoneVO); // 상단메인 이미지
if(mainzoneList.size() > 0) {
mainzoneList.sort(Comparator.comparing((EgovMap map) -> Integer.valueOf(((BigDecimal) map.get("sort")).intValue())));
}
model.addAttribute("mainzoneImg", mainzoneList.stream().findFirst().orElse(null)); // PC
/** 팝업 알림창괸리 */
PopupManageVO popupManageVO = new PopupManageVO();
popupManageVO.setRecordCountPerPage(10); // 10개만
popupManageVO.setNtceAt("Y"); // 사용만
popupManageVO.setMainPageFlag("Y"); // 메인화면의 용도(시작일 종료일 사이 조회)
List> popupList = egovPopupManageService.selectPopupMainList(popupManageVO);
model.addAttribute("popupList", popupList);
/** 알림창괸리 */
PopupzoneVO popupzoneVo = new PopupzoneVO();
popupzoneVo.setFirstIndex(0);
popupzoneVo.setSeCd("02"); // 좌측팝업
popupzoneVo.setUseYn("Y");
popupzoneVo.setSearchSortCnd("MB.sort");
popupzoneVo.setSearchSortOrd("ASC");
List popupzoneList = (List)egovPopupManageService.selectPopupzoneList(popupzoneVo);
// model.addAttribute("popupzoneList", popupzoneList);
if(popupzoneList.size() > 0) {
popupzoneList.sort(Comparator.comparing((EgovMap map) -> Integer.valueOf(((BigDecimal) map.get("sort")).intValue())));
}
model.addAttribute("popupzoneImg", popupzoneList.stream().findFirst().orElse(null)); // PC
return "web/main/mainPage";
}
/**
* 사용자 상단 매뉴
*/
@RequestMapping(value = "/web/com/webCommonHeader.do")
public String siteWebCommonHeader(@RequestParam Map commandMap,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model, HttpServletRequest request,
HttpSession session) throws Exception {
// 로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
// 권한별 메뉴표시
if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") {
menuManageVO.setAuthorCode(userAuthority);
} else if (userAuthority.equals("ROLE_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
} else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
menuDepth2ChildCnt(menuResultList);
model.addAttribute("menuResultList", menuResultList);
return "web/com/webCommonHeader";
}
/**
* 사용자 footer
*/
@RequestMapping(value = "/web/com/webCommonFooter.do")
public String siteWebCommonFooter(@RequestParam Map commandMap, HttpServletRequest request,
ModelMap model) throws Exception {
LoginLog loginLog = new LoginLog();
if (request.getRequestURI().contains("/web/main/mainPage.do")) { // 사용자 메인
loginLog.setProgrmFileNm("mainPage");
loginLog.setMenuNm("사용자메인");
} else if (request.getRequestURI().contains("/web/survey/surveyList")) { // 설문조사
loginLog.setProgrmFileNm("surveyList");
loginLog.setMenuNm("설문조사");
} else if (request.getRequestURI().contains("/web/content.do")) { // 컨텐츠
if (commandMap.get("proFn") != null) {
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("proFn");
tempMenuManageVO.setAuthorCode((String) commandMap.get("proFn"));
MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("proFn"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
}
} else if (commandMap.get("bbsId") != null) { // 나머지 모든 게시판
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId"));
tempMenuManageVO.setSearchCondition("bbsId");
MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("bbsId"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
} else {
loginLog.setProgrmFileNm(null);
}
// 사용자 방문수 insert
{
// if(null == loginLogService.selectLoginUserLog(loginLog)){ //오늘날짜의 IP조회
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyyMMdd", Locale.KOREA);
Date currentTime = new Date();
String mTime = mSimpleDateFormat.format(currentTime);
HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
String ip = req.getHeader("X-FORWARDED-FOR");
if (ip == null) {
ip = req.getRemoteAddr();
}
loginLog.setLoginIp(ip);
loginLog.setCreatDt(mTime);
loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O
loginLog.setErrOccrrAt("N");
loginLog.setErrorCode("");
loginLog.setUserAt("U");
Object obj = EgovUserDetailsHelper.getAuthenticatedUser();
if (obj != null && !"anonymousUser".equals(obj)) {
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginLog.setLoginId(loginVO.getId());
} else {
loginLog.setLoginId("");
}
if (isMobile(request)) {
loginLog.setDeviceType("M");
} else {
loginLog.setDeviceType("P");
}
if (null != request.getQueryString() && !"".equals(request.getQueryString())) {
loginLog.setUrl(request.getRequestURI() + "?" + request.getQueryString());
} else {
loginLog.setUrl(request.getRequestURI());
}
// loginLogService.logInsertLoginLog(loginLog);
// loginLogService.logInsertLoginLogNewStep1(loginLog);
// }
// 오늘 접속 / 최종접속
// LoginLog footerLog = new LoginLog();
// footerLog = loginLogService.selectLogCnt(footerLog);
// model.addAttribute("footerLog", footerLog);
}
// model.addAttribute("loginLog", loginLog);
return "web/com/webCommonFooter";
}
/**
* 사용자 만족도 관리/매뉴 담당자 가져오기
*/
@RequestMapping(value = "/web/com/webSatisCommonFooter.do")
public String siteWebSatisCommonFooter(@RequestParam Map commandMap, HttpServletRequest request,
ModelMap model, Model model2) throws Exception {
MenuManageVO tempMenuManageVO = new MenuManageVO();
String url = request.getRequestURI();
String AuthorCode = "ROLE_ANONYMOUS"; // 해당 푸터는 데코레이트에서 */web/*만 타므로 무조건 사용자 메뉴이다.
if (request.getRequestURI().contains("/web/content.do")) {
tempMenuManageVO.setSearchCondition("proFn");
tempMenuManageVO.setAuthorCode(AuthorCode);
tempMenuManageVO.setSearchKeyword((String) commandMap.get("proFn"));
url += "?proFn=" + commandMap.get("proFn");
} else if (commandMap.get("bbsId") != null) {
tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId"));
tempMenuManageVO.setSearchCondition("bbsId");
tempMenuManageVO.setAuthorCode(AuthorCode);
url += "?" + commandMap.get("bbsId");
} else {
String tempUrl = request.getRequestURI();
ComDefaultVO searchVO = new ComDefaultVO();
searchVO.setSearchKeyword(tempUrl);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchCondition("Y");
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
}
MenuManageVO resultVO = menuManageService.selectMenuManage_Satis(tempMenuManageVO);
model.addAttribute("resultVO", resultVO);
model.addAttribute("url", url);
return "web/com/webSatisCommonFooter";
}
/**
* 사용자 footer
*/
@RequestMapping(value = "/{siteId}/web/com/webThemeCommonFooter.do")
public String webThemeCommonFooter(@PathVariable("siteId") String siteId,
@RequestParam Map commandMap, HttpServletRequest request, ModelMap model) throws Exception {
LoginLog loginLog = new LoginLog();
if (request.getRequestURI().contains("/web/main/mainPage.do")) { // 사용자 메인
loginLog.setProgrmFileNm("mainPage");
loginLog.setMenuNm("사용자메인");
} else if (request.getRequestURI().contains("/web/survey/surveyList")) { // 설문조사
loginLog.setProgrmFileNm("surveyList");
loginLog.setMenuNm("설문조사");
} else if (request.getRequestURI().contains("/web/content.do")) { // 컨텐츠
if (commandMap.get("proFn") != null) {
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("proFn");
tempMenuManageVO.setAuthorCode((String) commandMap.get("proFn"));
MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("proFn"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
}
} else if (commandMap.get("bbsId") != null) { // 나머지 모든 게시판
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId"));
tempMenuManageVO.setSearchCondition("bbsId");
/*
* ComDefaultVO searchVO = new ComDefaultVO();
* searchVO.setSearchCondition("bbsId");
* searchVO.setSearchKeyword((String)commandMap.get("bbsId"));
*/ MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("bbsId"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
} else {
loginLog.setProgrmFileNm(null);
}
// 사용자 방문수 insert
{
if (loginLog.getProgrmFileNm() != null) { // 미리보기 경우가 아닌경우
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyyMMdd", Locale.KOREA);
Date currentTime = new Date();
String mTime = mSimpleDateFormat.format(currentTime);
HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
String ip = req.getHeader("X-FORWARDED-FOR");
if (ip == null) {
ip = req.getRemoteAddr();
}
loginLog.setLoginIp(ip);
loginLog.setCreatDt(mTime);
loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O
loginLog.setErrOccrrAt("N");
loginLog.setErrorCode("");
loginLog.setUserAt("U");
loginLog.setLoginId(""); // connnect_id
if (isMobile(request)) {
loginLog.setDeviceType("M");
} else {
loginLog.setDeviceType("P");
}
loginLogService.logInsertLoginLog(loginLog);
}
}
model.addAttribute("loginLog", loginLog);
model.addAttribute("siteId", siteId);
String siteFolder = "site/" + siteId;
if (siteId.equals("linc") || siteId.equals("klc")) {
return "web/" + siteFolder + "/com/webCommonFooter";
} else {
SiteManagerVO siteManagerVO = new SiteManagerVO();
siteManagerVO.setSiteId(siteId);
setSiteinfo(siteManagerVO, model, request);
// return
// "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/com/webCommonFooter";
return "web/site/" + siteId + "/" + siteManagerVO.getIsMobile() + "/com/webCommonFooter";
}
}
/* 모바일접속 유무 */
private boolean isMobile(HttpServletRequest request) {
String userAgent = request.getHeader("user-agent");
boolean mobile1 = userAgent.matches(
".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*");
boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*");
if (mobile1 || mobile2) {
return true;
}
return false;
}
/* 최초 사이트 체크와 동시에 session 설정, 점검중 페이지 적용 */
@RequestMapping(value = "/com/firstSiteCheck.do")
public String firstSiteCheck(@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO,
HttpServletRequest request, @RequestParam Map commandMap, ModelMap model) throws Exception {
// 로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
// 권한별 메뉴표시
if (!userAuthority.equals("ROLE_ADMIN")
/* && !userAuthority.equals("ROLE_ADR_ADMIN") */
&& userAuthority != "") {
menuManageVO.setAuthorCode(userAuthority);
} else if (userAuthority.equals("ROLE_ADMIN") || userAuthority.equals("ROLE_ADR_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
} else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
// 대국민, 조정위원일 경우 원뎁스 메뉴에 대시보드 링크를 걸기위해 권한 넘겨줌
model.addAttribute("auth", menuManageVO.getAuthorCode());
menuManageVO.setMenuUserType(menuManageVO.getMenuUserType());
List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
List menuTwoExist = new ArrayList<>(); // 2뎁스의 하위 매뉴가 있는것 조회
HashSet underMenuEmpty = new HashSet(); // 2뎁스의 하위매뉴 없는것 조회
for (MenuManageJTreeVO menuManage : menuResultList) {
if (menuManage.getDepths().equals("3")) {
menuTwoExist.add(menuManage.getUpperMenuId());
}
if (menuManage.getDepths().equals("2")) {
underMenuEmpty.add(menuManage.getMenuNo());
}
}
HashSet underMenuExist = new HashSet(menuTwoExist); // 하위매뉴가 있는것
underMenuEmpty.removeAll(underMenuExist); // 하위매뉴가 없는것
MenuManageJTreeVO menuManageTopVO = new MenuManageJTreeVO();
menuManageTopVO.setUpperMenuId("#");
menuManageTopVO.setMenuNo("0");
model.addAttribute("menuResultList", menuResultList);
model.addAttribute("underMenuExist", underMenuExist);
model.addAttribute("underMenuEmpty", underMenuEmpty);
// 자신의 위치 정보
List menuCurrentResultList = new ArrayList(); // 자신의 위치
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO);
Collections.reverse(menuCurrentResultList); // 타이틀 역순을 위해
model.addAttribute("menuCurrentResultList", menuCurrentResultList);
// SiteManagerVO siteManagerVO = new SiteManagerVO();
// 점검중 페이지 체크
// siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO);
// if("Y".equals(siteManagerVO.getInspFlag() )){ //점검중
// return "web/com/insp";
// }
// SSO 토큰 유효시간 timeout 시 메인페이지로 이동
// if(!"".equals(request.getSession().getAttribute("SsoLogout"))) {
// if(request.getSession().getAttribute("SsoLogout") != null) {
// request.removeAttribute("SsoLogout");
// return "redirect:/";
// }
// }
// model.addAttribute("siteManagerVO", siteManagerVO);
return "web/com/webLayout";
}
/* 사이트 체크 유무 */
@RequestMapping(value = "/{siteId}/web/siteCheck.do")
private String siteCheck(@PathVariable("siteId") String siteId, SiteManagerVO siteManagerVO,
HttpServletRequest request, RedirectAttributes redirectAttributes) {
int totCnt = 0;
siteManagerVO.setSiteId(siteId);
try {
totCnt = egovSiteManagerService.selectSiteManagerListTotCnt(siteManagerVO);
} catch (Exception e) {
System.out.println("Exception Occured!!!");
}
if (totCnt == 0) {
return "web/com/alert_site";
/*
* redirectAttributes.addFlashAttribute("message", "등록된 사이트가 없습니다.");
* RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/blank"); return
* redirectUrlMaker.getRedirectUrl();
*/
} else {
return "blank";
}
// return "web/main/mainPage";
}
private void setViewMenu(HttpServletRequest request, Map commandMap, MenuManageVO tempMenuManageVO,
MenuManageVO resultVO, MenuManageJTreeVO menuManageVO) throws Exception {
if (request.getRequestURI().contains("/web/survey_back")) {// 설문조사(각 사이트 마다 이름이 달라) survey > survey_back 으로 사용한
tempMenuManageVO.setSearchKeyword("surveyList");
} else if (request.getRequestURI().contains("schdlr")) { // 스케줄러 경우(일,월,년 url이 달라
tempMenuManageVO.setSearchKeyword("schdlrManage");
} else if (null != (String) commandMap.get("proFn") || null != (String) commandMap.get("bbsId")
|| null != (String) commandMap.get("nttId")) { // 컨텐츠 타입, 게시판 타입의 경우
if (null != (String) commandMap.get("proFn")) { // 컨텐츠
tempMenuManageVO.setSearchKeyword((String) commandMap.get("proFn"));
} else if (null != (String) commandMap.get("bbsId")) { // 게시판
ComDefaultVO searchVO = new ComDefaultVO();
String url = progrmManageService.getBbsUrlByNttId((String) commandMap.get("bbsId"));
searchVO.setSearchKeyword(url);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
} else { // nttId 통합검색시
BoardVO tempBoardVO = new BoardVO();
tempBoardVO.setNttId(Integer.parseInt((String) commandMap.get("nttId")));
BoardMasterVO bmVO = bbsAttrbService.selectBbsIdByNttId(tempBoardVO);
ComDefaultVO searchVO = new ComDefaultVO();
String url = progrmManageService.getBbsUrlByNttId(bmVO == null ? "" : bmVO.getBbsId());
searchVO.setSearchKeyword(url);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
}
} else { // ajax 로 검색시
// 일반 프로그램시
if (commandMap.get("url") != null) {
String menuUrl = request.getRequestURI();
if (menuUrl.equals("/web/cop/org/selectOrgDetail.do")) {
menuUrl = "/web/cop/org/selectOrgList.do";
} else if (menuUrl.equals("/web/kccadr/adjstExpDetail/adjstReqStatusDetail.do") // 체험하기
|| menuUrl.equals("/web/kccadr/adjstExp/adjstIncidentList.do")
|| menuUrl.equals("/web/kccadr/adjstExpDetail/adjstIncidentDetail.do")
|| menuUrl.equals("/web/kccadr/adjstExp/adjstReqRegistInformation.do")
|| menuUrl.equals("/web/kccadr/adjstExp/adjstReqRegistStep1.do")
|| menuUrl.equals("/web/kccadr/adjstExp/adjstReqRegistStep2.do")
|| menuUrl.equals("/web/kccadr/adjstExp/adjstReqRegistStep3.do")
|| menuUrl.equals("/web/kccadr/adjstExp/SsoLoginUsr.do")
|| menuUrl.equals("/web/kccadr/adjstExp/docIssReqList.do")
|| menuUrl.equals("/web/kccadr/adjstExp/docIssReqRegist.do")
|| menuUrl.equals("/web/kccadr/adjstExp/adjstIncidentEndList.do")
|| menuUrl.equals("/web/kccadr/adjstExpDetail/adjstIncidentEndDetail.do")) { // 체험하기
menuUrl = "/web/kccadr/adjstExp/adjstExpMainPage.do";
}
// 상세화면 URL로 메뉴화면 매핑이 안되어, 문자열 치환으로 매핑...
String strUrl = menuUrl/* .replace("Info", "List") */
.replace("Detail", "List")
/* .replace("Regist", "List") */
.replace("Article", "List").replace("Inqire", "List").replace("addFcltMgr", "fcltMgrList")
.replace("mainzoneModify", "mainzoneList");
menuUrl = strUrl;
ComDefaultVO searchVO = new ComDefaultVO();
searchVO.setSearchKeyword(menuUrl);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
} else { // 조직도 상세
String menuUrl = request.getRequestURI();
if (menuUrl.equals("/web/cop/org/selectOrgDetail.do")) {
menuUrl = "/web/cop/org/selectOrgList.do";
ComDefaultVO searchVO = new ComDefaultVO();
searchVO.setSearchKeyword(menuUrl);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
}
}
}
if (!"dir".equals(tempMenuManageVO.getSearchKeyword())) {
resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
}
// menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
if (resultVO != null) {
menuManageVO.setMenuNo(resultVO.getMenuNo() + "");
}
}
/**
* 사용자 페이지의 네비 상단 매뉴
*/
@RequestMapping(value = "/web/com/naviWrap.do")
public String siteWebCommonNaviWrap(@RequestParam Map commandMap, HttpServletRequest request,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception {
// 전자조정 시작
// 아래 처리중 중간네비 메뉴 조회를 위해 with recurseive 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요
// 로그인 권한 정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String auth = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
if (auth.equals("")) {
auth = "ROLE_ANONYMOUS";
}
// 현재 로그인한 권한으로 셋팅해준다.
menuManageVO.setAuthorCode(auth);
// 자신의 위치 정보
List menuCurrentResultList = new ArrayList(); // 자신의 위치
List menuLeftResultList = new ArrayList(); // 자신이 속한 위치
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO);
// 최상단 매뉴 가져오기 : 상단 그림 변화
menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO);
List showOneDepthMenu = new ArrayList();
List showTwoDepthMenu = new ArrayList();
for (MenuManageJTreeVO tempLeftMenu : menuLeftResultList) {
if (tempLeftMenu.getDepths().equals("2")) {
for (MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList) {
if (tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())) {
showTwoDepthMenu.add(tempLeftMenu);
}
}
}
}
menuManageVO.setAuthorCode(auth);
menuManageVO.setMenuUserType(menuManageVO.getMenuUserType());
List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
for (MenuManageJTreeVO tempResultVo : menuResultList) { // 1 뎁스
if (tempResultVo.getDepths().equals("1")) {
showOneDepthMenu.add(tempResultVo);
}
}
// model.addAttribute("topMenuId", topMenuId);
// model.addAttribute("subMenuFile", subMenuFile);
// model.addAttribute("pozNmText", pozNmText);
//
// model.addAttribute("menuText", menuText);
model.addAttribute("showOneDepthMenu", showOneDepthMenu);
model.addAttribute("showTwoDepthMenu", showTwoDepthMenu);
// model.addAttribute("showThreeDepthMenu", showThreeDepthMenu);
// model.addAttribute("showFourDepthMenu", showFourDepthMenu);
// model.addAttribute("menuUnderResultList", menuUnderResultList); //하단매뉴
model.addAttribute("menuCurrentResultList", menuCurrentResultList);
model.addAttribute("menuLeftResultList", menuLeftResultList);
// model.addAttribute("menuResultList", menuResultList);
// 아래 처리중 중간네비 메뉴 조회를 위해 with recurseive 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요
// 전자조정 종료
return "web/com/webCommonNaviWrap";
}
/**
* 사용자 좌측 매뉴
*/
@RequestMapping(value = "/web/com/leftMenu.do")
public String webCommonLeftMenu(HttpServletRequest request,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model,
@RequestParam Map commandMap) throws Exception {
// 로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
// 권한별 메뉴표시
if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") {
menuManageVO.setAuthorCode(userAuthority);
} else if (userAuthority.equals("ROLE_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
} else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
// 자신의 위치 정보
List menuCurrentResultList = new ArrayList();
List whereAmIList = new ArrayList();
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWebCustom(menuManageVO);
MenuManageJTreeVO whereAmIVO = new MenuManageJTreeVO();
if (menuCurrentResultList != null && menuCurrentResultList.size() > 0) {
whereAmIVO = menuCurrentResultList.get(0);
whereAmIVO.setAuthorCode(menuManageVO.getAuthorCode());
whereAmIList = menuCreateManageService.selectMenuListJtreeWebCustom(whereAmIVO);
}
List