package nlib.col.web; import java.util.ArrayList; import java.util.HashMap; 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.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.security.access.annotation.Secured; 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.bind.annotation.ResponseBody; import nlib.cmm.NlibCommonController; import nlib.cmm.service.CodeService; import nlib.cmm.service.NlibProperty; import nlib.cmm.service.PagingVO; import nlib.col.service.RisService; import nlib.col.service.CollectionService; import nlib.col.service.CollectionVO; import nlib.col.service.DeptVO; import nlib.col.service.InterestService; import nlib.col.service.RentService; import nlib.user.service.NlibLoginVO; import nlib.util.StringUtil; /** *
 * @Class Name : InterestController.java
 * 
 * @Description : 관심자료 컨트롤러
 * 
 * 
 * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
 *
 * 
* * @ ------------ -------- --------------------------- * @ 수정일 수정자 수정내용 * @ ------------ -------- --------------------------- * @ 2021. 10. 01. JSYOO 최초 생성 * * * @author 이씨플라자 * DIGITALSHIP JSYOO * @since 2021. 10. 01. * @version 1.0 * */ @Controller public class InterestController extends NlibCommonController { private static final Logger log = LoggerFactory.getLogger(InterestController.class); @Value("#{properties['list.paging.page.size']}") private String DEFUALT_PAGE_SIZE; @Resource(name = "interestService") private InterestService interestService; @Resource(name = "risService") private RisService risService; @Resource(name = "codeService") private CodeService codeService; @Resource(name = "collectionService") private CollectionService collectionService; /** * 관심 자료 화면을 호출한다. * * @param req * @return */ @Secured("ROLE_USER") @RequestMapping("/interest/listInterests.do") public String listInterests(HttpServletRequest req, HttpServletRequest request, Authentication authentication, @RequestParam Map paramMap, CollectionVO searchCollectionVO, ModelMap model) throws Exception { String message = ""; //사용자 정보를 가져온다. NlibLoginVO loginVO = getNlibLoginVO(authentication); if(loginVO == null) { message = "로그인하신 후, 이용바랍니다."; model.addAttribute("message", message); model.addAttribute("url", "/login/loginForm.do"); return "nlib/cmm/alert"; } searchCollectionVO.setMbInfoId(loginVO.getMbInfoId()); //문화원 목록 조회 List vo = interestService.selectOrgList(searchCollectionVO); model.addAttribute("deptList",vo); model.addAttribute("searchCollection", searchCollectionVO); return "nlib/collection/listInterests"; } /** * 관심 자료를 조회한다. * * @param req * @return * @throws Exception */ @RequestMapping(value="/interest/listInterestsAjax.do") public ResponseEntity listInterestsAjax(HttpServletRequest req, HttpServletRequest request, Authentication authentication, @RequestBody CollectionVO searchCollectionVO) throws Exception { if(searchCollectionVO.getPageIndex() < 1) searchCollectionVO.setPageIndex(1); if(searchCollectionVO.getPageSize() < 1) searchCollectionVO.setPageSize(DEFUALT_PAGE_SIZE); List operList = new ArrayList(); int totalCount= 0; //사용자 정보를 가져온다. NlibLoginVO loginVO = getNlibLoginVO(authentication); searchCollectionVO.setMbInfoId(loginVO.getMbInfoId()); searchCollectionVO.setPageStart(searchCollectionVO.getPageIndex(), searchCollectionVO.getPageSize()); // 요청 List interestList = interestService.listInterests(searchCollectionVO); totalCount = interestService.countListInterests(searchCollectionVO); operList = collectionService.setDetailInfoForList(interestList, getMbInfoId(request)); //------------------------------- // JSON변환 응답 처리 //------------------------------- // JS-GRID 페이징 처리를 포함한 응답값 처리 // {data: [{...}], // itemsCount: 255 // } HashMap retMap = new HashMap(); retMap.put("data", operList); retMap.put("itemsCount", totalCount); PagingVO pageVO = new PagingVO(); pageVO.setPagingVO(totalCount, searchCollectionVO.getPageIndex(), searchCollectionVO.getPageSize()); retMap.put("pagingPageIndex" , pageVO.getPageIndex()); retMap.put("pagingTotRecordCount", pageVO.getTotRecordCount()); retMap.put("pagingStartPage" , pageVO.getStartPage()); retMap.put("pagingEndPage" , pageVO.getEndPage()); retMap.put("pagingLastPage" , pageVO.getLastPage()); return makeResponseEntityJson(retMap); } /** * 관심자료 목록 삭제 * @param masterIdList */ @RequestMapping(value="/interest/deleteInterests.ajax") @ResponseBody public String deleteInterests(HttpServletRequest request, @RequestParam(value="masterIdList[]") List masterIdList,Authentication authentication) { String mbInfoId = getMbInfoId(request); String message=""; if(StringUtil.isEmpty(mbInfoId)) { message="notLogin"; return message; } interestService.deleteInterests(masterIdList,mbInfoId); message ="success"; return message; } /** * 관심자료 추가 * @param masterIdList */ @RequestMapping(value="/interest/insertInterest.ajax") @ResponseBody public String insertInterest(@RequestParam(value="masterId") String masterId, HttpServletResponse response, Authentication authentication, HttpServletRequest request) { int count = 0; String message = ""; String mbInfoId = getMbInfoId(request); if(StringUtil.isEmpty(mbInfoId)) { message="notLogin"; return message; } CollectionVO vo = new CollectionVO(); vo.setMbInfoId(mbInfoId); vo.setMasterId(masterId); if(vo.getMbInfoId() == null) { message="notLogin"; return message; } count = interestService.countInterest(vo); if(!StringUtil.getString(masterId,"").equals("")) { //중복된 관심자료가 있을시 if(count > 0) { message="alreadyAdded"; }else { interestService.insertInterest(vo); message="success"; } }else { message="fail"; } return message; } }