package nlib.cmm.web; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; import org.springframework.security.web.savedrequest.HttpSessionRequestCache; import org.springframework.security.web.savedrequest.RequestCache; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import nlib.bbs.service.ArticleVO; import nlib.bbs.service.BoardService; import nlib.bbs.service.QnaService; import nlib.cmm.NlibCommonController; import nlib.cmm.service.CodeService; import nlib.cmm.service.MainService; import nlib.cmm.service.NlibProperty; import nlib.cmm.service.NotificationService; import nlib.col.service.CartService; import nlib.col.service.CollectionVO; import nlib.util.StringUtil; /** *
 * @Class Name : MainController.java
 * 
 * @Description : 메인화면에 표시할 정보를 처리하는 Controller 클래스
 * 
 * 
 * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
 *
 * 
* * @ ------------ -------- --------------------------- * @ 수정일 수정자 수정내용 * @ ------------ -------- --------------------------- * @ 2021. 6. 22. KNKIM 최초 생성 * * * @author 이씨플라자 * DIGITALSHIP KNKIM * @since 2021. 6. 22. * @version 1.0 * */ @Controller public class MainController extends NlibCommonController { private static final Logger log = LoggerFactory.getLogger(MainController.class); @Resource(name="notificationService") private NotificationService notificationService; @Resource(name = "cartService") private CartService cartService; @Resource(name = "codeService") private CodeService codeService; @Resource(name = "mainService") private MainService mainService; @Resource(name = "ancmntService") private BoardService ancmntService; @Resource(name = "qnaService") private QnaService qnaService; @RequestMapping( {"/index.do"} ) public String setContent( HttpServletRequest request, HttpServletResponse response, Authentication authentication, ModelMap model) throws Exception { // 캐쉬된 Reqeust 히스토리 삭제 RequestCache cache = new HttpSessionRequestCache(); cache.removeRequest(request, response); String mngOrgCd = getCurCouncilCd(request); //------------------------------------------------ // 추천 자료 관련 //------------------------------------------------ // 추천키워드 List> listKeywords = mainService.listKeywords(mngOrgCd); model.addAttribute("listKeywords", listKeywords); // 문화원 PICK model.addAttribute("mngOrgNm", getCurCouncilNm(request)); model.addAttribute("listOrgPicks", mainService.listOrgPicks(mngOrgCd)); // 유형별 인기자료 List> listTypeDivCodes = codeService.listTypeDivCodes(); List listPops = new ArrayList(); if(listTypeDivCodes != null) { Map itemMap = null; String typeDivCd = null; for(int i = (listTypeDivCodes.size() - 1); i>=0; i--) { itemMap = listTypeDivCodes.get(i); typeDivCd = itemMap.get("typeDivCd"); List listPopsTemp = mainService.listPops(mngOrgCd, typeDivCd); if(listPopsTemp == null || listPopsTemp.size() < 1) { listTypeDivCodes.remove(i); continue; } for(CollectionVO col : listPopsTemp) { listPops.add(col); } } } model.addAttribute("listPops", listPops); model.addAttribute("listTypeDivCodes", listTypeDivCodes); // 온라인자료관 model.addAttribute("listOnline", mainService.listOnline(mngOrgCd)); //------------------------------------------------ // 게시판관련 //------------------------------------------------ ArticleVO searchArticleVO = new ArticleVO(); searchArticleVO.setPageIndex(1); searchArticleVO.setPageSize(3); searchArticleVO.setMngOrgCd(getCurCouncilCd(request)); // 공지사항 List listAncmnt = ancmntService.listArticles(searchArticleVO); model.addAttribute("listAncmnt", listAncmnt); // Q&A String mbInfoId = getMbInfoId(request); searchArticleVO.setLoginedMbInfoId(mbInfoId); List listQna = qnaService.listArticles(searchArticleVO); model.addAttribute("listQna", listQna); return "nlib/cmm/home"; } @RequestMapping( {"/cmm/headerSubPart.do"} ) public String headerSub( HttpServletRequest request, HttpServletResponse response, Authentication authentication, ModelMap model) throws Exception { // 캐쉬된 Reqeust 히스토리 삭제 RequestCache cache = new HttpSessionRequestCache(); cache.removeRequest(request, response); log.debug((authentication == null ? "손님 메인 접속" : authentication.getName() + " 메인 접속")); String mbInfoId = getMbInfoId(request); // 카트 건수 확인 int cartCnt = 0; if(StringUtil.isEmpty(mbInfoId)) { cartCnt = cartService.countCartItemsFromCookie(request, response, "1"); cartCnt += cartService.countCartItemsFromCookie(request, response, "2"); } else { cartCnt = cartService.countCartItems(mbInfoId, "0"); } // 알림 확인 int unreadNotiCnt = 0; if(StringUtil.isNotEmpty(mbInfoId)) { unreadNotiCnt = notificationService.countUnreadNotification(mbInfoId); } if(!isAlerted(request)) { setAlerted(request, true); } model.addAttribute("cartCnt", cartCnt); model.addAttribute("unreadNotiCnt", unreadNotiCnt); model.addAttribute("docViewUrl", NlibProperty.getString("pdf.url")); model.addAttribute("videoViewUrl", NlibProperty.getString("video.url")); model.addAttribute("imageViewUrl", NlibProperty.getString("image.url")); return "nlib/cmm/headerSubPart"; } }