From a06c7a6d74c73f978c56c2bd9fc44e9a4c877e39 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Wed, 27 Oct 2021 15:58:28 +0900 Subject: [PATCH 1/4] =?UTF-8?q?Exception=20=EC=B2=98=EB=A6=AC=20=EB=B3=B4?= =?UTF-8?q?=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../restful/service/impl/DataApiRESTful.java | 59 ++++++++++--------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java b/src/main/java/nlib/restful/service/impl/DataApiRESTful.java index 74b1921e..e3a4ca4d 100644 --- a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java +++ b/src/main/java/nlib/restful/service/impl/DataApiRESTful.java @@ -13,6 +13,8 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.util.MultiValueMap; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.RestTemplate; import nlib.restful.service.DataApiInterface; @@ -92,50 +94,51 @@ public class DataApiRESTful implements DataApiInterface { restTemplate.getMessageConverters() .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + HttpStatus statusCode = HttpStatus.OK; + String resultXML = null; + if(method == HttpMethod.GET) { HttpEntity requestEntity = new HttpEntity(headers); - responseEntity = restTemplate.exchange (DataApiInterface.makeRequestParamUrl(url, reqVO), method, requestEntity, String.class); + try { + responseEntity = restTemplate.exchange (DataApiInterface.makeRequestParamUrl(url, reqVO), method, requestEntity, String.class); + statusCode = responseEntity.getStatusCode(); + resultXML = responseEntity.getBody(); + } catch(HttpClientErrorException e) { + e.printStackTrace(); + resultXML = e.getResponseBodyAsString(); + statusCode = e.getStatusCode(); + } catch(HttpServerErrorException e) { + e.printStackTrace(); + resultXML = e.getResponseBodyAsString(); + statusCode = e.getStatusCode(); + } } else if(method == HttpMethod.POST) { MultiValueMap parameters = DataApiInterface.makeRequestParamMultiValueMap(reqVO); parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v)); HttpEntity> requestEntity = new HttpEntity(parameters, headers); - responseEntity = restTemplate.postForEntity(url, requestEntity , String.class); + try { + responseEntity = restTemplate.postForEntity(url, requestEntity , String.class); + statusCode = responseEntity.getStatusCode(); + resultXML = responseEntity.getBody(); + } catch(HttpClientErrorException e) { + e.printStackTrace(); + resultXML = e.getResponseBodyAsString(); + statusCode = e.getStatusCode(); + } catch(HttpServerErrorException e) { + e.printStackTrace(); + resultXML = e.getResponseBodyAsString(); + statusCode = e.getStatusCode(); + } } else { String message = "RESTFul API Http Method 설정 오류입니다. : POST, GET 방식만 허용됩니다."; log.error("request > " + message); return DataApiInterface.makeErrorRes("E_ERR_METHOD", message); } - //----------------------------------- - // 요청 처리 - //----------------------------------- -// RestTemplate restTemplate = new RestTemplate(); - //restTemplate.setMessageConverters(msgConverters); - - //ResponseEntity responseEntity = restTemplate.exchange(url, method, requestEntity, String.class); -// ResponseEntity responseEntity = restTemplate.exchange (url, method, requestEntity, String.class); - //ResponseEntity responseEntity = restTemplate.exchange (url, HttpMethod.GET, requestEntity, String.class, parameters); - //ResponseEntity responseEntity = restTemplate.postForEntity( url, requestEntity , String.class ); // working well - //ResponseEntity responseEntity = restTemplate.getForEntity(url, String.class, parameters); // not working - - /* - // GET // OK - UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) - .queryParam("mngOrgCd", "SU01") - .queryParam("masterId", "UR-408A9832D25C42289D9B1FC81FDA8360") - .queryParam("typeDivCd", "IT_MUSE"); - HttpEntity entity = new HttpEntity<>(headers); - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity responseEntity = restTemplate.exchange (builder.toUriString(), method, entity, String.class); - */ - - //----------------------------------- // 응답 처리 //----------------------------------- - HttpStatus statusCode = responseEntity.getStatusCode(); log.debug("RES StatusCode : " + statusCode); - String resultXML = responseEntity.getBody(); log.debug("RES resultXML : " + resultXML); // 응답 자료 객체화 From b6ea928065165187bf7eca5bec2f9fbf3874a9dc Mon Sep 17 00:00:00 2001 From: KNKIM Date: Wed, 27 Oct 2021 17:08:47 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=97=B4=EB=9E=8C=20=EC=8B=A0=EC=B2=AD?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/col/service/ReadService.java | 49 +++ .../java/nlib/col/service/impl/ReadDAO.java | 13 + .../col/service/impl/ReadServiceImpl.java | 155 ++++++++ .../col/service/impl/RentServiceImpl.java | 2 +- .../java/nlib/col/web/ReadController.java | 158 ++++++++ .../java/nlib/col/web/RentController.java | 1 - .../java/nlib/info/service/InformService.java | 6 + .../info/service/impl/InformServiceImpl.java | 13 +- .../mapper/nlib/col/ReadDAO_SQL.xml | 35 ++ .../WEB-INF/jsp/nlib/cart/listCartItems.jsp | 64 +++- .../WEB-INF/jsp/nlib/read/confirmRead.jsp | 343 ++++++++++++++++++ .../WEB-INF/jsp/nlib/read/insertReadItems.jsp | 277 ++++++++++++++ .../WEB-INF/jsp/nlib/rent/confirmRent.jsp | 7 +- .../WEB-INF/jsp/nlib/rent/insertRentItems.jsp | 6 +- 14 files changed, 1104 insertions(+), 25 deletions(-) create mode 100644 src/main/java/nlib/col/service/ReadService.java create mode 100644 src/main/java/nlib/col/service/impl/ReadDAO.java create mode 100644 src/main/java/nlib/col/service/impl/ReadServiceImpl.java create mode 100644 src/main/java/nlib/col/web/ReadController.java create mode 100644 src/main/resources/egovframework/mapper/nlib/col/ReadDAO_SQL.xml create mode 100644 src/main/webapp/WEB-INF/jsp/nlib/read/confirmRead.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/nlib/read/insertReadItems.jsp diff --git a/src/main/java/nlib/col/service/ReadService.java b/src/main/java/nlib/col/service/ReadService.java new file mode 100644 index 00000000..d5367eeb --- /dev/null +++ b/src/main/java/nlib/col/service/ReadService.java @@ -0,0 +1,49 @@ +package nlib.col.service; + +import java.util.HashMap; +import java.util.List; + +/** + *
+ * @Class Name : ReadService.java
+ * 
+ * @Description : 
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 10. 27. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 10. 27. + * @version 1.0 + * + */ +public interface ReadService { + + /** + * 열람신청희망 가능 일자 목록을 조회한다. + * + * @param mbInfoId + * @return + */ + public List> listDates(); + + + /** + * 열람을 신청한다. + * + * @param list + * @param mbInfoId + * @param mngOrgCd + * @return + */ + public List insertReadItems(List list, String mbInfoId, CollectionVO readVO) throws Exception; + +} diff --git a/src/main/java/nlib/col/service/impl/ReadDAO.java b/src/main/java/nlib/col/service/impl/ReadDAO.java new file mode 100644 index 00000000..93bbb2bd --- /dev/null +++ b/src/main/java/nlib/col/service/impl/ReadDAO.java @@ -0,0 +1,13 @@ + +package nlib.col.service.impl; + +import java.util.HashMap; +import java.util.List; +import egovframework.rte.psl.dataaccess.mapper.Mapper; + +@Mapper("readDAO") +public interface ReadDAO { + + public List> listDates(); + +} diff --git a/src/main/java/nlib/col/service/impl/ReadServiceImpl.java b/src/main/java/nlib/col/service/impl/ReadServiceImpl.java new file mode 100644 index 00000000..08b77e59 --- /dev/null +++ b/src/main/java/nlib/col/service/impl/ReadServiceImpl.java @@ -0,0 +1,155 @@ +package nlib.col.service.impl; + +import java.util.HashMap; +import java.util.List; + +import javax.annotation.Resource; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Service; + +import nlib.col.service.CollectionVO; +import nlib.col.service.ReadService; +import nlib.info.service.InformService; +import nlib.restful.DataApi; +import nlib.restful.service.DataApiReqVO; +import nlib.restful.service.DataApiResVO; +import nlib.util.StringUtil; + +@Service("readService") +public class ReadServiceImpl implements ReadService { + + private static final Logger log = LoggerFactory.getLogger(ReadServiceImpl.class); + + @Resource(name="readDAO") + private ReadDAO readDAO; + + @Resource(name="informService") + private InformService informService; + + + /** RESTFul API 송수신 모듈 */ + @Resource(name = "dataApi") + private DataApi dataApi; + + + /** + * 열람신청희망 가능 일자 목록을 조회한다. + * + * @param mbInfoId + * @return + */ + public List> listDates() { + return readDAO.listDates(); + } + + + /** + * 열람을 신청한다. + * + * @param list + * @param mbInfoId + * @param mngOrgCd + * @return + */ + public List insertReadItems(List list, String mbInfoId, CollectionVO readVO) throws Exception { + + if(list == null || list.size() < 1) { + log.error("insertReadItems > 열람 신청 대상 목록이 없습니다."); + return null; + } + if(readVO == null) { + log.error("insertReadItems > 매개변수 readVO는 null일 수 없습니다."); + return null; + } + + if(StringUtil.isEmpty(mbInfoId)) { + log.error("insertReadItems > 사용자ID를 확인할 수 없습니다."); + return null; + } + + if(StringUtil.isEmpty(readVO.getMngOrgCd())) { + log.error("insertReadItems > 관리문화원 코드를 확인할 수 없습니다."); + return null; + } + + if(StringUtil.isEmpty(readVO.getHopeReqPridDtmFrom() )) { + log.error("insertReadItems > 방문희망일 시작일자를 확인할 수 없습니다."); + return null; + } + + if(StringUtil.isEmpty(readVO.getHopeReqPridDtmTo() )) { + log.error("insertReadItems > 방문희망일 종료일자를 확인할 수 없습니다."); + return null; + } + + if(readVO.getHopeReqPridDtmFrom().compareTo(readVO.getHopeReqPridDtmTo()) > 0) { + log.error("insertReadItems > 방문희망일 종료일자는 시작일자 이후이어야 합니다."); + return null; + } + + // 해당 문화원의 업무시간 조회 + HashMap operation = informService.selectNCultureOpenTime(readVO.getMngOrgCd()); + + // API 호출 + /* + mngOrgCd 문화원코드 O String SU01 + mbInfoId 사용자아이디 O String "BDCCAF34CF8AA365C660ADB121CE6741 + (ARIAUtil 암호화)" + jsonMasterId 자료번호목록 O String [{"masterId":"xxxx"}, {"masterId":"xxxb"},…] + hopeReqPridDtmFrom 희망열람기간시작일자 O String 202109071300 + hopeReqPridDtmTo 희망열람기간종료일자 O String 202109101400 + purpose 열람목적 String 열람목적 + */ + DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/insertReserveItem", HttpMethod.POST); + reqVO.setMbInfoId(mbInfoId); // 통신 시, 암호화되어 송수신됨 + reqVO.putInfoItem("mngOrgCd" , readVO.getMngOrgCd()); + reqVO.putInfoItem("hopeReqPridDtmFrom", readVO.getHopeReqPridDtmFrom().replaceAll("-", "") + StringUtil.getString(operation.get("OPEN_TIME"), "0900").replaceAll(":", "").substring(0, 4)); + reqVO.putInfoItem("hopeReqPridDtmTo" , readVO.getHopeReqPridDtmTo().replaceAll("-", "") + StringUtil.getString(operation.get("CLOSED_TIME"), "1800").replaceAll(":", "").substring(0, 4)); + CollectionVO cVO = null; + DataApiResVO resVO = null; + String jsonMasterId = ""; + + for(int i=0; i 열람 신청 대상으로 생성된 목록이 없습니다."); + return null; + } + + jsonMasterId = "[" + jsonMasterId.substring(1) + "]"; + + reqVO.putInfoItem("jsonMasterId", jsonMasterId); + resVO = dataApi.request(reqVO); + CollectionVO rVO = null; + cVO.setResult(resVO.getResultCode(), resVO.getResultMessage()); + + readVO.setResultCode(resVO.getResultCode()); + readVO.setResultMessage(resVO.getResultMessage()); + + // 대출예약번호/일자 설정 (rsrvId) + if(StringUtil.startsWithIgnoreCase(resVO.getResultCode(), "S")) { + readVO.setHopeReqPridDtmFrom(StringUtil.formatDateStr(resVO.getInfoItem("hopeReqPridDtmFrom", ""),"")); + readVO.setHopeReqPridDtmTo(StringUtil.formatDateStr(resVO.getInfoItem("hopeReqPridDtmTo", ""),"")); + readVO.setRsrvId(resVO.getInfoItem("reqId", "")); // 열람신청번호 + readVO.setRsrvId(resVO.getInfoItem("reqDd", "")); // 열람신청일자 + readVO.setSelItems(resVO.getInfoItem("masterId")); // 자료번호 + } else { + readVO.setRsrvId(null); // 열람신청번호 + readVO.setRsrvId(null); // 열람신청일자 + } + + return list; + } + +} diff --git a/src/main/java/nlib/col/service/impl/RentServiceImpl.java b/src/main/java/nlib/col/service/impl/RentServiceImpl.java index 772195b6..4c7cb8de 100644 --- a/src/main/java/nlib/col/service/impl/RentServiceImpl.java +++ b/src/main/java/nlib/col/service/impl/RentServiceImpl.java @@ -109,7 +109,7 @@ public class RentServiceImpl implements RentService CollectionVO cVO = null; DataApiResVO resVO = null; for(int i=0; i + * @Class Name : ReadController.java + * + * @Description : 방문열람을 관리하는 컨트롤러 + * + * + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021) + * + * + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 10. 27. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 10. 27. + * @version 1.0 + * + */ +@Controller +public class ReadController extends NlibCommonController { + + private static final Logger log = LoggerFactory.getLogger(ReadController.class); + + @Resource(name = "readService") + private ReadService readService; + + + @Resource(name = "collectionService") + private CollectionService collectionService; + + + /** + * 열람신청을 등록하는 화면을 표출한다. + * + * @param request + * @param readVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value={"/read/confirmReadFromCart.do", "/read/confirmRead.do"}) + public String confirmRent(HttpServletRequest request, CollectionVO readVO, ModelMap model) throws Exception { + + String retJsp = "nlib/read/confirmRead"; + boolean fromCart = request.getServletPath().contains("Cart.do"); + + String mbInfoId = getMbInfoId(request); + + if(StringUtil.isEmpty(mbInfoId)) { + model.addAttribute("message", "로그인 후, 이용해 주시기 바랍니다."); + return retJsp; + } + + if(readVO == null || StringUtil.isEmpty(readVO.getSelItems())) { + model.addAttribute("message", "대출(예약)신청할 정보가 없습니다."); + return retJsp; + } + + String selItems = readVO.getSelItems(); + + List list = collectionService.makeInfoListOfCollectionVO(selItems, mbInfoId, NlibProperty.getString("thumbnail.image.url.small")); + List> listDates = readService.listDates(); + + model.addAttribute("readVO", readVO); + model.addAttribute("list", list); + model.addAttribute("listDates", listDates); + if(fromCart) model.addAttribute("fromCart", fromCart ? "Y" : "N"); + + return retJsp; + } + + /** + * 열람신청을 등록한다. + * + * @param request + * @param readVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value={"/read/insertReadItemsFromCart.do", "/read/insertReadItems.do"}) + public String insertReadItems(HttpServletRequest request, CollectionVO readVO, ModelMap model) throws Exception { + + boolean fromCart = request.getServletPath().contains("Cart.do"); + String retJsp = "nlib/read/insertReadItems"; + String mbInfoId = getMbInfoId(request); + + if(StringUtil.isEmpty(mbInfoId)) { + model.addAttribute("message", "로그인 후, 이용해 주시기 바랍니다."); + return retJsp; + } + + if(readVO == null || StringUtil.isEmpty(readVO.getSelItems())) { + model.addAttribute("message", "대출(예약)신청할 정보가 없습니다."); + return retJsp; + } + + if(StringUtil.isEmpty(readVO.getMngOrgCd())) { + model.addAttribute("message", "관리문화원 정보가 없습니다."); + return retJsp; + } + + if(StringUtil.isEmpty(readVO.getHopeReqPridDtmFrom() )) { + model.addAttribute("message", "방문희망일 시작일자를 확인할 수 없습니다."); + return retJsp; + } + + if(StringUtil.isEmpty(readVO.getHopeReqPridDtmTo() )) { + model.addAttribute("message", "방문희망일 종료일자를 확인할 수 없습니다."); + return retJsp; + } + + if(readVO.getHopeReqPridDtmFrom().compareTo(readVO.getHopeReqPridDtmTo()) > 0) { + model.addAttribute("message", "방문희망일 종료일자는 시작일자 이후이어야 합니다."); + return retJsp; + } + + + String selItems = readVO.getSelItems(); + + List list = collectionService.makeListOfCollectionVO(selItems); + + list = readService.insertReadItems(list, mbInfoId, readVO); + list = collectionService.setDetailInfoForList(list, mbInfoId, NlibProperty.getString("thumbnail.image.url.small")); + + model.addAttribute("readVO", readVO); + model.addAttribute("list", list); + if(fromCart) model.addAttribute("fromCart", fromCart ? "Y" : "N"); + + return retJsp; + } + +} diff --git a/src/main/java/nlib/col/web/RentController.java b/src/main/java/nlib/col/web/RentController.java index 41688c66..12f671da 100644 --- a/src/main/java/nlib/col/web/RentController.java +++ b/src/main/java/nlib/col/web/RentController.java @@ -220,7 +220,6 @@ public class RentController extends NlibCommonController } - // // // /** 대출 목록 화면을 호출한다. diff --git a/src/main/java/nlib/info/service/InformService.java b/src/main/java/nlib/info/service/InformService.java index 146d40b2..afb6abde 100644 --- a/src/main/java/nlib/info/service/InformService.java +++ b/src/main/java/nlib/info/service/InformService.java @@ -52,6 +52,12 @@ public interface InformService * 이용안내를 조회한다. */ public HashMap selectNCultureOperationInfo(String councilCd) throws Exception ; + + + /** + * 해당 문화원의 운영 시간 및 공휴일 추가 정보를 조회한다. + */ + public HashMap selectNCultureOpenTime(String orgCd) throws Exception; /* * 찾아오는길 조회한다. diff --git a/src/main/java/nlib/info/service/impl/InformServiceImpl.java b/src/main/java/nlib/info/service/impl/InformServiceImpl.java index d6a1c7c4..c1c6351a 100644 --- a/src/main/java/nlib/info/service/impl/InformServiceImpl.java +++ b/src/main/java/nlib/info/service/impl/InformServiceImpl.java @@ -117,7 +117,7 @@ public class InformServiceImpl implements InformService } // 문화원별 개폐시간 및 휴관일 - HashMap openTime = informDAO.selectNCultureOpenTime(orgCd); + HashMap openTime = selectNCultureOpenTime(orgCd); operationInfo.put("informTitle" , (operation != null ? operation.get("TITLE") : "")); operationInfo.put("informContent" , content); @@ -127,6 +127,17 @@ public class InformServiceImpl implements InformService return operationInfo; } + + /** + * 해당 문화원의 운영 시간 및 공휴일 추가 정보를 조회한다. + * + * @param orgCd + * @return + * @throws Exception + */ + public HashMap selectNCultureOpenTime(String orgCd) throws Exception { + return informDAO.selectNCultureOpenTime(orgCd); + } /* * 찾아오는길 조회한다. diff --git a/src/main/resources/egovframework/mapper/nlib/col/ReadDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/col/ReadDAO_SQL.xml new file mode 100644 index 00000000..2aaecc2e --- /dev/null +++ b/src/main/resources/egovframework/mapper/nlib/col/ReadDAO_SQL.xml @@ -0,0 +1,35 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/cart/listCartItems.jsp b/src/main/webapp/WEB-INF/jsp/nlib/cart/listCartItems.jsp index 88c2b29c..7e65ae02 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/cart/listCartItems.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/cart/listCartItems.jsp @@ -158,26 +158,6 @@ function fn_changeCartItems(cartTypeCd, cartTypeNm) { $("#frm").submit(); } -function fn_appRent() { - - - alert("먼저 로그인하신 후, 이용해 주시기 바랍니다."); - - - - if($("[id^=chk_item_]:checked").length < 1) { - alert("대출할 대상을 선택해 주세요."); - return; - } - - - $("#selItems").val(fn_getCheckedCartItemsValues()); - $("#frm").attr("action","${pageContext.request.contextPath}/rent/confirmRentFromCart.do"); - - $("#frm").submit(); - - -} function fn_changeInterest(masterId, onOff) { alert("관심등록/삭제 준비중 : " + masterId + ", " + onOff); @@ -187,6 +167,50 @@ function fn_gotoDetail(masterId) { alert("상세보기 준비중 : " + masterId); } +// 대출신청으로 이동 +function fn_appRent() { + + + alert("먼저 로그인하신 후, 이용해 주시기 바랍니다."); + + + + if($("[id^=chk_item_]:checked").length < 1) { + alert("대출할 대상을 선택해 주세요."); + return; + } + + + $("#selItems").val(fn_getCheckedCartItemsValues()); + $("#frm").attr("action","${pageContext.request.contextPath}/rent/confirmRentFromCart.do"); + + $("#frm").submit(); + + +} + +// 열람신청으로 이동 +function fn_appVisit() { + + + alert("먼저 로그인하신 후, 이용해 주시기 바랍니다."); + + + + if($("[id^=chk_item_]:checked").length < 1) { + alert("방문열람할 대상을 선택해 주세요."); + return; + } + + + $("#selItems").val(fn_getCheckedCartItemsValues()); + $("#frm").attr("action","${pageContext.request.contextPath}/read/confirmReadFromCart.do"); + + $("#frm").submit(); + + +} + $(document).ready(function() { /* 탭메뉴 */ diff --git a/src/main/webapp/WEB-INF/jsp/nlib/read/confirmRead.jsp b/src/main/webapp/WEB-INF/jsp/nlib/read/confirmRead.jsp new file mode 100644 index 00000000..d68ca198 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/read/confirmRead.jsp @@ -0,0 +1,343 @@ +<% +/** + *
+ * @Class Name : confirmRent.jsp
+ * 
+ * @Description : 대출신청 확인 화면 
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 10. 25. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 10. 25. + * @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" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> + + + +
+ + + + + + +
+

카트 섹션영역

+
+
+
+
    +
  • HOME
  • + +
  • 카트
  • +
    +
  • 방문열람신청
  • +
+
    +
  • 방문열람신청
  • +
+
+
화살표 아이콘
+
+
+
+
+
+
+
+
+ + + + + + + + +

+
+
+
자료정보
+
이용상태
+
반납예정일
+
+ + + + + + <% + //----------------------------------- + // 대출신청인 경우 + //----------------------------------- + // 대출가능코드(operOutRangeCd)가 01:대출가능이면서 + // 이용상태코드 (useStatus)가 01:이용가능, 또는 05 : 이용가능, 또는 04 : 열람대기(대출가능) 인 경우 + %> + + + + + + + <% + //----------------------------------- + // 대출예약신청인 경우 + //----------------------------------- + // 대출가능코드(operOutRangeCd)가 01 :대출가능이면서 + // 이용상태코드 (useStatus)가 02 : 대출중 (대기자 0명) 인 경우 + %> + + + + + + +
+
+
+ + + 즐겨찾기 아이콘 + 즐겨찾기 아이콘 + + + + + 즐겨찾기 아이콘 + 즐겨찾기 아이콘 + + +
+
+ + 온라인열람 + + + + 대출 + + + + 방문열람 + +
+ +
+
poss imposs">

${rent.useStatusNm }

+
${rent.rtnExpctDd }
+
+ +
+ +
+ +

- 관리자의 승인이 필요하며, 희망하신 날짜와 시간과는 다르게 조정될 수 있습니다.

+ +
+ +
+ <% + //----------------------------------- + // 희망방문일 선택 가능 기준 + //----------------------------------- + // 시작일, 종료일 : 당일부터 2주이내 날짜 선택가능 + // 단, 문화원 운영시간이 지난 경우, 익일부터 2주이내 날짜 선택가능 + %> +

희망방문일

+
+ + 에서 + + 사이 +
+
+

- 자료 열람은 방문열람신청이 승인된 후, 지정된 시간에 가능합니다.

+

- 방문열람신청이 승인되면 문자(SMS)나 이메일을 통해 안내 드립니다.

+ +
+ + +
+ +
+
+
+
+
+
+
+
+ + + + +
+ + + + + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/read/insertReadItems.jsp b/src/main/webapp/WEB-INF/jsp/nlib/read/insertReadItems.jsp new file mode 100644 index 00000000..35d61c08 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/read/insertReadItems.jsp @@ -0,0 +1,277 @@ +<% +/** + *
+ * @Class Name : confirmRent.jsp
+ * 
+ * @Description : 대출신청 확인 화면 
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 10. 25. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 10. 25. + * @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" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> + + + + + + + +
+

방문열람신청 섹션영역

+
+
+
+
    +
  • HOME
  • + +
  • 카트
  • +
    +
  • 방문열람신청
  • +
+
    +
  • 방문열람신청
  • +
+
+
화살표 아이콘
+
+
+
+
+
+
+
+
+ +

+ +
+
+
자료정보
+
이용상태
+
반납예정일
+
신청/예약정보
+
+ + + + + +
+
+
+ + + 즐겨찾기 아이콘 + 즐겨찾기 아이콘 + + + + + 즐겨찾기 아이콘 + 즐겨찾기 아이콘 + +
+
+ + 온라인열람 + + + + 대출 + + + + 방문열람 + +
+ +
+

${rent.useStatusNm }

+
${rent.rtnExpctDd }
+
${rent.bookLtRvStatusNm } + + (${rent.rsrvDd }) + +
+
+ + + +
+ + +
+
+ +
+
체크 아이콘
+ + +
자료 ${totCnt}건 방문열람신청이 접수되었습니다. [${readVO.rsrvId}]
+
(희망방문일자: ${readVO.hopeReqPridDtmFrom} ~ ${readVO.hopeReqPridDtmTo})
+
+ + +
처리에 실패하였습니다.
+
${readVO.resultMessage } (${readVO.resultCode })
+
+
+ +

- 방문열람신청 내역은 [마이페이지 > 방문열람관리]에서 확인하실 수 있습니다.

+

- 방문열람시간은 관리자가 지정하며, 승인 후 지정된 일시에 방문하지 않는 경우, 미열람 처리됩니다.

+ +
+ + +
+ +
+
+
+
+
+
+
+
+ + + + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp b/src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp index ae3512a6..90b4b2a3 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp @@ -120,6 +120,11 @@ function fn_changeInterest(masterId, onOff) { alert("관심등록/삭제 준비중 : " + masterId + ", " + onOff); } +function fn_listCartItems() { + $("#frm").attr("action","${pageContext.request.contextPath}/cart/listCartItems.do"); + $("#frm").submit(); +} + function fn_gotoDetail(masterId) { alert("상세보기 준비중 : " + masterId); } @@ -305,7 +310,7 @@ $(document).ready(function() {
- + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/rent/insertRentItems.jsp b/src/main/webapp/WEB-INF/jsp/nlib/rent/insertRentItems.jsp index dadf6450..c7f1402e 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/rent/insertRentItems.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/rent/insertRentItems.jsp @@ -224,7 +224,11 @@ $(document).ready(function() {

${rent.useStatusNm }

${rent.rtnExpctDd }
-
${rent.bookLtRvStatusNm } (${rent.rsrvDd })
+
${rent.bookLtRvStatusNm } + + (${rent.rsrvDd }) + +
대출신청 자료는 신청 다음날까지 방문대출이 가능합니다. From b86bbfe97cc2b01f31a28a05d9d5171d11886664 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Thu, 28 Oct 2021 13:52:31 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EC=83=81=EB=8B=A8=20:?= =?UTF-8?q?=20=EC=B9=B4=ED=8A=B8=20=EA=B1=B4=EC=88=98,=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=EA=B1=B4=EC=88=98=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/cmm/web/MainController.java | 46 +++++++++++- src/main/webapp/WEB-INF/tiles/inc/header.jsp | 74 +------------------ .../webapp/WEB-INF/tiles/tiles-layout.xml | 14 ++++ 3 files changed, 57 insertions(+), 77 deletions(-) diff --git a/src/main/java/nlib/cmm/web/MainController.java b/src/main/java/nlib/cmm/web/MainController.java index ffaf7ad1..5639a214 100644 --- a/src/main/java/nlib/cmm/web/MainController.java +++ b/src/main/java/nlib/cmm/web/MainController.java @@ -14,7 +14,9 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import nlib.cmm.NlibCommonController; +import nlib.cmm.service.NlibProperty; import nlib.cmm.service.NotificationService; +import nlib.col.service.CartService; import nlib.user.service.NlibLoginVO; import nlib.util.StringUtil; @@ -48,6 +50,9 @@ public class MainController extends NlibCommonController { @Resource(name="notificationService") private NotificationService notificationService; + @Resource(name = "cartService") + private CartService cartService; + @RequestMapping( {"/index.do"} ) public String setContent( HttpServletRequest req, @@ -61,17 +66,50 @@ public class MainController extends NlibCommonController { log.debug((authentication == null ? "손님 메인 접속" : authentication.getName() + " 메인 접속")); + 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"); + } + // 알림 확인 - String mbInfoId = getMbInfoId(req); int unreadNotiCnt = 0; - if(!isAlerted(req) && StringUtil.isNotEmpty(mbInfoId)) { + if(StringUtil.isNotEmpty(mbInfoId)) { unreadNotiCnt = notificationService.countUnreadNotification(mbInfoId); - setAlerted(req, true); } + if(!isAlerted(request)) { + setAlerted(request, true); + } + + model.addAttribute("cartCnt", cartCnt); model.addAttribute("unreadNotiCnt", unreadNotiCnt); - return "nlib/cmm/home"; + return "nlib/cmm/headerSubPart"; } } \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tiles/inc/header.jsp b/src/main/webapp/WEB-INF/tiles/inc/header.jsp index b16e2851..52658613 100644 --- a/src/main/webapp/WEB-INF/tiles/inc/header.jsp +++ b/src/main/webapp/WEB-INF/tiles/inc/header.jsp @@ -5,76 +5,4 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> - -<% -String councilCd = (String)session.getAttribute("councilCd"); -String councilNm = (String)session.getAttribute("councilNm"); -%> - -

헤더영역

-
- -

소장자료관

- -
-

검색

-
-
- 검색 -
- - - - -
-
- -
-
-
-
- -
- -
-
- - \ No newline at end of file + diff --git a/src/main/webapp/WEB-INF/tiles/tiles-layout.xml b/src/main/webapp/WEB-INF/tiles/tiles-layout.xml index c0b0bb1a..aaa7d1b7 100644 --- a/src/main/webapp/WEB-INF/tiles/tiles-layout.xml +++ b/src/main/webapp/WEB-INF/tiles/tiles-layout.xml @@ -19,6 +19,20 @@ + + + + + + + + + + + + + + From 7354992b66566c43177bdc35d24ca21182624a68 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Thu, 28 Oct 2021 13:53:00 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=84=9C=EB=B8=94=EB=A6=BF=20JSP=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=82=B4=20including=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=ED=85=9C=ED=94=8C=EB=A6=BF=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/HTML안내.txt | 35 ++++++++ .../WEB-INF/jsp/nlib/cmm/headerSubPart.jsp | 82 +++++++++++++++++++ .../WEB-INF/tiles/inc-sub/footer-popup.jsp | 5 ++ .../WEB-INF/tiles/inc-sub/header-popup.jsp | 6 ++ .../webapp/WEB-INF/tiles/tiles-layout-sub.jsp | 9 ++ 5 files changed, 137 insertions(+) create mode 100644 src/main/webapp/HTML안내.txt create mode 100644 src/main/webapp/WEB-INF/jsp/nlib/cmm/headerSubPart.jsp create mode 100644 src/main/webapp/WEB-INF/tiles/inc-sub/footer-popup.jsp create mode 100644 src/main/webapp/WEB-INF/tiles/inc-sub/header-popup.jsp create mode 100644 src/main/webapp/WEB-INF/tiles/tiles-layout-sub.jsp diff --git a/src/main/webapp/HTML안내.txt b/src/main/webapp/HTML안내.txt new file mode 100644 index 00000000..b8859bab --- /dev/null +++ b/src/main/webapp/HTML안내.txt @@ -0,0 +1,35 @@ +2021-10-25 오전 08:07 21,638 cart-complete.html 대출/열람 신청 완료 +2021-10-25 오전 08:07 21,952 cart-confirm.html 대출/열람 신청 확인 +2021-10-25 오전 08:07 31,574 cart.html 카트 + +2021-10-25 오전 08:07 36,245 connect.html 계정연결 +2021-10-25 오전 08:07 38,172 data-detail.html 소장자료 상세조회 +2021-10-25 오전 08:07 43,189 data-noresults.html 소장자료관 +2021-10-25 오전 08:07 48,943 data.html 소장자료관 + +2021-10-25 오전 08:07 36,249 dormant.html 휴면상태안내 및 해제 + +2021-10-25 오전 08:07 15,686 faq.html FAQ +2021-10-25 오전 08:07 10,011 greeting.html 인사말 +2021-10-25 오전 08:07 16,513 guide.html 이용안내 +2021-10-25 오전 08:07 73,917 index.html 메인홈 +2021-10-25 오전 08:07 17,193 Interested-data.html 관심자료 +2021-10-25 오전 08:07 42,470 join-1.html 회원가입 - 약관동의 +2021-10-25 오전 08:07 45,823 join-2.html 회원가입 - 정보입력 +2021-10-25 오전 08:07 36,457 join-3.html 회원가입 - 가입완료안내 +2021-10-25 오전 08:07 36,834 join.html 회원가입 - SNS 선택 +2021-10-25 오전 08:07 14,639 loan.html 대출관리 +2021-10-25 오전 08:07 39,715 location.html 찾아오시는길 +2021-10-25 오전 08:07 18,561 myinfo-modify.html 회원정보수정 +2021-10-25 오전 08:07 8,550 myinfo-passwd.html 회원비번 변경 +2021-10-25 오전 08:07 42,958 myinfo.html +2021-10-25 오전 08:07 10,915 notice-view.html +2021-10-25 오전 08:07 13,878 notice.html +2021-10-25 오전 08:07 10,378 Notifications.html 알림 +2021-10-25 오전 08:07 12,252 qna-view.html +2021-10-25 오전 08:07 12,118 qna-write.html +2021-10-25 오전 08:07 14,978 qna.html +2021-10-25 오전 08:07 36,587 secession.html 회원탈퇴 +2021-10-25 오전 08:07 15,568 visit.html 방문열람관리 + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/cmm/headerSubPart.jsp b/src/main/webapp/WEB-INF/jsp/nlib/cmm/headerSubPart.jsp new file mode 100644 index 00000000..a74a4f83 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/cmm/headerSubPart.jsp @@ -0,0 +1,82 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> + +<% +String councilCd = (String)session.getAttribute("councilCd"); +String councilNm = (String)session.getAttribute("councilNm"); +%> + + + + +

헤더영역

+
+ +

소장자료관

+ +
+

검색

+
+
+ 검색 +
+ + + + +
+
+ +
+
+
+
+ + +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tiles/inc-sub/footer-popup.jsp b/src/main/webapp/WEB-INF/tiles/inc-sub/footer-popup.jsp new file mode 100644 index 00000000..31da9460 --- /dev/null +++ b/src/main/webapp/WEB-INF/tiles/inc-sub/footer-popup.jsp @@ -0,0 +1,5 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> diff --git a/src/main/webapp/WEB-INF/tiles/inc-sub/header-popup.jsp b/src/main/webapp/WEB-INF/tiles/inc-sub/header-popup.jsp new file mode 100644 index 00000000..dabfac7f --- /dev/null +++ b/src/main/webapp/WEB-INF/tiles/inc-sub/header-popup.jsp @@ -0,0 +1,6 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> diff --git a/src/main/webapp/WEB-INF/tiles/tiles-layout-sub.jsp b/src/main/webapp/WEB-INF/tiles/tiles-layout-sub.jsp new file mode 100644 index 00000000..47c434e1 --- /dev/null +++ b/src/main/webapp/WEB-INF/tiles/tiles-layout-sub.jsp @@ -0,0 +1,9 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%> + + +