package itn.let.cop.com.web; import java.util.Map; import egovframework.rte.fdl.property.EgovPropertyService; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.LoginVO; import itn.let.cop.com.service.BoardUseInf; import itn.let.cop.com.service.BoardUseInfVO; import itn.let.cop.com.service.EgovBBSUseInfoManageService; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.support.SessionStatus; import org.springmodules.validation.commons.DefaultBeanValidator; //SHT-CUSTOMIZING//import itn.let.cop.clb.service.ClubUser; //SHT-CUSTOMIZING//import itn.let.cop.clb.service.EgovClubManageService; //SHT-CUSTOMIZING//import itn.let.cop.cmy.service.CommunityUser; //SHT-CUSTOMIZING//import itn.let.cop.cmy.service.EgovCommunityManageService; //import egovframework.rte.fdl.cmmn.exception.EgovBizException; /** * 게시판의 이용정보를 관리하기 위한 컨트롤러 클래스 * @author 공통서비스개발팀 이삼섭 * @since 2009.04.02 * @version 1.0 * @see * *
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2009.04.02  이삼섭          최초 생성
 *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
 *
 * 
*/ @Controller public class EgovBBSUseInfoManageController { @Resource(name = "EgovBBSUseInfoManageService") private EgovBBSUseInfoManageService bbsUseService; @Resource(name = "propertiesService") protected EgovPropertyService propertyService; //SHT-CUSTOMIZING//@Resource(name = "EgovCommunityManageService") //SHT-CUSTOMIZING//private EgovCommunityManageService cmmntyService; // 커뮤니티 관리자 권한 확인 //SHT-CUSTOMIZING//@Resource(name = "EgovClubManageService") //SHT-CUSTOMIZING//private EgovClubManageService clubService; // 동호회 운영자 권한 확인 @Autowired private DefaultBeanValidator beanValidator; /** * 커뮤니티 관리자 및 동호회 운영자 권한을 확인한다. * * @param boardUseInf * @throws EgovBizException */ //SHT-CUSTOMIZING//protected void checkAuthority(BoardUseInf boardUseInf) throws Exception { //SHT-CUSTOMIZING//String targetId = boardUseInf.getTrgetId(); //SHT-CUSTOMIZING//LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //SHT-CUSTOMIZING//if (user == null) { //SHT-CUSTOMIZING//throw new EgovBizException("인증된 사용자 정보가 존재하지 않습니다."); //SHT-CUSTOMIZING//} //SHT-CUSTOMIZING//if (targetId.startsWith("CMMNTY_")) { //SHT-CUSTOMIZING//CommunityUser cmmntyUser = new CommunityUser(); //SHT-CUSTOMIZING//cmmntyUser.setCmmntyId(boardUseInf.getTrgetId()); //SHT-CUSTOMIZING//cmmntyUser.setEmplyrId(user.getUniqId()); //SHT-CUSTOMIZING//if (!cmmntyService.isManager(cmmntyUser)) { //SHT-CUSTOMIZING//throw new EgovBizException("해당 커뮤니티 관리자만 사용하실 수 있습니다."); //SHT-CUSTOMIZING//} //SHT-CUSTOMIZING//} else if (targetId.startsWith("CLB_")) { //SHT-CUSTOMIZING//ClubUser clubUser = new ClubUser(); //SHT-CUSTOMIZING//clubUser.setClbId(boardUseInf.getTrgetId()); //SHT-CUSTOMIZING//clubUser.setEmplyrId(user.getUniqId()); //SHT-CUSTOMIZING//if (!clubService.isOperator(clubUser)) { //SHT-CUSTOMIZING//throw new EgovBizException("해당 동호회 운영자만 사용하실 수 있습니다."); //SHT-CUSTOMIZING//} //SHT-CUSTOMIZING//} else { //SHT-CUSTOMIZING//throw new EgovBizException("대상ID 정보가 정확하지 않습니다."); //SHT-CUSTOMIZING//} //SHT-CUSTOMIZING//} /** * 게시판 사용 정보를 삭제한다. * * @param bdUseVO * @param bdUseInf * @param sessionVO * @param status * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/deleteBBSUseInf.do") public String deleteBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("bdUseInf") BoardUseInf bdUseInf, SessionStatus status, ModelMap model) throws Exception { Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (isAuthenticated) { bbsUseService.deleteBBSUseInf(bdUseInf); } return "forward:/cop/com/selectBBSUseInfs.do"; } /** * 게사판 사용정보 등록을 위한 등록페이지로 이동한다. * * @param bdUseVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/addBBSUseInf.do") public String addBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception { return "cop/com/EgovBoardUseInfRegist"; } /** * 게시판 사용정보를 등록한다. * * @param bdUseVO * @param bdUseInf * @param sessionVO * @param status * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/insertBBSUseInf.do") public String insertBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf, BindingResult bindingResult, @RequestParam Map commandMap, ModelMap model) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); beanValidator.validate(boardUseInf, bindingResult); if (bindingResult.hasErrors()) { return "cop/com/EgovBoardUseInfRegist"; } String trgetType = (String) commandMap.get("param_trgetType"); String registSeCode = ""; // CMMNTY 06/CLUB 05/SYSTEM(REGC01) if ("CMMNTY".equals(trgetType)) { registSeCode = "REGC06"; } else if ("CLUB".equals(trgetType)) { registSeCode = "REGC05"; } else { registSeCode = "REGC01"; } boardUseInf.setUseAt("Y"); boardUseInf.setFrstRegisterId(user.getUniqId()); boardUseInf.setRegistSeCode(registSeCode); if (isAuthenticated) { bbsUseService.insertBBSUseInf(boardUseInf); } return "forward:/cop/com/selectBBSUseInfs.do"; } /** * 게시판 사용정보 목록을 조회한다. * * @param bdUseVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/selectBBSUseInfs.do") public String selectBBSUseInfs(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception { bdUseVO.setPageUnit(propertyService.getInt("pageUnit")); bdUseVO.setPageSize(propertyService.getInt("pageSize")); PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(bdUseVO.getPageIndex()); paginationInfo.setRecordCountPerPage(bdUseVO.getPageUnit()); paginationInfo.setPageSize(bdUseVO.getPageSize()); bdUseVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); bdUseVO.setLastIndex(paginationInfo.getLastRecordIndex()); bdUseVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); Map map = bbsUseService.selectBBSUseInfs(bdUseVO); 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("paginationInfo", paginationInfo); return "cop/com/EgovBoardUseInfList"; } /** * 게시판 사용정보를 수정한다. * * @param bdUseVO * @param bdUseInf * @param sessionVO * @param status * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/updateBBSUseInf.do") public String updateBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf, HttpServletRequest request, ModelMap model) throws Exception { if (EgovUserDetailsHelper.isAuthenticated()) { bbsUseService.updateBBSUseInf(boardUseInf); } return "forward:/cop/com/selectBBSUseInfs.do"; } /** * 게시판 사용정보에 대한 상세정보를 조회한다. * * @param bdUseVO * @param sessionVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/selectBBSUseInf.do") public String selectBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception { BoardUseInfVO vo = bbsUseService.selectBBSUseInf(bdUseVO); // 시스템 사용 게시판의 경우 URL 표시 if ("SYSTEM_DEFAULT_BOARD".equals(vo.getTrgetId())) { if (vo.getBbsTyCode().equals("BBST02")) { // 익명게시판 vo.setProvdUrl("/cop/bbs/anonymous/selectBoardList.do?bbsId=" + vo.getBbsId()); } else { vo.setProvdUrl("/cop/bbs/selectBoardList.do?bbsId=" + vo.getBbsId()); } } model.addAttribute("bdUseVO", vo); return "cop/com/EgovBoardUseInfInqire"; } /** * 커뮤니티, 동호회에 사용되는 게시판 사용정보에 대한 목록을 조회한다. * * @param bdUseVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/selectBBSUseInfsByTrget.do") public String selectBBSUseInfsByTrget(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception { //SHT-CUSTOMIZING//checkAuthority(bdUseVO); // server-side 권한 확인 bdUseVO.setPageUnit(propertyService.getInt("pageUnit")); bdUseVO.setPageSize(propertyService.getInt("pageSize")); PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(bdUseVO.getPageIndex()); paginationInfo.setRecordCountPerPage(bdUseVO.getPageUnit()); paginationInfo.setPageSize(bdUseVO.getPageSize()); bdUseVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); bdUseVO.setLastIndex(paginationInfo.getLastRecordIndex()); bdUseVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); Map map = bbsUseService.selectBBSUseInfsByTrget(bdUseVO); 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("trgetId", bdUseVO.getTrgetId()); model.addAttribute("trgetType", bdUseVO.getTrgetType()); model.addAttribute("paginationInfo", paginationInfo); return "cop/com/EgovBdUseInfListByTrget"; } /** * 커뮤니티, 동호회에 사용되는 게시판 사용정보를 수정한다. * * @param bdUseVO * @param boardUseInf * @param status * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/updateBBSUseInfByTrget.do") public String updateBBSUseInfByTrget(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf, @RequestParam Map commandMap, SessionStatus status, ModelMap model) throws Exception { //SHT-CUSTOMIZING//checkAuthority(bdUseVO); // server-side 권한 확인 String param_trgetId = (String) commandMap.get("param_trgetId"); //LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (isAuthenticated) { boardUseInf.setTrgetId(param_trgetId); bbsUseService.updateBBSUseInfByTrget(boardUseInf); } return "forward:/cop/com/selectBBSUseInfsByTrget.do"; } /** * 커뮤니티, 동호회에 사용되는 게시판 사용정보를 등록한다. * * @param bdUseVO * @param boardUseInf * @param status * @param model * @return * @throws Exception */ @RequestMapping("/cop/com/insertBBSUseInfByTrget.do") public String insertBBSUseInfByTrget(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf, @RequestParam Map commandMap, SessionStatus status, ModelMap model) throws Exception { //SHT-CUSTOMIZING//checkAuthority(bdUseVO); // server-side 권한 확인 String paramTrgetId = (String) commandMap.get("param_trgetId"); String bbsId = (String) commandMap.get("bbsId"); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (isAuthenticated) { boardUseInf.setUseAt("Y"); boardUseInf.setFrstRegisterId(user.getUniqId()); boardUseInf.setRegistSeCode("REGC07"); boardUseInf.setBbsId(bbsId); boardUseInf.setTrgetId(paramTrgetId); bbsUseService.insertBBSUseInf(boardUseInf); } return "forward:/cop/com/selectBBSUseInfsByTrget.do"; } }