From f499080c067b123fc6987739c005f3fe6d37b9fb Mon Sep 17 00:00:00 2001 From: KNKIM Date: Mon, 8 Nov 2021 18:00:30 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8C=80=EC=B6=9C=EC=8B=A0=EC=B2=AD=20?= =?UTF-8?q?=EC=B7=A8=EC=86=8C=20=EA=B8=B0=EB=8A=A5=20=EA=B0=9C=EB=B0=9C,?= =?UTF-8?q?=20=EB=8C=80=EC=B6=9C=EA=B4=80=EB=A6=AC=20=ED=8D=BC=EB=B8=94=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/col/service/CollectionVO.java | 18 + .../java/nlib/col/service/RentService.java | 11 +- .../java/nlib/col/service/impl/CartDAO.java | 2 + .../col/service/impl/RentServiceImpl.java | 67 ++- .../java/nlib/col/web/RentController.java | 80 +++- .../mapper/nlib/col/CartDAO_SQL.xml | 11 +- .../WEB-INF/jsp/nlib/bbs/listAncmnts.jsp | 2 +- .../webapp/WEB-INF/jsp/nlib/bbs/listFaqs.jsp | 2 +- .../webapp/WEB-INF/jsp/nlib/bbs/listQnas.jsp | 4 +- .../WEB-INF/jsp/nlib/rent/listRentItems.jsp | 393 +++++++++++------- src/main/webapp/js/nlib.js | 13 +- 11 files changed, 418 insertions(+), 185 deletions(-) diff --git a/src/main/java/nlib/col/service/CollectionVO.java b/src/main/java/nlib/col/service/CollectionVO.java index ce4a95da..c159a9bf 100644 --- a/src/main/java/nlib/col/service/CollectionVO.java +++ b/src/main/java/nlib/col/service/CollectionVO.java @@ -123,6 +123,8 @@ public class CollectionVO extends PagingVO { protected String bookLtRvStatusNm; /* 대출상태구분코드명 */ protected String rsrvExpctDd; /* 대출예약만료일자 */ protected String rtnDd; /* 반납일자 */ + protected String rsrvDivCd; /* 대출/예약 신청구분코드 */ + protected String rsrvDivNm; /* 대출/예약 신청구분코드명 */ //-------------------------------------------- // 열람관련 @@ -739,5 +741,21 @@ public class CollectionVO extends PagingVO { public void setSubjectCode(String subjectCode) { this.subjectCode = subjectCode; } + + public String getRsrvDivCd() { + return rsrvDivCd; + } + + public void setRsrvDivCd(String rsrvDivCd) { + this.rsrvDivCd = rsrvDivCd; + } + + public String getRsrvDivNm() { + return rsrvDivNm; + } + + public void setRsrvDivNm(String rsrvDivNm) { + this.rsrvDivNm = rsrvDivNm; + } } diff --git a/src/main/java/nlib/col/service/RentService.java b/src/main/java/nlib/col/service/RentService.java index b4af63cc..8f6f82ea 100644 --- a/src/main/java/nlib/col/service/RentService.java +++ b/src/main/java/nlib/col/service/RentService.java @@ -26,6 +26,15 @@ public interface RentService */ public DataApiResVO listRentItems(CollectionVO searchVO); + + /** + * 대출(예약)신청을 취소한다. + * + * @param searchVO + * @return + */ + public DataApiResVO cancelRentItem(CollectionVO searchVO); + /** * 대출을 신청한다. * @@ -34,7 +43,7 @@ public interface RentService * @param mngOrgCd * @return */ - public List insertRentItems(List list, String mbInfoId, String mngOrgCd); + public List insertRentItems(List list, String mbInfoId, String mngOrgCd, boolean fromCart) throws Exception; // // /** diff --git a/src/main/java/nlib/col/service/impl/CartDAO.java b/src/main/java/nlib/col/service/impl/CartDAO.java index 60c4e430..63efd98d 100644 --- a/src/main/java/nlib/col/service/impl/CartDAO.java +++ b/src/main/java/nlib/col/service/impl/CartDAO.java @@ -24,4 +24,6 @@ public interface CartDAO { public int countCartItems(@Param("mbInfoId") String mbInfoId, @Param("cartTypeCd") String cartTypeCd) throws Exception; + public int changeCartProcDivCd(CollectionVO cartVO) throws Exception; + } \ No newline at end of file diff --git a/src/main/java/nlib/col/service/impl/RentServiceImpl.java b/src/main/java/nlib/col/service/impl/RentServiceImpl.java index 4c7cb8de..ae82e268 100644 --- a/src/main/java/nlib/col/service/impl/RentServiceImpl.java +++ b/src/main/java/nlib/col/service/impl/RentServiceImpl.java @@ -10,6 +10,9 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpMethod; import org.springframework.stereotype.Service; +import com.fasterxml.jackson.databind.deser.std.ReferenceTypeDeserializer; + +import nlib.col.service.CartService; import nlib.col.service.CollectionVO; import nlib.col.service.RentService; import nlib.restful.DataApi; @@ -26,6 +29,10 @@ public class RentServiceImpl implements RentService @Resource(name="rentDAO") private RentDAO rentDAO; + @Resource(name="cartDAO") + private CartDAO cartDAO; + + /** RESTFul API 송수신 모듈 */ @Resource(name = "dataApi") private DataApi dataApi; @@ -70,6 +77,48 @@ public class RentServiceImpl implements RentService reqVO.putInfoItem("bookLtRvStatusCd", searchVO.getBookLtRvStatusCd()); return dataApi.request(reqVO); } + + + /** + * 대출(예약)신청을 취소한다. + * + * @param searchVO + * @return + */ + public DataApiResVO cancelRentItem(CollectionVO searchVO) { + + String message = null; + + if(searchVO == null || StringUtil.isEmpty(searchVO.getMbInfoId())) { + message = "대출(예약)신청 취소 요청 정보가 부적합합니다 (MbInfoId)"; + log.error("cancelRentItem > " + message); + return new DataApiResVO("E", message); + } + + if(StringUtil.isEmpty(searchVO.getMngOrgCd())) { + message = "문화원정보가 부적합합니다. 다시 요청하여 주시기 바랍니다."; + log.error("cancelRentItem > " + message); + return new DataApiResVO("E", message); + } + + if(StringUtil.isEmpty(searchVO.getRsrvId())) { + message = "취소할 대출(예약)선청번호 정보가 부적합합니다. 다시 요청하여 주시기 바랍니다."; + log.error("cancelRentItem > " + message); + return new DataApiResVO("E", message); + } + + // API 호출 + /* + mngOrgCd 문화원코드 + mbInfoId 사용자아이디 + rsrvId 대출신청예약번호 + */ + DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/rent/deleteRentItem", HttpMethod.POST); + reqVO.setMbInfoId(searchVO.getMbInfoId()); // 통신 시, 암호화되어 송수신됨 + reqVO.putInfoItem("mngOrgCd", searchVO.getMngOrgCd()); + reqVO.putInfoItem("rsrvId", searchVO.getRsrvId()); + return dataApi.request(reqVO); + } /** @@ -80,7 +129,7 @@ public class RentServiceImpl implements RentService * @param mngOrgCd * @return */ - public List insertRentItems(List list, String mbInfoId, String mngOrgCd) { + public List insertRentItems(List list, String mbInfoId, String mngOrgCd, boolean fromCart) throws Exception { if(list == null || list.size() < 1) return null; @@ -122,12 +171,18 @@ public class RentServiceImpl implements RentService if(StringUtil.startsWithIgnoreCase(resVO.getResultCode(), "S")) { cVO.setRsrvId(resVO.getInfoItem("rsrvId", "")); cVO.setRsrvDd(StringUtil.formatDateStr(resVO.getInfoItem("rsrvDd", ""), "")); + cVO.setRsrvDivCd(resVO.getInfoItem("rsrvDivCd")); // 대출상태구분코드 + if("1".equals(cVO.getRsrvDivCd())) cVO.setRsrvDivNm("대출신청"); + else if("2".equals(cVO.getRsrvDivCd())) cVO.setRsrvDivNm("대출예약"); - // 대출신청, 대출예약 구분 : API 팀에서 처리완료시까지 임시 데이터 설정 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDd - cVO.setBookLtRvStatusCd("1"); // 대출상태구분코드 - cVO.setBookLtRvStatusNm("대출신청"); // 대출상태구분코드명 - //cVO.setBookLtRvStatusCd("2"); // 대출상태구분코드 - //cVO.setBookLtRvStatusNm("대출예약"); // 대출상태구분코드명 + // 카트에서의 처리 여부 업데이트 + if(fromCart) { + cVO.setMbInfoId(mbInfoId); + cVO.setCartProcDivCd("R"); // 대출신청완료 + cVO.setModId(mbInfoId); + int retUpdateProc = cartDAO.changeCartProcDivCd(cVO); + log.debug("insertRentItems > retUpdateProc=" + retUpdateProc); + } } else { cVO.setRsrvId(null); diff --git a/src/main/java/nlib/col/web/RentController.java b/src/main/java/nlib/col/web/RentController.java index 12f671da..a48d18b8 100644 --- a/src/main/java/nlib/col/web/RentController.java +++ b/src/main/java/nlib/col/web/RentController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestParam; import nlib.cmm.NlibCommonController; import nlib.cmm.service.CodeService; import nlib.cmm.service.NlibProperty; +import nlib.cmm.service.PagingVO; import nlib.col.service.CollectionService; import nlib.col.service.CollectionVO; import nlib.col.service.RentService; @@ -95,12 +96,11 @@ public class RentController extends NlibCommonController List> rentMngOrgList = rentService.listRentMngOrg(mbInfoId); model.addAttribute("rentMngOrgList" , rentMngOrgList); - model.addAttribute("bookLtRvStatusCd", searchVO.getBookLtRvStatusCd()); - model.addAttribute("pageSize" , searchVO.getPageSize()); + model.addAttribute("bookLtRvStatusCd", StringUtil.getString(searchVO.getBookLtRvStatusCd(), "A")); model.addAttribute("pageSize" , searchVO.getPageSize()); model.addAttribute("pageIndex" , searchVO.getPageIndex()); model.addAttribute("message" , message); - + return "nlib/rent/listRentItems"; } @@ -117,11 +117,16 @@ public class RentController extends NlibCommonController String message = null; String mbInfoId = getMbInfoId(request); + int totCount = 0; if(StringUtil.isEmpty(mbInfoId)) { message = "로그인하신 후, 이용바랍니다."; } + if(StringUtil.isEmpty(searchVO.getBookLtRvStatusCd())) { + searchVO.setBookLtRvStatusCd("A"); // 신청/예약 기본 설정 + } + //------------------------------- // JSON변환 응답 처리 //------------------------------- @@ -135,22 +140,76 @@ public class RentController extends NlibCommonController // 로그인 사용자 정보 설정 searchVO.setMbInfoId(mbInfoId); - // TO-DO : DDDDDDDDDDDDDDDDDDDddd - // 기본값은 전체이나, API 반영전까지 문화원 코드 전송 - // if(StringUtil.isEmpty(searchVO.getMngOrgCd())) searchVO.setMngOrgCd(getCurCouncilCd(request)); - searchVO.setMngOrgCd("KCCF"); // 조회 // 대출상태구분코드("": 전체, A:신청, B:대출준비완료, C:취소, W:대출중, R0:정상반납, R1:연체반납, P:연체) - // TO-DO : api 코드 변경 요청. 변경 처리된 것 확인할 것 DataApiResVO resVO = rentService.listRentItems(searchVO); + totCount = resVO.getRecordTotCount(); retMap.put("data" , resVO.getRecordList()); - retMap.put("itemsCount", resVO.getRecordTotCount()); retMap.put("pageIndex" , resVO.getPageIndex()); } else { + retMap.put("pageIndex" , searchVO.getPageIndex()); retMap.put("message" , "로그인하신 후, 이용바랍니다."); } + retMap.put("itemsCount", totCount); + + PagingVO pageVO = new PagingVO(); + pageVO.setPagingVO(totCount, searchVO.getPageIndex(), searchVO.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); + } + + + @RequestMapping(value="/rent/cancelRentItemAjax.do") + public ResponseEntity cancelRentItemAjax( + HttpServletRequest request, + @RequestBody CollectionVO searchVO) { + + String resultMessage = null; + String resultCode = "F"; + String mbInfoId = getMbInfoId(request); + int totCount = 0; + + if(StringUtil.isEmpty(mbInfoId)) { + resultMessage = "로그인하신 후, 이용바랍니다."; + } + + if(StringUtil.isEmpty(searchVO.getMngOrgCd())) { + resultMessage = "문화원정보가 부적합합니다. 다시 요청하여 주시기 바랍니다."; + } + + if(StringUtil.isEmpty(searchVO.getRsrvId())) { + resultMessage = "취소할 대출(예약)선청번호 정보가 부적합합니다. 다시 요청하여 주시기 바랍니다."; + } + + //------------------------------- + // JSON변환 응답 처리 + //------------------------------- + // JS-GRID 페이징 처리를 포함한 응답값 처리 + // {data: [{...}], + // itemsCount: 255 + // } + HashMap retMap = new HashMap(); + if(resultMessage == null) { + + // 로그인 사용자 정보 설정 + searchVO.setMbInfoId(mbInfoId); + + // 대출취소신청 + DataApiResVO resVO = rentService.cancelRentItem(searchVO); + resultCode = resVO.getResultCode(); + resultMessage = resVO.getResultMessage(); + } + + retMap.put("resultCode" , resultCode); + retMap.put("resultMessage" , resultMessage); + return makeResponseEntityJson(retMap); } @@ -208,8 +267,7 @@ public class RentController extends NlibCommonController List list = collectionService.makeListOfCollectionVO(selItems); - // 임시 막음 DDDDDDDDDDDDDDDDDDDDDDDdd - //list = rentService.insertRentItems(list, mbInfoId, rentVO.getMngOrgCd()); + list = rentService.insertRentItems(list, mbInfoId, rentVO.getMngOrgCd(), fromCart); list = collectionService.setDetailInfoForList(list, mbInfoId, NlibProperty.getString("thumbnail.image.url.small")); model.addAttribute("rentVO", rentVO); diff --git a/src/main/resources/egovframework/mapper/nlib/col/CartDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/col/CartDAO_SQL.xml index 8635a4fd..d906b72e 100644 --- a/src/main/resources/egovframework/mapper/nlib/col/CartDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/col/CartDAO_SQL.xml @@ -29,7 +29,16 @@ AND IFNULL(A.CART_PROC_DIV_CD, 'N') = 'N' ORDER BY B.MNG_ORG_CD - + + + + + + + + + +
+ + +
+ 0 +
+
+ +
+
+
-

${pageTitle }

+
+
+
-
메시지 : - ${message } -
-
+
+
+
+
문화원
+
자료정보
+
신청/예약일
+
신청/예약 만료일
+
반납예정일
+
이용
+
+ + +
+
+
    +
    +
    +
    +
    + + + + + + -
    - 총 0 건 - -               - bookLtRvStatusCd -
    전체 | 신청/예약 | 취소 | 대출중 | 반납 | 연체     pageIndex - -
    - - - -
    - - - \ No newline at end of file diff --git a/src/main/webapp/js/nlib.js b/src/main/webapp/js/nlib.js index b1be0bae..341bc6e6 100644 --- a/src/main/webapp/js/nlib.js +++ b/src/main/webapp/js/nlib.js @@ -320,4 +320,15 @@ function fn_viewItemDetailInfo(masterId){ $("#FRM_ITEM_DETAIL").submit(); } - +function fn_formatDateStr(yyyymmdd, defVal) { + if(fn_isEmpty(yyyymmdd)) return defVal; + if(yyyymmdd.length == 8) { + return yyyymmdd.substr(0, 4) + "-" + yyyymmdd.substr(4,2) + "-" + yyyymmdd.substr(6); + } else if(yyyymmdd.length == 6) { + return yyyymmdd.substr(0, 4) + "-" + yyyymmdd.substr(4,2); + } else if(yyyymmdd.length == 4) { + return yyyymmdd; + } + + return defVal; +}