지방문화원 가입 여부 관련 삭제 처리 작업. 공지사항 진행중백업

This commit is contained in:
KNKIM 2021-09-13 15:06:18 +09:00
parent a29ab81ad1
commit 9b49319fc9
37 changed files with 937 additions and 1122 deletions

View File

@ -0,0 +1,120 @@
package nlib.bbs.service;
import nlib.cmm.service.PagingVO;
public class ArticleVO extends PagingVO {
private String articleId; /* 게시글ID */
private String mngOrgCd; /* 관리문화원코드 */
private String bdType; /* 게시판유형 */
private String title; /* 제목 */
private String content; /* 내용 */
// 공지사항관련
private String notiYn; /* 공지여부 */
private String openYn; /* 공개여부 */
private String postStartDate; /* 게시시작일자 */
private String postEndDate; /* 게시종료일자 */
private int viewCnt; /* 조회수 */
private String bdAttachFileId; /* 첨부파일아이디 */
private String regId; /* 등록자아이디 */
private String regDd; /* 등록일자 */
private String modId; /* 등록자아이디 */
private String modDd; /* 등록일자 */
public String getArticleId() {
return articleId;
}
public void setArticleId(String articleId) {
this.articleId = articleId;
}
public String getMngOrgCd() {
return mngOrgCd;
}
public void setMngOrgCd(String mngOrgCd) {
this.mngOrgCd = mngOrgCd;
}
public String getBdType() {
return bdType;
}
public void setBdType(String bdType) {
this.bdType = bdType;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getNotiYn() {
return notiYn;
}
public void setNotiYn(String notiYn) {
this.notiYn = notiYn;
}
public String getOpenYn() {
return openYn;
}
public void setOpenYn(String openYn) {
this.openYn = openYn;
}
public String getPostStartDate() {
return postStartDate;
}
public void setPostStartDate(String postStartDate) {
this.postStartDate = postStartDate;
}
public String getPostEndDate() {
return postEndDate;
}
public void setPostEndDate(String postEndDate) {
this.postEndDate = postEndDate;
}
public int getViewCnt() {
return viewCnt;
}
public void setViewCnt(int viewCnt) {
this.viewCnt = viewCnt;
}
public String getBdAttachFileId() {
return bdAttachFileId;
}
public void setBdAttachFileId(String bdAttachFileId) {
this.bdAttachFileId = bdAttachFileId;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
public String getRegDd() {
return regDd;
}
public void setRegDd(String regDd) {
this.regDd = regDd;
}
public String getModId() {
return modId;
}
public void setModId(String modId) {
this.modId = modId;
}
public String getModDd() {
return modDd;
}
public void setModDd(String modDd) {
this.modDd = modDd;
}
}

View File

@ -1,71 +1,43 @@
package nlib.bbs.service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nlib.user.service.NlibLoginVO;
/**
* <pre>
* @Class Name : BoardService.java
*
* @Description : 게시물 관리 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 19. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 19.
* @version 1.0
*
*/
public interface BoardService
{
/**
* 공지사항
*
* @param reqVO
* @return
/*
* 게시글 목록을 조회한다.
*/
public DataApiResVO listNotices(DataApiReqVO reqVO);
public DataApiResVO selectNotice(DataApiReqVO reqVO);
/**
* 자주하는질문
*
* @param reqVO
* @return
*/
public DataApiResVO listFAQs(DataApiReqVO reqVO);
public DataApiResVO selectFAQ(DataApiReqVO reqVO);
public List<ArticleVO> listArticles(ArticleVO ArticleVO) throws Exception;
/**
* 묻고답하기
*
* @param reqVO
* @return
* 게시글 건수를 조회한다.
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO);
public int countArticles(ArticleVO articleVO) throws Exception;
public DataApiResVO selectQnA(DataApiReqVO reqVO);
public DataApiResVO insertQnA(DataApiReqVO reqVO);
public DataApiResVO verifyWriter(DataApiReqVO reqVO);
public DataApiResVO updateQnA(DataApiReqVO reqVO);
public DataApiResVO deleteQnA(DataApiReqVO reqVO);
/**
* 조회수를 증가시킨다.
*
* @param
* @return
* @throws Exception
*/
public int updateRead(ArticleVO notiVO) throws Exception;
/**
* 게시글 상세 내용을 조회한다.
*
* @param
* @return
* @throws Exception
*/
public ArticleVO selectArticle(ArticleVO notiVO) throws Exception;
}

View File

@ -0,0 +1,71 @@
package nlib.bbs.service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : BoardService.java
*
* @Description : 게시물 관리 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 19. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 19.
* @version 1.0
*
*/
public interface BoardServiceApi
{
/**
* 공지사항
*
* @param reqVO
* @return
*/
public DataApiResVO listNotices(DataApiReqVO reqVO);
public DataApiResVO selectNotice(DataApiReqVO reqVO);
/**
* 자주하는질문
*
* @param reqVO
* @return
*/
public DataApiResVO listFAQs(DataApiReqVO reqVO);
public DataApiResVO selectFAQ(DataApiReqVO reqVO);
/**
* 묻고답하기
*
* @param reqVO
* @return
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO);
public DataApiResVO selectQnA(DataApiReqVO reqVO);
public DataApiResVO insertQnA(DataApiReqVO reqVO);
public DataApiResVO verifyWriter(DataApiReqVO reqVO);
public DataApiResVO updateQnA(DataApiReqVO reqVO);
public DataApiResVO deleteQnA(DataApiReqVO reqVO);
}

View File

@ -0,0 +1,70 @@
package nlib.bbs.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.cmm.service.NotificationVO;
import nlib.bbs.service.ArticleVO;
import nlib.cmm.service.NlibProperty;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : AncmntDAO.java
*
* @Description : 공지사항 정보 제공 DAO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 9. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 9. 13.
* @version 1.0
*
*/
@Mapper("ancmntDAO")
public interface AncmntDAO {
/*
* 게시글 목록을 조회한다.
*/
public List<ArticleVO> listArticles(ArticleVO ArticleVO) throws Exception;
/**
* 게시글 건수를 조회한다.
*/
public int countArticles(ArticleVO ArticleVO) throws Exception;
/**
* 조회수를 증가시킨다.
*
* @param
* @return
* @throws Exception
*/
public int updateRead(ArticleVO notiVO) throws Exception;
/**
* 게시글 상세 내용을 조회한다.
*
* @param
* @return
* @throws Exception
*/
public ArticleVO selectArticle(ArticleVO notiVO) throws Exception;
}

View File

@ -0,0 +1,63 @@
package nlib.bbs.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import nlib.bbs.service.ArticleVO;
import nlib.bbs.service.BoardService;
@Service("ancmntService")
public class AncmntServiceImpl implements BoardService
{
private static final Logger log = LoggerFactory.getLogger(AncmntServiceImpl.class);
@Resource(name="ancmntDAO")
private AncmntDAO ancmntDAO;
/*
* 게시글 목록을 조회한다.
*/
public List<ArticleVO> listArticles(ArticleVO articleVO) throws Exception {
return ancmntDAO.listArticles(articleVO);
}
/**
* 게시글 건수를 조회한다.
*/
public int countArticles(ArticleVO articleVO) throws Exception {
return ancmntDAO.countArticles(articleVO);
}
/**
* 조회수를 증가시킨다.
*
* @param
* @return
* @throws Exception
*/
public int updateRead(ArticleVO articleVO) throws Exception {
return ancmntDAO.updateRead(articleVO);
}
/**
* 게시글 상세 내용을 조회한다.
*
* @param
* @return
* @throws Exception
*/
public ArticleVO selectArticle(ArticleVO articleVO) throws Exception {
updateRead(articleVO);
return ancmntDAO.selectArticle(articleVO);
}
}

View File

@ -1,80 +1,70 @@
package nlib.bbs.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
import nlib.cmm.web.MainController;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Repository("boardDAO")
public class BoardDAO extends DataApi
{
private static final Logger log = LoggerFactory.getLogger(BoardDAO.class);
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.cmm.service.NotificationVO;
import nlib.bbs.service.ArticleVO;
import nlib.cmm.service.NlibProperty;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/board";
public DataApiResVO listNotices(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/notice/list");
return get(reqVO);
}
public DataApiResVO selectNotice(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/notice");
return get(reqVO);
}
public DataApiResVO listFAQs(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/faq/list");
return get(reqVO);
}
public DataApiResVO selectFAQ(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/faq");
return get(reqVO);
}
/**
* 묻고답하기 목록 조회한다.
* <pre>
* @Class Name : AncmntDAO.java
*
* @Description : 공지사항 정보 제공 DAO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 9. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 9. 13.
* @version 1.0
*
* @param reqVO
* @return
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna/list");
return get(reqVO);
}
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return get(reqVO);
}
public interface BoardDAO {
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return post(reqVO);
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return delete(reqVO);
}
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return put(reqVO);
}
/*
* 게시글 목록을 조회한다.
*/
public List<ArticleVO> listArticles(ArticleVO ArticleVO) throws Exception;
/**
* 게시글 건수를 조회한다.
*/
public int countArticles(ArticleVO ArticleVO) throws Exception;
/**
* 조회수를 증가시킨다.
*
* @param
* @return
* @throws Exception
*/
public int updateRead(ArticleVO notiVO) throws Exception;
/**
* 게시글 상세 내용을 조회한다.
*
* @param
* @return
* @throws Exception
*/
public ArticleVO selectArticle(ArticleVO notiVO) throws Exception;
}

View File

@ -0,0 +1,80 @@
package nlib.bbs.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import nlib.cmm.web.MainController;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Repository("boardDAO")
public class BoardDAOApi extends DataApi
{
private static final Logger log = LoggerFactory.getLogger(BoardDAOApi.class);
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/board";
public DataApiResVO listNotices(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/notice/list");
return get(reqVO);
}
public DataApiResVO selectNotice(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/notice");
return get(reqVO);
}
public DataApiResVO listFAQs(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/faq/list");
return get(reqVO);
}
public DataApiResVO selectFAQ(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/faq");
return get(reqVO);
}
/**
* 묻고답하기 목록 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna/list");
return get(reqVO);
}
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return get(reqVO);
}
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return post(reqVO);
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return delete(reqVO);
}
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/qna");
return put(reqVO);
}
}

View File

@ -7,17 +7,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import nlib.bbs.service.BoardService;
import nlib.bbs.service.BoardServiceApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Service("boardService")
public class BoardServiceImpl implements BoardService
public class BoardServiceImpl implements BoardServiceApi
{
private static final Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
@Resource(name = "boardDAO")
private BoardDAO boardDAO;
private BoardDAOApi boardDAO;
public DataApiResVO listNotices(DataApiReqVO reqVO) {

View File

@ -10,827 +10,138 @@ import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.support.RequestContextUtils;
import nlib.bbs.service.BoardService;
import nlib.bbs.service.impl.AncmntServiceImpl;
import nlib.bbs.service.ArticleVO;
import nlib.cmm.NlibCommonController;
import nlib.cmm.crypto.AriaCrypto;
import nlib.cmm.crypto.NlibPasswordEncoder;
import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@Controller
public class AncmntController extends NlibCommonController
{
// private static final Logger log = LoggerFactory.getLogger(AncmntController.class);
//
// static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
//
// @Resource(name = "boardService")
// private BoardService boardService;
//
// @Resource(name = "nlibPasswordEncoder")
// private NlibPasswordEncoder nlibPasswordEncoder;
//
// @Resource(name = "ariaCrypto")
// private AriaCrypto ariaCrypto;
//
// @Resource(name = "codeService")
// private CodeService codeService;
//
//
// @Autowired
// private AuthenticationManager authenticationManager;
//
// /**
// * 공지사항 목록 화면을 표출한다.
// *
// * @param req
// * @return
// */
// @RequestMapping("/board/listNotices.do")
// public String listNotices(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) throws Exception {
//
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
// String articleType = paramMap.get("articleType");
// String message = paramMap.get("message");
//
// log.debug("listNotices > pageIndex = " + pageIndex);
// log.debug("listNotices > pageSize = " + pageSize);
// log.debug("listNotices > searchKeyword = " + searchKeyword);
// log.debug("listNotices > articleType = " + articleType);
// log.debug("listNotices > message = " + message);
//
// // 페이징 사이즈 코드 목록 조회
// List<HashMap<String,String>> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
//
// // 공지사항 유형 코드 목록 조회
// List<HashMap<String,String>> articleTypeCodes = codeService.listCodes("ARTICLE_TYPE");
//
// // 반환 정보
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
// model.addAttribute("pageSizeCodes", pageSizeCodes);
// model.addAttribute("articleTypeCodes", articleTypeCodes);
// model.addAttribute("articleType" , articleType);
// model.addAttribute("message" , message);
//
// return "nlib/board/listNotices";
// }
//
// /**
// * 공지사항 목록 조회한다.
// *
// * @param req
// * @return
// */
// @RequestMapping(value="/board/listNoticesAjax.do")
// public ResponseEntity<String> listNoticesAjax(HttpServletRequest req,
// Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
//
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
// String articleType = paramMap.get("articleType");
//
// log.debug("listNoticesAjax > pageIndex = " + pageIndex);
// log.debug("listNoticesAjax > pageSize = " + pageSize);
// log.debug("listNoticesAjax > searchKeyword = " + searchKeyword);
// log.debug("listNoticesAjax > articleType = " + articleType);
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("searchKeyword", searchKeyword);
// reqVO.addInfoItem("articleType", articleType);
//
// // 요청
// DataApiResVO resVO = boardService.listNotices(reqVO);
//
// //-------------------------------
// // JSON변환 응답 처리
// //-------------------------------
// // JS-GRID 페이징 처리를 포함한 응답값 처리
// // {data: [{...}],
// // itemsCount: 255
// // }
// HashMap<String, Object> retMap = new HashMap<String, Object>();
// retMap.put("data", resVO.getList());
// retMap.put("itemsCount", resVO.getRecordTotCount());
//
// return makeResponseEntityJson(retMap);
// }
//
// /**
// * 공지사항 상세 내용 조회한다.
// * @param req
// * @return
// */
// @RequestMapping("/board/selectNotice.do")
// public String selectNotice(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) throws Exception {
//
// // 목록 이동시 전달할 매개변수
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = paramMap.get("pageIndex");
// String pageSize = paramMap.get("pageSize");
// String articleType = paramMap.get("articleType");
// String message = paramMap.get("message");
//
// // 게시물 번호
// String articleNo = paramMap.get("articleNo");
//
// log.debug("selectNotice > pageIndex = " + pageIndex);
// log.debug("selectNotice > pageSize = " + pageSize);
// log.debug("selectNotice > searchKeyword = " + searchKeyword);
// log.debug("selectNotice > articleNo = " + articleNo);
// log.debug("selectNotice > message = " + message);
// log.debug("selectNotice > articleType = " + articleType);
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
//
// // 요청
// DataApiResVO resVO = boardService.selectNotice(reqVO);
//
// // 반환 정보
// model.addAttribute("articleNo" , articleNo);
// model.addAttribute("article" , resVO.getInfo()); // 게시물 상세
// model.addAttribute("preArticle" , resVO.getList().get(0)); // 이전글 정보
// model.addAttribute("nextArticle" , resVO.getList().get(1)); // 다음글 정보
// model.addAttribute("message" , message);
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
// model.addAttribute("articleType" , articleType);
//
// return "nlib/board/selectNotice";
// }
//
// /**
// * FAQ 목록 화면을 표출한다.
// *
// * @param req
// * @return
// */
// @RequestMapping("/board/listFAQs.do")
// public String listFAQs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) throws Exception {
//
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
// String message = paramMap.get("message");
// String faqType = paramMap.get("faqType");
//
// log.debug("listFAQs > pageIndex = " + pageIndex);
// log.debug("listFAQs > pageSize = " + pageSize);
// log.debug("listFAQs > searchKeyword = " + searchKeyword);
// log.debug("listFAQs > message = " + message);
// log.debug("listFAQs > faqType = " + faqType);
//
// DataApiReqVO reqVOforCode = new DataApiReqVO();
// reqVOforCode.setAuthKey(createAuthKey(req, authentication));
// reqVOforCode.setPageIndex(0);
// reqVOforCode.setPageSize(0);
//
//
// // 페이징 사이즈 코드 목록 조회
// List<HashMap<String,String>> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
//
// // 유형 코드 목록 조회
// List<HashMap<String,String>> articleTypeCodes = codeService.listCodes("FAQ_TYPE");
//
// // 반환 정보
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
// model.addAttribute("pageSizeCodes", pageSizeCodes);
// model.addAttribute("faqTypeCodes" , articleTypeCodes);
// model.addAttribute("message" , message);
// model.addAttribute("faqType" , faqType);
// model.addAttribute("faqType" , faqType);
//
// return "nlib/board/listFAQs";
// }
//
//
// /**
// * FAQ 목록 조회한다.
// *
// * @param req
// * @return
// */
// @RequestMapping(value="/board/listFAQsAjax.do")
// public ResponseEntity<String> listFAQsAjax(HttpServletRequest req,
// Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
//
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
// String faqType = paramMap.get("faqType");
//
// log.debug("listFAQsAjax > pageIndex = " + pageIndex);
// log.debug("listFAQsAjax > pageSize = " + pageSize);
// log.debug("listFAQsAjax > searchKeyword = " + searchKeyword);
// log.debug("listFAQsAjax > faqType = " + faqType);
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("searchKeyword", searchKeyword);
// reqVO.addInfoItem("faqType", faqType);
//
// // 요청
// DataApiResVO resVO = boardService.listFAQs(reqVO);
//
// //-------------------------------
// // JSON변환 응답 처리
// //-------------------------------
// // JS-GRID 페이징 처리를 포함한 응답값 처리
// // {data: [{...}],
// // itemsCount: 255
// // }
// HashMap<String, Object> retMap = new HashMap<String, Object>();
// retMap.put("data", resVO.getList());
// retMap.put("itemsCount", resVO.getRecordTotCount());
//
// return makeResponseEntityJson(retMap);
// }
//
//
// /**
// * 묻고답하기 상세 내용 조회한다.
// *
// * @param req
// * @return
// */
// @RequestMapping("/board/selectFAQAjax.do")
// public ResponseEntity<String> selectFAQAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
//
// // 게시물 번호
// String articleNo = paramMap.get("articleNo");
//
// log.debug("selectQnA > articleNo = " + articleNo);
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
//
// // 요청
// DataApiResVO resVO = boardService.selectFAQ(reqVO);
//
// // 반환 정보
// return makeResponseEntityJson(resVO.getInfo());
// }
//
// /**
// * 묻고답하기 목록 화면을 표출한다.
// *
// * @param req
// * @return
// */
// @RequestMapping("/board/listQnAs.do")
// public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) throws Exception {
//
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
// String message = paramMap.get("message");
//
// log.debug("listQnAs > pageIndex = " + pageIndex);
// log.debug("listQnAs > pageSize = " + pageSize);
// log.debug("listQnAs > searchKeyword = " + searchKeyword);
// log.debug("listQnAs > message = " + message);
//
// // 페이징 사이즈 코드 목록 조회
// List<HashMap<String,String>> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
//
// // 반환 정보
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
// model.addAttribute("pageSizeCodes", pageSizeCodes);
// model.addAttribute("message" , message);
//
// return "nlib/board/listQnAs";
// }
//
// /**
// * 묻고답하기 목록 조회한다.
// *
// * @param req
// * @return
// */
// @RequestMapping(value="/board/listQnAsAjax.do")
// public ResponseEntity<String> listQnAsAjax(HttpServletRequest req,
// Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
//
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
//
// log.debug("listQnAsAjax > pageIndex = " + pageIndex);
// log.debug("listQnAsAjax > pageSize = " + pageSize);
// log.debug("listQnAsAjax > searchKeyword = " + searchKeyword);
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("searchKeyword", searchKeyword);
//
// // 요청
// DataApiResVO resVO = boardService.listQnAs(reqVO);
//
// //-------------------------------
// // JSON변환 응답 처리
// //-------------------------------
// // JS-GRID 페이징 처리를 포함한 응답값 처리
// // {data: [{...}],
// // itemsCount: 255
// // }
// HashMap<String, Object> retMap = new HashMap<String, Object>();
// retMap.put("data", resVO.getList());
// retMap.put("itemsCount", resVO.getRecordTotCount());
//
// return makeResponseEntityJson(retMap);
// }
//
//
// /**
// * 묻고답하기 상세 내용 조회한다.
// *
// * @param req
// * @return
// */
// @RequestMapping("/board/selectQnA.do")
// public String selectQnA(HttpServletRequest req
// , Authentication authentication
// , @RequestParam Map<String, String> paramMap
// , ModelMap model) throws Exception {
//
// addParamFromInputFlash(paramMap, req);
//
// // 목록 이동시 전달할 매개변수
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = paramMap.get("pageIndex");
// String pageSize = paramMap.get("pageSize");
// String message = paramMap.get("message");
//
// // 게시물 번호
// String articleNo = paramMap.get("articleNo");
//
// log.debug("selectQnA > pageIndex = " + pageIndex);
// log.debug("selectQnA > pageSize = " + pageSize);
// log.debug("selectQnA > searchKeyword = " + searchKeyword);
// log.debug("selectQnA > articleNo = " + articleNo);
// log.debug("selectQnA > message = " + message);
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
//
// // 요청
// DataApiResVO resVO = boardService.selectQnA(reqVO);
//
// // 반환 정보
// model.addAttribute("articleNo" , articleNo);
// model.addAttribute("article" , resVO.getInfo()); // 게시물 상세
// model.addAttribute("preArticle" , resVO.getList().get(0)); // 이전글 정보
// model.addAttribute("nextArticle" , resVO.getList().get(1)); // 다음글 정보
// model.addAttribute("message" , message);
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
//
// return "nlib/board/selectQnA";
// }
//
// /**
// * 묻고답하기 글작성화면을 표출한다.
// *
// * @param req
// * @return
// */
// @RequestMapping("/board/insertQnAForm.do")
// public String insertQnAForm(HttpServletRequest req, Authentication authentication
// , @RequestParam Map<String, String> paramMap
// , ModelMap model) throws Exception {
//
// // 입력 매개변수 출력 설정
// addParamsToModel(paramMap, model);
//
// NlibLoginVO loginVO = getNlibLoginVO(authentication);
// if(StringUtil.isEmpty(paramMap.get("regUserName"))) model.addAttribute("regUserName", loginVO.getName());
// if(StringUtil.isEmpty(paramMap.get("email"))) model.addAttribute("regUserName", loginVO.getEmail());
//
// return "nlib/board/insertQnAForm";
// }
//
// /**
// * 묻고답하기 등록 처리한다.
// *
// * @param req
// * @param authentication
// * @param paramMap
// * @param model
// * @return
// */
// @RequestMapping("/board/insertQnA.do")
// public String insertQnA(HttpServletRequest req
// , Authentication authentication
// , @RequestParam Map<String, String> paramMap
// , RedirectAttributes redirectAttrs
// , ModelMap model) throws Exception {
//
// NlibLoginVO loginVO = getNlibLoginVO(authentication);
//
// log.debug("paramMap > " + paramMap);
//
// String message = null;
// String authKey = createAuthKey(req, authentication);
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(authKey);
// reqVO.addInfoItem("boardNo" , "QNA");
// reqVO.addInfoItem("title" , paramMap.get("title"));
// reqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
// reqVO.addInfoItem("email" , paramMap.get("email"));
// reqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
//
// String fileListJsonStr = paramMap.get("fileList");
// if(fileListJsonStr.startsWith("\"")) fileListJsonStr = fileListJsonStr.substring(1);
// if(fileListJsonStr.endsWith("\"")) fileListJsonStr = fileListJsonStr.substring(0, fileListJsonStr.length()-1);
// fileListJsonStr = fileListJsonStr.replaceAll("\\\\", "");
//
// log.debug("fileList : " + fileListJsonStr);
//
// /*
// ObjectMapper mapper = new ObjectMapper();
// List<Map<String, Object>> fileList = null;
// try {
// fileList = mapper.readValue(fileListJsonStr, new TypeReference<List<Map<String, Object>>>() {
// });
//
// for (Map<String, Object> map : fileList) {
// MapUtils.debugPrint(System.out, "map", map);
// }
//
// } catch (JsonMappingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (JsonProcessingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// log.debug("fileMap =" + fileList);
// */
// reqVO.addInfoItem("fileList", fileListJsonStr);
//
// // 요청
// DataApiResVO resVO = boardService.insertQnA(reqVO);
//
// // 처리결과 확인
// if(!resVO.isSuccess()) {
// message = resVO.getResultMessage();
// redirectAttrs.addFlashAttribute("message", message);
// addParamsToRedirect(paramMap, redirectAttrs, null, "pageIndex,pageSize,searchKeyword");
// addParamsToRedirect(paramMap, redirectAttrs, null,
// "title,articlePassword,"
// + "regDate, regUserName, "
// + "email, contentQeust");
//
// return "redirect:/board/insertQnAForm.do";
// }
//
// redirectAttrs.addFlashAttribute("pageSize", paramMap.get("pageSize"));
// redirectAttrs.addFlashAttribute("message", "성공적으로 등록되었습니다.");
//
// return "redirect:/board/listQnAs.do";
// }
//
// @RequestMapping("/board/verifyWriter.do")
// public String verifyWriter(HttpServletRequest req) throws Exception {
// return "nlib/board/verifyWriter";
// }
//
// /**
// * 묻고답하기 수정 화면 표출한다.
// *
// * @param req
// * @param authentication
// * @param paramMap
// * @param model
// * @return
// */
// @RequestMapping("/board/updateQnAForm.do")
// public String updateQnAForm(HttpServletRequest req
// , Authentication authentication
// , @RequestParam Map<String, String> paramMap
// , ModelMap model
// , RedirectAttributes redirectAttrs
// ) throws Exception {
//
// // 목록 이동시 전달할 매개변수
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = paramMap.get("pageIndex");
// String pageSize = paramMap.get("pageSize");
//
// // 게시물 번호
// String articleNo = paramMap.get("articleNo");
// String articlePassword = paramMap.get("articlePassword");
//
// log.debug("updateQnAForm > pageIndex = " + pageIndex);
// log.debug("updateQnAForm > pageSize = " + pageSize);
// log.debug("updateQnAForm > searchKeyword = " + searchKeyword);
// log.debug("updateQnAForm > articleNo = " + articleNo);
// log.debug("updateQnAForm > articlePassword = " + articlePassword);
//
// if(StringUtil.isEmpty(articlePassword)) {
// redirectAttrs.addFlashAttribute("message", "비밀빈호가 올바르지 않습니다.(U1)");
//
// addParamsToRedirect(paramMap, redirectAttrs, null, "pageIndex,pageSize,searchKeyword,articleNo");
// return "redirect:/board/selectQnA.do";
// }
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
//
// // 요청
// DataApiResVO resVO = boardService.selectQnA(reqVO);
//
// // 비밀번호 확인
// HashMap<String, Object> article = resVO.getInfo();
// String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword);
// log.debug("updateQnAForm > 입력받은 비밀번호를 SHA256 암호화한 값 : " + shaArticlePassword);
//
// if(!shaArticlePassword.equals(article.get("articlePassword"))) {
// redirectAttrs.addFlashAttribute("message", "비밀번호가 올바르지 않습니다.(U2)");
// addParamsToRedirect(paramMap, redirectAttrs, null, "pageIndex,pageSize,searchKeyword,articleNo");
// return "redirect:/board/selectQnA.do";
// }
//
// // 반환 정보
// model.addAttribute("articleNo" , articleNo);
// model.addAttribute("article" , resVO.getInfo());
//
// //-------------------------------
// // 게시글 비밀번호 처리
// //-------------------------------
// // 비밀번호 : SHA-256 암호화 처리되어 DB에 저장되며,
// // 화면에 표출될 때는 Aria로 articleNo를 Salt값으로 하여 재암호화처리하고 BASE64로 다시 한번 인코딩하여 표출함
// String encArticlePassword = StringUtil.encodeBase64(ariaCrypto.encode(shaArticlePassword));
// model.addAttribute("encArticlePassword", encArticlePassword);
//
// // 검색 정보
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
//
// return "nlib/board/updateQnAForm";
// }
//
// /**
// * 묻고답하기 수정 처리한다.
// *
// * @param req
// * @param authentication
// * @param paramMap
// * @param model
// * @return
// */
// @RequestMapping("/board/updateQnA.do")
// public String updateQnA(HttpServletRequest req
// , Authentication authentication
// , @RequestParam Map<String, String> paramMap
// , RedirectAttributes redirectAttrs
// , ModelMap model) throws Exception {
//
// log.debug("paramMap > " + paramMap);
//
// String message = null;
// String authKey = createAuthKey(req, authentication);
//
// // 목록 이동시 전달할 매개변수
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = paramMap.get("pageIndex");
// String pageSize = paramMap.get("pageSize");
//
// // 게시물 번호
// String articleNo = paramMap.get("articleNo");
//
// //-------------------------------
// // 게시글 비밀번호 처리
// //-------------------------------
// // 비밀번호 : SHA-256 암호화 처리되어 DB에 저장되며,
// // 화면에 표출될 때는 Aria로 articleNo를 Salt값으로 하여 재암호화처리하고 BASE64로 다시 한번 인코딩하여 표출함
// String encArticlePassword = paramMap.get("encArticlePassword");
// String checkArticlePassword = ariaCrypto.decode(StringUtil.decodeBase64(encArticlePassword));
// String articlePassword = paramMap.get("articlePassword");
//
// //-------------------------------
// // 비밀번호 유효 체크
// //-------------------------------
// // 기존 정보 조회
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(authKey);
// reqVO.addInfoItem("articleNo", articleNo);
//
// DataApiResVO resVO = boardService.selectQnA(reqVO);
// String oldArticlePassword = resVO.getInfoItem("articlePassword");
// if(checkArticlePassword == null || !checkArticlePassword.equals(oldArticlePassword)) {
// redirectAttrs.addFlashAttribute("errorCode", "ERR_BRD_UPDTQNA");
// redirectAttrs.addFlashAttribute("errorMessage", "잘못된 접근입니다.");
// return "redirect:/alert/showError.do";
// }
//
// // 글비밀번호가 존재하지 않는 경우, 기존 비밀번호 설정 처리
// if(StringUtil.isEmpty(articlePassword)) {
// articlePassword = checkArticlePassword;
// }
// // 글비밀번호가 입력된 경우, SHA256 암호화 처리하여 설정
// else {
// articlePassword = nlibPasswordEncoder.encode(articlePassword);
// }
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO updateReqVO = new DataApiReqVO();
// updateReqVO.setAuthKey(authKey);
// updateReqVO.addInfoItem("boardNo" , "QNA");
// updateReqVO.addInfoItem("articleNo" , articleNo);
// updateReqVO.addInfoItem("title" , paramMap.get("title"));
// updateReqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
// updateReqVO.addInfoItem("email" , paramMap.get("email"));
// updateReqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
// updateReqVO.addInfoItem("articlePassword", articlePassword); // SHA256 글비밀번호
//
// // 요청
// DataApiResVO updateResVO = boardService.updateQnA(updateReqVO);
//
// // 처리결과 확인
// if(!updateResVO.isSuccess()) {
// message = updateResVO.getResultMessage();
// model.addAttribute("message", message);
// addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo");
// addParamsToModel(paramMap, model, "article"
// , "articleNo,articleType,"
// + "articleTypeName,title,articlePassword,readCount,"
// + "regDate, reguserName, repStats, "
// + "email, contentQeust, "
// + "contentQuestFile");
//
// return "redirect:/board/updateQnAForm.do";
// }
//
// // 반환 정보
// model.addAttribute("articleNo" , updateResVO.getInfoItem("articleNo")); // 신규등록된 게시물 ID
// model.addAttribute("message" , "성공적으로 수정되었습니다.");
//
// // 검색 정보
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
//
// return "redirect:/board/selectQnA.do";
// }
//
// /**
// * 묻고답하기 삭제한다.
// *
// * @param req
// * @param authentication
// * @param paramMap
// * @param model
// * @return
// */
// @RequestMapping("/board/deleteQnA.do")
// public String deleteQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) throws Exception {
//
// String message = null;
//
// // 목록 이동시 전달할 매개변수
// String searchKeyword = paramMap.get("searchKeyword");
// String pageIndex = paramMap.get("pageIndex");
// String pageSize = paramMap.get("pageSize");
//
// // 게시물 번호
// String articleNo = paramMap.get("articleNo");
// String articlePassword = paramMap.get("articlePassword");
//
// log.debug("deleteQnA > pageIndex = " + pageIndex);
// log.debug("deleteQnA > pageSize = " + pageSize);
// log.debug("deleteQnA > searchKeyword = " + searchKeyword);
// log.debug("deleteQnA > articleNo = " + articleNo);
// log.debug("deleteQnA > articlePassword = " + articlePassword);
//
// if(StringUtil.isEmpty(articlePassword)) {
// model.addAttribute("message", "글비밀빈호가 올바르지 않습니다.(D1)");
// addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo");
// return "redirect:/board/selectQnA.do";
// }
//
// //-------------------------------
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
//
// // 요청
// DataApiResVO resVO = boardService.selectQnA(reqVO);
//
// // 비밀번호 확인
// HashMap<String, Object> article = resVO.getInfo();
// String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword);
// log.debug("updateQnAForm > 입력받은 비밀번호를 SHA256 암호화한 값 : " + shaArticlePassword);
//
// if(!shaArticlePassword.equals(article.get("articlePassword"))) {
// model.addAttribute("message", "글비밀번호가 올바르지 않습니다.(D2)");
// addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo");
// return "redirect:/board/selectQnA.do";
// }
//
// // 삭제 처리
// DataApiResVO delResVO = boardService.deleteQnA(reqVO);
//
// // 처리결과 확인
// if(!delResVO.isSuccess()) {
// message = delResVO.getResultMessage();
// model.addAttribute("message", message);
// addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo");
//
// return "redirect:/board/selectQnA.do";
// }
//
// // 반환 정보
// model.addAttribute("message" , "성공적으로 삭제되었습니다.");
//
// // 검색 정보
// model.addAttribute("pageIndex" , pageIndex);
// model.addAttribute("pageSize" , pageSize);
// model.addAttribute("searchKeyword", searchKeyword);
//
// return "redirect:/board/listQnAs.do";
// }
private static final Logger log = LoggerFactory.getLogger(AncmntController.class);
static final int DEFUALT_PAGE_SIZE = NlibProperty.getInt("list.paging.page.size", 10);
@Resource(name = "ancmntService")
//private AncmntServiceImpl ancmntService;
private BoardService ancmntService;
/**
* 목록 화면을 표시한다.
*
* @param req
* @return
*/
@RequestMapping("/bbs/listAncmnts.do")
public String listAncmnts(
HttpServletRequest req,
@RequestParam Map<String, String> paramMap,
ArticleVO articleVO,
ModelMap model
) throws Exception {
int pageIndex = StringUtil.toNumber(paramMap.get("pageIndex"), 1);
int pageSize = StringUtil.toNumber(paramMap.get("pageSize"), DEFUALT_PAGE_SIZE);
log.debug("listAncmnt > pageIndex = " + pageIndex);
log.debug("listAncmnt > pageSize = " + pageSize);
ArticleVO searchArticleVO = new ArticleVO();
searchArticleVO.setPageIndex(pageIndex);
searchArticleVO.setPageSize(pageSize);
model.addAttribute("searchArticleVO", searchArticleVO);
model.addAttribute("pageSize", pageSize);
model.addAttribute("pageIndex", pageIndex);
return "nlib/bbs/listAncmnts";
}
/**
* 목록 조회한다.
*
* @param req
* @return
*/
@RequestMapping(value="/bbs/listAncmntsAjax.do")
public ResponseEntity<String> listAncmntsAjax(HttpServletRequest req,
Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
int pageIndex = StringUtil.toNumber(paramMap.get("pageIndex"), 1);
int pageSize = StringUtil.toNumber(paramMap.get("pageSize"), DEFUALT_PAGE_SIZE);
log.debug("listNotificationsAjax > pageIndex = " + pageIndex);
log.debug("listNotificationsAjax > pageSize = " + pageSize);
ArticleVO searchNotificationtVO = new ArticleVO();
searchNotificationtVO.setPageIndex(pageIndex);
searchNotificationtVO.setPageSize(pageSize);
List<ArticleVO> list = ancmntService.listArticles(searchNotificationtVO);
int totRecordCount = ancmntService.countArticles(searchNotificationtVO);
//-------------------------------
// JSON변환 응답 처리
//-------------------------------
// JS-GRID 페이징 처리를 포함한 응답값 처리
// {data: [{...}],
// itemsCount: 255
// }
HashMap<String, Object> retMap = new HashMap<String, Object>();
retMap.put("data", list);
retMap.put("itemsCount", totRecordCount);
return makeResponseEntityJson(retMap);
}
// /**
// * 알림 상세 내용 조회한다.
// *
// * @param req
// * @return
// */
// @RequestMapping("/cmm/selectNotificationAjax.do")
// public ResponseEntity<String> selectNotificationAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
//
// String notiId = paramMap.get("notiId"); // 알림ID
// String pageIndex = paramMap.get("pageIndex");
// String pageSize = paramMap.get("pageSize");
//
// log.debug("selectNotificationAjax > notiId = " + notiId);
//
// ArticleVO paramNotiVO = new ArticleVO();
// paramNotiVO.setNotiId(notiId);
// paramNotiVO.setRecvUserId(getMbInfoId(req));
// paramNotiVO.setPageIndex(pageIndex);
// paramNotiVO.setPageSize(pageSize);
//
// // 읽음처리 상세내용 조회
// ArticleVO articleVO = ancmntService.selectNotification(paramNotiVO);
//
// //-------------------------------
// // JSON변환 응답 처리
// //-------------------------------
// // JS-GRID 페이징 처리를 포함한 응답값 처리
// // {data: [{...}],
// // itemsCount: 255
// // }
// HashMap<String, Object> retMap = new HashMap<String, Object>();
// retMap.put("data", articleVO);
//
// return makeResponseEntityJson(retMap);
// }
//
}

View File

@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.support.RequestContextUtils;
import nlib.bbs.service.BoardService;
import nlib.bbs.service.BoardServiceApi;
import nlib.cmm.NlibCommonController;
import nlib.cmm.crypto.AriaCrypto;
import nlib.cmm.crypto.NlibPasswordEncoder;
@ -41,7 +41,7 @@ public class BoardController extends NlibCommonController
static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
@Resource(name = "boardService")
private BoardService boardService;
private BoardServiceApi boardService;
@Resource(name = "nlibPasswordEncoder")
private NlibPasswordEncoder nlibPasswordEncoder;
@ -119,7 +119,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("searchKeyword", searchKeyword);
@ -171,7 +170,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
@ -216,7 +214,6 @@ public class BoardController extends NlibCommonController
log.debug("listFAQs > faqType = " + faqType);
DataApiReqVO reqVOforCode = new DataApiReqVO();
reqVOforCode.setAuthKey(createAuthKey(req, authentication));
reqVOforCode.setPageIndex(0);
reqVOforCode.setPageSize(0);
@ -265,7 +262,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("searchKeyword", searchKeyword);
@ -307,7 +303,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID
reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
@ -372,7 +367,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("searchKeyword", searchKeyword);
@ -428,7 +422,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
@ -492,13 +485,11 @@ public class BoardController extends NlibCommonController
log.debug("paramMap > " + paramMap);
String message = null;
String authKey = createAuthKey(req, authentication);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.addInfoItem("boardNo" , "QNA");
reqVO.addInfoItem("title" , paramMap.get("title"));
reqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
@ -605,7 +596,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
@ -664,7 +654,6 @@ public class BoardController extends NlibCommonController
log.debug("paramMap > " + paramMap);
String message = null;
String authKey = createAuthKey(req, authentication);
// 목록 이동시 전달할 매개변수
String searchKeyword = paramMap.get("searchKeyword");
@ -688,7 +677,6 @@ public class BoardController extends NlibCommonController
//-------------------------------
// 기존 정보 조회
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.addInfoItem("articleNo", articleNo);
DataApiResVO resVO = boardService.selectQnA(reqVO);
@ -712,7 +700,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO updateReqVO = new DataApiReqVO();
updateReqVO.setAuthKey(authKey);
updateReqVO.addInfoItem("boardNo" , "QNA");
updateReqVO.addInfoItem("articleNo" , articleNo);
updateReqVO.addInfoItem("title" , paramMap.get("title"));
@ -790,7 +777,6 @@ public class BoardController extends NlibCommonController
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID

View File

@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.support.RequestContextUtils;
import nlib.bbs.service.BoardService;
import nlib.bbs.service.BoardServiceApi;
import nlib.cmm.NlibCommonController;
import nlib.cmm.crypto.AriaCrypto;
import nlib.cmm.crypto.NlibPasswordEncoder;
@ -78,7 +78,6 @@ public class FaqController extends NlibCommonController {
// log.debug("listFAQs > faqType = " + faqType);
//
// DataApiReqVO reqVOforCode = new DataApiReqVO();
// reqVOforCode.setAuthKey(createAuthKey(req, authentication));
// reqVOforCode.setPageIndex(0);
// reqVOforCode.setPageSize(0);
//
@ -127,7 +126,6 @@ public class FaqController extends NlibCommonController {
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("searchKeyword", searchKeyword);
@ -169,7 +167,6 @@ public class FaqController extends NlibCommonController {
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
//

View File

@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.support.RequestContextUtils;
import nlib.bbs.service.BoardService;
import nlib.bbs.service.BoardServiceApi;
import nlib.cmm.NlibCommonController;
import nlib.cmm.crypto.AriaCrypto;
import nlib.cmm.crypto.NlibPasswordEncoder;
@ -78,7 +78,6 @@ public class QnaController extends NlibCommonController
// log.debug("listFAQs > faqType = " + faqType);
//
// DataApiReqVO reqVOforCode = new DataApiReqVO();
// reqVOforCode.setAuthKey(createAuthKey(req, authentication));
// reqVOforCode.setPageIndex(0);
// reqVOforCode.setPageSize(0);
//
@ -127,7 +126,6 @@ public class QnaController extends NlibCommonController
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.setPageIndex(pageIndex);
// reqVO.setPageSize(pageSize);
// reqVO.addInfoItem("searchKeyword", searchKeyword);
@ -169,7 +167,6 @@ public class QnaController extends NlibCommonController
// // REQ VO 구성
// //-------------------------------
// DataApiReqVO reqVO = new DataApiReqVO();
// reqVO.setAuthKey(createAuthKey(req, authentication));
// reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID
// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
//

View File

@ -59,11 +59,6 @@ public class NlibCommonController {
@Resource(name = "loginService")
private LoginService _loginService;
/**
* AuthKey 생성 , 로그인하지 않은 사용자의 AuthKey 생성시 사용되는 접두어
*/
static final String ANONYMOUS_AUTH_KEY_PREFIX = "GST-";
private static final int INFO_ID_COUNCIL_CD = 1; /* 현재 지방문화원 코드를 지칭하는 식별자 */
private static final int INFO_ID_COUNCIL_NM = 2; /* 현재 지방문화원 명칭을 지칭하는 식별자 */
@ -118,7 +113,7 @@ public class NlibCommonController {
String mName;
HashMap<String, Method> setterNames = new HashMap<String, Method>();
HashMap<String, Method> getterNames = new HashMap<String, Method>();
final String skipSetterList = "|setIp|setAlerted|setAuthKey|setAuthorityList|";
final String skipSetterList = "|setIp|setAlerted|setAuthorityList|";
for(Method m : methods) {
mName = m.getName();
if(skipSetterList.contains(mName)) continue;
@ -187,44 +182,6 @@ public class NlibCommonController {
return (SecUserVO)authentication.getPrincipal();
}
/**
* 통합자료시스템 요청 , 제공할 사용자정보 auth key 생성
* - 로그인 경우 : 사용자ID를 BASE64로 인코딩한
* - 로그인하지 않은 경우 : GST-세션ID
*
* @param request
* @param authentication
* @return
*/
public String createAuthKey(HttpServletRequest request, Authentication authentication) {
String userId = null;
String authKey = null;
if(authentication != null) {
userId = ((NlibLoginVO)authentication.getPrincipal()).getMbInfoId();
}
authKey = makeAuthKey(userId, request.getSession().getId());
log.debug("createAuthKey > " + authKey);
return authKey;
}
public static String makeAuthKey(String userId) {
return makeAuthKey(userId, null);
}
public static String makeAuthKey(String userId, String sessionId) {
if(nlib.util.StringUtil.isEmpty(userId)) {
if(nlib.util.StringUtil.isNotEmpty(sessionId)) return ANONYMOUS_AUTH_KEY_PREFIX + sessionId;
else return null;
}
return Base64.getEncoder().encodeToString(userId.getBytes());
}
public ResponseEntity<String> makeResponseEntityJson(DataApiResVO resVO) {
// Convert Json

View File

@ -55,7 +55,7 @@ public class NotificationController extends NlibCommonController {
private static final Logger log = LoggerFactory.getLogger(NotificationController.class);
static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
static final int DEFUALT_PAGE_SIZE = NlibProperty.getInt("list.paging.page.size", 10);
@Resource(name="notificationService")
private NotificationService notificationService;
@ -75,8 +75,8 @@ public class NotificationController extends NlibCommonController {
) throws Exception {
String mbInfoId = getMbInfoId(req);
String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
int pageIndex = StringUtil.toNumber(paramMap.get("pageIndex"), 1);
int pageSize = StringUtil.toNumber(paramMap.get("pageSize"), DEFUALT_PAGE_SIZE);
log.debug("listNotifications > pageIndex = " + pageIndex);
log.debug("listNotifications > pageSize = " + pageSize);
@ -92,8 +92,8 @@ public class NotificationController extends NlibCommonController {
model.addAttribute("notificationList", list);
model.addAttribute("searchNotificationVO", searchNotificationVO);
model.addAttribute("pageSize", NlibProperty.getString("list.paging.page.size"));
model.addAttribute("pageIndex", "1");
model.addAttribute("pageSize", pageSize);
model.addAttribute("pageIndex", pageIndex);
return "nlib/cmm/listNotifications";
@ -111,7 +111,7 @@ public class NotificationController extends NlibCommonController {
String mbInfoId = getMbInfoId(req);
String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
int pageSize = StringUtil.toNumber(paramMap.get("pageSize"), DEFUALT_PAGE_SIZE);
log.debug("listNotificationsAjax > pageIndex = " + pageIndex);
log.debug("listNotificationsAjax > pageSize = " + pageSize);

View File

@ -149,13 +149,9 @@ public class InformServiceImpl implements InformService
HashMap<String, String> addrInfo = informDAO.selectNCultureAddr(councilCd);
if(addrInfo != null) {
locInfo.put("ZIPCODE", addrInfo.get(""));
locInfo.put("ADDR1", addrInfo.get("ADDR1"));
locInfo.put("ADDR2", addrInfo.get("ADDR2"));
locInfo.put("TEL_NO", addrInfo.get("TEL_NO"));
locInfo.put("FAX_NO", addrInfo.get("FAX_NO"));
locInfo.put("LATITUDE", addrInfo.get("LATITUDE"));
locInfo.put("LONGITUDE", addrInfo.get("LONGITUDE"));
for(String key : addrInfo.keySet()) {
locInfo.put(key, addrInfo.get(key));
}
}
return locInfo;

View File

@ -151,10 +151,10 @@ public class InformController extends NlibCommonController {
model.addAttribute("informTitle" , ret.get("TITLE"));
model.addAttribute("informContent", ret.get("CONTENT"));
model.addAttribute("zipCode", ret.get("ZIPCODE"));
model.addAttribute("addr1", ret.get("ADDR1"));
model.addAttribute("addr2", ret.get("ADDR2"));
model.addAttribute("telNo", ret.get("TEL_NO"));
model.addAttribute("zipCode" , ret.get("ZIP_CODE"));
model.addAttribute("address" , ret.get("ADDRESS"));
model.addAttribute("addressDetail", ret.get("ADDRESS_DETAIL"));
model.addAttribute("phoneNo" , ret.get("PHONE_NO"));
model.addAttribute("faxNo" , ret.get("FAX_NO"));
model.addAttribute("latitude" , ret.get("LATITUDE"));
model.addAttribute("longitude" , ret.get("LONGITUDE"));

View File

@ -90,7 +90,6 @@ public interface DataApiInterface {
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
// 공통
map.add("authKey", reqVO.getAuthKey());
map.add("rows", "" + reqVO.getPageSize());
map.add("page", "" + reqVO.getPageIndex());
@ -136,9 +135,6 @@ public interface DataApiInterface {
if(StringUtil.isEmpty(reqVO.getReqUrl())) {
return new DataApiResVO("ERR_NO_RURL", "데이터 요청 업무ID에 대한 URL/RUI 정보가 존재하지 않습니다.");
}
if(StringUtil.isEmpty(reqVO.getAuthKey())) {
return new DataApiResVO("ERR_NO_AUTHKEY", "데이터 요청에 대한 권한키 정보가 존재하지 않습니다.");
}
return null;
}

View File

@ -31,9 +31,6 @@ public class DataApiReqVO {
public static final int DEFAULT_PAGE_SIZE = 10;
public static final int DEFAULT_PAGE_INDEX = 1;
/* 처리결과 */
private String authKey; /* 로그인키 */
/* 페이징 정보 */
private int pageIndex = 0; /* 요청 페이지 번호 */
private int pageSize = 0; /* 페이지별 표출할 레코드 수 */
@ -50,13 +47,6 @@ public class DataApiReqVO {
String reqUrl; /* 요청업무ID에 대한 통합시스템의 응답 처리 프로그램 URI */
// GET/SET
public String getAuthKey() {
return authKey;
}
public void setAuthKey(String authKey) {
this.authKey = authKey;
}
public int getPageIndex() {
return (pageIndex < 1 ? DEFAULT_PAGE_INDEX : pageIndex);

View File

@ -67,12 +67,10 @@ public class SampleDataApiController {
@RequestMapping("/sample/getSampleInfo.do")
public String getSampleInfo(@RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
String authKey = (String) commandMap.get("authKey");
String page = (String) commandMap.get("page");
String rows = (String) commandMap.get("rows");
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.setPageIndex(page);
reqVO.setPageSize(rows);

View File

@ -52,12 +52,12 @@ public class SecUserDetailsService implements UserDetailsService {
* @see org.springframework.security.core.userdetails.UserDetailsService#loadUserByUsername(java.lang.String)
*/
@Override
public UserDetails loadUserByUsername(String councilloginUserId) throws UsernameNotFoundException {
public UserDetails loadUserByUsername(String loginUserId) throws UsernameNotFoundException {
SecUserVO secUserVO = secUserDAO.loadUserByUsername(councilloginUserId);
SecUserVO secUserVO = secUserDAO.loadUserByUsername(loginUserId);
if(secUserVO == null) {
throw new UsernameNotFoundException(councilloginUserId);
throw new UsernameNotFoundException(loginUserId);
}
return secUserVO;
}

View File

@ -85,6 +85,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/code/**").permitAll()
.antMatchers("/homes/**").permitAll()
.antMatchers("/homes/**").permitAll()
.antMatchers("/bbs/**").permitAll()
.anyRequest().authenticated()
.and().formLogin()
.loginPage(NlibProperty.getString("login.url"))

View File

@ -20,7 +20,6 @@ public interface LoginService
public final String ERR_CODE_DISABLE = "ERR_CODE_LOGIN_DISABLE"; /* 오류코드 : 계정유효하지 않음 */
public final String ERR_CODE_MISMATCH = "ERR_CODE_LOGIN_MISMATCH"; /* 오류코드 : ID,PW일치하지 않음 */
public final String ERR_CODE_EXC = "ERR_CODE_LOGIN_EXC"; /* 오류코드 : 기타오류 */
public final String ERR_CODE_REQ_AGREE = "ERR_CODE_REQ_AGREE"; /* 오류코드 : 해당지방문화원 정보제공 동의 필요 */
public final String WRN_CODE_DORMANT = "WRN_CODE_DOMANT"; /* 경고코드 : 휴면계정 */

View File

@ -71,7 +71,6 @@ public class NlibLoginVO implements Serializable {
/* 보완 및 기타 사항 */
private String ip; /* 접속IP */
private String authorityList; /* 권한ROLE 리스트 */
private String authKey; /* RESTful API : 접속인증코드 */
private String error = null; /* 처리 오류코드 */
private String message = null; /* 처리 관련 메시지 */
@ -108,32 +107,6 @@ public class NlibLoginVO implements Serializable {
setBirthday (AriaCrypto.decode(getBirthday()));
}
/**
* 로그인인증키값을 리턴한다. 만일 존재하지 않을 경우, userId를 기반으로 인증키를 생성하여 리턴한다.
* 로그인되지 않은 (userId값이 존재하지 않는경우) 대해서는 null을 리턴한다.
*
* @return
*/
public String getAndCreateAuthKey() {
return getOrCreateAuthKey(null);
}
/**
* 로그인인증키값을 리턴한다. 만일 존재하지 않을 경우, userId를 기반으로 인증키를 생성하여 리턴한다.
* 로그인되지 않은 (userId값이 존재하지 않는경우) 대해서는 세션ID를 기반으로한 손님용 인증키를 생성하여 리턴한다.
*
* @return
*/
public String getOrCreateAuthKey(String sessionId) {
if(StringUtil.isNotEmpty(this.authKey)) return this.authKey;
// AuthKey 생성하여 리턴
this.authKey = NlibCommonController.makeAuthKey(this.mbInfoId, sessionId);
return this.authKey;
}
/**
* 지방문화원코드+계정의 이름을 리턴한다. (사용자ID:email형식의 LOGIN_USER_ID 정보)
* Spring Security 처리
@ -142,7 +115,7 @@ public class NlibLoginVO implements Serializable {
*/
public String getUsername() {
// 로그인하는 지방문화원 코드 + 로그인사용자ID
return StringUtil.getString(getJoinCouncilCd(), "") + "@" + getLoginUserId();
return getLoginUserId();
}
//----------------------------------------------------------------
@ -365,13 +338,6 @@ public class NlibLoginVO implements Serializable {
this.authorityList = authorityList;
}
public String getAuthKey() {
return authKey;
}
public void setAuthKey(String authKey) {
this.authKey = authKey;
}
public String getError() {
return error;

View File

@ -132,13 +132,6 @@ public class LoginServiceImpl implements LoginService
return ERR_CODE_REQ_MEMBERSHIP;
}
// 해당 지방문화원에 미등록된 경우, 정보제공 동의로 이동 처리 필요
if(StringUtil.isEmpty(nLoginVO.getJoinCouncilCd())) {
oUser.setNlibVO(nLoginVO);
return ERR_CODE_REQ_AGREE;
}
// Spring Security 로그인처리위한 token 생성하여 로그인 처리
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(nLoginVO.getUsername(), nLoginVO.getPassword());
NlibLoginVO nlibLoginedVO = loginProcSecurity(req, token);
@ -169,10 +162,9 @@ public class LoginServiceImpl implements LoginService
// AuthenticationManager token 넘기면 UserDetailsService 받아 처리하도록 한다.
Authentication authentication = authenticationManager.authenticate(token);
// AuthKey 생성 기타 정보 저장
// 기타 정보 저장
String sessionId = req.getSession().getId();
nlibLoginVO = (NlibLoginVO)authentication.getPrincipal();
nlibLoginVO.getOrCreateAuthKey(sessionId); // SET AUTHKEY
nlibLoginVO.setIp(req.getRemoteAddr());
// 지방문화원 정보
@ -257,9 +249,7 @@ public class LoginServiceImpl implements LoginService
// // AuthenticationManager token 넘기면 UserDetailsService 받아 처리하도록 한다.
// Authentication authentication = authenticationManager.authenticate(token);
//
// // AuthKey 등록
// SecUserVO userVO = (SecUserVO)authentication.getPrincipal();
// userVO.getAndCreateAuthKey(req.getSession().getId()); // SET AUTHKEY
//
// // 실제 SecurityContext authentication 정보를 등록한다.
// SecurityContextHolder.getContext().setAuthentication(authentication);

View File

@ -432,11 +432,6 @@ public class LoginController {
return "redirect:" + NlibProperty.getString("login.dormant.url");
}
// 신규 지방문화원 정보 제공 동의 필요
if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_AGREE)) {
return "redirect:" + NlibProperty.getString("login.newcouncil.url");
}
// SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않은 사용자 : 회원가입으로 전환
model.addAttribute("error", loginResult);
if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_MEMBERSHIP)) {

View File

@ -17,6 +17,7 @@
<typeAlias alias="NlibLoginVO" type="nlib.user.service.NlibLoginVO" />
<typeAlias alias="SecUserVO" type="nlib.security.SecUserVO" />
<typeAlias alias="NotificationVO" type="nlib.cmm.service.NotificationVO" />
<typeAlias alias="ArticleVO" type="nlib.bbs.service.ArticleVO" />
</typeAliases>
</configuration>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?><!--Converted at: Wed May 11 15:49:38 KST 2016-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="nlib.bbs.service.impl.AncmntDAO">
<select id="listArticles" parameterType="ArticleVO" resultType="ArticleVO">
<![CDATA[
SELECT
A.ANCMNT_ID
, A.MNG_ORG_CD
, B.DEPT_NM
, A.TITLE
, A.CONTENT
, A.NOTI_YN
, A.OPEN_YN
, A.POST_START_DATE
, A.POST_END_DATE
, A.VIEW_CNT
, A.BD_ATTACH_FILE_ID
, DATE_FORMAT(A.REG_DD, '%Y-%M-%D') AS REG_DD
FROM BD_NLIB_ANCMNT A
INNER JOIN (
SELECT S.ANCMNT_ID
FROM BD_NLIB_ANCMNT S
WHERE OPEN_YN = 'Y'
AND DATE_FORMAT(NOW(), '%Y%m%d') BETWEEN IFNULL(POST_START_DATE,'00010101') AND IFNULL(POST_END_DATE, '99991231')
ORDER BY S.ANCMNT_ID DESC
LIMIT #{pageStartRowNum}, #{pageSize}
) AS A2
USING(ANCMNT_ID)
JOIN SM_DEPT B
ON B.ORG_CD = A.MNG_ORG_CD
WHERE 1=1
ORDER BY A.ANCMNT_ID DESC
]]>
</select>
<select id="countArticles" parameterType="ArticleVO" resultType="Integer">
<![CDATA[
SELECT COUNT(1)
FROM BD_NLIB_ANCMNT A
WHERE OPEN_YN = 'Y'
AND DATE_FORMAT(NOW(), '%Y%m%d') BETWEEN IFNULL(POST_START_DATE,'00010101') AND IFNULL(POST_END_DATE, '99991231')
]]>
</select>
<select id="selectArticle" parameterType="ArticleVO" resultType="ArticleVO">
<![CDATA[
SELECT A.*
FROM BD_NLIB_ANCMNT A
WHERE ANCMNT_ID = #{articleId}
]]>
</select>
<update id="updateRead" parameterType="ArticleVO">
<![CDATA[
UPDATE BD_NLIB_ANCMNT
SET VIEW_CNT = VIEW_CNT + 1
WHERE ANCMNT_ID = #{articleId}
]]>
</update>
</mapper>

View File

@ -34,17 +34,17 @@
<select id="selectNCultureAddr" parameterType="String" resultType="HashMap">
SELECT
'서울 마포구 삼개로 16' AS ADDR1
, '근신빌딩' AS ADDR2
, '04173' AS ZIPCODE
, '02-1111-2222' AS TEL_NO
, '02-1111-3333' AS FAX_NO
, '37.5392866' AS LATITUDE
, '126.9472778' AS LONGITUDE
DEPT_NM
, ADDRESS
, ADDRESS_DETAIL
, ZIP_CODE
, PHONE_NO
, FAX_NO
, LATITUDE
, LONGITUDE
FROM SM_DEPT A
/*WHERE DEPT_SEQ = x{councilCd}*/
WHERE ORG_CD = #{councilCd}
LIMIT 1
</select>
</mapper>

View File

@ -30,12 +30,9 @@
, B.SNS_TYPE
, B.SNS_ID
, 'ROLE_USER' AS AUTHORITY_LIST
, C.JOIN_COUNCIL_CD
FROM UAC_CLTR_DB.MB_INFO A /* 사용자정보 */
JOIN UAC_CLTR_DB.MB_SNS B /* 사용자 SNS 정보 */
ON A.MB_INFO_ID = B.MB_INFO_ID
LEFT OUTER JOIN UAC_CLTR_DB.MB_SITE /* 가입문화원정보 */ C
ON A.MB_INFO_ID = C.MB_INFO_ID AND C.JOIN_COUNCIL_CD = #{joinCouncilCd}
WHERE B.SNS_ID = #{snsId}
AND UPPER(SNS_TYPE) = UPPER(#{snsType})
AND B.UNLINK_DD IS NULL /* 연동해제건 제외 */

View File

@ -31,9 +31,7 @@
FROM UAC_CLTR_DB.MB_INFO A /* 사용자정보 */
JOIN UAC_CLTR_DB.MB_SNS B /* 사용자 SNS 정보 */
ON A.MB_INFO_ID = B.MB_INFO_ID
JOIN UAC_CLTR_DB.MB_SITE /* 가입문화원정보 */ C
ON A.MB_INFO_ID = C.MB_INFO_ID
WHERE CONCAT(C.JOIN_COUNCIL_CD, '@', A.LOGIN_USER_ID) = #{councilloginUserId}
WHERE A.LOGIN_USER_ID = #{loginUserId}
LIMIT 1
</select>

View File

@ -0,0 +1,216 @@
<%
/**
* <pre>
* @Class Name : listAncmnts.jsp
*
* @Description : 공지사항 목록 화면을 표출한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 9. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 9. 13.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">공지사항</c:set>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
<script type="text/javaScript" language="javascript">
$( document ).ready(function() {
//=======================================================
// 그리드 생성 환경설정
//=======================================================
$("#jsGrid").jsGrid({
pageSize : $("#pageSize").val(),
scrollOffset:0,
controller: {
loadData: function (filter) { // 그리드에 데이터를 가져올 때 실팽되는 함수
var data = $.Deferred();
//======================================
// 요청 정보 구성 : 시작 (각 요청에 맞게 조정)
//======================================
var reqUrl = "${pageContext.request.contextPath}/bbs/listAncmntsAjax.do";
var pageIndex = ( filter && filter.pageIndex ? filter.pageIndex : $("#pageIndex").val());
var pageSize = ( filter && filter.pageSize ? filter.pageSize : $("#pageSize").val());
$("#pageIndex").val(pageIndex);
var inputData = {
"pageIndex" : pageIndex
, "pageSize": pageSize};
//--------------------------------------
// 요청 처리
//--------------------------------------
$.ajax({
type: "post",
contentType: "application/json; charset=utf-8",
url: reqUrl,
dataType: "json",
data: JSON.stringify(inputData),
}).done(function(response){
<%
// 그리드 데이터 예시 :
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}
%>
var jsonObj = JSON.parse(response);
//$("#itemsCount").val(jsonOjb.itemsCount);
console.log(jsonObj.itemsCount);
if(jsonObj.itemsCount == undefined) $("#itemsCount").val("0");
else $("#itemsCount").val(jsonObj.itemsCount);
data.resolve(jsonObj);
});
return data.promise();
} // loadData
},
rowClick: function(args) { // 행 클릭 시, 실행되는 이벤트 함수
// 클릭된 행의 자료 객체
var getData = args.item;
// 추출할 컬럼의 데이터 가져오기
var articleId = getData["articleId"];
var selectedRow = $("#jsGrid").find('table tr.jsgrid-selected-row');
// 상세 내용 보기
fn_viewDetail(articleId, selectedRow);
},
//======================================
// 그리드 컬럼 정의 (각 요청에 맞게 조정)
//======================================
fields: [
{ title:"ID", name: "articleId" , type: "text", width: 200, align: "left" },
{ title:"알림방법", name: "notiMethod" , type: "text", width: 100, align: "center"},
{ title:"구분코드", name: "notiTypeCd" , type: "text", width: 100, align: "center"},
{ title:"구분", name: "notiTypeNm" , type: "text", width: 100, align: "center"},
{ title:"제목", name: "title" , type: "text", width: 200, align: "left" },
{ title:"확인여부", name: "readYn" , type: "text", width: 100, align: "center"},
{ title:"날짜", name: "regDd" , type: "text", width: 100, align: "center"}
]
});
// 검색 버튼 클릭
$("#btnSearch").on("click", function(e) {
fn_searchArticle($("#pageSize").val(), 1);
});
//초기 자료 조회
fn_searchArticle();
}); // document ready
// 선택한 글 상세 보기로 이동
function fn_viewDetail(articleId, selectedRow) {
var $selectedRow = $(selectedRow);
var reqUrl = "${pageContext.request.contextPath}/bbs/selectAncmntAjax.do";
var inputData = { "articleId" : articleId };
//--------------------------------------
// 요청 처리
//--------------------------------------
$.ajax({
type: "post",
contentType: "application/json; charset=utf-8",
url: reqUrl,
dataType: "json",
data: JSON.stringify(inputData),
}).done(function(response){
var jsonObj = JSON.parse(response);
$("#jsGrid").find('table tr.answer').remove();
//alert("DDDDDDDD remove = " + $("#jsGrid")[0].scrollHeight);
$("#jsGrid").jsGrid("rowByItem", $selectedRow).data("JSGridItem")["readYn"] = jsonObj.data.readYn;
$selectedRow.find('td').eq(GRID_INDEX_OF_READYN).text(jsonObj.data.readYn);
$selectedRow.after("<tr class='answer'><td colspan='7'>" + jsonObj.data.content
+ "<br/>" + jsonObj.data.content
+ "<br/>" + jsonObj.data.content
+ "<br/>" + jsonObj.data.content
+ "<br/>알림확인여부=" + jsonObj.data.readYn
+ "<br/>알림일자=" + jsonObj.data.regDd
+ "</td></tr>");
});
$("#jsGrid").closest('.ui-jqgrid-bdiv').width($("#jsGrid").closest('.ui-jqgrid-bdiv').width() + 1);
}
// 그리드 데이터 조회 호출
function fn_searchArticle(pageSize, pageIndex) {
$("#jsGrid").jsGrid("search"
, {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${pageSize}) ),
'pageIndex' : (pageIndex ? pageIndex : fn_getIntValue("pageIndex", ${pageIndex}))
}
);
}
</script>
</head>
<body>
<h1>${pageTitle }</h1>
메시지 : ${message}
&nbsp;<br/>
<form name="articleForm" id="articleForm" method="post">
<!-- 검색조건 -->
<input type="text" name="pageSize" id="pageSize" value="${pageSize }" />
<input type="text" name="itemsCount" id="itemsCount" value="0" />
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${pageIndex }" size="5" maxlength="5" />
<input type="button" name="btnSearch" id="btnSearch" title="새로고침" value="새로고침" />
<br/>
<div id="jsGrid" name="jsGrid" style="height: 100%"></div>
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" readonly />
</form>
</body>
</html>

View File

@ -113,7 +113,6 @@ function fn_update() {
<tr>
<th>비밀번호<br/>(변경시 입력)</th>
<td><input type="text" name="articlePassword" id="articlePassword" title="비밀번호" value="" size="100" maxlength="200" /><br/>
* 비밀번호 : SHA-256 암호화 처리 후, DB에 저장되며, 웹 화면에 표출될 때는 Aria로 AuthKey를 Salt값으로 하여 재암호화처리하고 BASE64로 다시한번 인코딩하여 표출함
</td>
</tr>
<tr>

View File

@ -7,9 +7,7 @@
<sec:authorize access="isAuthenticated()">
<sec:authentication property="principal.name" var="userName" />
<sec:authentication property="principal.authKey" var="authKey" />
${userName}님의 방문을 환영합니다.<br />
귀하의 authKey 값은 "${authKey}"" 입니다.
</sec:authorize>
<sec:authorize access="not isAuthenticated()">
환영합니다. <br />

View File

@ -50,9 +50,9 @@ ${informContent }
<br>
${zipCode }<br>
${addr1 }<br>
${addr2 }<br>
${telNo }<br>
${address }<br>
${addressDetail }<br>
${phoneNo }<br>
${faxNo }<br>
<br>

View File

@ -62,7 +62,6 @@
<br />&nbsp;
<br />
authKey : <input name="authKey" id="authKey" value="yjhOJW0gKZ13f0/mofcEeA==" /> <br />
page : <input name="page" id="page" value="1" /> <br />
rows : <input name="rows" id="rows" value="10" /> <br />

View File

@ -63,7 +63,6 @@
<br />&nbsp;
<br />
authKey : <input name="authKey" id="authKey" value="yjhOJW0gKZ13f0/mofcEeA==" /> <br />
page : <input name="page" id="page" value="1" /> <br />
rows : <input name="rows" id="rows" value="10" /> <br />
@ -84,7 +83,6 @@
실제 서버로 REQ ============= <br />
<!-- < formx : form action="http://210.181.197.70/uac/service/exports" method="GET" > -->
<form:form action="http://localhost:8088/uac/service/exports" method="GET" >
authKey : <input name="authKey" id="authKey" value="yjhOJW0gKZ13f0/mofcEeA==" /> <br />
page : <input name="page" id="page" value="1" /> <br />
rows : <input name="rows" id="rows" value="10" /> <br />

View File

@ -6,8 +6,9 @@
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectGreeting.do';">인사말</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureOperationInfo.do';">이용안내</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listNotices.do';">공지사항</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listAncmnts.do';">공지사항(DB)</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listFAQs.do';">자주하는질문</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listQnAs.do';">묻고답하기</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/bbs/listQnAs.do';">묻고답하기</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureLocationInfo.do';">찾아오시는길</a></li>
<!-- 자료검색 -->