File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
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
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.03.19 이삼섭 최초 생성
* 2009.06.29 한성곤 2단계 기능 추가 (댓글관리, 만족도조사)
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* </pre>
*/
@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("</(S|s)(C|c)(R|r)(I|i)(P|p)(T|t)", "</script");
ret = ret.replaceAll("<(O|o)(B|b)(J|j)(E|e)(C|c)(T|t)", "<object");
ret = ret.replaceAll("</(O|o)(B|b)(J|j)(E|e)(C|c)(T|t)", "</object");
ret = ret.replaceAll("<(A|a)(P|p)(P|p)(L|l)(E|e)(T|t)", "<applet");
ret = ret.replaceAll("</(A|a)(P|p)(P|p)(L|l)(E|e)(T|t)", "</applet");
ret = ret.replaceAll("<(E|e)(M|m)(B|b)(E|e)(D|d)", "<embed");
ret = ret.replaceAll("</(E|e)(M|m)(B|b)(E|e)(D|d)", "<embed");
ret = ret.replaceAll("<(F|f)(O|o)(R|r)(M|m)", "<form");
ret = ret.replaceAll("</(F|f)(O|o)(R|r)(M|m)", "<form");
ret = ret.replaceAll("<", "<");
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<BoardVO> 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<String, Object> 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<String, Object> 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<String, MultipartFile> files = multiRequest.getFileMap();
if (!files.isEmpty()) {
List<FileVO> 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<String,Object> 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<String,Object> 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<String, MultipartFile> files = multiRequest.getFileMap();
String atchFileId = "";
if (!files.isEmpty()) {
List<FileVO> 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<String, MultipartFile> files = multiRequest.getFileMap();
if (!files.isEmpty()) {
if ("".equals(atchFileId)) {
List<FileVO> 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<FileVO> 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<FileVO> 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<EgovMap> mngIdList) throws Exception {
boolean authFlag = false;
List<String> 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<EgovMap>)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<FileVO> 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<String, Object> map = bbsMngService.selectBoardChgHsts(boardChgHst);
int totCnt = Integer.parseInt((String) map.get("resultCnt"));
paginationInfo.setTotalRecordCount(totCnt);
// 내용에 html 제거
List<BoardChgHst> list = (List<BoardChgHst>) 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 = "<html>";
htmlMsg += "\'" + bbsNm + "\' 게시판에 사용자 게시글이 등록되었습니다.";
htmlMsg += "<br/><br/>제목: " + nttSj;
htmlMsg += "<br/>링크: <a href='"+SITE_URL+"/cop/bbs/selectBoardArticle.do?bbsId="+bbsId+"&nttId="+nttId+"' target='_blank'>게시물</a>";
htmlMsg += "<br/><br/>우체국물류지원단 시스템관리자";
htmlMsg += "</html>";
// 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<BoardVO> 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<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null);
int totCnt = Integer.parseInt((String) map.get("resultCnt"));
paginationInfo.setTotalRecordCount(totCnt);
List<BoardVO> resultList = (List<BoardVO>)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<String, Object> 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<String, Object> 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<BoardMasterVO> 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<TermsVO> resultList = new ArrayList<TermsVO>();
// 이용약관, 개인정보보호방침 최신버전 List
TermsVO termsVO3 = new TermsVO();
termsVO3.setFirstIndex(0);
termsVO3.setRecordCountPerPage(1);
termsVO3.setSearchDiv("03");
termsVO3.setSearchUseYn("Y");
termsVO3.setSearchSortCnd("effectDate");
termsVO3.setSearchSortOrd("desc");
List<TermsVO> 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<String, Object> 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";
}
/**
* 회원 정지된 상태이면 1:1 등록 화면으로 이동되지 않도록 처리
* */
boolean mberSttus = userManageService.selectUserStatusInfo(userId);
if(!mberSttus) {
return "redirect:/web/uat/uia/actionLogout.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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(tempBoardMasterVO);
List<BoardMasterVO> 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<TermsVO> resultList = new ArrayList<TermsVO>();
// 이용약관, 개인정보보호방침 최신버전 List
TermsVO termsVO3 = new TermsVO();
termsVO3.setFirstIndex(0);
termsVO3.setRecordCountPerPage(1);
termsVO3.setSearchDiv("03");
termsVO3.setSearchUseYn("Y");
termsVO3.setSearchSortCnd("effectDate");
termsVO3.setSearchSortOrd("desc");
List<TermsVO> 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<String, Object> 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<String, Object> 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<BoardVO> 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<FileVO> 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<String, Object> 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<BoardVO> 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<FileVO> 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<FileVO> 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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
List<BoardMasterVO> 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<FileVO> fileList = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", fileList);
}
//묻고답하기의 게시판들 가져오기
BoardMasterVO tempBoardMasterVO = new BoardMasterVO();
tempBoardMasterVO.setUrl("/web/cop/bbs/QnaList.do");
List<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(tempBoardMasterVO);
List<BoardMasterVO> 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<BoardVO> 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(); // 관리자 유무
//230801 이지우 - 본인글 외에 nttId 변조를 통하여 다른 게시글 수정 가능한 취약점 방지
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getUniqId());
if(!bdVO.getFrstRegisterId().equals(userId)) {
modelAndView.addObject("message", "잘못된 접근입니다.\n관리자에게 문의하세요.");
modelAndView.addObject("result", "fail");
return modelAndView;
}
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<String, MultipartFile> files = multiRequest.getFileMap();
if (!files.isEmpty()) {
if ("".equals(atchFileId)) {
List<FileVO> 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<FileVO> 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<String, Object> 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<BoardVO> 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<FileVO> result = null;
String atchFileId = "";
String isThumbFile = "";
if (("BBST05").equals(bmVO.getBbsTyCode()) || ("BBST06").equals(bmVO.getBbsTyCode())) isThumbFile = "thumbFile";
final Map<String, MultipartFile> 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<String> 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<String, Object> 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<String> 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<FileVO> result = null;
String atchFileId = "";
String isThumbFile = "";
if (("BBST05").equals(bmVO.getBbsTyCode()) || ("BBST06").equals(bmVO.getBbsTyCode())) isThumbFile = "thumbFile";
final Map<String, MultipartFile> 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<EgovMap> 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<String> 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<String> 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<String, MultipartFile> files = multiRequest.getFileMap();
if (!files.isEmpty()) {
if ("".equals(atchFileId)) {
List<FileVO> 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<FileVO> 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<String> 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<String, MultipartFile> 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<Entry<String, MultipartFile>> itr = fileList.entrySet().iterator();
MultipartFile file;
int fileCnt = 0;
while (itr.hasNext()) {
Entry<String, MultipartFile> 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<String, Object> 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<BoardVO> bbsCastList = (List<BoardVO>)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<String, Object> 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<BoardMasterVO> 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<BoardMasterVO> 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<String, Object> map = new HashMap<String, Object>();
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<BoardVO> resultList = (List<BoardVO>)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<FileVO> 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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
List<BoardMasterVO> 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<String, Object> map = new HashMap<String, Object>();
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<BoardVO> resultList = (List<BoardVO>)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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
List<BoardMasterVO> 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<String, Object> map = new HashMap<String, Object>();
//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<CommentVO> 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<BoardVO> resultList = (List<BoardVO>)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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
//List<BoardMasterVO> 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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
//List<BoardMasterVO> 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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
List<BoardMasterVO> 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<String, Object> map = new HashMap<String, Object>();
//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<CommentVO> 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<BoardVO> resultList = (List<BoardVO>)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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
//List<BoardMasterVO> 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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
List<BoardMasterVO> 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<String, Object> map = new HashMap<String, Object>();
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<BoardVO> resultList = (List<BoardVO>)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<BoardMasterVO> 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<String, Object> map = new HashMap<String, Object>();
//종료
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<BoardVO> resultList = (List<BoardVO>)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<FileVO> 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<String, Object> 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<BoardVO> 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<FileVO> 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 {
String menuNm = termsVO.getMenuNm();
String termsMstNo = termsVO.getTermsMastNo();
// String effectDate_02 = "";
// String effectDate_03 = "";
//초기 화면 로딩시 값이 Null 인경우 이용약관, 2024년 도 정보 불러오도록 셋팅
if(menuNm == null) {
menuNm = "02";
}
if(termsMstNo == null) {
termsMstNo = "2023";
}
// if(termsMstNo.equals("2024")) {
// effectDate_02 = " v2.0";
// effectDate_03 = " v2.0";
// }else if(termsMstNo.equals("2023")) {
// effectDate_02 = "(2023.04.26~2024.10.31)";
// effectDate_03 = "(2023.12.15~2024.10.31)";
// }else if(termsMstNo.equals("2022")) {
// effectDate_02 = "(2022.08.01~2023.04.25)";
// effectDate_03 = "(2022.08.01~2023.12.14)";
// }
// model.addAttribute("effectDate_02", effectDate_02); //이용약관 개정 일자 표시
// model.addAttribute("effectDate_03", effectDate_03); //개인정보처리방침 개정 일자 표시
model.addAttribute("termsMstNo", termsMstNo); //요청 버전 값(2024, 2023, 2022 등)
//상세 하단 리스트
if(request.getRequestURI().contains("ListAjax.do")) {
if(menuNm.equals("02")) {
String jspName = "TermsListAgreement_" + termsMstNo + "_Ajax";
return "web/cop/bbs/"+jspName;
}else if(menuNm.equals("03")) {
String jspName = "TermsListPrivate_" + termsMstNo + "_Ajax";
return "web/cop/bbs/"+jspName;
}
// 공통
List<TermsVO> resultList = new ArrayList<TermsVO>();
/*
* 이용약관 및 개인정보 처리방침 화면은 HTML 화면으로 전환되어 디비 조회 코드는 주석 처리함
* 2024 10 25 우영두 수정
* */
// // 이용약관, 개인정보보호방침 이전버전 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<TermsVO> 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<TermsVO> 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<TermsVO> 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<TermsVO> resultList = new ArrayList<TermsVO>();
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<BoardMasterVO> 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<String, Object> map01 = bbsAttrbService.selectBBSMasterInfs(mainMasterVO);
model.addAttribute("resultList01", map01.get("resultList"));
mainMasterVO.setSeCmmnCdId("02"); //주요사업정보
Map<String, Object> 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<String, Object> 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<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null);
int totCnt = Integer.parseInt((String) map.get("resultCnt"));
paginationInfo.setTotalRecordCount(totCnt);
List<BoardVO> resultList = (List<BoardVO>)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<BoardMasterVO> mapMainList = new ArrayList<BoardMasterVO>();
mapMainList = (List<BoardMasterVO>)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<String, Object> 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<String, Object> map = bbsMngService.selectBoardArticlesWeb(boardVO, null);
int totCnt = Integer.parseInt((String) map.get("resultCnt"));
paginationInfo.setTotalRecordCount(totCnt);
List<BoardVO> resultList = (List<BoardVO>)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<BoardMasterVO> mapMainList = new ArrayList<BoardMasterVO>();
mapMainList = (List<BoardMasterVO>)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<ComDefaultCodeVO> getTimeHH() {
ArrayList<ComDefaultCodeVO> listHH = new ArrayList<ComDefaultCodeVO>();
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<ComDefaultCodeVO> getTimeMM() {
ArrayList<ComDefaultCodeVO> listMM = new ArrayList<ComDefaultCodeVO>();
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<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(boardMasterVO);
List<BoardMasterVO> 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<String, Object> map = new HashMap<String, Object>();
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<BoardVO> resultList = (List<BoardVO>)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 ;
}
}