package kcc.web; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; 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 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.Part; 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.json.simple.JSONArray; import org.json.simple.JSONObject; 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.ComDefaultCodeVO; import kcc.com.cmm.ComDefaultVO; import kcc.com.cmm.LoginVO; import kcc.com.cmm.service.CmmnDetailCode; 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.BannerVO; 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.cyb.service.CyberAlertManageVO; 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.kccadr.accdnt.ai.service.AdjstIncidentVO; import kcc.kccadr.glossary.service.GlossaryService; import kcc.kccadr.glossary.service.GlossaryVO; 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.cop.bbs.service.SearchTotalVO; import kcc.let.solr.sys.service.ResearchService; import kcc.let.sts.cst.service.EgovConectStatsService; 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; import kcc.let.uat.uia.service.SsoLoginVO; /** * 템플릿 메인 페이지 컨트롤러 클래스(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; @Resource(name = "researchService") protected ResearchService researchService; /** 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; @Resource(name = "GlossaryService") private GlossaryService glossaryService; @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; /** SSO return URL */ @Value("#{globalSettings['Globals.sso.returnSiteUrl']}") private String returnSiteUrlGlobal; @Value("#{globalSettings['Globals.sso.returnSiteCode']}") private String returnSiteCodeGlobal; /** SSO 회원관련 URL */ @Value("#{globalSettings['Globals.sso.joinUrl']}") private String joinUrl_Global; @Value("#{globalSettings['Globals.sso.modifyUrl']}") private String modifyUrl_Global; @Value("#{globalSettings['Globals.sso.idFindUrl']}") private String idFindUrl_Global; @Value("#{globalSettings['Globals.sso.pwFindUrl']}") private String pwFindUrl_Global; @RequestMapping(value = "/{siteId}/web/main/mainPage_keri.do") public String siteMainPage_keri(@PathVariable("siteId") String siteId , HttpServletRequest request, ModelMap model) throws Exception{ //메인이미지 /** EgovPropertyService.sample */ MainzoneVO mainzoneVO = new MainzoneVO(); mainzoneVO.setPageUnit(propertiesService.getInt("pageUnit")); mainzoneVO.setPageSize(propertiesService.getInt("pageSize")); /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mainzoneVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mainzoneVO.getPageUnit()); paginationInfo.setPageSize(mainzoneVO.getPageSize()); mainzoneVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mainzoneVO.setLastIndex(paginationInfo.getLastRecordIndex()); mainzoneVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); mainzoneVO.setSiteId(siteId); List mainzoneList = egovPopupManageService.selectMainzoneList(mainzoneVO); //상단메인 이미지 model.addAttribute("mainzoneList", mainzoneList); BoardVO boardVO = new BoardVO(); boardVO.setPageUnit(7); boardVO.setPageSize(10); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); boardVO.setBbsId("BBSMSTR_000000000153"); //라이브폴라스토리 boardVO.setSecretAt("N"); //비밀글제외 boardVO.setAtchFileCnt(1); //파일이 있는경우만(임의의 숫자 1) //대표이미지 가져오기 ComDefaultCodeVO vo = new ComDefaultCodeVO(); vo.setCodeId("ITN005"); List cmmCaLevel = cmmUseService.selectCmmCodeDetail(vo); BoardVO mainPolaVo = new BoardVO(); if(cmmCaLevel != null){ String bbsId = ((CmmnDetailCode)cmmCaLevel.get(0)).getCodeNm() ; boardVO.setNttId(Integer.parseInt(bbsId)); boardVO.setMainPolaNttId(bbsId); mainPolaVo = bbsMngService.selectBoardArticle(boardVO); if(mainPolaVo !=null){ boardVO.setRecordCountPerPage(5); model.addAttribute("livePolaStoryListOne", mainPolaVo); //첫번째 사진 } } Map livePolaStoryList = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); List livePolaArrayList = (List) livePolaStoryList.get("resultList") ; model.addAttribute("livePolaStoryListOther", livePolaArrayList); //나머지 사진 /*if(livePolaArrayList.size()!=0){ livePolaArrayList.remove(0) ; model.addAttribute("livePolaStoryList", livePolaStoryList.get("resultList")); }*/ boardVO.setBbsId("BBSMSTR_000000000018"); // 공지사항 메인 컨텐츠 Map map = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); model.addAttribute("notiList", map.get("resultList")); /*boardVO.setBbsId("BBSMSTR_000000000101"); //입찰공고 Map map1 = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); model.addAttribute("biddingList", map1.get("resultList"));*/ // 공지사항 메인컨텐츠 조회 끝 ----------------------------------- // 자유게시판 메인 컨텐츠 조회 시작 --------------------------------- boardVO.setPageUnit(9); boardVO.setPageSize(10); boardVO.setBbsId("BBSMSTR_BBBBBBBBBBBB"); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); model.addAttribute("bbsList", bbsMngService.selectBoardArticles(boardVO, "BBSA02").get("resultList")); // 설문참여 메인 컨텐츠 조회 시작 ----------------------------------- ComDefaultVO qVO = new ComDefaultVO(); qVO.setPageUnit(1); qVO.setPageSize(10); /** pageing */ paginationInfo.setCurrentPageNo(qVO.getPageIndex()); paginationInfo.setRecordCountPerPage(qVO.getPageUnit()); paginationInfo.setPageSize(qVO.getPageSize()); qVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); qVO.setLastIndex(paginationInfo.getLastRecordIndex()); qVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //배너 리스트 조회 BannerVO bannerVO = new BannerVO(); bannerVO.setRecordCountPerPage(50); //50개까지 bannerVO.setFirstIndex(0); bannerVO.setReflctAt("Y"); //반영이 Y 만 ArrayList bannerVOList= (ArrayList) egovBannerService.selectBannerList(bannerVO) ;//배너6개 안되면 좌측 버튼이 안보임 if(null != bannerVOList){ for(int i=0; i<4; i++){ if(bannerVOList.size()<6){ bannerVOList.addAll(bannerVOList); } } } //bannerVO.setBannerList(egovBannerService.selectBannerList(bannerVO)); bannerVO.setBannerList(bannerVOList); model.addAttribute("bannerList", bannerVO.getBannerList()); //팝업리스트 조회 /*if(!isMobile(request)){ //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(); List popupzoneList = egovPopupManageService.selectPopupzoneList(popupzoneVo); model.addAttribute("popupzoneList", popupzoneList); /** 팝업존관리 */ /* popupManageVO.setRecordCountPerPage(10); //10개만 popupManageVO.setNtceAt("Y"); //사용만 popupManageVO.setMainPageFlag("Y") ; //메인화면의 용도(시작일 종료일 사이 조회) popupManageVO.setPopupType("Z"); //팝업존만 조회 List popupzoneList = egovPopupManageService.selectPopupMainList(popupManageVO); model.addAttribute("popupzoneList", popupzoneList);*/ /** 사이버경고관리 */ CyberAlertManageVO cyberManageVO = new CyberAlertManageVO(); cyberManageVO.setCaId("CYBER_0000000001"); List cyberAlerMap = cyberAlertManageService.selectCyberAlert(cyberManageVO); EgovMap emp = new EgovMap(); if( cyberAlerMap.size() != 0 ){ emp = (EgovMap)cyberAlerMap.get(0); } model.addAttribute("cyberAlerMap", emp); model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; return "web/"+siteFolder+"/main/mainPage"; } @RequestMapping(value = "/web/main/mainPage.do") public String siteMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception{ //메인이미지 // String referer = (String)request.getHeader("REFERER"); /** EgovPropertyService.sample */ MainzoneVO mainzoneVO = new MainzoneVO(); mainzoneVO.setPageUnit(propertiesService.getInt("pageUnit")); mainzoneVO.setPageSize(propertiesService.getInt("pageSize")); /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mainzoneVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mainzoneVO.getPageUnit()); paginationInfo.setPageSize(mainzoneVO.getPageSize()); mainzoneVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mainzoneVO.setLastIndex(paginationInfo.getLastRecordIndex()); mainzoneVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); mainzoneVO.setUseYn("Y"); //사용하는것만 mainzoneVO.setDeviceType("P"); //PC List mainzoneList = egovPopupManageService.selectMainzoneList(mainzoneVO); //상단메인 이미지 // mainzoneVO.setDeviceType("M"); //모바일 // List mainzoneListM = egovPopupManageService.selectMainzoneList(mainzoneVO); //상단메인 이미지 model.addAttribute("mainzoneList", mainzoneList); //PC // model.addAttribute("mainzoneListM", mainzoneListM); //모바일 /* * 반응형으로 사용을 해야해서 모바일에서도 팝업 존 영역의 데이터를 불러와야해서 주석처리했음 * 우영두 * 2021.10.29 * */ /** 팝업 알림창괸리 */ //if(!isMobile(request)){ //PC인경우만 PopupManageVO popupManageVO = new PopupManageVO(); popupManageVO.setRecordCountPerPage(10); //10개만 popupManageVO.setNtceAt("Y"); //사용만 popupManageVO.setMainPageFlag("Y") ; //메인화면의 용도(시작일 종료일 사이 조회) List popupList = egovPopupManageService.selectPopupMainList(popupManageVO); model.addAttribute("popupList", popupList); //} /** 팝업존 알림창괸리 */ //if(!isMobile(request)){ PopupzoneVO popupzoneVo = new PopupzoneVO(); popupzoneVo.setFirstIndex(0); popupzoneVo.setSeCd("02"); //좌측팝업 popupzoneVo.setUseYn("Y"); popupzoneVo.setSearchSortCnd("MB.sort"); popupzoneVo.setSearchSortOrd("ASC"); List popupzoneList = egovPopupManageService.selectPopupzoneList(popupzoneVo); model.addAttribute("popupzoneList", popupzoneList); //popupzoneVo.setSeCd("03"); //List popupzoneTopList = egovPopupManageService.selectPopupzoneList(popupzoneVo); //model.addAttribute("popupzoneTopList", popupzoneTopList); //} /** 게시판 조회 - 조정사례 */ BoardVO boardVO = new BoardVO(); boardVO.setRecordCountPerPage(5); //게시글 수 boardVO.setFirstIndex(0); // boardVO.setBbsId("BBSMSTR_000000000651"); List vo = bbsMngService.selectMainBoardRecent(boardVO); model.addAttribute("bbsList", vo); 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()); System.out.println(" ++ userAuthority : "+ userAuthority); //권한별 메뉴표시 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"); } System.out.println(" ++ menuManageVO.getAuthorCode() : "+ menuManageVO.getAuthorCode()); //대국민, 조정위원일 경우 원뎁스 메뉴에 대시보드 링크를 걸기위해 권한 넘겨줌 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); //팝업존 > 전자조정 탑메뉴 위 팝업존 /* 팝업 가져오기 */ /*if(!isMobile(request)){ //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.setRecordCountPerPage(20); popupzoneVo.setSeCd("02"); popupzoneVo.setUseYn("Y"); popupzoneVo.setSearchSortCnd("SORT"); popupzoneVo.setSearchSortOrd("ASC"); List popupzoneList = egovPopupManageService.selectPopupzoneList(popupzoneVo); model.addAttribute("popupzoneList", popupzoneList); }*/ //샘플테마사용시 고정 이미지 가져오기 SsoLoginVO ssoLoginVO = (SsoLoginVO)session.getAttribute("SSOLoginVO"); if(ssoLoginVO != null) { model.addAttribute("ssoLoginVO", ssoLoginVO); } String returnSiteUrl = returnSiteUrlGlobal; String returnSiteCode = returnSiteCodeGlobal; String joinUrl = joinUrl_Global; String modifyUrl = modifyUrl_Global; model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); model.addAttribute("returnSiteCode", returnSiteCode); model.addAttribute("joinUrl", joinUrl); model.addAttribute("modifyUrl", modifyUrl); return "web/com/webCommonHeader"; } /** * 사용자 상단 매뉴 */ @RequestMapping(value="/{siteId}/web/com/webThemeCommonHeader.do") public String webThemeCommonHeader(@PathVariable("siteId") String siteId , @RequestParam Map commandMap, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model, HttpServletRequest request) throws Exception { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); //List menuResultList = menuCreateManageService.selectMenuListJtree(menuManageVO) ; menuManageVO.setSiteId(siteId); 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); model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; if("linc".equals(siteId)){ //linc 사업단 //json 형태 만들기 JSONObject jsonObject = new JSONObject(); JSONObject oneDepth = null; JSONArray oneArray = new JSONArray(); JSONObject twoDepth = null; JSONArray twoArray = null; JSONObject threeDepth = new JSONObject(); JSONArray threeArray = new JSONArray(); int onePoint = 1; int twoPoint = 1; for(MenuManageJTreeVO menuManageOne : menuResultList){ if(menuManageOne.getDepths().equals("1")){ oneDepth = new JSONObject(); twoArray = new JSONArray(); oneDepth.put("children", "1-1"); oneDepth.put("name", menuManageOne.getMenuNm()); for(MenuManageJTreeVO menuManageTwo : menuResultList){ if(menuManageTwo.getDepths().equals("2")){ if(menuManageOne.getMenuNo().equals(menuManageTwo.getUpperMenuId())){ twoDepth = new JSONObject(); twoDepth.put("children", ""+onePoint+"-"+twoPoint); twoPoint = twoPoint+1; twoDepth.put("name", menuManageTwo.getMenuNm()); twoDepth.put("link", menuManageTwo.getUrl()); twoArray.add(twoDepth) ; } } } oneArray.add(oneDepth) ; oneDepth.put("children", twoArray); onePoint = onePoint+1; twoPoint =1; } } jsonObject.put("children", oneArray); model.addAttribute("menuJson", jsonObject); } if(siteId.equals("linc") || siteId.equals("klc")){ return "web/"+siteFolder+"/com/webCommonHeader"; }else{ SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); setSiteinfo(siteManagerVO, model , request ); //return "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/com/webCommonHeader"; return "web/site/"+siteId+"/"+siteManagerVO.getIsMobile()+"/com/webCommonHeader"; } } @RequestMapping(value="/web/com/webCommonHeader_back.do") public String webCommonHeader_back( @RequestParam Map commandMap, ModelMap model) throws Exception { 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"); if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) { 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"; } /** * 사용자 페이지의 테마 네비 상단 매뉴 */ @RequestMapping(value="/web/com/themeNaviWrap.do") public String themeWebCommonNaviWrap( @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { //자신의 위치 정보 List menuCurrentResultList = new ArrayList(); //자신의 위치 List menuLeftResultList = new ArrayList(); //자신이 속한 위치 List menuUnderResultList = new ArrayList(); //한단계 하위 위치 MenuManageVO resultVO = new MenuManageVO(); MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("Y"); setViewMenu(request , commandMap , tempMenuManageVO , resultVO , menuManageVO ); menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO) ; //최상단 매뉴 가져오기 : 상단 그림 변화 //관리자에서 파일가져오기 PopupzoneVO popupzoneVo = new PopupzoneVO(); popupzoneVo.setFirstIndex(0); popupzoneVo.setRecordCountPerPage(10); //10개까지 popupzoneVo.setSeCd("06"); //뉴스레터 popupzoneVo.setUseYn("Y"); List popupzoneList_06 = egovPopupManageService.selectPopupzoneList(popupzoneVo); String topMenuId = "01" ; String subMenuFile = "" ; int subMenuFileSize = popupzoneList_06.size() ; if(menuCurrentResultList.size()!=0){ topMenuId = ((MenuManageJTreeVO)menuCurrentResultList.get(0)).getMenuNo() ; if("9100000".equals(topMenuId)){ topMenuId = "01" ; if(subMenuFileSize > 0 ){ subMenuFile = (String)((EgovMap)popupzoneList_06.get(0)).get("popupzoneImageFile") ; } }else if("9200000".equals(topMenuId)){ topMenuId = "02" ; if(subMenuFileSize > 1 ){ subMenuFile = (String)((EgovMap)popupzoneList_06.get(1)).get("popupzoneImageFile") ; } }else if("9300000".equals(topMenuId)){ topMenuId = "03" ; if(subMenuFileSize > 2 ){ subMenuFile = (String)((EgovMap)popupzoneList_06.get(2)).get("popupzoneImageFile") ; } }else if("9400000".equals(topMenuId)){ topMenuId = "04" ; if(subMenuFileSize > 3 ){ subMenuFile = (String)((EgovMap)popupzoneList_06.get(3)).get("popupzoneImageFile") ; } }else if("9500000".equals(topMenuId)){ topMenuId = "05" ; if(subMenuFileSize > 4 ){ subMenuFile = (String)((EgovMap)popupzoneList_06.get(4)).get("popupzoneImageFile") ; } }else{ topMenuId = "01" ; if(subMenuFileSize > 0 ){ subMenuFile = (String)((EgovMap)popupzoneList_06.get(0)).get("popupzoneImageFile") ; } } } model.addAttribute("topMenuId", topMenuId); model.addAttribute("subMenuFile", subMenuFile); menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO) ; menuUnderResultList = menuCreateManageService.selectMenuUnderListJtreeWeb(menuManageVO) ; List showOneDepthMenu = new ArrayList(); List showTwoDepthMenu = new ArrayList(); List showThreeDepthMenu = new ArrayList(); List showFourDepthMenu = new ArrayList(); for(MenuManageJTreeVO tempLeftMenu : menuLeftResultList){ if(tempLeftMenu.getDepths().equals("2")){ for(MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())){ showTwoDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("3")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showThreeDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("4")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showFourDepthMenu.add(tempLeftMenu); } } } } menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO) ; for(MenuManageJTreeVO tempResultVo : menuResultList){ //1 뎁스 if(tempResultVo.getDepths().equals("1")){ showOneDepthMenu.add(tempResultVo); } } //매뉴구조도 텍스트 String menuText = ""; menuText += "
  •  
  • " ; if(request.getRequestURI().contains("/eng")){ //영문사이트 int i = 0; for(MenuManageJTreeVO menuTextVo : menuCurrentResultList){ if(i !=0){ menuText += "
  •  > "+menuTextVo.getMenuNm()+"
  • " ; } i= i+1; } }else{ for(MenuManageJTreeVO menuTextVo : menuCurrentResultList){ menuText += "
  •  > "+menuTextVo.getMenuNm()+"
  • " ; } } 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); if(request.getRequestURI().contains("/eng/")){ return "web/com/engWebCommonNaviWrap"; } return "web/com/webCommonNaviWrap"; } /** * 사용자 페이지의 네비 상단 매뉴 */ @RequestMapping(value="/web/com/naviWrapAjax.do") public String webCommonNaviWrapAjax( @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { //자신의 위치 정보 List menuCurrentResultList = new ArrayList(); //자신의 위치 List menuLeftResultList = new ArrayList(); //자신이 속한 위치 MenuManageVO resultVO = new MenuManageVO(); if(null!=(String)commandMap.get("proFn")){ //컨텐츠 타입이면 매뉴아이디 조회 MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("proFn"); tempMenuManageVO.setSearchKeyword((String)commandMap.get("proFn")); resultVO = menuManageService.selectMenuManage(tempMenuManageVO); menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); menuManageVO.setMenuNo(resultVO.getMenuNo()+""); menuManageVO.setMenuNo("9151200"); //테스트 menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO) ; menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO) ; } List showOneDepthMenu = new ArrayList(); List showTwoDepthMenu = new ArrayList(); List showThreeDepthMenu = new ArrayList(); List showFourDepthMenu = new ArrayList(); for(MenuManageJTreeVO tempLeftMenu : menuLeftResultList){ if(tempLeftMenu.getDepths().equals("2")){ for(MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())){ showTwoDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("3")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showThreeDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("4")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showFourDepthMenu.add(tempLeftMenu); } } } } menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO) ; for(MenuManageJTreeVO tempResultVo : menuResultList){ //1 뎁스 if(tempResultVo.getDepths().equals("1")){ showOneDepthMenu.add(tempResultVo); } } //매뉴구조도 텍스트 String menuText = ""; menuText += "
  •  
  • " ; for(MenuManageJTreeVO menuTextVo : menuCurrentResultList){ menuText += "
  •  > "+menuTextVo.getMenuNm()+"
  • " ; } model.addAttribute("menuText", menuText); model.addAttribute("showOneDepthMenu", showOneDepthMenu); model.addAttribute("showTwoDepthMenu", showTwoDepthMenu); model.addAttribute("showThreeDepthMenu", showThreeDepthMenu); model.addAttribute("showFourDepthMenu", showFourDepthMenu); model.addAttribute("menuCurrentResultList", menuCurrentResultList); model.addAttribute("menuLeftResultList", menuLeftResultList); model.addAttribute("menuResultList", menuResultList); return "web/com/webCommonNaviWrap"; } 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")); //String url = "/web/cop/bbsWeb/selectBoardList.do?bbsId="+ (String)commandMap.get("bbsId"); if(null == url) { //사전정보공표 if(null != (String)commandMap.get("pubDetail")) { url = "/web/cop/bbs/PubOperList.do"; } if(null != (String)commandMap.get("tabBbsId")) { url = "/web/cop/bbs/PubOperList.do"; } } 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/accdnt/ars/adjstReqStatusDetail.do") // || menuUrl.equals("/web/kccadr/adjstExpDetail/adjstReqStatusDetail.do") || menuUrl.equals("/web/kccadr/accdnt/acd/adjstChangeDateList.do") || menuUrl.equals("/web/kccadr/accdnt/acd/adjstChangeDateCreate.do") || menuUrl.equals("/web/kccadr/accdnt/arc/corReqList.do") || menuUrl.equals("/web/kccadr/accdnt/arc/corReqCreate.do") || menuUrl.equals("/web/kccadr/accdnt/adr/adjstDeputyReqList.do") || menuUrl.equals("/web/kccadr/accdnt/adr/adjstDeputyReqDetail.do") || menuUrl.equals("/web/kccadr/accdnt/adr/adjstDeputyReqCreate.do") || menuUrl.equals("/web/kccadr/accdnt/ans/ansSubmit.do") || menuUrl.equals("/web/kccadr/ojct/ojctList.do") || menuUrl.equals("/web/kccadr/ojct/ojctRegist.do") || menuUrl.equals("/web/kccadr/ojct/ojctDetail.do") || menuUrl.equals("/web/kccadr/ojct/ojctModify.do") || menuUrl.equals("/web/kccadr/accdnt/awd/adjstWithDrawCreate.do")){ menuUrl = "/web/kccadr/accdnt/ai/adjstIncidentList.do"; }else if(menuUrl.equals("/web/kccadr/adjst/adjstReqRegistStep1.do") || menuUrl.equals("/web/kccadr/adjst/adjstReqRegistStep2.do") || menuUrl.equals("/web/kccadr/adjst/adjstReqRegistStep3.do") || menuUrl.equals("/web/kccadr/adjst/adjstReqRegistStep4.do")){ menuUrl = "/web/kccadr/adjst/adjstReqRegistInformation.do"; }else if(menuUrl.equals("/web/kccadr/adjcclt/adjstConciliatorDetail.do") || menuUrl.equals("/web/kccadr/adjcclt/adjstProtocolDetail.do") || menuUrl.equals("/web/kccadr/adjcclt/adjstNoEstablishmentDetail.do") || menuUrl.equals("/web/kccadr/adjcclt/adjstCancleDetail.do") || menuUrl.equals("/web/kccadr/adjcclt/adjstDrtDetail.do") || menuUrl.equals("/web/kccadr/adjcclt/adjstRecommendationDetail.do") || menuUrl.equals("/web/kccadr/adjcclt/adjstMediationDecisionDetail.do") || menuUrl.equals("/web/kccadr/adjcclt/adjstOjctList.do")){ menuUrl = "/web/kccadr/adjcclt/ai/adjstConciliatorList.do"; }else if(menuUrl.equals("/web/kccadr/accdnt/chg/selectSchChgInfo.do")){ menuUrl = "/web/kccadr/accdnt/chg/adjChg.do"; }else if(menuUrl.equals("/web/kccadr/accdnt/ai/adjstIncidentDashList.do")) { //나의사건관리 대시보드 menuUrl = "/web/kccadr/accdnt/ai/adjstIncidentList.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(); //자신이 속한 위치 List menuUnderResultList = 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) ; menuUnderResultList = menuCreateManageService.selectMenuUnderListJtreeWeb(menuManageVO) ; List showOneDepthMenu = new ArrayList(); List showTwoDepthMenu = new ArrayList(); List showThreeDepthMenu = new ArrayList(); List showFourDepthMenu = new ArrayList(); for(MenuManageJTreeVO tempLeftMenu : menuLeftResultList){ if(tempLeftMenu.getDepths().equals("2")){ for(MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())){ showTwoDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("3")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showThreeDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("4")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showFourDepthMenu.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); } } //매뉴구조도 텍스트 String menuText = ""; menuText += "
  •  
  • " ; if(request.getRequestURI().contains("/eng")){ //영문사이트 int i = 0; for(MenuManageJTreeVO menuTextVo : menuCurrentResultList){ if(i !=0){ menuText += "
  •  > "+menuTextVo.getMenuNm()+"
  • " ; } i= i+1; } }else{ for(MenuManageJTreeVO menuTextVo : menuCurrentResultList){ menuText += "
  •  > "+menuTextVo.getMenuNm()+"
  • " ; } } //메뉴별 비주얼 이미지가져오기 PopupzoneVO popupzoneVo = new PopupzoneVO(); popupzoneVo.setFirstIndex(0); popupzoneVo.setRecordCountPerPage(10); //10개까지 popupzoneVo.setSeCd("01"); //메뉴별 비주얼 popupzoneVo.setUseYn("Y"); popupzoneVo.setSearchSortCnd("SORT"); List popupzoneList_01 = egovPopupManageService.selectPopupzoneList(popupzoneVo); String topMenuId = "01" ; String subMenuFile = "" ; String pozNmText = "" ; int subMenuFileSize = popupzoneList_01.size() ; if(menuCurrentResultList.size()!=0){ //1뎁스 매뉴에서 현제 매뉴의 몇번째인지를 가져온다. int tempCurrentSub = 0; for(MenuManageJTreeVO tempMenuManageJTreeVO : showOneDepthMenu){ if(((MenuManageJTreeVO)menuCurrentResultList.get(0)).getMenuNo().equals(tempMenuManageJTreeVO.getMenuNo())){ break; }else { tempCurrentSub = tempCurrentSub+1; } } //메인비주얼 맞는 순서를 가져온다. if(subMenuFileSize > 0 ){ if(tempCurrentSub > 5 ) { //안보이는 매뉴 tempCurrentSub = 0; } try { subMenuFile = (String)((EgovMap)popupzoneList_01.get(tempCurrentSub)).get("popupzoneImageFile") ; pozNmText = (String)((EgovMap)popupzoneList_01.get(tempCurrentSub)).get("pozNm") ; }catch(Exception e) { //이미지 등록 안되 있으면 에러 나서 에러의 경우 subMenuFile = "FILE_000000000000000" ; //임의의 파일 System.out.println("Exception Occured!!!"); } topMenuId = (tempCurrentSub+1)+""; } } //샘플테마사용시 고정 이미지 가져오기 SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; if( !"".equals(siteManagerVO.getTheme()) && null != siteManagerVO.getTheme()){ model.addAttribute("siteManagerVO", siteManagerVO); } 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 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요 // 전자조정 종료 if(request.getRequestURI().contains("/eng/")){ return "web/com/engWebCommonNaviWrap"; } return "web/com/webCommonNaviWrap"; } /** * 사용자 좌측 매뉴 */ @RequestMapping(value="/web/com/leftMenu.do") public String webCommonLeftMenu( @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { MenuManageVO resultVO = new MenuManageVO(); MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("Y"); setViewMenu(request , commandMap , tempMenuManageVO , resultVO , menuManageVO ); List menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO) ; model.addAttribute("menuLeftResultList", menuLeftResultList); if(request.getRequestURI().contains("/eng/")){ model.addAttribute("eng", "eng"); } return "web/com/webCommonLeftMenu"; } @RequestMapping(value="/{siteId}/web/com/getDivTop.do") public String getDivTop(@PathVariable("siteId") String siteId , HttpServletRequest request, @RequestParam Map commandMap, ModelMap model) throws Exception { /*if(!("linc".equals(siteId) || "klc".equals(siteId)) ){ SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; String theme = "01"; String siteFolder = "site/"+siteId ; if( !"".equals(siteManagerVO.getTheme()) && null != siteManagerVO.getTheme()){ theme = siteManagerVO.getTheme() ; siteFolder = "site/theme_"+theme ; } String isMobile = "PC"; WebUtil util = new WebUtil(); if(util.isMobile(request)){ isMobile = "MOBILE"; } return "web/site/theme_"+theme+"/"+isMobile+"/main/mainPage"; }*/ return "blank"; } @RequestMapping("/{siteId}/web/searchTotal.do") public String searchTotal(@PathVariable("siteId") String siteId , HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("searchTotalVO") SearchTotalVO searchTotalVO, ModelMap model ,RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); searchTotalVO.setPageUnit(propertiesService.getInt("pageUnit")); searchTotalVO.setPageSize(propertiesService.getInt("pageSize")); PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(searchTotalVO.getPageIndex()); paginationInfo.setRecordCountPerPage(searchTotalVO.getPageUnit()); paginationInfo.setPageSize(searchTotalVO.getPageSize()); searchTotalVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchTotalVO.setLastIndex(paginationInfo.getLastRecordIndex()); searchTotalVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //List map = bbsMngService.selectBoardTotalSearch(boardVO); List resultList = new ArrayList(); resultList = bbsMngService.selectBoardTotalSearch(searchTotalVO); int totCnt = bbsMngService.selectBoardTotalSearchCnt(searchTotalVO); //paginationInfo.setTotalRecordCount(resultList[0]); model.addAttribute("resultList", resultList); model.addAttribute("totCnt", totCnt); paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; /*if(!("linc".equals(siteId) || "klc".equals(siteId)) ){ SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); setSiteinfo(siteManagerVO, model , request ); //return "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeList"; return "web/site/"+siteId+"/"+siteManagerVO.getIsMobile()+"/main/searchTotal"; }*/ return "web/"+siteFolder+"/main/searchTotal"; } @RequestMapping(value="/com/getThemeLayout.do") public String getThemeLayout(HttpServletRequest request, @RequestParam Map commandMap, ModelMap model) throws Exception { if(commandMap.get("url")!=null){ String siteId = ((String)commandMap.get("url")).split("/")[3] ; SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; String theme = "01"; /*if( !"".equals(siteManagerVO.getTheme()) && null != siteManagerVO.getTheme()){ theme = siteManagerVO.getTheme() ; String isMobile = "pc"; WebUtil util = new WebUtil(); if(util.isMobile(request)){ isMobile = "mobile"; } //return "web/site/theme_"+theme+"/"+isMobile+"/layout"; return "web/site/"+siteId+"/"+isMobile+"/layout"; }*/ String isMobile = "pc"; WebUtil util = new WebUtil(); if(util.isMobile(request)){ isMobile = "mobile"; } return "web/site/"+siteId+"/"+isMobile+"/layout"; } return "blank"; } private void setSiteinfo(SiteManagerVO siteManagerVO , ModelMap model , HttpServletRequest request) throws Exception{ SiteManagerVO tempSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; if(tempSiteManagerVO !=null){ siteManagerVO.setIsMobile("pc") ; siteManagerVO.setTheme(tempSiteManagerVO.getTheme()); siteManagerVO.setSiteNm(tempSiteManagerVO.getSiteNm()); }else{ siteManagerVO.setTheme("01"); siteManagerVO.setSiteNm("타이틀"); } WebUtil util = new WebUtil(); if(util.isMobile(request)){ siteManagerVO.setIsMobile("mobile"); } model.addAttribute("siteId", siteManagerVO.getSiteId()); model.addAttribute("siteNm", siteManagerVO.getSiteNm()); //model.addAttribute("site_path" , "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()); model.addAttribute("site_path" , "/site/"+siteManagerVO.getSiteId()+"/"+siteManagerVO.getIsMobile()); } /* @RequestMapping(value="/{siteId}/web/siteMap.do") public String siteMap(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; model.addAttribute("site_path", "/"+siteFolder); return "web/"+siteFolder+"/member/sitemap"; }*/ // 사이트맵 개발 @RequestMapping(value="/{siteId}/web/siteMap.do") public String siteMap(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); //List menuResultList = menuCreateManageService.selectMenuListJtree(menuManageVO) ; menuManageVO.setSiteId(siteId); 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); model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; model.addAttribute("site_path", "/"+siteFolder); //샘플테마사용시 고정 이미지 가져오기 SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; if( !"".equals(siteManagerVO.getTheme()) && null != siteManagerVO.getTheme()){ model.addAttribute("siteManagerVO", siteManagerVO); } return "web/"+siteFolder+"/member/sitemap"; } /** * 사용자 페이지의 네비 상단 매뉴 */ @RequestMapping(value="/{siteId}/web/com/naviWrapAjax.do") public String ajaxSiteWebCommonNaviWrap(@PathVariable("siteId") String siteId , @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { //자신의 위치 정보 List menuCurrentResultList = new ArrayList(); //자신의 위치 List menuLeftResultList = new ArrayList(); //자신이 속한 위치 List menuUnderResultList = 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) ; menuUnderResultList = menuCreateManageService.selectMenuUnderListJtreeWeb(menuManageVO) ; List showOneDepthMenu = new ArrayList(); List showTwoDepthMenu = new ArrayList(); List showThreeDepthMenu = new ArrayList(); List showFourDepthMenu = new ArrayList(); for(MenuManageJTreeVO tempLeftMenu : menuLeftResultList){ if(tempLeftMenu.getDepths().equals("2")){ for(MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())){ showTwoDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("3")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showThreeDepthMenu.add(tempLeftMenu); } } } if(tempLeftMenu.getDepths().equals("4")){ for(MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList){ if(tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())){ showFourDepthMenu.add(tempLeftMenu); } } } } menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO) ; for(MenuManageJTreeVO tempResultVo : menuResultList){ //1 뎁스 if(tempResultVo.getDepths().equals("1")){ showOneDepthMenu.add(tempResultVo); } } 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); model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; model.addAttribute("site_path", "/"+siteFolder); return "web/"+siteFolder+"/com/webCommonNaviWrapAjax"; } /* 메일전송 첨부파일등록/수정 view*/ @RequestMapping(value="/kcc/mail/itnSendMailForm.do") public String intSendMailForm(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes , Model model , HttpSession session) throws Exception { List fmsFileList = new ArrayList(); model.addAttribute("fmsFileList", fmsFileList); //fms파일정보 List fileList = new ArrayList<>(); model.addAttribute("fileList", fileList); return "uss/ion/fms/ItnSendMailForm"; } /* 메일전송 process */ @RequestMapping(value="/kcc/mail/itnSendMailPro.do") public ModelAndView insertFmsFileOrg(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, final MultipartHttpServletRequest multiRequest, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); String recipient = Globals_email_toEmail; //받는 사람의 메일주소를 입력해주세요. Properties props = System.getProperties(); // SMTP 서버 정보 설정 props.put("mail.smtp.host", Globals_email_host); props.put("mail.smtp.port", Globals_email_port); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.trust", Globals_email_host); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { //Session 생성 protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(Globals_email_fromUser, Globals_email_fromEmail_password); } }); //테스트용 String revRecipient = (String)commandMap.get("emailAddrRev") ; try { Message message = new MimeMessage(session); //MimeMessage 생성 message.setFrom(new InternetAddress(Globals_email_fromEmail)); //발신자 셋팅 , 보내는 사람의 이메일주소를 한번 더 입력합니다. 이때는 이메일 풀 주소를 다 작성해주세요. message.setRecipient(Message.RecipientType.TO, new InternetAddress(revRecipient)); //수신자셋팅 message.addRecipient(Message.RecipientType.BCC, new InternetAddress(Globals_email_toEmail_BCC)); //숨은참조자 message.setSubject((String)commandMap.get("subject")); //제목셋팅 // 메일 내용을 설정을 위한 클래스를 설정합니다. message.setContent(new MimeMultipart()); // 메일 내용을 위한 Multipart클래스를 받아온다. (위 new MimeMultipart()로 넣은 클래스입니다.) Multipart multipart = (Multipart) message.getContent(); // html 형식으로 본문을 작성해서 바운더리에 넣습니다. StringBuffer contentBf = new StringBuffer(); contentBf.append("<작성자 메일주소 >: " + (String)commandMap.get("emailAddr")) ; contentBf.append("\r\n") ; contentBf.append("\r\n") ; contentBf.append("\r\n") ; contentBf.append("<내용> ") ; contentBf.append("\r\n") ; contentBf.append((String)commandMap.get("content")) ; multipart.addBodyPart(getContents(contentBf.toString())); /*파일등록 */ List result = null; String uploadFolder = ""; final Map files = multiRequest.getFileMap(); FileVO vo = null; String realFileLoc = "" ; if (!files.isEmpty()){ result = fileUtil.parseFileInf(files, "MAIL_", 0, "", uploadFolder, ""); Iterator iter = result.iterator(); while (iter.hasNext()) { vo = iter.next(); realFileLoc = vo.getFileStreCours()+vo.getStreFileNm() ; //addMulitAttachment(multipart , "C:"+realFileLoc , vo.getOrignlFileNm()); addMulitAttachment(multipart , realFileLoc , vo.getOrignlFileNm()); } if (vo == null) { } else { } } Transport.send(message); }catch(Exception e) { System.out.println("file Exception Error"); } return modelAndView; } @RequestMapping(value="/web/kccadr/kccadrCom/kccadrConstantsJsp.do") public String kccadrConstantsJsp() throws Exception { return "web/kccadr/kccadrCom/kccadrConstantsJsp"; } /** * 사용자 퀵 매뉴 */ @RequestMapping(value="/web/com/quickWrap.do") public String webCommonQuickMenu(ModelMap model) throws Exception { return "web/com/webCommonQuickMenu"; } //용어해설 팝업 @RequestMapping(value = "/web/com/popup/quickWrapGlossaryPop.do") public String quickWrapGlossaryPop(@ModelAttribute("searchVO") GlossaryVO glossaryVO, ModelMap model) throws Exception { return "web/com/pop/quickWrapGlossaryPop"; } //용어해설 팝업 상세 @RequestMapping(value = "/web/com/popup/quickWrapGlossaryPopDetail.do") public String quickWrapGlossaryPopDetail(@ModelAttribute("searchVO") GlossaryVO glossaryVO, ModelMap model) throws Exception { model.addAttribute("list", glossaryService.selectGlossaryListForWeb(glossaryVO)); return "web/com/pop/quickWrapGlossaryPopDetail"; } //용어해설 팝업 상세 @RequestMapping(value = "/web/com/popup/quickWrapGlossaryPopDetailCn.do") public String quickWrapGlossaryPopDetailCn(@ModelAttribute("searchVO") GlossaryVO glossaryVO, ModelMap model) throws Exception { model.addAttribute("glossaryVO", glossaryService.selectGlossaryDetail(glossaryVO)); return "web/com/pop/quickWrapGlossaryPopDetailCn"; } // 다수의 파일 첨부 파일을 로컬로 부터 읽어와서 BodyPart 클래스로 만든다. (바운더리 변환) private void addMulitAttachment(Multipart multipart, String realFileLoc, String filename) throws MessagingException { try { DataSource source = new FileDataSource(realFileLoc); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(MimeUtility.encodeText(filename) ); //한글깨짐방지 multipart.addBodyPart(messageBodyPart); }catch (UnsupportedEncodingException e) { System.out.println("UnsupportedEncodingException Occured!!!"); } } // 메일의 본문 내용 설정 private BodyPart getContents(String html) throws MessagingException { BodyPart mbp = new MimeBodyPart(); mbp.setText(html); // setText를 이용할 경우 일반 텍스트 내용으로 설정된다. // html 형식으로 설정(줄개행 > br로) //mbp.setContent(html.replaceAll("(\r\n|\n)", "
    "), "text/html; charset=utf-8"); //줄바꿈이 필요해서 return mbp; } }