From f7d1dbfa2f27f4750300b80c1dccc9b27e82ce9d Mon Sep 17 00:00:00 2001 From: KNKIM Date: Tue, 26 Oct 2021 16:54:20 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8C=80=EC=B6=9C(=EC=98=88=EC=95=BD)=EC=8B=A0?= =?UTF-8?q?=EC=B2=AD=20=ED=99=95=EC=9D=B8,=20=EC=8B=A0=EC=B2=AD=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/col/service/RentService.java | 11 + .../col/service/impl/RentServiceImpl.java | 60 ++++ .../java/nlib/col/web/RentController.java | 61 ++-- .../restful/service/DataApiInterface.java | 21 +- .../WEB-INF/jsp/nlib/cart/listCartItems.jsp | 18 +- .../WEB-INF/jsp/nlib/rent/confirmRent.jsp | 327 ++++++++++++++++++ 6 files changed, 467 insertions(+), 31 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp diff --git a/src/main/java/nlib/col/service/RentService.java b/src/main/java/nlib/col/service/RentService.java index fda18cf3..b4af63cc 100644 --- a/src/main/java/nlib/col/service/RentService.java +++ b/src/main/java/nlib/col/service/RentService.java @@ -25,6 +25,17 @@ public interface RentService * @return */ public DataApiResVO listRentItems(CollectionVO searchVO); + + /** + * 대출을 신청한다. + * + * @param list + * @param mbInfoId + * @param mngOrgCd + * @return + */ + public List insertRentItems(List list, String mbInfoId, String mngOrgCd); + // // /** // * 반납 연기 목록을 조회한다. diff --git a/src/main/java/nlib/col/service/impl/RentServiceImpl.java b/src/main/java/nlib/col/service/impl/RentServiceImpl.java index 921afc97..9197bd38 100644 --- a/src/main/java/nlib/col/service/impl/RentServiceImpl.java +++ b/src/main/java/nlib/col/service/impl/RentServiceImpl.java @@ -70,6 +70,66 @@ public class RentServiceImpl implements RentService reqVO.putInfoItem("bookLtRvStatusCd", searchVO.getBookLtRvStatusCd()); return dataApi.request(reqVO); } + + + /** + * 대출을 신청한다. + * + * @param list + * @param mbInfoId + * @param mngOrgCd + * @return + */ + public List insertRentItems(List list, String mbInfoId, String mngOrgCd) { + + if(list == null || list.size() < 1) return null; + + if(StringUtil.isEmpty(mbInfoId)) { + log.error("insertRentItems > 사용자ID를 확인할 수 없습니다."); + return null; + } + + if(StringUtil.isEmpty(mngOrgCd)) { + log.error("insertRentItems > 관리문화원 코드를 확인할 수 없습니다."); + return null; + } + + + // API 호출 + /* + mngOrgCd 문화원코드 O String SU01 + mbInfoId 사용자아이디 O String "BDCCAF34CF8AA365C660ADB121CE6741 + (ARIAUtil 암호화)" + masterId -> jsonMasterId 자료번호 : 다건 가능하여야 함 O String UR-013ABB95CCD84FDA9600CCAE97032C4D + + */ + DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/rent/insertRentItem", HttpMethod.POST); + reqVO.setMbInfoId(mbInfoId); // 통신 시, 암호화되어 송수신됨 + reqVO.putInfoItem("mngOrgCd", mngOrgCd); + CollectionVO cVO = null; + DataApiResVO resVO = null; + for(int i=0; i list = collectionService.makeInfoListOfCollectionVO(selItems, mbInfoId, NlibProperty.getString("thumbnail.image.url.small")); + model.addAttribute("rentVO", rentVO); model.addAttribute("list", list); + if(fromCart) model.addAttribute("fromCart", fromCart ? "Y" : "N"); + return "nlib/rent/confirmRent"; } + + @RequestMapping(value={"/rent/insertRentItems.do"}) + public String insertRentItems(HttpServletRequest request, CollectionVO rentVO, ModelMap model) throws Exception { + + String retJsp = "nlib/rent/insertRentItems"; + String mbInfoId = getMbInfoId(request); + + if(StringUtil.isEmpty(mbInfoId)) { + model.addAttribute("message", "로그인 후, 이용해 주시기 바랍니다."); + return retJsp; + } + + if(rentVO == null || StringUtil.isEmpty(rentVO.getSelItems())) { + model.addAttribute("message", "대출(예약)신청할 정보가 없습니다."); + return retJsp; + } + + if(StringUtil.isEmpty(rentVO.getMngOrgCd())) { + model.addAttribute("message", "관리문화원 정보가 없습니다."); + return retJsp; + } + + String selItems = rentVO.getSelItems(); + + List list = collectionService.makeInfoListOfCollectionVO(selItems, mbInfoId, NlibProperty.getString("thumbnail.image.url.small")); + list = rentService.insertRentItems(list, mbInfoId, rentVO.getMngOrgCd()); + + model.addAttribute("rentVO", rentVO); + model.addAttribute("list", list); + + return retJsp; + } + + // -// /** 대출 목록 화면을 호출한다. -// * @param req -// * @return -// */ -// @RequestMapping("/rent/listRentItems_BK.do") -// public String listRentItems_BK(HttpServletRequest req, Authentication authentication, @RequestParam Map 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); -// -// // 페이징 사이즈 코드 목록 조회 (DB방식으로 변경 2021.08.06 KNKIM) -// List> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION"); -// -// // 반환 정보 -// model.addAttribute("pageIndex" , pageIndex); -// model.addAttribute("pageSize" , pageSize); -// model.addAttribute("searchKeyword", searchKeyword); -// model.addAttribute("pageSizeCodes", pageSizeCodes); -// return "nlib/rent/listRentItems"; -// } // // /** 대출 목록 화면을 호출한다. // * @param req diff --git a/src/main/java/nlib/restful/service/DataApiInterface.java b/src/main/java/nlib/restful/service/DataApiInterface.java index e487ff79..7feca4e3 100644 --- a/src/main/java/nlib/restful/service/DataApiInterface.java +++ b/src/main/java/nlib/restful/service/DataApiInterface.java @@ -68,7 +68,23 @@ public interface DataApiInterface { if(reqVO.hasInfo()) { HashMap info = reqVO.getInfo(); for(String key : info.keySet()) { - String val = info.get(key); + String val = null; + if(DataApiVO.XML_EL_NAME_MB_INFO_ID.equals(key)) { + val = reqVO.getEncMbInfoId(); + } else { + val = info.get(key); + } + + /* + String encVal = null; + try { + encVal = URLEncoder.encode((String)val, "UTF-8"); + } catch(Exception e) { + log.error("makeRequestParamUrl > " + e.toString()); + continue; + } + */ + map.add(key, val); } } @@ -121,13 +137,14 @@ public interface DataApiInterface { } else { val = info.get(key); } + /* String encVal = null; try { encVal = URLEncoder.encode((String)val, "UTF-8"); } catch(Exception e) { log.error("makeRequestParamUrl > " + e.toString()); continue; - } + }*/ builder.queryParam(key, (String)val); } } 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 4ef2c8e5..88c2b29c 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/cart/listCartItems.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/cart/listCartItems.jsp @@ -59,6 +59,8 @@ $( document ).ready(function() { } $("#mngOrgCd").val(mngOrgCd); + $("#mngOrgNm").val($("#_" + mngOrgCd + "_nm").text()); + $("[id^=chk_item_" + mngOrgCd + "]").filter(":first").trigger("change"); }); @@ -168,12 +170,10 @@ function fn_appRent() { return; } - if(!confirm(($("[id^=chk_item_]:checked").length) + "건을 대출신청하시겠습니까?\n\n[안내]\n- 대출중인 자료는 대출예약으로 신청됩니다.\n- 대출대기자가 존재하는 경우, 대출신청/예약이 불가능합니다.")) { - return; - } $("#selItems").val(fn_getCheckedCartItemsValues()); - $("#frm").attr("action","${pageContext.request.contextPath}/rent/confirmRent.do"); + $("#frm").attr("action","${pageContext.request.contextPath}/rent/confirmRentFromCart.do"); + $("#frm").submit(); @@ -213,9 +213,11 @@ $(document).ready(function() {
- - - + + + + +
@@ -264,7 +266,7 @@ $(document).ready(function() { -

+

diff --git a/src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp b/src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp new file mode 100644 index 00000000..9d009e0b --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/rent/confirmRent.jsp @@ -0,0 +1,327 @@ +<% +/** + *
+ * @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 }
+
poss imposs "> + 신청 불가 + 대출신청 + 대출예약 +
+
+ 이미 대출 대기자가 있거나 대출가능 자료가 아닙니다. + 대출신청 자료는 신청 다음날까지 방문대출이 가능합니다. + 대출예약 자료는 반납 즉시 문자(SMS)나 이메일로 안내 드립니다. +
+
+ +
+ +
+
+ +
+
+
대출신청
+
대출예약
+
총 자료 건수
+
+
+
${rentType1Cnt}
+
+
+
${rentType2Cnt}
+
=
+
${rentType1Cnt + rentType2Cnt}
+
+
+ + +

- 대출예약 자료는 반납 즉시 문자(SMS)나 이메일을 통해 안내 드리며, 3일간 별도 보관됩니다. (3일이 지나면 예약이 취소됩니다.)

+

- 대출신청 자료의 경우 대출을 신청한 후 다음날까지 방문대출이 가능합니다.

+
+ + +

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

+

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

+
+ +
+ + + + + + + + +
+ +
+
+
+
+
+
+
+
+ + + + + + + + + +