package itn.let.cop.bbs.web; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Random; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.ArrayUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; 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.validation.BindingResult; 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.support.SessionStatus; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springmodules.validation.commons.DefaultBeanValidator; import com.penta.scpdb.ScpDbAgent; import com.sci.v2.pcc.secu.SciSecuManager; import com.sci.v2.pcc.secu.hmac.SciHmac; import NiceID.Check.CPClient; import egovframework.rte.fdl.property.EgovPropertyService; 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 itn.com.cmm.ComDefaultCodeVO; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.EgovMultiPartEmail; import itn.com.cmm.LoginVO; import itn.com.cmm.ReadVO; import itn.com.cmm.UserVO; import itn.com.cmm.service.EgovCmmUseService; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.service.FileVO; import itn.com.cmm.service.ReadService; import itn.com.cmm.util.EgovDoubleSubmitHelper; import itn.com.cmm.util.StringUtil; import itn.com.cmm.util.WebUtil; import itn.com.uss.ion.cnf.service.ProhibitMngService; import itn.com.uss.ion.cnf.service.WordFilterService; import itn.com.uss.ion.cnf.service.WordFilterVO; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.cop.bbs.service.Board; import itn.let.cop.bbs.service.BoardChgHst; import itn.let.cop.bbs.service.BoardMaster; import itn.let.cop.bbs.service.BoardMasterVO; import itn.let.cop.bbs.service.BoardVO; import itn.let.cop.bbs.service.EgovBBSAttributeManageService; import itn.let.cop.bbs.service.EgovBBSManageService; import itn.let.cop.cmt.service.CommentVO; import itn.let.cop.cmt.service.EgovArticleCommentService; import itn.let.mjo.mjocommon.MjonCommon; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.sym.mnu.mpm.service.EgovMenuManageService; import itn.let.sym.mnu.mpm.service.MenuManageVO; import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; import itn.let.sym.site.service.SiteManagerVO; import itn.let.sym.site.service.TermsVO; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; import itn.let.utl.sim.service.EgovClntInfo; import itn.let.utl.user.service.MjonNoticeSendUtil; /** * 게시물 관리를 위한 컨트롤러 클래스 * @author 공통 서비스 개발팀 이삼섭 * @since 2009.03.19 * @version 1.0 * @see * *
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자          수정내용
 *  -------    --------    ---------------------------
 *  2009.03.19  이삼섭          최초 생성
 *  2009.06.29  한성곤	       2단계 기능 추가 (댓글관리, 만족도조사)
 *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
 *
 *  
*/ @Controller public class EgovBBSManageController { @Resource(name = "EgovBBSManageService") private EgovBBSManageService bbsMngService; @Resource(name = "EgovBBSAttributeManageService") private EgovBBSAttributeManageService bbsAttrbService; @Resource(name = "EgovFileMngService") private EgovFileMngService fileMngService; @Resource(name = "EgovFileMngUtil") private EgovFileMngUtil fileUtil; @Resource(name = "propertiesService") protected EgovPropertyService propertyService; @Resource(name = "egovMessageSource") EgovMessageSource egovMessageSource; @Resource(name = "egovMultiPartEmail") private EgovMultiPartEmail egovMultiPartEmail; //문자발송 서비스 @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; @Autowired private DefaultBeanValidator beanValidator; @Value("#{globalSettings['Globals.Site.URL']}") private String SITE_URL; @Resource(name = "EgovCmmUseService") private EgovCmmUseService cmmUseService; /** WordFilterService 필터링 */ @Resource(name = "wordFilterService") private WordFilterService wordFilterService; @Resource(name = "egovSiteManagerService") private EgovSiteManagerService egovSiteManagerService; @Resource(name = "readService") private ReadService readService; /** scriptMngService 금지어 */ @Resource(name = "prohibitMngService") private ProhibitMngService prohibitMngService; @Resource(name = "EgovFileMngService") private EgovFileMngService fileService; /** EgovMenuManageService */ @Resource(name = "meunManageService") private EgovMenuManageService menuManageService; /** 댓글 */ @Resource(name = "EgovArticleCommentService") protected EgovArticleCommentService egovArticleCommentService; /** userManageService */ @Resource(name = "userManageService") private EgovUserManageService userManageService; /** 알림전송 Util */ @Resource(name = "mjonNoticeSendUtil") private MjonNoticeSendUtil mjonNoticeSendUtil; @Resource(name="MjonCommon") private MjonCommon mjonCommon; private static final Logger LOGGER = LoggerFactory.getLogger(EgovBBSManageController.class); //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] bbsExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "제목" , "글쓰기 테스트" , "[코드]"}, {"2", "첨부파일유무" , "유", ""}, {"3", "공개여부" , "공개", ""}, {"4", "작성자" , "홍길동", "[코드]"}, {"5", "조회수" , "2", ""}, {"6", "작성일" , "2019-10-29", ""} } ; /** * XSS 방지 처리. * * @param data * @return */ protected String unscript(String data) { if (data == null || data.trim().equals("")) { return ""; } String ret = data; ret = ret.replaceAll("<(S|s)(C|c)(R|r)(I|i)(P|p)(T|t)", "<script"); ret = ret.replaceAll("", ">"); ret = ret.replaceAll("alert", ""); //ret = ret.replaceAll("iframe", ""); return ret; } /** * 게시물에 대한 목록을 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/selectBoardList.do") public String selectBoardArticles(@ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); BoardMasterVO vo = new BoardMasterVO(); vo.setBbsId(boardVO.getBbsId()); BoardMasterVO master = bbsAttrbService.selectBBSMasterInf(vo); String listNum = ""; if (("BBST05").equals(master.getBbsTyCode())) { listNum = "12"; // 포토형 } else { listNum = master.getListNum(); } boardVO.setPageUnit(Integer.parseInt(listNum)); boardVO.setPageSize(Integer.parseInt(master.getPageNum())); PaginationInfo paginationInfo = new PaginationInfo(); 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.setLoginId(user.getId()); if("".equals(master.getSearchSortCnd())){ //최초조회시 최신것 조회List if("BBSMSTR_000000000528".equals(master.getBbsId())) { //묻고답하기 제외 }else { boardVO.setSearchSortCnd("FRST_REGIST_PNTTM desc, NTT_ID"); boardVO.setSearchSortOrd("desc"); } } // 공지사항 if (("Y").equals(master.getNoticeYn()) && ("").equals(boardVO.getSearchWrd())) { List notifyList = bbsMngService.selectBoardNotifyArticles(boardVO, vo.getBbsAttrbCode()); model.addAttribute("notifyList", notifyList); boardVO.setNoticeAt("N"); //다음에 공지사항 아닌것만 검색 } if (("BBST05").equals(master.getBbsTyCode())) { //재단소식이면 boardVO.setSearchSortCnd("FRST_REGIST_PNTTM desc, NTT_ID"); boardVO.setSearchSortOrd("desc"); } Map map = bbsMngService.selectBoardArticles(boardVO, vo.getBbsAttrbCode()); int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("resultList", map.get("resultList")); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("boardVO", boardVO); model.addAttribute("brdMstrVO", master); model.addAttribute("paginationInfo", paginationInfo); //임시 데이터 이관용 /*String ip = request.getHeader("X-Forwarded-For") == null ? request.getHeader("X-Forwarded-For") : request.getHeader("X-Forwarded-For").replaceAll("10.12.107.11", "").replaceAll(",", "").trim(); if (ip == null) ip = request.getRemoteAddr(); String ddd = ""; if("219.240.88.15".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) { model.addAttribute("Transfer", true ); } System.out.println("---ip----"+ip);*/ return "cop/bbs/EgovNoticeList"; } /** * 게시물을 등록한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/cop/bbs/insertBoardArticle.do" , "/cop/bbs/insertBoardArticleAjax.do"}) public ModelAndView insertBoardArticle(final MultipartHttpServletRequest multiRequest , @ModelAttribute("searchVO") BoardVO boardVO , @ModelAttribute("bdMstr") BoardMasterVO bdMstr , @ModelAttribute("board") Board board , BindingResult bindingResult , ModelMap model , SessionStatus status , RedirectAttributes redirectAttributes , @RequestParam Map commandMap ) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); BoardMasterVO bmvo = new BoardMasterVO(); bmvo.setBbsId(board.getBbsId()); bmvo = bbsAttrbService.selectBBSMasterInf(bmvo); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 관리권한, 사용여부 /*if (bmvo == null || !isBBSAuthFlag(bmvo.getManageAuth(), bmvo.getBbsId(), null)) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); modelAndView.addObject("result", "no_auth"); return modelAndView; }*/ beanValidator.validate(board, bindingResult); if (bindingResult.hasErrors()) { model.addAttribute("bdMstr", bmvo); modelAndView.addObject("result", "no_validate"); return modelAndView; } String atchFileId = ""; String isThumbFile = ""; if (("BBST05").equals(bmvo.getBbsTyCode()) || ("BBST06").equals(bmvo.getBbsTyCode())) isThumbFile = "thumbFile"; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { List result = fileUtil.parseFileInf(files, "BBS_", 0, atchFileId, "", isThumbFile); if(!isPosblAtchFile(result, bmvo, model, 0)) { modelAndView.addObject("result", "no_atchFile"); return modelAndView; } atchFileId = fileMngService.insertFileInfs(result); board.setAtchFileId(atchFileId); } board.setFrstRegisterId(user.getUniqId()); //데이터 이관용 if(null ==board.getNtcrNm() || "".equals(board.getNtcrNm())) { board.setNtcrNm(user.getName()); } board.setBbsId(board.getBbsId()); board.setNttCn(unscript(board.getNttCn())); // XSS 방지 board.setNttCn(board.getNttCn().replace("\r\n", "")); String userIp = EgovClntInfo.getClntIP(multiRequest); board.setNtcrIp(userIp); if(null !=board.getFrstRegisterPnttm() && !"".equals(board.getFrstRegisterPnttm()) ) { board.getFrstRegisterPnttm(); String tempDete = board.getFrstRegisterPnttm().split("-")[0]+board.getFrstRegisterPnttm().split("-")[1]+board.getFrstRegisterPnttm().split("-")[2]; board.setFrstRegisterPnttm(tempDete); } bbsMngService.insertBoardArticle(board); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); modelAndView.addObject("result", "success"); return modelAndView; } /** * 게시물을 등록 미리보기 * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/bbsPreview.do") public String insertBoardArticle(@ModelAttribute("board") Board board, @ModelAttribute("bdMstr") BoardMaster bdMstr, SessionStatus status, ModelMap model, RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); Calendar today = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String day = sdf.format(today.getTime()); board.setFrstRegisterPnttm(day); model.addAttribute("board", board); model.addAttribute("bdMstr", bdMstr); return "cop/bbs/bbsPreview"; } /** * 공지사항, 채용공고 데이터 과기부 연동 * * @param boardVO * @return * @throws Exception */ public String msitShareIn(Board board, String workType) throws Exception { if (1 == 1 ) return "asdf"; LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); String userId = user.getId(); // yu3145 test s if (userId.equals("yu3145")) { // if (1 == 1 ) return "asdf"; URL url; HttpURLConnection conn = null; Date today = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dTime = dateFormat.format(today); // ex)"2014-11-19 17:01:05"; // 요청 시간 (서버의 현재 시간을 입력 해 주세요.) String sPassword = "2fd1cf70fca385b36c6e4296a1afcd2b"; // 암호키 ( 미래창조과학부에서 제공 하는 기관의 암호키로 변경 하세요) : 10자이상 String organCd = "POLAORKR"; // 기관코드 ( 미래창조과학부에서 제공 하는 기관코드 ) String timeKey =""; // 시간키(요청시간) String certKey =""; // 인증키 = MD5(기관코드 + timeKey + 암호키) String bbsId = board.getBbsId(); long nttId = board.getNttId(); String linkUrl = SITE_URL+"/web/cop/bbsWeb/selectBoardArticle.do?bbsId="+bbsId+"&nttId="+nttId; String contentType; timeKey = dTime.replace("-",""); timeKey = timeKey.replace(":",""); timeKey = timeKey.replace(" ",""); // 현재 시간에서 숫자를 제외한 모든 문자를 제거함 (14자리 문자열) long timeKeyInt = ( Long.parseLong(timeKey) + 222222 ) * 2 ; // 제거된 시간을 숫자로 치환수 더하고 곱함 timeKey = Long.toString(timeKeyInt); // 다시 문자열로 치환 : param_01 // MD5 인증키 생성 WebUtil webutil = new WebUtil(); certKey = webutil.MD5(organCd + timeKey + sPassword); // 인증키 ( 기관코드 + 변형된시간 + 암호키) : param_02 // 과기부 컨텐츠 타입 if (("BBSMSTR_000000000018").equals(bbsId)) { // 공지사항 contentType = "NT"; } else if (("BBSMSTR_000000000029").equals(bbsId)) { // 채용공고 contentType = "RE"; } else { contentType = ""; linkUrl = ""; } System.out.println("### msit shareIn: param_01: " + timeKey); System.out.println("### msit shareIn: param_02: " + certKey); System.out.println("### msit shareIn: organCd: " + organCd); System.out.println("### msit shareIn: workType: " + workType); System.out.println("### msit shareIn: contentType: " + contentType); System.out.println("### msit shareIn: board_type: " + bbsId); System.out.println("### msit shareIn: board_cd: " + nttId); System.out.println("### msit shareIn: board_subject: " + board.getNttSj()); System.out.println("### msit shareIn: board_reg_date: " + dTime); System.out.println("### msit shareIn: board_link_url: " + linkUrl); if (1 == 1 ) return "asdf"; try { Map params = new LinkedHashMap<>(); // 파라미터 세팅 params.put("param_01", timeKey); params.put("param_02", certKey); params.put("organ_cd", organCd); params.put("work_type", workType); // I, U, D params.put("content_type", contentType); params.put("board_type", bbsId); params.put("board_cd", nttId); params.put("board_subject", board.getNttSj()); params.put("board_reg_date", dTime); params.put("board_link_url", linkUrl); StringBuilder postData = new StringBuilder(); for(Map.Entry param : params.entrySet()) { if(postData.length() != 0) postData.append('&'); postData.append(URLEncoder.encode(param.getKey(), "UTF-8")); postData.append('='); postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8")); } byte[] postDataBytes = postData.toString().getBytes("UTF-8"); url = new URL("https://www.msit.go.kr/web/shareData/shareIn.do"); conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length)); conn.setDoOutput(true); conn.getOutputStream().write(postDataBytes); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String inputLine; while((inputLine = in.readLine()) != null) { // response 출력 System.out.println("### msit shareIn: " + inputLine); } // 처리결과 Y : 처리완료 , E : 에러 , M : 데이터 누락, O : 시간초과 ,A : 인증실패 in.close(); } catch (Exception e) { System.out.println("과기부연동에러. msit shareIn error"); } finally { if (conn != null) conn.disconnect(); } } // yu3145 test e return ""; } /** * 게시물에 대한 답변 등록을 위한 등록페이지로 이동한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/addReplyBoardArticle.do") public String addReplyBoardArticle(@ModelAttribute("searchVO") BoardVO boardVO, ModelMap model, RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bdMstr = new BoardMasterVO(); bdMstr.setBbsId(boardVO.getBbsId()); bdMstr = bbsAttrbService.selectBBSMasterInf(bdMstr); // 관리권한, 사용여부 /*if (bdMstr == null || ("N").equals(bdMstr.getUseAt()) || !isBBSAuthFlag(bdMstr.getManageAuth(), bdMstr.getBbsId(), null)) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; }*/ //boardVO.setNttSj("[답변]" + boardVO.getNttSj()); boardVO.setNttSj(boardVO.getNttSj()); model.addAttribute("board", boardVO); model.addAttribute("bdMstr", bdMstr); return "cop/bbs/EgovNoticeReply"; } /** * 게시물에 대한 답변을 등록한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/replyBoardArticleAjax.do") public ModelAndView replyBoardArticle(final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("bdMstr") BoardMaster bdMstr, @ModelAttribute("board") Board board, BindingResult bindingResult, ModelMap model, SessionStatus status, RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); BoardMasterVO bmvo = new BoardMasterVO(); bmvo.setBbsId(boardVO.getBbsId()); bmvo = bbsAttrbService.selectBBSMasterInf(bmvo); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 관리권한, 사용여부 /*if (bmvo == null || !isBBSAuthFlag(bmvo.getManageAuth(), bmvo.getBbsId(), null)) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; }*/ beanValidator.validate(board, bindingResult); if (bindingResult.hasErrors()) { model.addAttribute("bdMstr", bmvo); modelAndView.addObject("result", "no_validate"); return modelAndView; } final Map files = multiRequest.getFileMap(); String atchFileId = ""; if (!files.isEmpty()) { List result = fileUtil.parseFileInf(files, "BBS_", 0, "", "", ""); // 파일 사이즈, 개수, 확장자 체크. model에 체크 오류 메세지 set if(!isPosblAtchFile(result, bmvo, model, 0)) { modelAndView.addObject("result", "no_atchFile"); return modelAndView; } atchFileId = fileMngService.insertFileInfs(result); } // 사용자 본인인증값 조회 boardVO.setPlusCount(false); BoardVO vo = bbsMngService.selectBoardArticle(boardVO); board.setMblDn(vo.getMblDn()); board.setAtchFileId(atchFileId); board.setReplyAt("Y"); board.setFrstRegisterId(user.getUniqId()); board.setNtcrNm(user.getName()); board.setNttCn(unscript(board.getNttCn())); // XSS 방지 board.setParnts(Long.toString(boardVO.getNttId())); board.setReplyLc(Integer.toString(Integer.parseInt(boardVO.getReplyLc()) + 1)); board.setNttCn(board.getNttCn().replace("\r\n", "")); String userIp = EgovClntInfo.getClntIP(multiRequest); board.setNtcrIp(userIp); bbsMngService.insertBoardArticle(board); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); //return "redirect:/cop/bbs/selectBoardList.do"; modelAndView.addObject("result", "success"); return modelAndView; } /** * 게시물에 대한 내용을 삭제한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/deleteBoardArticle.do") public String deleteBoardArticle(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("board") Board board, @ModelAttribute("bdMstr") BoardMaster bdMstr, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); board.setLastUpdusrId(user.getUniqId()); board.setLastUpdusrNm(user.getName()); // 변경이력에 사용 String userIp = EgovClntInfo.getClntIP(request); board.setNtcrIp(userIp); bbsMngService.deleteBoardArticle(board); boardVO.setPageIndex(1); //삭제후 첫페이지로 로딩 redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.useN")); return "redirect:/cop/bbs/selectBoardList.do"; } /** * 게시물에 대한 내용을 사용처리한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/updateBoardArticleUseY.do") public String updateBoardArticleUseY(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("board") Board board, @ModelAttribute("bdMstr") BoardMaster bdMstr, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); board.setLastUpdusrId(user.getUniqId()); board.setLastUpdusrNm(user.getName()); // 변경이력에 사용 String userIp = EgovClntInfo.getClntIP(request); board.setNtcrIp(userIp); bbsMngService.updateBoardArticleUseY(board); boardVO.setPageIndex(1); //삭제후 첫페이지로 로딩 redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.useY")); return "redirect:/cop/bbs/selectBoardList.do"; } /** * 템플릿에 대한 미리보기용 게시물 목록을 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/bbsTmplatPreview.do") public String previewBoardArticles(@ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("brdMstrVO") BoardMasterVO brdMstrVO, ModelMap model) throws Exception { String template = boardVO.getSearchWrd(); // 템플릿 URL String viewCnd = boardVO.getSearchCnd(); // 미리보기 목록/상세 구분 brdMstrVO.setTmplatCours(template); model.addAttribute("brdMstrVO", brdMstrVO); if (brdMstrVO.getSearchCnd().equals("detail")) { return "cop/bbs/EgovPreviewTmplatBBSInqire"; } else { return "cop/bbs/EgovPreviewTmplatBBSList"; } } /** * 게시물 등록을 위한 등록페이지로 이동한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/addBoardArticle.do") public String addBoardArticle(@ModelAttribute("searchVO") BoardVO boardVO, ModelMap model ,HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bdMstr = new BoardMasterVO(); bdMstr.setBbsId(boardVO.getBbsId()); bdMstr = bbsAttrbService.selectBBSMasterInf(bdMstr); // 관리권한, 사용여부 LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if(!"ROLE_ADMIN".equals(user.getAuthority())){ //관리자 제외 if (bdMstr == null || ("N").equals(bdMstr.getUseAt()) || !isBBSAuthFlag(bdMstr.getManageAuth(), bdMstr.getBbsId(), null)) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } } //권한조회 하여 flag 값에 세팅ddd bdMstr.setAuthorities(EgovUserDetailsHelper.getAuthorities()); model.addAttribute("bdMstr", bdMstr); model.addAttribute("board", boardVO); //팝업창시작일자(시) model.addAttribute("ntceBgndeHH", getTimeHH()); //팝업창시작일자(분) model.addAttribute("ntceBgndeMM", getTimeMM()); //팝업창종료일자(시) model.addAttribute("ntceEnddeHH", getTimeHH()); //팝업창정료일자(분) model.addAttribute("ntceEnddeMM", getTimeMM()); ComDefaultCodeVO vo = new ComDefaultCodeVO(); //모집상태 vo.setCodeId("ITN015"); model.addAttribute("codeList", cmmUseService.selectCmmCodeDetail(vo)); //임시 데이터 이관용 /*String ip = request.getHeader("X-Forwarded-For") == null ? request.getHeader("X-Forwarded-For") : request.getHeader("X-Forwarded-For").replaceAll("10.12.107.11", "").replaceAll(",", "").trim(); if (ip == null) ip = request.getRemoteAddr(); String ddd = ""; if("219.240.88.15".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) { model.addAttribute("Transfer", true ); }*/ return "cop/bbs/EgovNoticeRegist"; } /** * 게시물에 대한 상세 정보를 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/selectBoardArticle.do") public String selectBoardArticle(@ModelAttribute("searchVO") BoardVO boardVO , ModelMap model , HttpServletRequest request , RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); BoardMasterVO master = new BoardMasterVO(); master.setBbsId(boardVO.getBbsId()); BoardMasterVO masterVo = bbsAttrbService.selectBBSMasterInf(master); // 조회수 증가 여부 지정 boardVO.setPlusCount(true); BoardVO vo = bbsMngService.selectBoardArticle(boardVO); //읽음처리 Insert ReadVO readVO = new ReadVO(); readVO.setReadId(String.valueOf(boardVO.getNttId())); readVO.setLoginId(user.getId()); readVO.setMenuNo("2400000"); // 삭제 및 노 데이터 조회 시 if (vo == null) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("info.nodata.msg")); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); return "redirect:/cop/bbs/selectBoardList.do"; } // 위/아래 게시글 번호, 제목 조회 EgovMap upDownNttid = bbsMngService.getUpDownNttIdNSj(boardVO); if(null != upDownNttid) { model.addAttribute("nextNttIdNSj", upDownNttid.get("nextNttIdNSj")); model.addAttribute("prevNttIdNSj", upDownNttid.get("prevNttIdNSj")); }else { model.addAttribute("nextNttIdNSj", null); model.addAttribute("prevNttIdNSj", null); } model.addAttribute("result", vo); model.addAttribute("brdMstrVO", masterVo); String isTotalPage = request.getParameter("isTotalPage"); if (StringUtil.isEmpty(isTotalPage)) { isTotalPage = "N"; } model.addAttribute("isTotalPage", isTotalPage); return "cop/bbs/EgovNoticeInqire"; } /** * 게시물에 대한 내용을 수정한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/cop/bbs/updateBoardArticle.do" , "/cop/bbs/updateBoardArticleAjax.do"}) public ModelAndView updateBoardArticle(final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("bdMstr") BoardMaster bdMstr, @ModelAttribute("board") Board board, BindingResult bindingResult, ModelMap model, SessionStatus status, RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); BoardMasterVO bmvo = new BoardMasterVO(); bmvo.setBbsId(board.getBbsId()); bmvo = bbsAttrbService.selectBBSMasterInf(bmvo); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 관리권한, 사용여부 /*if (bmvo == null || !isBBSAuthFlag(bmvo.getManageAuth(), bmvo.getBbsId(), null)) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); modelAndView.addObject("result", "no_auth"); return modelAndView; }*/ String atchFileId = boardVO.getAtchFileId(); beanValidator.validate(board, bindingResult); if (bindingResult.hasErrors()) { model.addAttribute("bdMstr", bmvo); modelAndView.addObject("result", "no_validate"); return modelAndView; } String isThumbFile = ""; if (("BBST05").equals(bmvo.getBbsTyCode()) || ("BBST06").equals(bmvo.getBbsTyCode())) isThumbFile = "thumbFile"; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { if ("".equals(atchFileId)) { List result = fileUtil.parseFileInf(files, "BBS_", 0, atchFileId, "", isThumbFile); if(!isPosblAtchFile(result, bmvo, model, 0)) { modelAndView.addObject("result", "no_atchFile"); return modelAndView; } atchFileId = fileMngService.insertFileInfs(result); board.setAtchFileId(atchFileId); } else { FileVO fvo = new FileVO(); fvo.setAtchFileId(atchFileId); int cnt = fileMngService.getMaxFileSN(fvo); List result = fileUtil.parseFileInf(files, "BBS_", cnt, atchFileId, "", isThumbFile); /*if(!isPosblAtchFile(result, bmvo, model, board.getAtchFileCnt())) { if(multiRequest.getServletPath().equals("/cop/bbs/updateBoardArticleAjax.do")) { modelAndView.addObject("result", "fail"); modelAndView.addObject("failMessage", model.get("message")); return modelAndView; } model.addAttribute("bdMstr", bmvo); modelAndView.addObject("result", "no_atchFile"); return modelAndView; }*/ fileMngService.updateFileInfs(result); } } board.setLastUpdusrId(user.getUniqId()); board.setNttCn(unscript(board.getNttCn())); // XSS 방지 board.setLastUpdusrNm(user.getName()); // 변경이력에 사용 board.setNttCn(board.getNttCn().replace("\r\n", "")); String userIp = EgovClntInfo.getClntIP(multiRequest); board.setNtcrIp(userIp); if(null !=board.getFrstRegisterPnttm() && !"".equals(board.getFrstRegisterPnttm()) ) { board.getFrstRegisterPnttm(); String tempDete = board.getFrstRegisterPnttm().split("-")[0]+board.getFrstRegisterPnttm().split("-")[1]+board.getFrstRegisterPnttm().split("-")[2]; board.setFrstRegisterPnttm(tempDete); } bbsMngService.updateBoardArticle(board); // 공지사항, 채용공고 과기부 연동 if (("BBSMSTR_000000000018").equals(board.getBbsId()) || ("BBSMSTR_000000000029").equals(board.getBbsId())) { msitShareIn(board, "U"); // 실서버에서만 테스트 } redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); modelAndView.addObject("result", "success"); return modelAndView; } /** * 게시물 수정을 위한 수정페이지로 이동한다. * * @param boardVO * @param vo * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/forUpdateBoardArticle.do") public String forUpdateBoardArticle(@ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO masterVO = new BoardMasterVO(); masterVO.setBbsId(boardVO.getBbsId()); BoardMasterVO bmvo = bbsAttrbService.selectBBSMasterInf(masterVO); bmvo.setAuthorities(EgovUserDetailsHelper.getAuthorities()); BoardVO bdvo = bbsMngService.selectBoardArticle(boardVO); if(null == bdvo.getPubLinkTxt() || "".equals(bdvo.getPubLinkTxt())){ //게시판명이 없으면 bdvo.setPubLinkTxt(bdvo.getPubLink()); } if(bdvo.getAtchFileId() !=null) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bdvo.getAtchFileId()); List fileList = fileService.selectFileInfs(fileVO); model.addAttribute("fileList", fileList); } model.addAttribute("board", bdvo); model.addAttribute("bdMstr", bmvo); //팝업창시작일자(시) model.addAttribute("ntceBgndeHH", getTimeHH()); //팝업창시작일자(분) model.addAttribute("ntceBgndeMM", getTimeMM()); //팝업창종료일자(시) model.addAttribute("ntceEnddeHH", getTimeHH()); //팝업창정료일자(분) model.addAttribute("ntceEnddeMM", getTimeMM()); ComDefaultCodeVO vo = new ComDefaultCodeVO(); //모집상태 vo.setCodeId("ITN015"); model.addAttribute("codeList", cmmUseService.selectCmmCodeDetail(vo)); //임시 데이터 이관용 String ip = request.getHeader("X-Forwarded-For") == null ? request.getHeader("X-Forwarded-For") : request.getHeader("X-Forwarded-For").replaceAll("10.12.107.11", "").replaceAll(",", "").trim(); if (ip == null) ip = request.getRemoteAddr(); if("219.240.88.15".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) { model.addAttribute("Transfer", true ); } return "cop/bbs/EgovNoticeUpdt"; } /** * 게시판 관리 권한 여부 체크 * @param manageAuth 게시판 관리권한 * @param bbsId 게시판ID * @return boolean * @throws Exception */ private boolean isBBSAuthFlag(String manageAuth, String bbsId, List mngIdList) throws Exception { boolean authFlag = false; List authorities = EgovUserDetailsHelper.getAuthorities(); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); // 게시판 관리권한 체크 for (String authority : authorities) { if (authority.equals(manageAuth)) authFlag = true; } // 게시판 관리자 체크 if (!authFlag) { BoardMaster vo = new BoardMaster(); vo.setBbsId(bbsId); if (mngIdList == null) mngIdList = (List)bbsAttrbService.selectBBSMngIdList(vo); int mngYn = 0; for(int i = 0; i < mngIdList.size(); i++) { String emplyrId = (String) mngIdList.get(i).get("emplyrId"); if (emplyrId.equals(user.getId())) mngYn++; } if (mngYn != 0) authFlag = true; if(mngIdList.size() == 0 ) { //관리자 등록 안 되어 있으면 모두 사용가능 authFlag = true; } } return authFlag; } /** * 첨부파일 개수, 사이즈, 확장자 체크 * @param fileList 파일리스트 * @param boardMasterVO 게시판마스터 * @param atchFileCnt 업로드된 파일 수 * @return boolean * @return 체크 오류 메세지 model 'flashMessage' 에 set * @throws Exception */ private boolean isPosblAtchFile(List fileList, BoardMaster boardMaster, ModelMap model, int atchFileCnt) throws Exception { int fileCnt = 0; long posblAtchFileSize = Long.parseLong(boardMaster.getPosblAtchFileSize()) * 1024 * 1024 ; int posblAtchFileNumber = Integer.parseInt(boardMaster.getPosblAtchFileNumber()); String bbsTyCode = boardMaster.getBbsTyCode(); String flashMessage = ""; boolean posblAtchFileFlag = true; boolean posblAtchFileSizeFlag = true; boolean posblAtchFileExtFlag = true; Iterator iter = fileList.iterator(); while (iter.hasNext()) { FileVO vo = (FileVO) iter.next(); long fileMg = Long.parseLong(vo.getFileMg()); String fileExt = vo.getFileExtsn(); if (fileMg > posblAtchFileSize) posblAtchFileSizeFlag = false; if (("BBST05").equals(bbsTyCode) || ("BBST06").equals(bbsTyCode)) { String[] imgExts = {"gif", "jpg", "bmp", "jpeg", "png"}; if (ArrayUtils.indexOf(imgExts, fileExt.toLowerCase()) == -1) posblAtchFileExtFlag = false; } fileCnt++; } if (!posblAtchFileExtFlag) { flashMessage += "이미지 형식의 확장자만 업로드 가능합니다." + "\\n"; posblAtchFileFlag = false; } if(!posblAtchFileSizeFlag) { flashMessage += "파일사이즈가 초과되었습니다. 최대크기 " + posblAtchFileSize + "mb" + "\\n"; posblAtchFileFlag = false; } if ((fileCnt+atchFileCnt) > posblAtchFileNumber) { flashMessage += "파일 개수가 초과되었습니다. 최대개수 " + posblAtchFileNumber + "개" + "\\n"; posblAtchFileFlag = false; } if (!posblAtchFileFlag) model.addAttribute("message", flashMessage); return posblAtchFileFlag; } /** * 게시물 변경 이력에 대한 목록을 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @SuppressWarnings("unchecked") @RequestMapping("/cop/bbs/selectBoardChgHstList.do") public String selectBoardChgHstList(@ModelAttribute("boardChgHst") BoardChgHst boardChgHst, ModelMap model) throws Exception { boardChgHst.setPageUnit(propertyService.getInt("pageUnit")); boardChgHst.setPageSize(propertyService.getInt("pageSize")); PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(boardChgHst.getPageIndex()); paginationInfo.setRecordCountPerPage(boardChgHst.getPageUnit()); paginationInfo.setPageSize(boardChgHst.getPageSize()); boardChgHst.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardChgHst.setLastIndex(paginationInfo.getLastRecordIndex()); boardChgHst.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); Map map = bbsMngService.selectBoardChgHsts(boardChgHst); int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); // 내용에 html 제거 List list = (List) map.get("resultList"); for (BoardChgHst vo : list) { vo.setNttCn(StringUtil.stripTag(vo.getNttCn())); } model.addAttribute("resultList", map.get("resultList")); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); return "cop/bbs/EgovNoticeChgHstList"; } /** * 게시물 변경이력에 대한 상세 정보를 조회한다. * * @param boardChgHst * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/selectBoardChgHst.do") public String selectBoardChgHst(@ModelAttribute("boardChgHst") BoardChgHst boardChgHst, ModelMap model , RedirectAttributes redirectAttributes) throws Exception { BoardChgHst vo = bbsMngService.selectBoardChgHst(boardChgHst); model.addAttribute("result", vo); return "cop/bbs/EgovNoticeChgHstInqire"; } /** * 선택된 게시물에 대한 내용을 삭제한다. * @param nttIds String * @param boardVO BoardVO * @return String * @exception Exception */ @RequestMapping(value = "/cop/bbs/deleteBoardArticles.do") public String deleteBoardArticles(HttpServletRequest request, @RequestParam("nttIds") String nttIds, @ModelAttribute("BoardVO") BoardVO boardVO, RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); boardVO.setLastUpdusrId(user.getUniqId()); boardVO.setLastUpdusrNm(user.getName()); // 변경이력에 사용 String userIp = EgovClntInfo.getClntIP(request); boardVO.setNtcrIp(userIp); String[] strNttIds = nttIds.split(";"); for (int i = 0; i < strNttIds.length; i++) { String[] strNttIdNAtchFileId = strNttIds[i].split("\\|"); boardVO.setNttId(Integer.parseInt(strNttIdNAtchFileId[0])); if (strNttIdNAtchFileId.length > 1) boardVO.setAtchFileId(strNttIdNAtchFileId[1]); bbsMngService.deleteBoardArticle(boardVO); } // 공지사항, 채용공고 과기부 연동 if (("BBSMSTR_000000000018").equals(boardVO.getBbsId()) || ("BBSMSTR_000000000029").equals(boardVO.getBbsId())) { msitShareIn(boardVO, "D"); // 실서버에서만 테스트 } boardVO.setPageIndex(1); //삭제후 첫페이지로 로딩 redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); return "redirect:/cop/bbs/selectBoardList.do"; } /** * 선택된 게시물 메인화면 폴라스토리 첫번째 게시물 등록 * @param nttIds String * @param boardVO BoardVO * @return String * @exception Exception */ @RequestMapping(value = "/cop/bbs/mainPolaImgUpdate.do") public String mainPolaImgUpdate(HttpServletRequest request, @RequestParam("nttIds") String nttIds, @ModelAttribute("BoardVO") BoardVO boardVO, RedirectAttributes redirectAttributes) throws Exception { String[] strNttIdNAtchFileId = nttIds.split("\\|"); boardVO.setNttId(Integer.parseInt(strNttIdNAtchFileId[0])); bbsMngService.updateMainPolaImg(boardVO); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); return "redirect:/cop/bbs/selectBoardList.do"; } /** * 사용자 게시글 등록 시 해당 게시판 관리자에게 메일 전송 * @param mailAddres 메일 주소 * @param bbsId 게시판ID * @param nttId 게시글ID * @param bbsNm 게시판 명 * @return boolean * @throws Exception */ private void sendBBSInsertMail(String mailAddres, String bbsId, long nttId, String bbsNm, String nttSj) throws Exception { try { String mailSj = "우체국물류지원단 홈페이지 \'" + bbsNm + "\' 게시판에 사용자 게시글이 등록되었습니다."; String htmlMsg = ""; htmlMsg += "\'" + bbsNm + "\' 게시판에 사용자 게시글이 등록되었습니다."; htmlMsg += "

제목: " + nttSj; htmlMsg += "
링크: 게시물"; htmlMsg += "

우체국물류지원단 시스템관리자"; htmlMsg += ""; // test /*mailAddres = "yu3145@iten.co.kr"; mailAddres = "kerinet@iten.co.kr" ; mailAddres = "fruit@pola.or.kr" ;*/ egovMultiPartEmail.send(mailAddres, mailSj, "", htmlMsg); // egovMultiPartEmail.send(mailAddres, mailSj", mgs); // Simple Text Mail method } catch (Exception ex) { LOGGER.error("Sending Mail Exception : {} [unknown Exception]", ex.getCause()); LOGGER.debug(ex.getMessage()); } } /** * @@@@@@@@@@@@@@@@@@@@@@@@@@@@사용자 */ /** * (사용자)본인 인증 처리 Test * * @param boardVO * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/bbs/authenticationResult.do") public String authenticationResult(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model ,RedirectAttributes redirectAttributes) throws Exception { UserVO userVO = new UserVO(); String nameEn = (String)request.getParameter("nameEn"); switch (nameEn) { case "yu1" : userVO.setName("홍현준"); userVO.setMblDn("1111"); break; case "yu2" : userVO.setName("김현준"); userVO.setMblDn("2222"); break; case "yu3" : userVO.setName("박현준"); userVO.setMblDn("3333"); break; } request.getSession().setAttribute("userVO", userVO); String url = (String)request.getSession().getAttribute("url"); BoardVO searchVO = (BoardVO)request.getSession().getAttribute("searchVO"); redirectAttributes.addAttribute("pageIndex", searchVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", searchVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", searchVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", searchVO.getBbsId()); redirectAttributes.addAttribute("nttId", searchVO.getNttId()); return "redirect:" + url; } /** * (사용자)게시물에 대한 목록을 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/cop/bbsWeb/selectBoardList.do" , "/web/cop/bbsWeb/selectMoreListAjax.do"}) public String selectBoardArticlesWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model ,RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } // 신고게시판 여부 if (("BBST02").equals(bmVO.getBbsTyCode()) || ("BBST03").equals(bmVO.getBbsTyCode())) { // 신고게시판 인트로 화면 구분 if (("Y").equals(boardVO.getReportIntroYn())) { redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); return "redirect:/web/cop/selfauth/reportIntro.do"; } if (userVO != null) { // 사용자 인증 boardVO.setMblDn(userVO.getMblDn()); // 사용자 인증 키. 본인글만 조회 } else { // 인증 필요 request.getSession().setAttribute("searchVO", boardVO); request.getSession().setAttribute("url", "/web/cop/bbsWeb/selectBoardList.do"); return "redirect:/web/cop/selfauth/authentication.do"; } } boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if (("BBST05").equals(bmVO.getBbsTyCode())){ //사진게시판 8개씩 9개조회후 9개면 더보기 boardVO.setRecordCountPerPage(8); //리스트 수 boardVO.setFirstIndex( (boardVO.getPageIndex()-1)*8); //offset paginationInfo.setRecordCountPerPage(boardVO.getRecordCountPerPage()); //웹 접근성 획득 후 롤백 } if(!"9410000".equals(bmVO.getMenuNo())) { boardVO.setParntScttNo("0"); //질문글만 가져오기(데이터 이관 숫자 틀려서 질문도 가져옴:공지사항) } // 공지사항 if (("Y").equals(bmVO.getNoticeYn())) { List notifyList = bbsMngService.selectBoardNotifyArticles(boardVO, null); model.addAttribute("notifyList", notifyList); boardVO.setNoticeAt("N"); //다음에 공지사항 아닌것만 검색 } if("BBST05".equals(bmVO.getBbsTyCode())){ //재단소식 boardVO.setSearchSortCnd("FRST_REGIST_PNTTM"); boardVO.setSearchSortOrd("desc"); } Map map = bbsMngService.selectBoardArticlesWeb(boardVO, null); int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; int day = cal.get(Calendar.DAY_OF_MONTH); SimpleDateFormat t1 = new SimpleDateFormat("yyyyMMdd"); String nowTime = t1.format(cal.getTime()); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); if("9470000".equals(bmVO.getMenuNo())){ //인재채용시 String tempYmd = ""; if(null != bvo.getNtceBgnde() && !"".equals(bvo.getNtceBgnde())) { //모집기간 요일 추가하여 txt로 변환 tempYmd = bvo.getNtceBgnde().substring(0,4)+"-"+ bvo.getNtceBgnde().substring(4,6)+"-"+ bvo.getNtceBgnde().substring(6,8); tempYmd = tempYmd+"("+getDateDay(tempYmd , "yyyy-MM-dd")+")" ; tempYmd = tempYmd + " "+bvo.getNtceBgnde().substring(8,10) +":"+bvo.getNtceBgnde().substring(10,12) ; bvo.setNtceBgndeView(tempYmd); if(Integer.parseInt(nowTime) > Integer.parseInt(bvo.getNtceEndde().substring(0,8)) ) { bvo.setSeCd("09"); } } if(null != bvo.getNtceEndde() && !"".equals(bvo.getNtceEndde())) { tempYmd = bvo.getNtceEndde().substring(0,4)+"-"+ bvo.getNtceEndde().substring(4,6)+"-"+ bvo.getNtceEndde().substring(6,8); tempYmd = tempYmd+"("+getDateDay(tempYmd , "yyyy-MM-dd")+")" ; tempYmd = tempYmd + " "+bvo.getNtceEndde().substring(8,10) +":"+bvo.getNtceEndde().substring(10,12) ; bvo.setNtceEnddeView(tempYmd); } } } PaginationInfo paginationInfoMobile = new PaginationInfo(); paginationInfoMobile.setCurrentPageNo(paginationInfo.getCurrentPageNo()); paginationInfoMobile.setTotalRecordCount(paginationInfo.getTotalRecordCount()); paginationInfoMobile.setPageSize(5); paginationInfoMobile.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("boardVO", boardVO); model.addAttribute("brdMstrVO", bmVO); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("paginationInfoMobile", paginationInfoMobile); if("BBST08".equals(bmVO.getBbsTyCode())){ //인재채용 게시판경우 ComDefaultCodeVO vo = new ComDefaultCodeVO(); //모집상태 vo.setCodeId("ITN015"); model.addAttribute("codeList", cmmUseService.selectCmmCodeDetail(vo)); } if("BBST05".equals(bmVO.getBbsTyCode())){ //재단소식 포토게시판 if(resultList.size()>8) { //더보기 더튼 추가 model.addAttribute("more", true); }else { model.addAttribute("more", false); } if("/web/cop/bbsWeb/selectMoreListAjax.do".equals(request.getRequestURI())) { //더보기 return "web/cop/bbs/EgovNoticePhotoListAjax"; } return "web/cop/bbs/EgovNoticePhotoList"; //메인 } if("9540000".equals(bmVO.getMenuNo())){ //개인정보처리방침의 경우 자세히 보기 pdf 파일과 제목가져오기 if(resultList.size() > 0 ){ model.addAttribute("pdfFileId", ((BoardVO)resultList.get(0)).getAtchFileId()); model.addAttribute("pdfSj", ((BoardVO)resultList.get(0)).getNttSj()); } } return "web/cop/bbs/EgovNoticeList"; } /*nice체크 오프너로 이용*/ @RequestMapping("/web/cop/bbs/niceCheckAjax.do") public String niceCheckWeb(HttpServletRequest request, @RequestParam Map commandMap, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , HttpSession session ) throws Exception { String niceMessage = niceCheck(request, session, boardVO).getNiceMessage(); System.out.println("niceMessage --- " + niceMessage) ; if("".equals(niceMessage)) { //정상의 경우 세션 생성 후 오프너 close UserVO tempVO = new UserVO(); tempVO.setMblDn(damoEnc(boardVO.getMblDn(), request)); //DI암호화 tempVO.setName(boardVO.getNiceNm()); request.getSession().setAttribute("userVO", tempVO); } return "web/cop/selfauth/niceCheckAjax"; } /** * (사용자)게시물 등록을 위한 등록페이지로 이동한다. * * @param boardVO * @param model * @return * @throws Exception */ @RequestMapping(value={"/web/cop/bbs/addQnaBoardArticle.do","/web/cop/bbs/addSuggestBoardArticle.do"}) public String addQnaBoardArticleWeb(HttpServletRequest request, @RequestParam Map commandMap, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , HttpSession session, RedirectAttributes redirectAttributes ) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); String userId = user == null ? "" : EgovStringUtil.isNullToString(user.getId()); if("".equals(userId)) { return "redirect:/web/user/login/login.do"; } MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setMberId(user.getId()); mberManageVO = bbsMngService.selectboardArticleWebQnaMberInfo(mberManageVO); BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setUrl("/web/cop/bbs/SuggestList.do"); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(bmVO); bmVO.setBbsId(boardMenuList.get(0).getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); /*UserVO userVO = new UserVO(); if(null != request.getSession().getAttribute("userVO")) { //세션체크 userVO = ((UserVO)request.getSession().getAttribute("userVO")); boardVO.setMblDn(userVO.getMblDn()); boardVO.setNtcrNm(userVO.getName()); }else { if("9530000".equals(bmVO.getMenuNo())) { //묻고답하기 return "redirect:/web/cop/selfauth/authentication.do?bbsId="+boardVO.getBbsId(); } }*/ /*if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; }*/ // 공통코드 Set /*setBBSCommCd(model, bmVO);*/ model.addAttribute("mberManageVO", mberManageVO); model.addAttribute("brdMstrVO", bmVO); model.addAttribute("board", boardVO); model.addAttribute("suggestBbsId", boardMenuList.get(0).getBbsId()); //최대 첨부파일 갯수 지정 //model.addAttribute("posAtchFileNum", "1"); String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; if(pattern.equals("/web/cop/bbs/addSuggestBoardArticle.do")){ // 불편신고 model.addAttribute("boardType", "suggest"); } // NEW // 공통 List resultList = new ArrayList(); // 이용약관, 개인정보보호방침 최신버전 List TermsVO termsVO3 = new TermsVO(); termsVO3.setFirstIndex(0); termsVO3.setRecordCountPerPage(1); termsVO3.setSearchDiv("03"); termsVO3.setSearchUseYn("Y"); termsVO3.setSearchSortCnd("effectDate"); termsVO3.setSearchSortOrd("desc"); List termsMastList2 = egovSiteManagerService.selectTermsMastMngList(termsVO3); if (termsMastList2.size() > 0) { TermsVO termsVO4 = new TermsVO(); termsVO4.setFirstIndex(0); termsVO4.setRecordCountPerPage(20); termsVO4.setTermsMastNo(termsMastList2.get(0).getTermsMastNo()); termsVO4.setSearchUseYn("Y"); termsVO4.setSearchSortCnd("sort"); termsVO4.setSearchSortOrd("ASC"); resultList = egovSiteManagerService.selectTermsSubMngList(termsVO4); } model.addAttribute("resultList", resultList); return "web/cop/bbs/EgovNoticeRegist"; } /** * (사용자)게시물 등록을 위한 등록페이지로 이동한다.(문자온 묻고답하기) * * @param boardVO * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/bbs/addBoardArticle.do") public String addBoardArticleWeb(HttpServletRequest request, @RequestParam Map commandMap, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , HttpSession session, BoardMasterVO brdMstrVO , RedirectAttributes redirectAttributes ) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); String userId = user == null ? "" : EgovStringUtil.isNullToString(user.getId()); if("".equals(userId)) { return "redirect:/web/user/login/login.do"; } MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setMberId(user.getId()); mberManageVO = bbsMngService.selectboardArticleWebQnaMberInfo(mberManageVO); /*if(null != request.getSession().getAttribute("userVO")) { //세션체크 userVO = ((UserVO)request.getSession().getAttribute("userVO")) ; boardVO.setMblDn(userVO.getMblDn()); boardVO.setNtcrNm(userVO.getName()); }else { return "redirect:/web/cop/bbs/QnaList.do"; }*/ /*LoginVO loginvo = new LoginVO(); if(null != request.getSession().getAttribute("LoginVO")) { loginvo = ((LoginVO)request.getSession().getAttribute("LoginVO")); System.out.println(loginvo.getName()); boardVO.setNtcrNm(loginvo.getName()); }*/ //묻고답하기의 게시판들 가져오기 BoardMasterVO tempBoardMasterVO = new BoardMasterVO(); tempBoardMasterVO.setUrl("/web/cop/bbs/QnaList.do"); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(tempBoardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(tempBoardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){ tempBoardMasterVO.setViewsYn("N"); break ; } } model.addAttribute("mberManageVO", mberManageVO); model.addAttribute("boardMenuList", boardMenuList); model.addAttribute("brdMstrVO", brdMstrVO); /*for(BoardMasterVO tempMasterVO : boardMenuList ) { tempMasterVO.setBbsNm(tempMasterVO.getBbsNm().split("\\(")[1].split("\\)")[0]) ; }*/ model.addAttribute("board", boardVO); //최대 첨부파일 갯수 지정 // NEW // 공통 List resultList = new ArrayList(); // 이용약관, 개인정보보호방침 최신버전 List TermsVO termsVO3 = new TermsVO(); termsVO3.setFirstIndex(0); termsVO3.setRecordCountPerPage(1); termsVO3.setSearchDiv("03"); termsVO3.setSearchUseYn("Y"); termsVO3.setSearchSortCnd("effectDate"); termsVO3.setSearchSortOrd("desc"); List termsMastList2 = egovSiteManagerService.selectTermsMastMngList(termsVO3); if (termsMastList2.size() > 0) { TermsVO termsVO4 = new TermsVO(); termsVO4.setFirstIndex(0); termsVO4.setRecordCountPerPage(20); termsVO4.setTermsMastNo(termsMastList2.get(0).getTermsMastNo()); termsVO4.setSearchUseYn("Y"); termsVO4.setSearchSortCnd("sort"); termsVO4.setSearchSortOrd("ASC"); resultList = egovSiteManagerService.selectTermsSubMngList(termsVO4); } model.addAttribute("resultList", resultList); return "web/cop/bbs/EgovNoticeRegist"; } /** * (사용자)본인인증 안내 화면 * * @param * @return * @throws Exception */ @RequestMapping("/web/cop/selfauth/authentication.do") public String authentication(HttpServletRequest request, ModelMap model , @RequestParam Map commandMap, @ModelAttribute("searchVO") BoardVO boardVO) throws Exception { boardVO.setNiceSuccUrl(request.getRequestURL().toString().split("selfauth")[0]+"bbs/niceCheckAjax.do"); boardVO.setNiceFailUrl(request.getRequestURL().toString()); model.addAttribute("boardVO", boardVO); return "web/cop/selfauth/authentication"; } /** * (사용자)신고게시판 안내 화면 * * @param * @return * @throws Exception */ @RequestMapping("/web/cop/selfauth/reportIntro.do") public String reportIntro(@ModelAttribute("searchVO") BoardVO boardVO, ModelMap model, RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } model.addAttribute("brdMstrVO", bmVO); return "web/cop/selfauth/reportIntro"; } /** * (사용자)글쓰기 권한 없으면 비번 입력란 보이게... * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/cop/bbsWeb/selectBoardChkDetailAjax"} ) public ModelAndView selectBoardChkDetailAjax(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); LoginVO loginVO = new LoginVO(); if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) { //최고 관리자면 바로수정 loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if("ROLE_ADMIN".equals(loginVO.getAuthority())){ model.addAttribute("mblDnFlag", true); return modelAndView; }else { //일반관리자 bmVO.setBbsMngId(loginVO.getId()); if( bbsAttrbService.selectBBSMngInfCnt(bmVO) > 0 ) { //게시판 관리자 조회 model.addAttribute("mblDnFlag", true); return modelAndView; } } } bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); UserVO userVO = new UserVO(); if(request.getSession().getAttribute("userVO") != null){ userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(userVO.getMblDn().equals(bdVO.getMblDn())){ model.addAttribute("mblDnFlag", true); }else { model.addAttribute("mblDnFlag", false); } }else { model.addAttribute("mblDnFlag", false); } return modelAndView; } /** * (사용자)게시물에 대한 상세 정보를 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/cop/bbsWeb/selectBoardArticle.do" , "/web/cop/bbsWeb/selectBoardDetail.do", "/web/cop/bbs/NewsDetail.do", "/web/cop/bbs/LibDetail.do", "/web/cop/bbs/BussRealDetail.do", "/web/cop/bbs/QnaDetail.do", "/web/cop/bbs/SuggestDetail.do", "/web/cop/bbs/PubOperDetail.do", "/web/contentBbsDetail.do" //"/web/cop/bbs/EventDetail.do" } ) public String selectBoardArticleWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, BoardMasterVO masterVO, ModelMap model, @RequestParam Map commandMap, RedirectAttributes redirectAttributes) throws Exception { //XSS 태그 필터링 처리 boardVO.setBbsId(unscript(boardVO.getBbsId())); boardVO.setSeCmmnCdId(unscript(boardVO.getSeCmmnCdId())); boardVO.setFrstRegisterId(unscript(boardVO.getFrstRegisterId())); boardVO.setSearchBgnDe(unscript(boardVO.getSearchBgnDe())); boardVO.setSearchEndDe(unscript(boardVO.getSearchEndDe())); boardVO.setSearchSortCnd(unscript(boardVO.getSearchSortCnd())); boardVO.setSearchSortOrd(unscript(boardVO.getSearchSortOrd())); boardVO.setSearchCnd(unscript(boardVO.getSearchCnd())); boardVO.setSearchWrd(unscript(boardVO.getSearchWrd())); BoardMasterVO bmVO = new BoardMasterVO(); if("".equals(boardVO.getBbsId())) { //검색에서 조회시 nttid로 마스터 조회 bmVO = bbsAttrbService.selectBbsIdByNttId(boardVO); if (bmVO == null) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } boardVO.setBbsId(bmVO.getBbsId()); }else { bmVO.setBbsId(boardVO.getBbsId()); } bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); if("/web/cop/bbs/NewsDetail.do".equals(request.getRequestURI()) || "/web/contentBbsDetail.do".equals(request.getRequestURI())) { //원자력소식 수정삭제등록 없음. bmVO.setWebChgYn("N"); model.addAttribute("masterVO", masterVO); } BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } {//묻고답하기 권한체크 boolean passChk = false; if("9530000".equals(bmVO.getMenuNo())) { LoginVO loginVO = new LoginVO(); if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) { //최고 관리자면 바로수정 loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if("ROLE_ADMIN".equals(loginVO.getAuthority())){ passChk = true; }else { //일반관리자 bmVO.setBbsMngId(loginVO.getId()); if( bbsAttrbService.selectBBSMngInfCnt(bmVO) > 0 ) { //게시판 관리자 조회 passChk = true; } } }else{//방문자 세션있는방문자 UserVO userVO = new UserVO(); if(request.getSession().getAttribute("userVO") != null) { userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(userVO.getMblDn().equals(bdVO.getMblDn())) { passChk = true; } } } if(!"T".equals(bdVO.getSecretAt())){ if(!passChk){ if("".equals(boardVO.getPassword())) { redirectAttributes.addFlashAttribute("message", "패스워드를 넣어주세요"); return "redirect:/web/cop/bbs/QnaList.do"; }else { if(!damoDec(bdVO.getPassword(), request).equals(boardVO.getPassword())) { redirectAttributes.addFlashAttribute("message", "패스워드가 맞지 않습니다."); if("9530000".equals(bmVO.getMenuNo())) { return "redirect:/web/cop/bbs/QnaList.do"; }else { return "redirect:/web/cop/bbsWeb/selectBoardList.do?bbsId="+boardVO.getBbsId(); } } } } } } } // 조회수 증가 여부 지정 boardVO.setPlusCount(true); bbsMngService.updateBoardArticleInqireCo(boardVO); boardVO.setMblDn(bdVO.getMblDn()); // 위/아래 게시글 번호, 제목 조회 if("/web/cop/bbs/QnaDetail.do".equals(request.getRequestURI())){ LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userUniqId = user == null ? "" : EgovStringUtil.isNullToString(user.getUniqId()); boardVO.setFrstRegisterId(userUniqId); } EgovMap upDownNttid = bbsMngService.getUpDownNttIdNSj(boardVO); //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO resultBbsMsInfo = bbsAttrbService.selectBBSMasterInf(searchVO); //답변글 리스트 if(bdVO.getAnswerCnt() > 0) { List answerList = bbsMngService.selectBoardAnswerList(bdVO); model.addAttribute("answerList", answerList); } model.addAttribute("nextNttIdNSj", upDownNttid.get("nextNttIdNSj")); model.addAttribute("prevNttIdNSj", upDownNttid.get("prevNttIdNSj")); model.addAttribute("result", bdVO); model.addAttribute("brdMstrVO", bmVO); model.addAttribute("resultBbsMsInfo", resultBbsMsInfo); CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); //게시판ID commentVO.setNttId(boardVO.getNttId()); //게시글ID //댓글 조회 List resultList = egovArticleCommentService.selectArticleCommentListAll(commentVO); int totCnt = resultList.size(); model.addAttribute("resultCnt", totCnt); model.addAttribute("resultList", resultList); if("BBST05".equals(bmVO.getBbsTyCode())){ //이벤트 포토게시판 if(bdVO.getAtchFileCnt() > 0 ) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bdVO.getAtchFileId()); List result = fileService.selectImageFileList(fileVO); model.addAttribute("fileList", result); } return "web/cop/bbs/EgovNoticePhotoInqire"; } if("Y".equals(masterVO.getTabBbsId())){ model.addAttribute("PubDetail", true); } System.out.println("boardVO.toString()"); System.out.println(boardVO.toString()); return "web/cop/bbs/EgovNoticeInqire"; } /** * (사용자)게시물에 대한 상세 정보를 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= { "/web/cop/bbs/NoticeDetail.do" } ) public String selectBoardNoticeDetailWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, BoardMasterVO masterVO, ModelMap model, @RequestParam Map commandMap, RedirectAttributes redirectAttributes) throws Exception { //XSS 태그 필터링 처리 boardVO.setBbsId(unscript(boardVO.getBbsId())); boardVO.setSeCmmnCdId(unscript(boardVO.getSeCmmnCdId())); boardVO.setFrstRegisterId(unscript(boardVO.getFrstRegisterId())); boardVO.setSearchBgnDe(unscript(boardVO.getSearchBgnDe())); boardVO.setSearchEndDe(unscript(boardVO.getSearchEndDe())); boardVO.setSearchSortCnd(unscript(boardVO.getSearchSortCnd())); boardVO.setSearchSortOrd(unscript(boardVO.getSearchSortOrd())); boardVO.setSearchCnd(unscript(boardVO.getSearchCnd())); boardVO.setSearchWrd(unscript(boardVO.getSearchWrd())); BoardMasterVO bmVO = new BoardMasterVO(); //선택된 카테고리가 없는 경우 if("".equals(boardVO.getBbsId())) { //검색에서 조회시 nttid로 마스터 조회 bmVO = bbsAttrbService.selectBbsIdByNttId(boardVO); if (bmVO == null) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } boardVO.setBbsId(bmVO.getBbsId()); }else { bmVO.setBbsId(boardVO.getBbsId()); } bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); if("/web/cop/bbs/NewsDetail.do".equals(request.getRequestURI()) || "/web/contentBbsDetail.do".equals(request.getRequestURI())) { //원자력소식 수정삭제등록 없음. bmVO.setWebChgYn("N"); model.addAttribute("masterVO", masterVO); } BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } {//묻고답하기 권한체크 boolean passChk = false; if("9530000".equals(bmVO.getMenuNo())) { LoginVO loginVO = new LoginVO(); if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) { //최고 관리자면 바로수정 loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if("ROLE_ADMIN".equals(loginVO.getAuthority())){ passChk = true; }else { //일반관리자 bmVO.setBbsMngId(loginVO.getId()); if( bbsAttrbService.selectBBSMngInfCnt(bmVO) > 0 ) { //게시판 관리자 조회 passChk = true; } } }else{//방문자 세션있는방문자 UserVO userVO = new UserVO(); if(request.getSession().getAttribute("userVO") != null) { userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(userVO.getMblDn().equals(bdVO.getMblDn())) { passChk = true; } } } if(!"T".equals(bdVO.getSecretAt())){ if(!passChk){ if("".equals(boardVO.getPassword())) { redirectAttributes.addFlashAttribute("message", "패스워드를 넣어주세요"); return "redirect:/web/cop/bbs/QnaList.do"; }else { if(!damoDec(bdVO.getPassword(), request).equals(boardVO.getPassword())) { redirectAttributes.addFlashAttribute("message", "패스워드가 맞지 않습니다."); if("9530000".equals(bmVO.getMenuNo())) { return "redirect:/web/cop/bbs/QnaList.do"; }else { return "redirect:/web/cop/bbsWeb/selectBoardList.do?bbsId="+boardVO.getBbsId(); } } } } } } } // 조회수 증가 여부 지정 boardVO.setPlusCount(true); bbsMngService.updateBoardArticleInqireCo(boardVO); boardVO.setMblDn(bdVO.getMblDn()); // 위/아래 게시글 번호, 제목 조회 EgovMap upDownNttid = bbsMngService.getUpDownNttIdNSj(boardVO); //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO resultBbsMsInfo = bbsAttrbService.selectBBSMasterInf(searchVO); //답변글 리스트 if(bdVO.getAnswerCnt() > 0) { List answerList = bbsMngService.selectBoardAnswerList(bdVO); model.addAttribute("answerList", answerList); } model.addAttribute("nextNttIdNSj", upDownNttid.get("nextNttIdNSj")); model.addAttribute("prevNttIdNSj", upDownNttid.get("prevNttIdNSj")); model.addAttribute("result", bdVO); bmVO.setUrl(request.getRequestURI()); //url 넘겨주기 - 게시판 상세 jsp는 공용으로 사용하는데, 공지사항 상세는 작성자를 '운영자'로 고정하기 위해 url을 넘겨 메뉴 구분 model.addAttribute("brdMstrVO", bmVO); model.addAttribute("resultBbsMsInfo", resultBbsMsInfo); CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); //게시판ID commentVO.setNttId(boardVO.getNttId()); //게시글ID //댓글 조회 List resultList = egovArticleCommentService.selectArticleCommentListAll(commentVO); int totCnt = resultList.size(); model.addAttribute("resultCnt", totCnt); model.addAttribute("resultList", resultList); if("BBST05".equals(bmVO.getBbsTyCode())){ //이벤트 포토게시판 if(bdVO.getAtchFileCnt() > 0 ) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bdVO.getAtchFileId()); List result = fileService.selectImageFileList(fileVO); model.addAttribute("fileList", result); } return "web/cop/bbs/EgovNoticePhotoInqire"; } if("Y".equals(masterVO.getTabBbsId())){ model.addAttribute("PubDetail", true); } System.out.println("boardVO.toString()"); System.out.println(boardVO.toString()); return "web/cop/bbs/EgovNoticeInqire"; } /** * (사용자)게시물에 대한 상세 정보를 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/cop/bbsWeb/selectBoardChkDetailAjax.do"} ) public ModelAndView selectBoardChkDetailAjax(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, BoardMasterVO masterVO, ModelMap model , RedirectAttributes redirectAttributes) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return modelAndView; } {//묻고답하기 권한체크 boolean passChk = false; if("9530000".equals(bmVO.getMenuNo())) { LoginVO loginVO = new LoginVO(); if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) { //최고 관리자면 바로수정 loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if("ROLE_ADMIN".equals(loginVO.getAuthority())){ passChk = true; }else { //일반관리자 bmVO.setBbsMngId(loginVO.getId()); if( bbsAttrbService.selectBBSMngInfCnt(bmVO) > 0 ) { //게시판 관리자 조회 passChk = true; } } }else{//방문자 세션있는방문자 UserVO userVO = new UserVO(); if(request.getSession().getAttribute("userVO") != null) { userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(userVO.getMblDn().equals(bdVO.getMblDn())) { passChk = true; } } } if(!"T".equals(bdVO.getSecretAt())){ if(!passChk){ if("".equals(boardVO.getPassword())) { model.addAttribute("passChk", "01"); //패스워드 필요 return modelAndView; }else { //패스워드 복구화 if(!damoDec(bdVO.getPassword(), request).equals(boardVO.getPassword())) { model.addAttribute("passChk", "02"); //패스워드가 틀림 return modelAndView; } } } } } } boardVO.setMblDn(bdVO.getMblDn()); model.addAttribute("boardVO", boardVO); return modelAndView; } /** * (사용자)게시물 수정을 위한 수정페이지로 이동한다. * * @param boardVO * @param vo * @param model * @throws Exception */ @RequestMapping("/web/cop/bbs/forUpdateBoardArticle.do") public String forUpdateBoardArticleWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , RedirectAttributes redirectAttributes, BoardMasterVO brdMstrVO) throws Exception { /*BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //게시글 불러오기 BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); if(bdVO.getAtchFileId() !=null) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bdVO.getAtchFileId()); List fileList = fileService.selectFileInfs(fileVO); model.addAttribute("fileList", fileList); } UserVO userVO = new UserVO(); //게시글 본인인증 번호 변수 저장 String mblDn = bdVO.getMblDn(); // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("board", bdVO); model.addAttribute("brdMstrVO", bmVO); //최대 첨부파일 갯수 지정 model.addAttribute("posAtchFileNum", bmVO.getPosblAtchFileNumber()); if("9530000".equals(bmVO.getMenuNo())){ //묻고답하기 //묻고답하기의 게시판들 가져오기 BoardMasterVO boardMasterVO = new BoardMasterVO(); boardMasterVO.setUrl("/web/cop/bbs/QnaList.do"); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } for(BoardMasterVO tempMasterVO : boardMenuList ) { tempMasterVO.setBbsNm(tempMasterVO.getBbsNm().split("\\(")[1].split("\\)")[0]) ; } model.addAttribute("boardMenuList", boardMenuList); }*/ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); String userId = user == null ? "" : EgovStringUtil.isNullToString(user.getId()); if("".equals(userId)) { return "redirect:/web/user/login/login.do"; } MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setMberId(user.getId()); mberManageVO = bbsMngService.selectboardArticleWebQnaMberInfo(mberManageVO); /*if(null != request.getSession().getAttribute("userVO")) { //세션체크 userVO = ((UserVO)request.getSession().getAttribute("userVO")) ; boardVO.setMblDn(userVO.getMblDn()); boardVO.setNtcrNm(userVO.getName()); }else { return "redirect:/web/cop/bbs/QnaList.do"; }*/ /*LoginVO loginvo = new LoginVO(); if(null != request.getSession().getAttribute("LoginVO")) { loginvo = ((LoginVO)request.getSession().getAttribute("LoginVO")); System.out.println(loginvo.getName()); boardVO.setNtcrNm(loginvo.getName()); }*/ BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); if(bdVO.getAtchFileId() !=null) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bdVO.getAtchFileId()); List fileList = fileService.selectFileInfs(fileVO); model.addAttribute("fileList", fileList); } //묻고답하기의 게시판들 가져오기 BoardMasterVO tempBoardMasterVO = new BoardMasterVO(); tempBoardMasterVO.setUrl("/web/cop/bbs/QnaList.do"); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(tempBoardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(tempBoardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){ tempBoardMasterVO.setViewsYn("N"); break ; } } model.addAttribute("mberManageVO", mberManageVO); model.addAttribute("boardMenuList", boardMenuList); model.addAttribute("brdMstrVO", brdMstrVO); /*for(BoardMasterVO tempMasterVO : boardMenuList ) { tempMasterVO.setBbsNm(tempMasterVO.getBbsNm().split("\\(")[1].split("\\)")[0]) ; }*/ model.addAttribute("board", bdVO); //최대 첨부파일 갯수 지정 return "web/cop/bbs/EgovNoticeUpdt"; } /** * (사용자)게시물에 대한 내용을 수정한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/cop/bbs/updateBoardArticle.do" , "/web/cop/bbs/updateBoardArticleAjax.do"}) public ModelAndView updateBoardArticleWeb(HttpServletRequest request, final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("bdMstr") BoardMaster bdMstr, @ModelAttribute("board") Board board, BindingResult bindingResult, ModelMap model, SessionStatus status, RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // Start => bbsId를 변조해서 공지사항에 글 등록 방지 처리 //boardVO.setBbsId("BBSMSTR_000000000651"); // 공지사항 List userBbsWriteList = bbsMngService.selectUserBbsWriteList(boardVO); System.out.println("boardVO.getBbsId : " + boardVO.getBbsId()); System.out.println("userBbsWriteList.size() : " + userBbsWriteList.size()); if (userBbsWriteList.size() == 0) { // 1:1문의, 불편사항 등 고객이 등록할수있는 게시판 목록이 아닐경우 modelAndView.addObject("message", "잘못된 접근입니다.\n관리자에게 문의하세요."); modelAndView.addObject("result", "fail"); return modelAndView; } // End if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); //return "redirect:/web/main/mainPage.do"; modelAndView.addObject("result", "no_imposbl"); return modelAndView; } // if (userVO == null) { // 인증 필요 // multiRequest.getSession().setAttribute("searchVO", boardVO); // multiRequest.getSession().setAttribute("url", "/web/cop/bbs/forUpdateBoardArticle.do"); // return "redirect:/web/cop/selfauth/authentication.do"; // } BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); // String frstRegisterId = bdVO.getFrstRegisterId(); // 관리자 유무 UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 //게시글 본인인증 번호 변수 저장 //String mblDn = bdVO.getMblDn(); // 본인글 체크 /*if (!mblDn.equals(userVO.getMblDn())) { redirectAttributes.addFlashAttribute("message", "본인글 외에는 수정할 수 없습니다."); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addAttribute("nttId", boardVO.getNttId()); modelAndView.addObject("result", "no_imposbl"); return modelAndView; }*/ String atchFileId = boardVO.getAtchFileId(); beanValidator.validate(board, bindingResult); if (bindingResult.hasErrors()) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("brdMstrVO", bmVO); modelAndView.addObject("result", "no_Validator"); return modelAndView; } String isThumbFile = ""; if (("BBST05").equals(bmVO.getBbsTyCode()) || ("BBST06").equals(bmVO.getBbsTyCode())) isThumbFile = "thumbFile"; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { if ("".equals(atchFileId)) { List result = fileUtil.parseFileInf(files, "BBS_", 0, atchFileId, "", isThumbFile); if(!isPosblAtchFile(result, bmVO, model, 0)) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("brdMstrVO", bmVO); modelAndView.addObject("result", "no_fileupdate"); return modelAndView; } atchFileId = fileMngService.insertFileInfs(result); board.setAtchFileId(atchFileId); } else { FileVO fvo = new FileVO(); fvo.setAtchFileId(atchFileId); int cnt = fileMngService.getMaxFileSN(fvo); List result = fileUtil.parseFileInf(files, "BBS_", cnt, atchFileId, "", isThumbFile); /* * 파일 확장자 및 사이즈 등을 체크해주는 부분 * if(!isPosblAtchFile(result, bmVO, model, board.getAtchFileCnt())) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("brdMstrVO", bmVO); //return "web/cop/bbs/EgovNoticeUpdt"; modelAndView.addObject("result", "no_fileupdate"); return modelAndView; }*/ fileMngService.updateFileInfs(result); } } board.setNttCn(unscript(board.getNttCn())); // XSS 방지 //board.setLastUpdusrNm(userVO.getName()); // 변경이력에 사용 String userIp = EgovClntInfo.getClntIP(multiRequest); board.setNtcrIp(userIp); bbsMngService.updateBoardArticle(board); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); modelAndView.addObject("result", "success"); return modelAndView; } /** * (사용자)게시물에 대한 내용을 삭제한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/bbs/deleteBoardArticle.do") public String deleteBoardArticleWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("board") Board board, @ModelAttribute("bdMstr") BoardMaster bdMstr, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); String userUniqId = user == null ? "" : EgovStringUtil.isNullToString(user.getUniqId()); BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); //String frstRegisterId = bdVO.getFrstRegisterId(); // 관리자 유무 String frstRegisterId = bdVO.getFrstRegisterId(); //bdVO.setMblDn(""); // 화면단으로 모바일키 인증 방지 // 본인글 체크 if (!frstRegisterId.equals(userUniqId)) { redirectAttributes.addFlashAttribute("message", "본인글 외에는 삭제할 수 없습니다."); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addAttribute("nttId", boardVO.getNttId()); return "redirect:/web/cop/bbsWeb/selectBoardArticle.do"; } board.setLastUpdusrNm(user.getName()); // 변경이력에 사용 String userIp = EgovClntInfo.getClntIP(request); board.setNtcrIp(userIp); bbsMngService.deleteBoardArticle(board); boardVO.setPageIndex(1); //삭제후 첫페이지로 로딩 redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); return "redirect:/web/cop/bbs/QnaList.do"; } /** * (사용자)본인인증 요청 입력 Sample * * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/bbs/pccInput.do") public String pccInput(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { return "web/cop/selfauth/pcc_V3_input_seed"; } /** * (사용자)본인인증 요청 팝업 Sample * * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/bbs/selfauth.do") public String selfauthTest(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { return "web/cop/selfauth/pcc_V3_sample_seed"; } @Value("#{globalSettings['Globals.selfauth.siteId']}") private String SELFAUTH_SITE_ID; @Value("#{globalSettings['Globals.selfauth.srvNo']}") private String SELFAUTH_SRV_NO; /** * (사용자)본인인증 요청 * * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/selfauth/selfauth.do") public String selfauth(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { //날짜 생성 Calendar today = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String day = sdf.format(today.getTime()); java.util.Random ran = new Random(); //랜덤 문자 길이 int numLength = 6; String randomStr = ""; for (int i = 0; i < numLength; i++) { //0 ~ 9 랜덤 숫자 생성 randomStr += ran.nextInt(10); } String certGb = "H"; String addVar = ""; String reqNum = day + randomStr; // //reqNum은 최대 40byte 까지 사용 가능 String certDate=day; String exVar = "0000000000000000"; // 복호화용 임시필드 request.getSession().setAttribute("reqNum", reqNum); // 결과값 복호화시 필요 //01. 암호화 모듈 선언 SciSecuManager seed = new SciSecuManager(); //02. 1차 암호화 String encStr = ""; String reqInfo = SELFAUTH_SITE_ID+"^"+SELFAUTH_SRV_NO+"^"+reqNum+"^"+certDate+"^"+certGb+"^"+addVar+"^"+exVar; // 데이터 암호화 encStr = seed.getEncPublic(reqInfo); //03. 위변조 검증 값 생성 String hmacMsg = SciHmac.HMacEncriptPublic(encStr); //03. 2차 암호화 reqInfo = seed.getEncPublic(encStr + "^" + hmacMsg + "^" + "0000000000000000"); //2차암호화 request.getSession().setAttribute("reqInfo", reqInfo); // 본인확인 요청 정보 request.getSession().setAttribute("SITE_URL", SITE_URL); // 사이트 URL return "web/cop/selfauth/selfauth"; } /** * (사용자)본인인증 결과 리턴 * * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/selfauth/resultSeed.do") public String resultSeed(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { String retInfo = request.getParameter("retInfo").trim(); String cookiereqNum = (String)request.getSession().getAttribute("reqNum"); //복화화용 변수 String encPara = ""; String encMsg = ""; String msgChk = "N"; // 1. 암호화 모듈 (jar) Loading SciSecuManager sciSecuMg = new SciSecuManager(); //쿠키에서 생성한 값을 Key로 생성 한다. retInfo = sciSecuMg.getDec(retInfo, cookiereqNum); // 2.1차 파싱--------------------------------------------------------------- String[] aRetInfo1 = retInfo.split("\\^"); encPara = aRetInfo1[0]; //암호화된 통합 파라미터 encMsg = aRetInfo1[1]; //암호화된 통합 파라미터의 Hash값 String encMsg2 = sciSecuMg.getMsg(encPara); // 3.위/변조 검증 --------------------------------------------------------------- if(encMsg2.equals(encMsg)) msgChk="Y"; if(msgChk.equals("N")) { // 비정상 접근 처리 } retInfo = sciSecuMg.getDec(encPara, cookiereqNum); String[] aRetInfo = retInfo.split("\\^"); String name = aRetInfo[0]; //성명 // String birYMD = aRetInfo[1]; //생년월일 // String sex = aRetInfo[2]; //성별 // String fgnGbn = aRetInfo[3]; //내외국인 구분값 String di = aRetInfo[4]; //DI // String ci1 = aRetInfo[5]; //CI // String ci2 = aRetInfo[6]; //CI // String civersion = aRetInfo[7]; //CI Version // String reqNum = aRetInfo[8]; // 본인확인 요청번호 // String result = aRetInfo[9]; // 본인확인결과 (Y/N) // String certGb = aRetInfo[10]; // 인증수단 // String cellNo = aRetInfo[11]; // 핸드폰 번호 // String cellCorp = aRetInfo[12]; // 이동통신사 // String certDate = aRetInfo[13]; // 검증시간 // String addVar = aRetInfo[14]; // 사용자 세션생성 UserVO userVO = new UserVO(); userVO.setName(name); userVO.setMblDn(di); request.getSession().setAttribute("userVO", userVO); String url = (String)request.getSession().getAttribute("url"); BoardVO searchVO = (BoardVO)request.getSession().getAttribute("searchVO"); model.addAttribute("searchVO", searchVO); model.addAttribute("url", url); return "web/cop/selfauth/resultSeed"; } /** * (사용자)본인인증 결과 리턴 Sample * * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/bbs/pccPopSeed.do") public String pccPopSeed(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { return "web/cop/selfauth/pcc_V3_popup_seed"; } /** * (사용자)본인인증 결과 Sample * * @param model * @return * @throws Exception */ @RequestMapping("/web/cop/bbs/pccResult.do") public String pccResult(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { return "web/cop/selfauth/pcc_V3_result_seed"; } /** * 게시판 공통코드 * @param model * @throws Exception */ private void setBBSCommCd(ModelMap model, BoardMasterVO bmVO) throws Exception { ComDefaultCodeVO comDefaultCodeVO = new ComDefaultCodeVO(); // 폴라스토리. 사용자 유형 if (("BBSMSTR_000000000153").equals(bmVO.getBbsId())) { comDefaultCodeVO.setCodeId("ITN003"); List userTypeList = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("userTypeList", userTypeList); } // 통합신고게시판. 게시판 유형 if (("BBST03").equals(bmVO.getBbsTyCode())) { comDefaultCodeVO.setCodeId("ITN004"); List reportTyList = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("reportTyList", reportTyList); } } /** * (사용자)게시물을 등록한다. * * @param boardVO * @param board * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/cop/bbs/insertBoardArticle.do" , "/web/cop/bbs/insertBoardArticleAjax.do"}) public ModelAndView insertBoardArticleWeb(HttpServletRequest request, final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("bdMstr") BoardMasterVO bdMstr, @ModelAttribute("board") Board board, BindingResult bindingResult, SessionStatus status, ModelMap model, RedirectAttributes redirectAttributes, @RequestParam Map commandMap ) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey", multiRequest)) { modelAndView.addObject("message", "너무많은 글쓰기가 시도되었습니다."); modelAndView.addObject("result", "fail"); return modelAndView; } // Start => bbsId를 변조해서 공지사항에 글 등록 방지 처리 //boardVO.setBbsId("BBSMSTR_000000000651"); // 공지사항 List userBbsWriteList = bbsMngService.selectUserBbsWriteList(boardVO); System.out.println("boardVO.getBbsId : " + boardVO.getBbsId()); System.out.println("userBbsWriteList.size() : " + userBbsWriteList.size()); if (userBbsWriteList.size() == 0) { // 1:1문의, 불편사항 등 고객이 등록할수있는 게시판 목록이 아닐경우 modelAndView.addObject("message", "잘못된 접근입니다.\n관리자에게 문의하세요."); modelAndView.addObject("result", "fail"); return modelAndView; } // End BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); //return "redirect:/web/main/mainPage.do"; modelAndView.addObject("result", "no_imposbl"); return modelAndView; } beanValidator.validate(board, bindingResult); if (bindingResult.hasErrors()) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("bdMstr", bmVO); //return "web/cop/bbs/EgovNoticeRegist"; modelAndView.addObject("result", "no_validate"); return modelAndView; } List result = null; String atchFileId = ""; String isThumbFile = ""; if (("BBST05").equals(bmVO.getBbsTyCode()) || ("BBST06").equals(bmVO.getBbsTyCode())) isThumbFile = "thumbFile"; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { result = fileUtil.parseFileInf(files, "BBS_", 0, "", "", isThumbFile); // 파일 사이즈, 개수, 확장자 체크. model에 체크 오류 메세지 set if(!isPosblAtchFile(result, bmVO, model, 0)) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("bdMstr", bmVO); //return "web/cop/bbs/EgovNoticeRegist"; modelAndView.addObject("result", "no_atchFile"); return modelAndView; } atchFileId = fileMngService.insertFileInfs(result); } board.setAtchFileId(atchFileId); board.setBbsId(board.getBbsId()); board.setNttCn(unscript(board.getNttCn())); // XSS 방지 String userIp = EgovClntInfo.getClntIP(multiRequest); board.setNtcrIp(userIp); //게시판 정보 입력 /*board.setPassword(damoEnc(board.getPassword(), request)); *///비번암호화 board.setPassword(board.getPassword()); bbsMngService.insertBoardArticle(board); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); modelAndView.addObject("result", "success"); // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); // 이메일 체크 if (joinSettingVO != null && joinSettingVO.getEmailNoti().equals("Y")) { // 알림 모듈 추가(게시판 id, 게시판 제목, 게시판 내용) mjonNoticeSendUtil.mjonInquiryNoticeSend(board.getBbsId(), board.getNttSj(), board.getNttCn()); } // SMS 체크 if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { String smsTitle = bmVO.getBbsNm()+" 문의"; // CS관리자 SMS 알림전송 mjonNoticeSendUtil.csAdminSmsNoticeSend(board.getNttSj(), smsTitle); } // SLACK 체크 if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { // Slack 메시지 발송(단순본문) String msg = "[문자온] "+ bmVO.getBbsNm() + "- " + board.getNttSj(); mjonCommon.sendSimpleSlackMsg(msg); } return modelAndView; } /** * (사용자)게시물 등록을 위한 등록페이지로 이동한다. * * @param boardVO * @param model * @return * @throws Exception */ @RequestMapping("/web/member/cop/bbs/addBoardArticle.do") public String siteMemberAddBoardArticleWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , RedirectAttributes redirectAttributes ) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); boolean authFlag = false; List authorities = EgovUserDetailsHelper.getAuthorities(); // 게시판 쓰기 권한 체크 for (String authority : authorities) { if (authority.equals(bmVO.getWriteAuth())) authFlag = true; } /*model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; if (bmVO == null || ("N").equals(bmVO.getUseAt()) || !authFlag) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/"+siteId+"/web/main/mainPage.do"; }*/ // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("brdMstrVO", bmVO); model.addAttribute("board", boardVO); /*if(!("linc".equals(siteId) || "klc".equals(siteId)) ){ SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); setSiteinfo(siteManagerVO, model , request ); return "web/site/"+siteId+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeRegist"; }*/ return "web/cop/bbs/EgovNoticeRegist"; } /** * (사용자)게시물을 등록한다. * * @param boardVO * @param board * @param model * @return * @throws Exception */ @RequestMapping("/web/member/cop/bbs/insertBoardArticle.do") public String siteMemberInsertBoardArticleWeb(HttpServletRequest request , final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("bdMstr") BoardMasterVO bdMstr, @ModelAttribute("board") Board board, BindingResult bindingResult, SessionStatus status, ModelMap model, RedirectAttributes redirectAttributes, @RequestParam Map commandMap, WordFilterVO wordFilterVO ) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); /*model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; */ boolean authFlag = false; List authorities = EgovUserDetailsHelper.getAuthorities(); // 게시판 쓰기 권한 체크 for (String authority : authorities) { if (authority.equals(bmVO.getWriteAuth())) authFlag = true; } /*if (bmVO == null || ("N").equals(bmVO.getUseAt()) || !authFlag) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/"+siteId+"/web/main/mainPage.do"; }*/ LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); beanValidator.validate(board, bindingResult); if (bindingResult.hasErrors()) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("bdMstr", bmVO); /*if(!("linc".equals(siteId) || "klc".equals(siteId)) ){ SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); setSiteinfo(siteManagerVO, model , request ); return "web/site/"+siteId+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeRegist"; }*/ return "web/cop/bbs/EgovNoticeRegist"; } //필터체크 //wordFilterVO.setSiteId(siteId); wordFilterVO = wordFilterService.selectWordFilterVO(wordFilterVO); if(wordFilterVO !=null){ wordFilterVO.getFilterCn() ; board.getNttCn(); } List result = null; String atchFileId = ""; String isThumbFile = ""; if (("BBST05").equals(bmVO.getBbsTyCode()) || ("BBST06").equals(bmVO.getBbsTyCode())) isThumbFile = "thumbFile"; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { result = fileUtil.parseFileInf(files, "BBS_", 0, "", "", isThumbFile); // 파일 사이즈, 개수, 확장자 체크. model에 체크 오류 메세지 set if(!isPosblAtchFile(result, bmVO, model, 0)) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("bdMstr", bmVO); /*if(!("linc".equals(siteId) || "klc".equals(siteId)) ){ SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); setSiteinfo(siteManagerVO, model , request ); return "web/site/"+siteId+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeRegist"; }*/ return "web/cop/bbs/EgovNoticeRegist"; } atchFileId = fileMngService.insertFileInfs(result); } if(loginVO == null){ //테스트 UserVO tempUserVO = new UserVO(); tempUserVO.setName("testName"); tempUserVO.setMblDn("testMblDn"); board.setNtcrNm(tempUserVO.getName()); board.setMblDn(tempUserVO.getMblDn()); }else{ board.setNtcrNm(loginVO.getName()); board.setFrstRegisterId(loginVO.getUniqId()); } board.setAtchFileId(atchFileId); board.setBbsId(board.getBbsId()); board.setNttCn(unscript(board.getNttCn())); // XSS 방지 String userIp = EgovClntInfo.getClntIP(multiRequest); board.setNtcrIp(userIp); Board resultVO = bbsMngService.insertBoardArticle(board); List mngIdList = bbsAttrbService.selectBBSMngIdList(bmVO); // 게시판 관리자ID 조회 // 사용자 게시글 등록 시 메일 전송 /*if (userVO != null) { for (EgovMap mngId : mngIdList) { String mailAdres = (String)mngId.get("emailAdres"); if (mailAdres != null && !("").equals(mailAdres)) sendBBSInsertMail((String)mngId.get("emailAdres"), board.getBbsId(), resultVO.getNttId(), bmVO.getBbsNm(), board.getNttSj()); } }*/ redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); return "redirect:/web/cop/bbsWeb/selectBoardList.do"; } /** * (사용자)게시물 수정을 위한 수정페이지로 이동한다. * * @param boardVO * @param vo * @param model * @throws Exception */ @RequestMapping("/{siteId}/web/member/cop/bbs/forUpdateBoardArticle.do") public String siteForUpdateBoardArticleWeb(@PathVariable("siteId") String siteId , HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 boolean authFlag = false; List authorities = EgovUserDetailsHelper.getAuthorities(); // 게시판 쓰기 권한 체크 for (String authority : authorities) { if (authority.equals(bmVO.getWriteAuth())) authFlag = true; } model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; if (bmVO == null || ("N").equals(bmVO.getUseAt()) || !authFlag) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/"+siteId+"/web/main/mainPage.do"; } LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); String frstRegisterId = bdVO.getFrstRegisterId(); // 관리자 유무 bdVO.setMblDn(""); // 화면단으로 모바일키 인증 방지 // 본인글 체크 if (!frstRegisterId.equals(loginVO.getUniqId())) { redirectAttributes.addFlashAttribute("message", "본인글 외에는 수정할 수 없습니다."); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addAttribute("nttId", boardVO.getNttId()); return "redirect:/"+siteId+"/web/cop/bbsWeb/selectBoardArticle.do"; } // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("board", bdVO); model.addAttribute("brdMstrVO", bmVO); /*if(!("linc".equals(siteId) || "klc".equals(siteId)) ){ SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); setSiteinfo(siteManagerVO, model , request ); return "web/site/"+siteId+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeUpdt"; }*/ return "web/"+siteFolder+"/cop/bbs/EgovNoticeUpdt"; } /** * (사용자)게시물에 대한 내용을 수정한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/{siteId}/web/member/cop/bbs/updateBoardArticle.do") public String siteUpdateBoardArticleWeb(@PathVariable("siteId") String siteId ,HttpServletRequest request , final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("bdMstr") BoardMaster bdMstr, @ModelAttribute("board") Board board, BindingResult bindingResult, ModelMap model, SessionStatus status, RedirectAttributes redirectAttributes) throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)multiRequest.getSession().getAttribute("userVO"); // 사용자 정보 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); boolean authFlag = false; List authorities = EgovUserDetailsHelper.getAuthorities(); // 게시판 쓰기 권한 체크 for (String authority : authorities) { if (authority.equals(bmVO.getWriteAuth())) authFlag = true; } if (bmVO == null || ("N").equals(bmVO.getUseAt()) || !authFlag) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/"+siteId+"/web/main/mainPage.do"; } /*if (userVO == null) { // 인증 필요 multiRequest.getSession().setAttribute("searchVO", boardVO); multiRequest.getSession().setAttribute("url", "/web/cop/bbs/forUpdateBoardArticle.do"); return "redirect:/web/cop/selfauth/authentication.do"; }*/ BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); String frstRegisterId = bdVO.getFrstRegisterId(); // 글쓴이 아이디 String mblDn = bdVO.getMblDn(); bdVO.setMblDn(""); // 화면단으로 모바일키 인증 방지 // 본인글 체크 if (!bdVO.getFrstRegisterId().equals(loginVO.getUniqId())) { redirectAttributes.addFlashAttribute("message", "본인글 외에는 수정할 수 없습니다."); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addAttribute("nttId", boardVO.getNttId()); return "redirect:/"+siteId+"/web/cop/bbsWeb/selectBoardArticle.do"; } String atchFileId = boardVO.getAtchFileId(); beanValidator.validate(board, bindingResult); if (bindingResult.hasErrors()) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("brdMstrVO", bmVO); 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/EgovNoticeUpdt"; return "web/site/"+siteId+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeUpdt"; } return "web/"+siteFolder+"/cop/bbs/EgovNoticeUpdt"; } String isThumbFile = ""; if (("BBST05").equals(bmVO.getBbsTyCode()) || ("BBST06").equals(bmVO.getBbsTyCode())) isThumbFile = "thumbFile"; final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { if ("".equals(atchFileId)) { List result = fileUtil.parseFileInf(files, "BBS_", 0, atchFileId, "", isThumbFile); if(!isPosblAtchFile(result, bmVO, model, 0)) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("brdMstrVO", bmVO); 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/"+siteId+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeUpdt"; }*/ return "web/"+siteFolder+"/cop/bbs/EgovNoticeUpdt"; } atchFileId = fileMngService.insertFileInfs(result); board.setAtchFileId(atchFileId); } else { FileVO fvo = new FileVO(); fvo.setAtchFileId(atchFileId); int cnt = fileMngService.getMaxFileSN(fvo); List result = fileUtil.parseFileInf(files, "BBS_", cnt, atchFileId, "", isThumbFile); if(!isPosblAtchFile(result, bmVO, model, board.getAtchFileCnt())) { // 공통코드 Set setBBSCommCd(model, bmVO); model.addAttribute("brdMstrVO", bmVO); 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/"+siteId+"/"+siteManagerVO.getIsMobile()+"/cop/bbs/EgovNoticeUpdt"; }*/ return "web/"+siteFolder+"/cop/bbs/EgovNoticeUpdt"; } fileMngService.updateFileInfs(result); } } board.setNttCn(unscript(board.getNttCn())); // XSS 방지 board.setLastUpdusrNm(loginVO.getName()); // 변경이력에 사용 String userIp = EgovClntInfo.getClntIP(multiRequest); board.setNtcrIp(userIp); bbsMngService.updateBoardArticle(board); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); return "redirect:/"+siteId+"/web/cop/bbsWeb/selectBoardList.do"; } /** * (사용자)게시물에 대한 내용을 삭제한다. * * @param boardVO * @param board * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/{siteId}/web/member/cop/bbs/deleteBoardArticle.do") public String siteDeleteBoardArticleWeb(@PathVariable("siteId") String siteId , HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, @ModelAttribute("board") Board board, @ModelAttribute("bdMstr") BoardMaster bdMstr, ModelMap model, RedirectAttributes redirectAttributes)throws Exception { BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); List authorities = EgovUserDetailsHelper.getAuthorities(); boolean authFlag = false; // 게시판 쓰기 권한 체크 for (String authority : authorities) { if (authority.equals(bmVO.getWriteAuth())) authFlag = true; } if (bmVO == null || ("N").equals(bmVO.getUseAt()) || !authFlag) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/"+siteId+"/web/main/mainPage.do"; } /*if (loginVO == null) { // 인증 필요 request.getSession().setAttribute("searchVO", boardVO); request.getSession().setAttribute("url", "/web/cop/bbsWeb/selectBoardArticle.do"); return "redirect:/web/cop/selfauth/authentication.do"; } */ BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); String frstRegisterId = bdVO.getFrstRegisterId(); // 글쓴이 String mblDn = bdVO.getMblDn(); bdVO.setMblDn(""); // 화면단으로 모바일키 인증 방지 // 본인글 체크 if (frstRegisterId.equals("") || !frstRegisterId.equals(loginVO.getUniqId())) { redirectAttributes.addFlashAttribute("message", "본인글 외에는 삭제할 수 없습니다."); redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addAttribute("nttId", boardVO.getNttId()); return "redirect:/"+siteId+"/web/cop/bbsWeb/selectBoardArticle.do"; } board.setLastUpdusrNm(loginVO.getName()); // 변경이력에 사용 String userIp = EgovClntInfo.getClntIP(request); board.setNtcrIp(userIp); bbsMngService.deleteBoardArticle(board); boardVO.setPageIndex(1); //삭제후 첫페이지로 로딩 redirectAttributes.addAttribute("pageIndex", boardVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardVO.getSearchWrd()); redirectAttributes.addAttribute("bbsId", boardVO.getBbsId()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); return "redirect:/"+siteId+"/web/cop/bbsWeb/selectBoardList.do"; } 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()); }else{ siteManagerVO.setTheme("01"); } WebUtil util = new WebUtil(); if(util.isMobile(request)){ siteManagerVO.setIsMobile("mobile"); } model.addAttribute("siteId", siteManagerVO.getSiteId()); //model.addAttribute("site_path" , "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()); model.addAttribute("site_path" , "/site/"+siteManagerVO.getSiteId()+"/"+siteManagerVO.getIsMobile()); } /** * 첨부파일 개수, 사이즈, 확장자 체크 * 썸네일, 모델, 기개수, 종류 * @param fileList 파일리스트 * @param boardMaster * @param model * @param atchFileCnt 업로드된 파일 수 * @param fileSe 파일 구분 * @return boolean * @return 체크 오류 메세지 model 'flashMessage' 에 set * @throws Exception */ private boolean isPosblAtchFile_tobe(Map fileList, BoardMaster boardMaster, ModelMap model, int atchFileCnt, String fileSe) throws Exception { long posblAtchFileSize = Long.parseLong(boardMaster.getPosblAtchFileSize()) * 1024 * 1024 ; int posblAtchFileNumber = Integer.parseInt(boardMaster.getPosblAtchFileNumber()); String bbsTyCode = boardMaster.getBbsTyCode(); String flashMessage = ""; String fileSeMsg = "첨부파일: "; String fileExtMsg = ""; boolean posblAtchFileFlag = true; boolean posblAtchFileSizeFlag = true; boolean posblAtchFileExtFlag = true; boolean isImg = false; // 썸네일 시 if (fileSe.equals("thumb")) { posblAtchFileNumber = 1; isImg = true; fileSeMsg = "썸네일: "; } Iterator> itr = fileList.entrySet().iterator(); MultipartFile file; int fileCnt = 0; while (itr.hasNext()) { Entry entry = itr.next(); file = entry.getValue(); long fileMg = file.getSize(); String orginFileName = file.getOriginalFilename(); int index = orginFileName.lastIndexOf("."); String fileExt = orginFileName.substring(index + 1); if (fileMg > posblAtchFileSize) posblAtchFileSizeFlag = false; // 이미지 형식 확인 // if (("BBST05").equals(bbsTyCode) || ("BBST06").equals(bbsTyCode) || isImg) { if (isImg) { String[] imgExts = {"gif", "jpg", "bmp", "jpeg", "png"}; if (ArrayUtils.indexOf(imgExts, fileExt.toLowerCase()) == -1) { posblAtchFileExtFlag = false; fileExtMsg = "이미지"; } } // 포토형2 pdf 예외처리 필요 // if (("ㅁㄴㅇㄹ").equals(bbsTyCode)) { // String[] imgExts = {"pdf"}; // if (ArrayUtils.indexOf(imgExts, fileExt.toLowerCase()) == -1) { // posblAtchFileExtFlag = false; // fileExtMsg = "PDF"; // } // } fileCnt++; } if (!posblAtchFileExtFlag) { flashMessage += fileSeMsg + fileExtMsg + " 형식의 확장자만 업로드 가능합니다." + "\\n"; posblAtchFileFlag = false; } if(!posblAtchFileSizeFlag) { flashMessage += fileSeMsg + "파일사이즈가 초과되었습니다. 최대크기 " + posblAtchFileSize + "mb" + "\\n"; posblAtchFileFlag = false; } if ((fileCnt+atchFileCnt) > posblAtchFileNumber) { flashMessage += fileSeMsg + "파일 개수가 초과되었습니다. 최대개수 " + posblAtchFileNumber + "개" + "\\n"; posblAtchFileFlag = false; } if (!posblAtchFileFlag) model.addAttribute("message", flashMessage); return posblAtchFileFlag; } //게시판 리스트 엑셀 다운로드 @RequestMapping(value="/cop/bbs/bbsExcelDownload.do") public void bbsExcelDownload( BoardVO boardVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { BoardMasterVO vo = new BoardMasterVO(); vo.setBbsId(boardVO.getBbsId()); BoardMasterVO master = bbsAttrbService.selectBBSMasterInf(vo); boardVO.setRecordCountPerPage(100000); boardVO.setFirstIndex(0); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. SXSSFWorkbook wb = new SXSSFWorkbook(100); CellStyle style = wb.createCellStyle(); style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); Font font = wb.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold Cell cell = null; Row row = null; String fileName ="게시판 리스트"; String sheetTitle = ""; try{ Map bbsList = bbsMngService.selectBoardArticles(boardVO, vo.getBbsAttrbCode()); { //화면 리스트 sheetTitle = "게시판 리스트(화면)" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); for(int i=0 ; i < bbsExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(bbsExcelValue[i][1]); } List bbsCastList = (List)bbsList.get("resultList") ; for(int i=0; i < bbsCastList.size(); i++){ row = sheet.createRow(i+1); for(int j=0 ; j < bbsExcelValue.length ; j++) { cell = row.createCell(j); cell.setCellStyle(style); if(j==0) cell.setCellValue(i+1); //번호 if(j==1) cell.setCellValue(((BoardVO)bbsCastList.get(i)).getNttSj()); //제목 if(j==2) cell.setCellValue( ((BoardVO)bbsCastList.get(i)).getAtchFileCnt() > 0 ? "있음" : "없음"); //첨부파일유무 if(j==3) cell.setCellValue( "Y".equals( ((BoardVO)bbsCastList.get(i)).getSecretAt() ) ? "비공개" : "공개" ); //공개여부 if(j==4) cell.setCellValue(((BoardVO)bbsCastList.get(i)).getFrstRegisterNm()); //작성자 if(j==5) cell.setCellValue(((BoardVO)bbsCastList.get(i)).getInqireCo()); //조회수 if(j==6) cell.setCellValue(((BoardVO)bbsCastList.get(i)).getFrstRegisterPnttm()); //작성일 } } } response.setHeader("Set-Cookie", "fileDownload=true; path=/"); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); Date currentTime = new Date (); String mTime = mSimpleDateFormat.format ( currentTime ); fileName = fileName+"("+mTime+")"; response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); wb.write(response.getOutputStream()); }catch(Exception e) { response.setHeader("Set-Cookie", "fileDownload=false; path=/"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Content-Type","text/html; charset=utf-8"); OutputStream out = null; try { out = response.getOutputStream(); byte[] data = new String("fail..").getBytes(); out.write(data, 0, data.length); } catch(Exception ignore) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } //읽음 처리 (버튼 클릭) @RequestMapping("/cop/bbs/insertReadYn.do") public ModelAndView insertReadYn(@RequestParam("checkList") String[] checkList, RedirectAttributes redirectAttributes , ReadVO readVO, HttpServletRequest request, @RequestParam Map commandMap, Model model) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); for(String id:checkList) { try{ String[] idSplit = id.split("\\|"); id = idSplit[0]; readVO.setMenuNo("2400000"); readVO.setReadId(id); readVO.setLoginId(user.getId()); ReadVO readYn = readService.selectReadYn(readVO); if(readYn == null) { readService.insertReadYn(readVO); } modelAndView.addObject("result", "success"); }catch(Exception e){ modelAndView.addObject("result", "fail"); } } return modelAndView; } /** * (사용자)자주하는 질문. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception * TotMngListAjax (통합경영공시) */ @RequestMapping(value= {"/web/cop/bbs/FaqList.do" , "/web/cop/bbs/FaqDetail.do", "/web/cop/bbs/FaqListAjax.do" } ) public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { if("/web/cop/bbs/FaqDetail.do".equals(request.getRequestURI())) { //통합검색시 boardMasterVO.setUrl("/web/cop/bbs/FaqList.do"); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); model.addAttribute("boardMenuList", boardMenuList); if("".equals(boardVO.getBbsId())) { //검색에서 조회시 nttid로 마스터 조회 BoardMasterVO bmVO = bbsAttrbService.selectBbsIdByNttId(boardVO); if (bmVO == null) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } BoardVO searchTotalVO = new BoardVO(); searchTotalVO.setSearchNttId(boardVO.getNttId()); searchTotalVO.setBbsId(bmVO.getBbsId()); model.addAttribute("searchTotalVO", searchTotalVO); return "web/cop/bbs/FaqList"; } } boardMasterVO.setUrl(request.getRequestURI()); //메뉴에 등록된 url에 등록된 게시판 조회 if("/web/cop/bbs/FaqList.do".equals(request.getRequestURI())) { //최초로딩 List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); model.addAttribute("boardMenuList", boardMenuList); if(0!=boardMenuList.size()) { //원자력 소식은 전체 매뉴 없음. BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } } if("/web/cop/bbs/FaqListAjax.do".equals(request.getRequestURI())) { //게시판 조회 BoardMasterVO bmVO = new BoardMasterVO(); PaginationInfo paginationInfo = new PaginationInfo(); //전체 게시글 불러오기 Map map = new HashMap(); if("".equals(boardVO.getBbsId())){ //전체 게시글 불러오기 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(bmVO.getPageUnit()); boardVO.setPageSize(bmVO.getPageSize()); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리 boardMasterVO.setUrl(temp.replace("Ajax", "")); map = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null); }else { bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); map = bbsMngService.selectBoardArticlesWeb(boardVO, null); } int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); if(bvo.getAtchFileCnt() > 0) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bvo.getAtchFileId()); List fileList = fileService.selectFileInfs(fileVO); bvo.setFileList(fileList); } } //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO bbsMasterInfo = bbsAttrbService.selectBBSMasterInf(searchVO); model.addAttribute("bbsMasterInfo", bbsMasterInfo); model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); return "web/cop/bbs/FaqListAjax"; }else { model.addAttribute("bbsId", ""); } return "web/cop/bbs/FaqList"; } /** * (사용자) 탭 게시판 통합 * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception * * * URL * /web/cop/bbs/NewsList.do (원자력소식) * /web/cop/bbs/selectLibList.do (자료실) * /web/cop/bbs/bussRealList.do (사업실명제) */ @RequestMapping(value= {"/web/cop/bbs/NewsList.do" , "/web/cop/bbs/NewsListAjax.do" , "/web/cop/bbs/LibList.do" , "/web/cop/bbs/LibListAjax.do" , "/web/cop/bbs/BussRealList.do" , "/web/cop/bbs/BussRealListAjax.do" , "/web/cop/bbs/TotMngListAjax.do" }) public String selectTabBbsListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { //메뉴에 등록된 url 조회 boardMasterVO.setUrl(request.getRequestURI()); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } if(0!=boardMenuList.size()) { //원자력 소식은 전체 매뉴 없음. if(!"9420000".equals(((BoardMasterVO)boardMenuList.get(0)).getMenuNo())) { BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } } if(request.getRequestURI().contains("List.do")){ //최초 로딩 매뉴이름가져오기 MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setUrl(request.getRequestURI()); MenuManageVO menuManageVO = menuManageService.selectMenuManageUrl(tempMenuManageVO); model.addAttribute("menuManageVO", menuManageVO); } if(request.getRequestURI().contains("ListAjax.do") //하단 리스트 ) { //상세 하단 리스트 BoardMasterVO bmVO = new BoardMasterVO(); PaginationInfo paginationInfo = new PaginationInfo(); //전체 게시글 불러오기 Map map = new HashMap(); if("".equals(boardVO.getBbsId())){ //전체 게시글 불러오기 boardVO.setPageUnit(bmVO.getPageUnit()); boardVO.setPageSize(bmVO.getPageSize()); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리 boardMasterVO.setUrl(temp.replace("Ajax", "")); //전체 게시글 불러오기 map = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null); }else { bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //메뉴별 게시글 불러오기 map = bbsMngService.selectBoardArticlesWeb(boardVO, null); } int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); /*모바일 페이지 5개씩 나오게 하기*/ PaginationInfo paginationInfoMobile = new PaginationInfo(); paginationInfoMobile.setCurrentPageNo(paginationInfo.getCurrentPageNo()); paginationInfoMobile.setTotalRecordCount(paginationInfo.getTotalRecordCount()); paginationInfoMobile.setPageSize(5); paginationInfoMobile.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); model.addAttribute("paginationInfoMobile", paginationInfoMobile); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); } model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); if(request.getRequestURI().contains("/web/cop/bbs/QnaListAjax.do")){ //묻고 답하기 return "web/cop/bbs/QnaListAjax"; } if(request.getRequestURI().contains("/web/cop/bbs/TotMngListAjax.do")){ //통합경영공시 model.addAttribute("bmVO", bmVO); return "web/cop/bbs/TotMngListAjax"; } return "web/cop/bbs/CntBbsListAjax"; } model.addAttribute("boardMenuList", boardMenuList); model.addAttribute("detailPage", request.getRequestURI().replace("List", "Detail")); return "web/cop/bbs/CntBbsList"; } /** * * URL * /web/cop/bbs/QnaList.do (묻고답하기) */ @RequestMapping(value= { "/web/cop/bbs/QnaListAjax.do" }) public String selectQnaListAjaxWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userUniqId = user == null ? "" : EgovStringUtil.isNullToString(user.getUniqId()); if("".equals(userUniqId)) { redirectAttributes.addFlashAttribute("message", "로그인 후 이용해 주세요."); return "redirect:/web/user/login/login.do"; } boardMasterVO.setFrstRegisterId(userUniqId); boardVO.setFrstRegisterId(userUniqId); boardMasterVO.setUrl(request.getRequestURI()); /* //메뉴에 등록된 url 조회 List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } if(0!=boardMenuList.size()) { //묻고답하기 BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } */ //상세 하단 리스트 BoardMasterVO bmVO = new BoardMasterVO(); PaginationInfo paginationInfo = new PaginationInfo(); if("".equals(boardMasterVO.getSearchSortCnd())){ //최초조회시 최신것 조회List boardMasterVO.setSearchSortCnd("nttId"); boardMasterVO.setSearchSortOrd("desc"); } //전체 게시글 불러오기 Map map = new HashMap(); //if("".equals(boardVO.getBbsId())){ //전체 게시글 불러오기 if("".equals(boardVO.getSeCmmnCdId())){ //전체 게시글 불러오기 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(bmVO.getPageUnit()); boardVO.setPageSize(bmVO.getPageSize()); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리 boardMasterVO.setUrl(temp.replace("Ajax", "")); //답변 조회 CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); List commentList = egovArticleCommentService.selectArticleCommentListAllList(commentVO); int commentCnt = commentList.size(); model.addAttribute("commentCnt", commentCnt); model.addAttribute("commentList", commentList); //전체 게시글 불러오기 map = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null); }else { //bmVO.setBbsId(boardVO.getBbsId()); bmVO.setBbsId(boardVO.getSeCmmnCdId()); boardVO.setBbsId(boardVO.getSeCmmnCdId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //답변 조회 CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); List commentList = egovArticleCommentService.selectArticleCommentListAllList(commentVO); int commentCnt = commentList.size(); model.addAttribute("commentCnt", commentCnt); model.addAttribute("commentList", commentList); //메뉴별 게시글 불러오기 map = bbsMngService.selectBoardArticlesWeb(boardVO, null); } int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); } model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", totCnt); model.addAttribute("paginationInfo", paginationInfo); if(request.getRequestURI().contains("/web/cop/bbs/QnaListAjax.do")){ //묻고 답하기 return "web/cop/bbs/QnaListAjax"; } return "web/cop/bbs/QnaListAjax"; } /** * * URL * /web/cop/bbs/NoticeList.do (공지사항) */ @RequestMapping(value= {"web/cop/bbs/NoticeList.do"}) public String selectNoticeListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { //메뉴에 등록된 url 조회 boardMasterVO.setUrl(request.getRequestURI()); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); //List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : boardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } //게시판 메뉴 리스트 if(0!=boardMenuList.size()) { //공지사항 BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } model.addAttribute("boardMenuList", boardMenuList); model.addAttribute("detailPage", request.getRequestURI().replace("List", "Detail")); return "web/cop/bbs/NoticeList"; } /** * * URL * /web/cop/bbs/SuggestList.do (불편신고) */ @RequestMapping(value= {"web/cop/bbs/SuggestList.do"}) public String selectSuggestListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userUniqId = user == null ? "" : EgovStringUtil.isNullToString(user.getUniqId()); if("".equals(userUniqId)) { redirectAttributes.addFlashAttribute("message", "로그인 후 이용해 주세요."); return "redirect:/web/user/login/login.do"; } //메뉴에 등록된 url 조회 boardMasterVO.setUrl(request.getRequestURI()); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); //List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : boardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } //게시판 메뉴 리스트 if(0!=boardMenuList.size()) { //공지사항 BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } model.addAttribute("boardMenuList", boardMenuList); model.addAttribute("detailPage", request.getRequestURI().replace("List", "Detail")); return "web/cop/bbs/SuggestList"; } /** * * URL * /web/cop/bbs/SuggestList.do (불편신고) */ @RequestMapping(value= { "/web/cop/bbs/SuggestListAjax.do" }) public String selectSuggestListAjaxWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userUniqId = user == null ? "" : EgovStringUtil.isNullToString(user.getUniqId()); if("".equals(userUniqId)) { redirectAttributes.addFlashAttribute("message", "로그인 후 이용해 주세요."); return "redirect:/web/user/login/login.do"; } boardMasterVO.setFrstRegisterId(userUniqId); boardVO.setFrstRegisterId(userUniqId); boardMasterVO.setUrl(request.getRequestURI()); /* //메뉴에 등록된 url 조회 List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } if(0!=boardMenuList.size()) { //묻고답하기 BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } */ //상세 하단 리스트 BoardMasterVO bmVO = new BoardMasterVO(); PaginationInfo paginationInfo = new PaginationInfo(); if("".equals(boardMasterVO.getSearchSortCnd())){ //최초조회시 최신것 조회List boardMasterVO.setSearchSortCnd("nttId"); boardMasterVO.setSearchSortOrd("desc"); } //전체 게시글 불러오기 Map map = new HashMap(); //if("".equals(boardVO.getBbsId())){ //전체 게시글 불러오기 if("".equals(boardVO.getSeCmmnCdId())){ //전체 게시글 불러오기 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(bmVO.getPageUnit()); boardVO.setPageSize(bmVO.getPageSize()); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리 boardMasterVO.setUrl(temp.replace("Ajax", "")); //답변 조회 CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); List commentList = egovArticleCommentService.selectArticleCommentListAllList(commentVO); int commentCnt = commentList.size(); model.addAttribute("commentCnt", commentCnt); model.addAttribute("commentList", commentList); //전체 게시글 불러오기 map = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null); }else { //bmVO.setBbsId(boardVO.getBbsId()); bmVO.setBbsId(boardVO.getSeCmmnCdId()); boardVO.setBbsId(boardVO.getSeCmmnCdId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //답변 조회 CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); List commentList = egovArticleCommentService.selectArticleCommentListAllList(commentVO); int commentCnt = commentList.size(); model.addAttribute("commentCnt", commentCnt); model.addAttribute("commentList", commentList); //메뉴별 게시글 불러오기 map = bbsMngService.selectBoardArticlesWeb(boardVO, null); } int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); } model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", totCnt); model.addAttribute("paginationInfo", paginationInfo); return "web/cop/bbs/SuggestListAjax"; } /** * * URL * /web/cop/bbs/QnaList.do (묻고답하기) */ @RequestMapping(value= { "web/cop/bbs/QnaList.do" }) public String selectQnaListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userUniqId = user == null ? "" : EgovStringUtil.isNullToString(user.getUniqId()); if("".equals(userUniqId)) { //redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다."); return "redirect:/web/user/login/login.do"; } boardMasterVO.setFrstRegisterId(userUniqId); boardVO.setFrstRegisterId(userUniqId); //메뉴에 등록된 url 조회 boardMasterVO.setUrl(request.getRequestURI()); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); //List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : boardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } if(0!=boardMenuList.size()) { //묻고답하기 BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } model.addAttribute("boardMenuList", boardMenuList); model.addAttribute("detailPage", request.getRequestURI().replace("List", "Detail")); return "web/cop/bbs/QnaList"; } /** * * URL * /web/cop/bbs/NoticeListAjax.do (공지사항 - 내용) */ @RequestMapping(value= { "/web/cop/bbs/NoticeListAjax.do" }) public String selectNoticeListAjaxWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO ) throws Exception { //step1.현재 url을 저장한다.(?) //step2.현재 url의 게시판 리스트 정보를 가져온다. //step3.현재 url의 게시판 리스트 정보를 가져온다. boardMasterVO.setUrl(request.getRequestURI()); //메뉴에 등록된 url 조회 /* boardMasterVO.setUrl(request.getRequestURI()); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } //게시판 메뉴 리스트 if(0!=boardMenuList.size()) { //공지사항 BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } */ BoardMasterVO bmVO = new BoardMasterVO(); PaginationInfo paginationInfo = new PaginationInfo(); if("".equals(boardMasterVO.getSearchSortCnd())){ //최초조회시 최신것 조회List boardMasterVO.setSearchSortCnd("nttId"); boardMasterVO.setSearchSortOrd("desc"); } //전체 게시글 불러오기 Map map = new HashMap(); if("".equals(boardVO.getSeCmmnCdId())){ //전체 게시글 불러오기 //if("".equals(boardVO.getBbsId())){ //전체 게시글 불러오기 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(bmVO.getPageUnit()); boardVO.setPageSize(bmVO.getPageSize()); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리 boardMasterVO.setUrl(temp.replace("Ajax", "")); //전체 게시글 불러오기 map = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null); }else { System.out.println("boardVO.getSeCmmnCdId()"); System.out.println(boardVO.getSeCmmnCdId()); //bmVO.setBbsId(boardVO.getBbsId()); bmVO.setBbsId(boardVO.getSeCmmnCdId()); boardVO.setBbsId(boardVO.getSeCmmnCdId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //메뉴별 게시글 불러오기 map = bbsMngService.selectBoardArticlesWeb(boardVO, null); } int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); } model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); return "web/cop/bbs/NoticeListAjax"; } /** * (사용자)이벤트 게시판(포토형 탭게시판). * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception * */ @RequestMapping(value= { "/web/cop/bbs/EventList.do" } ) public String selectEventListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { boardMasterVO.setUrl(request.getRequestURI()); //메뉴에 등록된 url에 등록된 게시판 조회 if("/web/cop/bbs/EventList.do".equals(request.getRequestURI())) { //최초로딩 List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); model.addAttribute("boardMenuList", boardMenuList); if(0!=boardMenuList.size()) { //BoardMasterVO totalBoardMasterVO1 = new BoardMasterVO(); //totalBoardMasterVO1.setBbsNm("전체"); //totalBoardMasterVO1.setBbsId(boardMenuList.get(0).getBbsId()); //boardMenuList.add(0,totalBoardMasterVO1) ; BoardMasterVO totalBoardMasterVO2 = new BoardMasterVO(); totalBoardMasterVO2.setBbsNm("종료된 이벤트"); totalBoardMasterVO2.setBbsId(boardMenuList.get(0).getBbsId()); boardMenuList.add(boardMenuList.size(),totalBoardMasterVO2) ; } } //model.addAttribute("bbsId", ""); model.addAttribute("detailPage", request.getRequestURI().replace("List", "Detail")); return "web/cop/bbs/EventList"; } /** * (사용자)이벤트 게시판(포토형 탭게시판). * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception * */ @RequestMapping(value= { "/web/cop/bbs/EventListAjax.do" } ) public String selectEventListAjaxWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO ) throws Exception { boardMasterVO.setUrl(request.getRequestURI()); BoardMasterVO bmVO = new BoardMasterVO(); PaginationInfo paginationInfo = new PaginationInfo(); //전체 게시글 불러오기 Map map = new HashMap(); //종료 if("End".equals(boardVO.getBbsId())) { //}else if("End".equals(boardVO.getSeCmmnCdId())) { //boardVO.setBbsId("BBSMSTR_000000000731"); //bmVO.setBbsId(boardVO.getBbsId()); boardVO.setBbsId(boardVO.getSeCmmnCdId()); bmVO.setBbsId(boardVO.getSeCmmnCdId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); /*map = bbsMngService.selectBoardArticlesWeb(boardVO, null);*/ map = bbsMngService.selectBoardArticlesWebEventEnd(boardVO, null); }else if("Ing".equals(boardVO.getBbsId())) { //bmVO.setBbsId(boardVO.getBbsId()); boardVO.setBbsId(boardVO.getSeCmmnCdId()); bmVO.setBbsId(boardVO.getSeCmmnCdId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); map = bbsMngService.selectBoardArticlesWebEvent(boardVO, null); }else { //전체 //if("".equals(boardVO.getBbsId())){ //전체 게시글 불러오기 if(boardMasterVO.getPageUnit() != 10) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setPageUnit(bmVO.getPageUnit()); boardVO.setPageSize(bmVO.getPageSize()); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리 boardMasterVO.setUrl(temp.replace("Ajax", "")); /*map = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null);*/ map = bbsMngService.selectBoardArticlesWebUrlEventAll(boardMasterVO, null); } int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); if(bvo.getAtchFileCnt() > 0) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bvo.getAtchFileId()); List fileList = fileService.selectFileInfs(fileVO); bvo.setFileList(fileList); } } if (("BBST05").equals(bmVO.getBbsTyCode())){ //사진게시판 8개씩 9개조회후 9개면 더보기 if(boardMasterVO.getPageUnit() != 9) { bmVO.setPageUnit(boardMasterVO.getPageUnit()); } boardVO.setRecordCountPerPage(9); //리스트 수 boardVO.setFirstIndex( (boardVO.getPageIndex()-1)*9); //offset paginationInfo.setRecordCountPerPage(boardVO.getRecordCountPerPage()); //웹 접근성 획득 후 롤백 } if("BBST05".equals(bmVO.getBbsTyCode())){ boardVO.setSearchSortCnd("FRST_REGIST_PNTTM"); boardVO.setSearchSortOrd("desc"); } //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO bbsMasterInfo = bbsAttrbService.selectBBSMasterInf(searchVO); model.addAttribute("bbsMasterInfo", bbsMasterInfo); model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", totCnt); model.addAttribute("paginationInfo", paginationInfo); return "web/cop/bbs/EventListAjax"; //model.addAttribute("detailPage", request.getRequestURI().replace("List", "Detail")); //return "web/cop/bbs/EventList"; } /** * (사용자)게시물에 대한 상세 정보를 조회한다. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= { "/web/cop/bbs/EventDetail.do" } ) public String selectBoardEventDetailWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, BoardMasterVO masterVO, ModelMap model, @RequestParam Map commandMap, RedirectAttributes redirectAttributes) throws Exception { //XSS 태그 필터링 처리 boardVO.setBbsId(unscript(boardVO.getBbsId())); boardVO.setSeCmmnCdId(unscript(boardVO.getSeCmmnCdId())); boardVO.setFrstRegisterId(unscript(boardVO.getFrstRegisterId())); boardVO.setSearchBgnDe(unscript(boardVO.getSearchBgnDe())); boardVO.setSearchEndDe(unscript(boardVO.getSearchEndDe())); boardVO.setSearchSortCnd(unscript(boardVO.getSearchSortCnd())); boardVO.setSearchSortOrd(unscript(boardVO.getSearchSortOrd())); boardVO.setSearchCnd(unscript(boardVO.getSearchCnd())); boardVO.setSearchWrd(unscript(boardVO.getSearchWrd())); BoardMasterVO bmVO = new BoardMasterVO(); if("".equals(boardVO.getBbsId())) { //검색에서 조회시 nttid로 마스터 조회 bmVO = bbsAttrbService.selectBbsIdByNttId(boardVO); if (bmVO == null) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } boardVO.setBbsId(bmVO.getBbsId()); }else { bmVO.setBbsId(boardVO.getBbsId()); } bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); if("/web/cop/bbs/NewsDetail.do".equals(request.getRequestURI()) || "/web/contentBbsDetail.do".equals(request.getRequestURI())) { //원자력소식 수정삭제등록 없음. bmVO.setWebChgYn("N"); model.addAttribute("masterVO", masterVO); } BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); if (bmVO == null || ("N").equals(bmVO.getUseAt())) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.imposbl")); return "redirect:/web/main/mainPage.do"; } {//묻고답하기 권한체크 boolean passChk = false; if("9530000".equals(bmVO.getMenuNo())) { LoginVO loginVO = new LoginVO(); if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) { //최고 관리자면 바로수정 loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if("ROLE_ADMIN".equals(loginVO.getAuthority())){ passChk = true; }else { //일반관리자 bmVO.setBbsMngId(loginVO.getId()); if( bbsAttrbService.selectBBSMngInfCnt(bmVO) > 0 ) { //게시판 관리자 조회 passChk = true; } } }else{//방문자 세션있는방문자 UserVO userVO = new UserVO(); if(request.getSession().getAttribute("userVO") != null) { userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(userVO.getMblDn().equals(bdVO.getMblDn())) { passChk = true; } } } if(!"T".equals(bdVO.getSecretAt())){ if(!passChk){ if("".equals(boardVO.getPassword())) { redirectAttributes.addFlashAttribute("message", "패스워드를 넣어주세요"); return "redirect:/web/cop/bbs/QnaList.do"; }else { if(!damoDec(bdVO.getPassword(), request).equals(boardVO.getPassword())) { redirectAttributes.addFlashAttribute("message", "패스워드가 맞지 않습니다."); if("9530000".equals(bmVO.getMenuNo())) { return "redirect:/web/cop/bbs/QnaList.do"; }else { return "redirect:/web/cop/bbsWeb/selectBoardList.do?bbsId="+boardVO.getBbsId(); } } } } } } } // 조회수 증가 여부 지정 boardVO.setPlusCount(true); bbsMngService.updateBoardArticleInqireCo(boardVO); boardVO.setMblDn(bdVO.getMblDn()); // 위/아래 게시글 번호, 제목 조회 EgovMap upDownNttid = bbsMngService.getUpDownNttIdNSj(boardVO); //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO resultBbsMsInfo = bbsAttrbService.selectBBSMasterInf(searchVO); //답변글 리스트 if(bdVO.getAnswerCnt() > 0) { List answerList = bbsMngService.selectBoardAnswerList(bdVO); model.addAttribute("answerList", answerList); } System.out.println("boardVO.toString()"); System.out.println("getNtceBgnde"); System.out.println(bdVO.getNiceFailUrl()); System.out.println(bdVO.getNiceSuccUrl()); if ("1".equals(bdVO.getNiceFailUrl()) //s-date && "1".equals(bdVO.getNiceSuccUrl()) //e-date ) { bmVO.setBbsNm("진행전"); }else if ("-1".equals(bdVO.getNiceFailUrl()) //s-date && "-1".equals(bdVO.getNiceSuccUrl()) //e-date ) { bmVO.setBbsNm("종료"); }else { bmVO.setBbsNm("진행중"); } model.addAttribute("nextNttIdNSj", upDownNttid.get("nextNttIdNSj")); model.addAttribute("prevNttIdNSj", upDownNttid.get("prevNttIdNSj")); model.addAttribute("result", bdVO); model.addAttribute("brdMstrVO", bmVO); model.addAttribute("resultBbsMsInfo", resultBbsMsInfo); CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); //게시판ID commentVO.setNttId(boardVO.getNttId()); //게시글ID //댓글 조회 List resultList = egovArticleCommentService.selectArticleCommentListAll(commentVO); int totCnt = resultList.size(); model.addAttribute("resultCnt", totCnt); model.addAttribute("resultList", resultList); if("BBST05".equals(bmVO.getBbsTyCode())){ //이벤트 포토게시판 if(bdVO.getAtchFileCnt() > 0 ) { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(bdVO.getAtchFileId()); List result = fileService.selectImageFileList(fileVO); model.addAttribute("fileList", result); } //masterVO.setBbsNm(bbsNm); return "web/cop/bbs/EgovNoticePhotoInqire"; } if("Y".equals(masterVO.getTabBbsId())){ model.addAttribute("PubDetail", true); } return "web/cop/bbs/EgovNoticeInqire"; } /** * * URL * /web/cop/bbs/TermsList.do (공지사항) */ @RequestMapping(value= {"web/cop/bbs/TermsList.do" , "/web/cop/bbs/TermsListAjax.do" }) public String selectNoticeListWeb(HttpServletRequest request, @ModelAttribute("searchVO") TermsVO termsVO, ModelMap model , RedirectAttributes redirectAttributes) throws Exception { //상세 하단 리스트 if(request.getRequestURI().contains("ListAjax.do")) { // 공통 List resultList = new ArrayList(); // 이용약관, 개인정보보호방침 이전버전 List TermsVO termsVO2 = new TermsVO(); termsVO2.setFirstIndex(0); termsVO2.setRecordCountPerPage(20); termsVO2.setSearchDiv(termsVO.getMenuNm()); termsVO2.setSearchUseYn("N"); termsVO2.setSearchSortCnd("effectDate"); termsVO2.setSearchSortOrd("desc"); List termsMastList = egovSiteManagerService.selectTermsMastMngBeforeList(termsVO2); model.addAttribute("termsMastList", termsMastList); // NEW // 이용약관, 개인정보보호방침 최신버전 List TermsVO termsVO3 = new TermsVO(); termsVO3.setFirstIndex(0); termsVO3.setRecordCountPerPage(1); termsVO3.setSearchDiv(termsVO.getMenuNm()); termsVO3.setSearchUseYn("Y"); termsVO3.setSearchSortCnd("effectDate"); termsVO3.setSearchSortOrd("desc"); List termsMastList2 = egovSiteManagerService.selectTermsMastMngList(termsVO3); if (termsMastList2.size() > 0) { TermsVO termsVO4 = new TermsVO(); termsVO4.setFirstIndex(0); termsVO4.setRecordCountPerPage(20); termsVO4.setTermsMastNo(termsMastList2.get(0).getTermsMastNo()); termsVO4.setSearchUseYn("Y"); termsVO4.setSearchSortCnd("sort"); termsVO4.setSearchSortOrd("ASC"); resultList = egovSiteManagerService.selectTermsSubMngList(termsVO4); } // 불법스팸방지안내 if (termsVO.getMenuNm().equals("04")) { termsVO.setSearchSortCnd("TERMS_ID"); termsVO.setSearchSortOrd("ASC"); resultList = egovSiteManagerService.selectTermsMenu(termsVO); } model.addAttribute("resultList", resultList); return "web/cop/bbs/TermsListAjax"; } else { String effectDate_02 = ""; String effectDate_03 = ""; TermsVO termsVO7 = new TermsVO(); termsVO7.setFirstIndex(0); termsVO7.setRecordCountPerPage(2); termsVO7.setSearchUseYn("Y"); termsVO7.setSearchSortCnd("effectDate"); termsVO7.setSearchSortOrd("desc"); List termsMastList7 = egovSiteManagerService.selectTermsMastMngList(termsVO7); for(TermsVO item : termsMastList7) { if (item.getTermsDivCode().equals("02")) { effectDate_02 = "(" + item.getEffectDate() + ")"; } if (item.getTermsDivCode().equals("03")) { effectDate_03 = "(" + item.getEffectDate() + ")"; } } model.addAttribute("effectDate_02", effectDate_02); model.addAttribute("effectDate_03", effectDate_03); } return "web/cop/bbs/TermsList"; } @RequestMapping(value= {"/web/cop/bbs/TermsHistPopAjax.do"}) public String TermsHistPop(HttpServletRequest request, @ModelAttribute("searchVO") TermsVO termsVO, ModelMap model) throws Exception { List resultList = new ArrayList(); termsVO.setSearchSortCnd("TERMS_ID"); termsVO.setSearchSortOrd("ASC"); resultList = egovSiteManagerService.selectTermsMenu(termsVO); // New /* termsVO.setSearchSortCnd("sort"); termsVO.setSearchSortOrd("ASC"); resultList = egovSiteManagerService.selectTermsSubMngList(termsVO); */ model.addAttribute("resultList", resultList); return "web/cop/bbs/TermsHistPopAjax"; } // 이용약관 메일 발송 테스트 @RequestMapping(value = "/web/cop/bbs/TermsHistSendEmailAjax.do") public ModelAndView ignoreIpCntAjax( @ModelAttribute("searchVO") TermsVO termsVO , HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; try { // 이용약관 회원 전체발송 //mjonNoticeSendUtil.userAllTermsEmailSend(); } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /** * (사용자)사전정보공표. * * @param boardVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/cop/bbs/PubOperList.do" ,"/web/cop/bbs/PubOperMainAjax.do" ,"/web/cop/bbs/PubOperListAjax.do" ,"/web/cop/bbs/PubOperSubListAjax.do" ,"/web/cop/bbs/PubOperSubDetailListAjax.do" }) public String selectPubOperList(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { //메뉴에 등록된 url 조회 boardMasterVO.setUrl(request.getRequestURI()); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); if("/web/cop/bbs/PubOperMainAjax.do".equals(request.getRequestURI())){ //사전정보공표 최초 로딩 BoardMasterVO mainMasterVO = new BoardMasterVO(); mainMasterVO.setFirstIndex(0); mainMasterVO.setLastIndex(20); mainMasterVO.setRecordCountPerPage(30); mainMasterVO.setBbsTyCode("BBST07"); mainMasterVO.setUseAt("Y"); //사용만 mainMasterVO.setSearchSortCnd("BBS_SORT"); mainMasterVO.setSearchSortOrd("ASC"); mainMasterVO.setSeCmmnCdId("01"); //기관운영관련정보 Map map01 = bbsAttrbService.selectBBSMasterInfs(mainMasterVO); model.addAttribute("resultList01", map01.get("resultList")); mainMasterVO.setSeCmmnCdId("02"); //주요사업정보 Map map02 = bbsAttrbService.selectBBSMasterInfs(mainMasterVO); model.addAttribute("resultList01", map01.get("resultList")); model.addAttribute("resultList02", map02.get("resultList")); return "web/cop/bbs/PubOperMainAjax"; } if("/web/cop/bbs/PubOperListAjax.do".equals(request.getRequestURI())){ //사전정보공표 리스트 BoardMasterVO mainMasterVO = new BoardMasterVO(); mainMasterVO.setFirstIndex(0); mainMasterVO.setLastIndex(20); mainMasterVO.setRecordCountPerPage(30); mainMasterVO.setBbsTyCode("BBST07"); mainMasterVO.setUseAt("Y"); //사용만 Map mapMain = bbsAttrbService.selectBBSMasterInfs(mainMasterVO); BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(bmVO != null) { boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); } PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //전체 게시글 불러오기 Map map = bbsMngService.selectBoardArticlesWeb(boardVO, null); int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); } //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO bbsMasterInfo = bbsAttrbService.selectBBSMasterInf(searchVO); List mapMainList = new ArrayList(); mapMainList = (List)mapMain.get("resultList") ; for(BoardMasterVO tempVO : mapMainList ) { if(tempVO.getBbsId().equals(bbsMasterInfo.getBbsId())) { tempVO.setSelectedFlag(true); } } model.addAttribute("resultMainList", mapMain.get("resultList")); model.addAttribute("bbsMasterInfo", bbsMasterInfo); model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); return "web/cop/bbs/PubOperListAjax"; } if("/web/cop/bbs/PubOperSubListAjax.do".equals(request.getRequestURI())){ //사전정보공표 바로가기 BoardMasterVO mainMasterVO = new BoardMasterVO(); mainMasterVO.setFirstIndex(0); mainMasterVO.setLastIndex(20); mainMasterVO.setRecordCountPerPage(30); mainMasterVO.setBbsTyCode("BBST07"); mainMasterVO.setUseAt("Y"); //사용만 Map mapMain = bbsAttrbService.selectBBSMasterInfs(mainMasterVO); BoardMasterVO bmVO = new BoardMasterVO(); bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 if(bmVO != null) { boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); } PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //전체 게시글 불러오기 Map map = bbsMngService.selectBoardArticlesWeb(boardVO, null); int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); } //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO bbsMasterInfo = bbsAttrbService.selectBBSMasterInf(searchVO); List mapMainList = new ArrayList(); mapMainList = (List)mapMain.get("resultList") ; for(BoardMasterVO tempVO : mapMainList ) { if(tempVO.getBbsId().equals(boardMasterVO.getTabBbsId())) { //탭에서 가져온 상단 tabBbsId tempVO.setSelectedFlag(true); } } model.addAttribute("resultMainList", mapMain.get("resultList")); model.addAttribute("bbsMasterInfo", bbsMasterInfo); model.addAttribute("subBbsNm", bbsMasterInfo.getBbsNm()); model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); //return "web/cop/bbs/PubOperListAjax"; BoardVO boardTabVO = bbsMngService.selectBbsTabIdByPubUrl(boardVO); model.addAttribute("boardTabVO", boardTabVO); return "web/cop/bbs/PubOperSubListAjax"; } if("/web/cop/bbs/PubOperSubDetailListAjax.do".equals(request.getRequestURI())){ //사전정보공표 바로가기 // 조회수 증가 여부 지정 boardVO.setPlusCount(true); bbsMngService.updateBoardArticleInqireCo(boardVO); // 위/아래 게시글 번호, 제목 조회 EgovMap upDownNttid = bbsMngService.getUpDownNttIdNSj(boardVO); //게시판 마스터 옵션 정보 BoardMasterVO searchVO = new BoardMasterVO(); searchVO.setBbsId(boardVO.getBbsId()); BoardMasterVO resultBbsMsInfo = bbsAttrbService.selectBBSMasterInf(searchVO); BoardVO bdVO = bbsMngService.selectBoardArticleWeb(boardVO); model.addAttribute("nextNttIdNSj", upDownNttid.get("nextNttIdNSj")); model.addAttribute("prevNttIdNSj", upDownNttid.get("prevNttIdNSj")); model.addAttribute("brdMstrVO", resultBbsMsInfo); model.addAttribute("result", bdVO); return "web/cop/bbs/PubOperSubDetailListAjax"; } if("Y".equals(boardVO.getPubDetail())){ model.addAttribute("pubDetail", true); return "web/cop/bbs/PubOperList"; } if(null !=boardVO.getBbsId() && !"".equals(boardVO.getBbsId() )) { return "web/cop/bbs/PubOperSubList"; } return "web/cop/bbs/PubOperList"; } /** * 시간을 LIST를 반환한다. * @return List * @throws */ @SuppressWarnings("unused") private List getTimeHH() { ArrayList listHH = new ArrayList(); HashMap hmHHMM; for (int i = 0; i <= 24; i++) { String sHH = ""; String strI = String.valueOf(i); if (i < 10) { sHH = "0" + strI; } else { sHH = strI; } ComDefaultCodeVO codeVO = new ComDefaultCodeVO(); codeVO.setCode(sHH); codeVO.setCodeNm(sHH); listHH.add(codeVO); } return listHH; } /** * 분을 LIST를 반환한다. * @return List * @throws */ @SuppressWarnings("unused") private List getTimeMM() { ArrayList listMM = new ArrayList(); HashMap hmHHMM; for (int i = 0; i <= 60; i++) { String sMM = ""; String strI = String.valueOf(i); if (i < 10) { sMM = "0" + strI; } else { sMM = strI; } ComDefaultCodeVO codeVO = new ComDefaultCodeVO(); codeVO.setCode(sMM); codeVO.setCodeNm(sMM); listMM.add(codeVO); } return listMM; } /** * (사용자) 컨텐츠 게시판 통합 * * URL * /web/cop/bbs/CntBbsListAjax (상단 검색부분 없는 리스트) * /web/cop/bbs/CntBbs01ListAjax.do(상단 검색부분 있는 리스트) 01타입 */ @RequestMapping(value= {"/web/cop/bbs/CntBbsList.do" , "/web/cop/bbs/CntBbsListAjax.do" , "/web/cop/bbs/CntBbs01ListAjax.do" }) public String selectCntBbsListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , BoardVO boardVO , RedirectAttributes redirectAttributes) throws Exception { //메뉴에 등록된 url 조회 boardMasterVO.setUrl("/web/content.do?proFn?="+boardMasterVO.getMenuNm()); List boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); List viewBoardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO); for(BoardMasterVO tempVO : viewBoardMenuList) { if("N".equals(tempVO.getViewsYn())){; boardMasterVO.setViewsYn("N"); break ; } } if(0!=boardMenuList.size()) { //원자력 소식은 전체 매뉴 없음. if(!"9420000".equals(((BoardMasterVO)boardMenuList.get(0)).getMenuNo())) { BoardMasterVO totalBoardMasterVO = new BoardMasterVO(); totalBoardMasterVO.setBbsNm("전체"); boardMenuList.add(0,totalBoardMasterVO) ; } } if(request.getRequestURI().contains("List.do")){ //최초 로딩 매뉴이름가져오기 MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setUrl(request.getRequestURI()); MenuManageVO menuManageVO = menuManageService.selectMenuManageUrl(tempMenuManageVO); model.addAttribute("menuManageVO", menuManageVO); } if(request.getRequestURI().contains("ListAjax.do") //하단 리스트 ) { //상세 하단 리스트 BoardMasterVO bmVO = new BoardMasterVO(); PaginationInfo paginationInfo = new PaginationInfo(); //전체 게시글 불러오기 Map map = new HashMap(); if("".equals(boardVO.getBbsId())){ //전체 게시글 불러오기 boardVO.setPageUnit(bmVO.getPageUnit()); boardVO.setPageSize(bmVO.getPageSize()); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); String temp = boardMasterVO.getUrl(); //Url 패턴에 Ajax 구문 삭제처리 boardMasterVO.setUrl(temp.replace("Ajax", "")); //전체 게시글 불러오기 map = bbsMngService.selectBoardArticlesWebUrl(boardMasterVO, null); }else { bmVO.setBbsId(boardVO.getBbsId()); bmVO = bbsAttrbService.selectBBSMasterInf(bmVO); //UserVO userVO = (UserVO)request.getSession().getAttribute("userVO"); // 사용자 정보 boardVO.setPageUnit(Integer.parseInt(bmVO.getListNum())); boardVO.setPageSize(Integer.parseInt(bmVO.getPageNum())); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //메뉴별 게시글 불러오기 map = bbsMngService.selectBoardArticlesWeb(boardVO, null); } int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); List resultList = (List)map.get("resultList"); for (BoardVO bvo: resultList) { Document doc = Jsoup.parse(bvo.getNttCn()); String text = doc.text(); bvo.setNttCn2(text); } model.addAttribute("resultList", resultList); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); if(request.getRequestURI().contains("CntBbs01ListAjax")){ //01타입 model.addAttribute("boardVO", boardVO); return "web/cop/bbs/CntBbs01ListAjax"; } return "web/cop/bbs/CntBbsListAjax"; } model.addAttribute("boardMenuList", boardMenuList); return "web/cop/bbs/CntBbsList"; } public String getDateDay(String date, String dateType) throws Exception { String day = "" ; SimpleDateFormat dateFormat = new SimpleDateFormat(dateType) ; Date nDate = dateFormat.parse(date) ; Calendar cal = Calendar.getInstance() ; cal.setTime(nDate); int dayNum = cal.get(Calendar.DAY_OF_WEEK) ; switch(dayNum){ case 1: day = "일"; break ; case 2: day = "월"; break ; case 3: day = "화"; break ; case 4: day = "수"; break ; case 5: day = "목"; break ; case 6: day = "금"; break ; case 7: day = "토"; break ; } return day ; } public BoardVO niceCheck(HttpServletRequest request, HttpSession session, BoardVO boardVO) { CPClient niceCheck = new CPClient(); String sEncodeData = requestReplace(request.getParameter("EncodeData"), "encodeData"); String sSiteCode = "BS933"; // NICE로부터 부여받은 사이트 코드 String sSitePassword = "2CU5kY9wpppk"; // NICE로부터 부여받은 사이트 패스워드 String sCipherTime = ""; // 복호화한 시간 String sRequestNumber = ""; // 요청 번호 String sResponseNumber = ""; // 인증 고유번호 String sAuthType = ""; // 인증 수단 String sName = ""; // 성명 String sDupInfo = ""; // 중복가입 확인값 (DI_64 byte) String sConnInfo = ""; // 연계정보 확인값 (CI_88 byte) String sBirthDate = ""; // 생년월일(YYYYMMDD) String sGender = ""; // 성별 String sNationalInfo = ""; // 내/외국인정보 (개발가이드 참조) String sMobileNo = ""; // 휴대폰번호 String sMobileCo = ""; // 통신사 String sMessage = ""; String sPlainData = ""; int iReturn = niceCheck.fnDecode(sSiteCode, sSitePassword, sEncodeData); if( iReturn == 0 ) { sPlainData = niceCheck.getPlainData(); sCipherTime = niceCheck.getCipherDateTime(); // 데이타를 추출합니다. java.util.HashMap mapresult = niceCheck.fnParse(sPlainData); sRequestNumber = (String)mapresult.get("REQ_SEQ"); sResponseNumber = (String)mapresult.get("RES_SEQ"); sAuthType = (String)mapresult.get("AUTH_TYPE"); sName = (String)mapresult.get("NAME"); //sName = (String)mapresult.get("UTF8_NAME"); //charset utf8 사용시 주석 해제 후 사용 sBirthDate = (String)mapresult.get("BIRTHDATE"); sGender = (String)mapresult.get("GENDER"); sNationalInfo = (String)mapresult.get("NATIONALINFO"); sDupInfo = (String)mapresult.get("DI"); sConnInfo = (String)mapresult.get("CI"); sMobileNo = (String)mapresult.get("MOBILE_NO"); sMobileCo = (String)mapresult.get("MOBILE_CO"); String session_sRequestNumber = (String)session.getAttribute("REQ_SEQ"); if(!sRequestNumber.equals(session_sRequestNumber)) { sMessage = "세션값 불일치 오류입니다."; sResponseNumber = ""; sAuthType = ""; } } else if( iReturn == -1) { sMessage = "복호화 시스템 오류입니다."; } else if( iReturn == -4) { sMessage = "복호화 처리 오류입니다."; } else if( iReturn == -5) { sMessage = "복호화 해쉬 오류입니다."; } else if( iReturn == -6) { sMessage = "복호화 데이터 오류입니다."; } else if( iReturn == -9) { sMessage = "입력 데이터 오류입니다."; } else if( iReturn == -12) { sMessage = "사이트 패스워드 오류입니다."; } else { sMessage = "알수 없는 에러 입니다. iReturn : " + iReturn; } try { boardVO.setNiceMessage(sMessage); boardVO.setNiceNm(sName); boardVO.setMblDn(sDupInfo); }catch(Exception e) { e.printStackTrace(); } return boardVO; } //나이스 인증 public String requestReplace (String paramValue, String gubun) { String result = ""; if (paramValue != null) { paramValue = paramValue.replaceAll("<", "<").replaceAll(">", ">"); paramValue = paramValue.replaceAll("\\*", ""); paramValue = paramValue.replaceAll("\\?", ""); paramValue = paramValue.replaceAll("\\[", ""); paramValue = paramValue.replaceAll("\\{", ""); paramValue = paramValue.replaceAll("\\(", ""); paramValue = paramValue.replaceAll("\\)", ""); paramValue = paramValue.replaceAll("\\^", ""); paramValue = paramValue.replaceAll("\\$", ""); paramValue = paramValue.replaceAll("'", ""); paramValue = paramValue.replaceAll("@", ""); paramValue = paramValue.replaceAll("%", ""); paramValue = paramValue.replaceAll(";", ""); paramValue = paramValue.replaceAll(":", ""); paramValue = paramValue.replaceAll("-", ""); paramValue = paramValue.replaceAll("#", ""); paramValue = paramValue.replaceAll("--", ""); paramValue = paramValue.replaceAll("-", ""); paramValue = paramValue.replaceAll(",", ""); if(gubun != "encodeData"){ paramValue = paramValue.replaceAll("\\+", ""); paramValue = paramValue.replaceAll("/", ""); paramValue = paramValue.replaceAll("=", ""); } result = paramValue; } return result; } public String damoDec(String strEnc, HttpServletRequest request) { //DI 복구화 System.out.println("-----damoDec---request.getRequestURL().toString()-----------" + request.getRequestURL().toString()+"-----") ; String iniFilePath = "/usr/local/tomcat/damo/scpdb_agent.ini"; //실서버 if(request.getRequestURL().toString().contains("test.kofons.or.kr")){ //로컬 iniFilePath = "C:\\damo\\scpdb_agent.ini"; }else if(request.getRequestURL().toString().contains("219.240.88.15")) { //테스트 iniFilePath = "/usr/local/tomcat_kofons/damo/scpdb_agent.ini"; } System.out.println("iniFilePath --" + iniFilePath + "---"); ScpDbAgent agt = new ScpDbAgent(); String strDec = ""; try { strDec = agt.ScpDecB64( iniFilePath, "KEY1", strEnc); }catch(Exception e) { } return strDec ; } public String damoEnc(String strDec, HttpServletRequest request) { //DI 암호화 System.out.println("-----damoEnc---request.getRequestURL().toString()-----------" + request.getRequestURL().toString()+"-----") ; String iniFilePath = "/usr/local/tomcat/damo/scpdb_agent.ini"; //실서버 if(request.getRequestURL().toString().contains("test.kofons.or.kr")){ //로컬 iniFilePath = "C:\\damo\\scpdb_agent.ini"; }else if(request.getRequestURL().toString().contains("219.240.88.15")) { //테스트 iniFilePath = "/usr/local/tomcat_kofons/damo/scpdb_agent.ini"; } System.out.println("iniFilePath --" + iniFilePath + "---"); ScpDbAgent agt = new ScpDbAgent(); String strEnc = ""; try { strEnc = agt.ScpEncB64( iniFilePath, "KEY1", strDec); }catch(Exception e) { } return strEnc ; } }