package egovframework.web; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; 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.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import egovframework.com.cmm.ComDefaultCodeVO; import egovframework.com.cmm.ComDefaultVO; import egovframework.com.cmm.FacebookAPI; import egovframework.com.cmm.LoginVO; import egovframework.com.cmm.service.CmmnDetailCode; import egovframework.com.cmm.service.EgovCmmUseService; import egovframework.com.uss.ion.bnr.service.BannerVO; import egovframework.com.uss.ion.bnr.service.EgovBannerService; import egovframework.com.uss.ion.cyb.service.CyberAlertManageService; import egovframework.com.uss.ion.cyb.service.CyberAlertManageVO; import egovframework.com.uss.ion.pwm.service.EgovPopupManageService; import egovframework.com.uss.ion.pwm.service.MainzoneVO; import egovframework.com.uss.ion.pwm.service.PopupManageVO; import egovframework.com.uss.ion.pwm.service.PopupzoneVO; import egovframework.let.cop.bbs.service.BoardVO; import egovframework.let.cop.bbs.service.EgovBBSManageService; import egovframework.let.kopost.sys.service.ResearchService; import egovframework.let.kopost.sys.service.ResearchVO; import egovframework.let.sts.com.StatsVO; import egovframework.let.sts.cst.service.EgovConectStatsService; import egovframework.let.sym.log.clg.service.EgovLoginLogService; import egovframework.let.sym.log.clg.service.LoginLog; import egovframework.let.sym.mnu.mpm.service.EgovMenuManageService; import egovframework.let.sym.mnu.mpm.service.MenuManageVO; import egovframework.let.uss.ion.cnt.service.CntManageVO; import egovframework.let.utl.sim.service.EgovXSSUtil; 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; /** * 템플릿 메인 페이지 컨트롤러 클래스(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 { /** 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; @RequestMapping(value = "/web/main/mainPage.do") public String mainPage(HttpServletRequest request, ModelMap model) throws Exception{ System.out.println("@@@@@메인페이지시작@@@@@"); //메인이미지 /** 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()); // 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.setAtchFileCnt(0); boardVO.setRecordCountPerPage(5); boardVO.setBbsId("BBSMSTR_000000000201"); // News & Issues Map newsIssuesMap = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); model.addAttribute("newsIssuesMap", newsIssuesMap.get("resultList")); // boardVO.setBbsId("BBSMSTR_000000000221"); // 다언다청 // Map daunMap = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); // model.addAttribute("daunMap", daunMap.get("resultList")); boardVO.setBbsId("BBSMSTR_000000000029"); // 채용공고 Map hireMap = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); model.addAttribute("hireMap", hireMap.get("resultList")); boardVO.setBbsId("BBSMSTR_000000000018"); // 공지사항 Map noticeMap = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); model.addAttribute("noticeMap", noticeMap.get("resultList")); boardVO.setBbsId("BBSMSTR_000000000019"); // 입찰공고 Map bidMap = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); //model.addAttribute("notiList", map.get("resultList")); model.addAttribute("bidMap", bidMap.get("resultList")); /*boardVO.setBbsId("BBSMSTR_000000000101"); //입찰공고 Map map1 = bbsMngService.selectBoardArticles(boardVO, "BBSA02"); model.addAttribute("biddingList", map1.get("resultList"));*/ // 공지사항 메인컨텐츠 조회 끝 ----------------------------------- /*FacebookAPI facebookAPI = FacebookAPI.getInstance(); //페이스북 String posts = facebookAPI.getPosts() ; String photo = facebookAPI.getPhoto() ; model.addAttribute("posts", posts); model.addAttribute("photo", photo); List facebookList = new ArrayList(); JSONParser parser = new JSONParser(); JSONObject photoJObj = (JSONObject)parser.parse(photo); String profileImgUrl = ""; if(photoJObj.get("data") != null && ((JSONObject)photoJObj.get("data")).get("url") !=null){ profileImgUrl = ((JSONObject)photoJObj.get("data")).get("url").toString() ; } model.addAttribute("facebookImg", profileImgUrl); JSONObject postJObj = (JSONObject)parser.parse(posts); JSONArray postJArr = (JSONArray)postJObj.get("data") ; for(int i=0;i<3;i++){ JSONObject tempObjcet = (JSONObject)postJArr.get(i); if(!"status".equals(tempObjcet.get("type"))){ if(tempObjcet.get("picture") !=null){ tempObjcet.put("imgUrl", tempObjcet.get("picture")); }else{ tempObjcet.put("imgUrl", profileImgUrl); } } String line2 = ""; if(tempObjcet.get("caption") !=null) line2 = tempObjcet.get("caption").toString() ; else if(tempObjcet.get("message") !=null) line2 = tempObjcet.get("message").toString(); else if(tempObjcet.get("description")!=null) line2 = tempObjcet.get("description").toString(); else if(tempObjcet.get("story")!=null) line2 = tempObjcet.get("story").toString(); else line2 = tempObjcet.get("name").toString(); tempObjcet.put("line2", line2); facebookList.add(tempObjcet); } model.addAttribute("facebookList", facebookList);*/ /* 페이스북 */ // 자유게시판 메인 컨텐츠 조회 시작 --------------------------------- 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(); popupzoneVo.setFirstIndex(0); popupzoneVo.setRecordCountPerPage(1000); popupzoneVo.setMainPage("Y"); 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("qriList", egovQustnrRespondInfoService.selectQustnrRespondInfoManageList(qVO)); // 설문참여 메인 컨텐츠 조회 끝 ----------------------------------- //사용자 방문수 insert /* { 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 loginLog = new LoginLog(); loginLog.setLoginIp(ip); loginLog.setCreatDt(mTime); if(null == loginLogService.selectLoginUserLog(loginLog)){ //오늘날짜의 IP조회 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); } }*/ //웹 레이아웃 title 조회 용 메뉴명 조회 ComDefaultVO searchVO1 = new ComDefaultVO(); searchVO1.setSearchKeyword1(request.getRequestURI()); MenuManageVO resultMenuVO = menuManageService.selectMenuManage(searchVO1) ; model.addAttribute("resultMenuVO", resultMenuVO); System.out.println("@@@@@메인페이지종료@@@@@"); return "web/main/mainPage"; } /** * 사용자 상단 매뉴 */ @RequestMapping(value="/web/com/webCommonHeader.do") public String webCommonHeader( @RequestParam Map commandMap, ModelMap model, HttpServletRequest request) throws Exception { //화면 메뉴정보 ComDefaultVO searchVO1 = new ComDefaultVO(); searchVO1.setSearchKeyword1(request.getRequestURI()); MenuManageVO resultMenuVO = menuManageService.selectMenuManage(searchVO1) ; model.addAttribute("resultMenuVO", resultMenuVO); return "web/com/webCommonHeader"; } /** * 사용자 footer */ @RequestMapping(value="/web/com/webCommonFooter.do") public String webCommonFooter( @RequestParam Map commandMap, HttpServletRequest request, ModelMap model) throws Exception { //화면 메뉴정보 // ComDefaultVO searchVO1 = new ComDefaultVO(); // searchVO1.setSearchKeyword1(request.getRequestURI()); // MenuManageVO resultMenuVO = menuManageService.selectMenuManage(searchVO1) ; // model.addAttribute("resultMenuVO", resultMenuVO); 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){ ComDefaultVO searchVO = new ComDefaultVO(); searchVO.setSearchCondition("proFn"); searchVO.setSearchKeyword((String)commandMap.get("proFn")); // MenuManageVO resultVO = menuManageService.selectMenuManage(searchVO) ; loginLog.setProgrmFileNm((String)commandMap.get("proFn")); String menuNm = (String)commandMap.get("menuNm"); if(menuNm != null && !("").equals(menuNm)){ // loginLog.setMenuNm(resultMenuVO.getMenuNm()); loginLog.setMenuNm((String)commandMap.get("menuNm")); } } }else if(commandMap.get("bbsId") != null){ //나머지 모든 게시판 ComDefaultVO searchVO = new ComDefaultVO(); searchVO.setSearchCondition("bbsId"); searchVO.setSearchKeyword((String)commandMap.get("bbsId")); MenuManageVO resultVO = menuManageService.selectMenuManage(searchVO) ; loginLog.setProgrmFileNm((String)commandMap.get("bbsId")); if(resultVO!=null && !("").equals(resultVO.getMenuNm())){ loginLog.setMenuNm(resultVO.getMenuNm()); }else { loginLog.setMenuNm((String)commandMap.get("menuNm")); } }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); return "web/com/webCommonFooter"; } /** * 만족도 import */ @RequestMapping(value="/web/com/webContentResearch.do") public String webContentResearch(@RequestParam Map commandMap , CntManageVO cntManageVO , ResearchVO researchVO , HttpServletRequest request , Model model) throws Exception { // XSS 방지 EgovXSSUtil egovXSSUtil = new EgovXSSUtil(); researchVO.setMcUrl(egovXSSUtil.unscript(researchVO.getMcUrl())); researchVO.setMcTitle(egovXSSUtil.unscript(researchVO.getMcTitle())); if(request.getRequestURI().contains("/web/main/mainPage.do")){//만족도 필요없는화면 return "blank"; } if(request.getRequestURI().contains("/web/content.do")){ //컨텐츠 화면(관리자미리보기/사용자) if(cntManageVO.getCntDtId() != null){ //관리자 미리보기 researchVO = researchService.selectMcUrlByCntDtId(cntManageVO); //CntDtId 으로 이전 MENU_CODE 테이블의 url 조회 if(researchVO ==null){ return "blank"; } model.addAttribute("mcUrl", researchVO.getMcUrl()); model.addAttribute("mcIdx", researchVO.getMcIdx()); model.addAttribute("mcTitle", researchVO.getMcTitle()); model.addAttribute("mcManager", researchVO.getMcManager()); return "web/com/webContentResearch"; }else if(commandMap.get("proFn")==null){ //사용자 화면 return "blank"; } researchVO = researchService.selectMcUrlByProFn(researchVO); //사용자 화면 ProFn 으로 이전 MENU_CODE 테이블의 url 조회 if(researchVO ==null){ return "blank"; } }else if(request.getRequestURI().contains("/web/survey/surveyList")){ //설문조사 화면(사용자) researchVO.setProFn("surveyList"); researchVO = researchService.selectMcUrlByProFn(researchVO); if(researchVO ==null){ return "blank"; } } if(commandMap.get("bbsId") != null){ //나머지 모든 게시판화면(사용자) researchVO.setProFn((String)commandMap.get("bbsId")); researchVO = researchService.selectMcUrlByProFn(researchVO); //게시판 bbsId 로 MENU_CODE 테이블의 url 조회 if(researchVO ==null){ return "blank"; } } if(researchVO==null){ //만족도 컬럼이 등록 안되면 안보이게.... return "blank"; } model.addAttribute("mcUrl", researchVO.getMcUrl()); model.addAttribute("mcIdx", researchVO.getMcIdx()); model.addAttribute("mcTitle", researchVO.getMcTitle()); model.addAttribute("mcManager", researchVO.getMcManager()); return "web/com/webContentResearch"; } /*모바일접속 유무*/ 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; } }