카트 : 퍼블 적용 작업

This commit is contained in:
KNKIM 2021-10-25 15:10:54 +09:00
parent 005ee3fbad
commit f5728ff520
14 changed files with 288 additions and 159 deletions

View File

@ -84,16 +84,6 @@ public interface CartService
*/
public String deleteCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception;
/**
* 비로그인시 카트에 저장된 내역을 로그인한 해당 사용자의 카트로 저장하고, 쿠키 카트내용은 초기화한다.
*
* @param mbInfoId
* @param request
* @return
* @throws Exception
*/
public int saveCartItemsOfNonMember(String mbInfoId, HttpServletRequest request) throws Exception;
/**
* 쿠키 카트(비로그인 상태의 카트정보) 존재하는 경우, 해당 사용자 카트(DB) 등록한 , 쿠키 카트 삭제한다.
@ -106,4 +96,25 @@ public interface CartService
*/
public int mergeCart(String mbInfoId, HttpServletRequest request, HttpServletResponse response) throws Exception;
/**
* 쿠키 카트(비로그인 상태의 카트정보) 존재하는 자료 개수를 리턴한다.
*
* @param request
* @param response
* @param cartTypeCd
* @return
* @throws Exception
*/
public int countCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, String cartTypeCd) throws Exception;
/**
* 사용자 카트의 자료 개수를 리턴한다.
*
* @param mbInfoId
* @param cartTypeCd
* @return
* @throws Exception
*/
public int countCartItems(String mbInfoId, String cartTypeCd) throws Exception;
}

View File

@ -44,4 +44,17 @@ public interface CollectionService {
* @throws Exception
*/
public List<CollectionVO> setDetailInfoForList(List<CollectionVO> list) throws Exception;
/**
* 목록의 자료정보에 상세정보를 조회하여 설정한 리턴한다.
*
* @param list
* @param mbInfoId
* @param defaultThumbnailUrl
* @return
* @throws Exception
*/
public List<CollectionVO> setDetailInfoForList(List<CollectionVO> list, String mbInfoId, String defaultThumbnailUrl) throws Exception;
}

View File

@ -32,9 +32,6 @@ import nlib.util.StringUtil;
@JsonIgnoreProperties(ignoreUnknown = true)
public class CollectionVO extends PagingVO {
// 기본 썸네일 (썸네일 존재하지 않는 경우, default url)
public final String THUMBNAIL_IMG_URL = NlibProperty.getString("item.thumbnail.image.url");
//--------------------------------------------
// 자료항목
//--------------------------------------------
@ -103,6 +100,7 @@ public class CollectionVO extends PagingVO {
private String assetLink; /* 자산링크 */
private String regId; /* 등록자ID */
private String modId; /* 변경자ID */
private String mUseYn; /* 관심여부 */
//--------------------------------------------
// 기타 연관기능 항목
@ -183,11 +181,15 @@ public class CollectionVO extends PagingVO {
this.title = title;
}
public String getRprsThumbUrl() {
return rprsThumbUrl == null ? THUMBNAIL_IMG_URL : rprsThumbUrl;
return rprsThumbUrl;
}
public void setRprsThumbUrl(String rprsThumbUrl) {
this.rprsThumbUrl = rprsThumbUrl;
}
public void setRprsThumbUrl(String rprsThumbUrl, String defaultImgUrl) {
if(StringUtil.isEmpty(rprsThumbUrl) || !rprsThumbUrl.startsWith("/")) this.rprsThumbUrl = defaultImgUrl;
else this.rprsThumbUrl = rprsThumbUrl;
}
public String getUseYn() {
return useYn;
}
@ -691,5 +693,13 @@ public class CollectionVO extends PagingVO {
this.rtnDd = rtnDd;
}
public String getMUseYn() {
return StringUtil.isEmpty(mUseYn) ? "N" : mUseYn;
}
public void setMUseYn(String mUseYn) {
this.mUseYn = mUseYn;
}
}

View File

@ -22,4 +22,6 @@ public interface CartDAO {
public int changeCartType(CollectionVO cartVO) throws Exception;
public int countCartItems(@Param("mbInfoId") String mbInfoId, @Param("cartTypeCd") String cartTypeCd) throws Exception;
}

View File

@ -77,28 +77,25 @@ public class CartServiceImpl implements CartService
* @throws Exception
*/
public List<CollectionVO> listCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, String cartTypeCd) throws Exception {
Cookie[] cookies = request.getCookies();
if(cookies == null || cookies.length < 1) return null;
if(StringUtil.isEmpty(cartTypeCd)) return null;
List<CollectionVO> list = new ArrayList<CollectionVO>();
String targetCookieName = CART_COOKIE_NAME + (cartTypeCd == null || cartTypeCd.equals("0") ? "" : cartTypeCd);
for(Cookie cookie : cookies) {
String cookieName = cookie.getName();
if(cookieName.startsWith(targetCookieName)) {
String targetCookieName = CART_COOKIE_NAME + cartTypeCd;
// _NLIB_COOKIE1=:masterId:masterId:
String cartStr = cookie.getValue();
String cartStr = getCookie(request, targetCookieName);
if(StringUtil.isEmpty(cartStr)) return null;
String[] cartItemsStr = cartStr.split(":");
for(String itemStr : cartItemsStr) {
if(StringUtil.isEmpty(itemStr)) continue;
CollectionVO vo = CollectionVO.createWithMasterId(cookieName.substring(cookieName.length()-2), itemStr);
CollectionVO vo = CollectionVO.createWithMasterId(targetCookieName.substring(targetCookieName.length()-2), itemStr);
vo.setMbCartId(vo.getMasterId()); // 비회원 쿠키 카트의 경우, 카트ID를 자료ID로 대체한다.
if(vo != null) list.add(vo);
}
}
}
if(list.size() < 1) return null;
return list;
}
@ -525,18 +522,6 @@ public class CartServiceImpl implements CartService
log.debug("updateSelItemsForDB > " + cartVO.getSelItems());
}
/**
* 비로그인시 카트에 저장된 내역을 로그인한 해당 사용자의 카트로 저장하고, 쿠키 카트내용은 초기화한다.
*
* @param mbInfoId
* @param request
* @return
* @throws Exception
*/
public int saveCartItemsOfNonMember(String mbInfoId, HttpServletRequest request) throws Exception {
return 0;
}
/**
* 쿠키 카트(비로그인 상태의 카트정보) 존재하는 경우, 해당 사용자 카트(DB) 등록한 , 쿠키 카트 삭제한다.
*
@ -570,4 +555,46 @@ public class CartServiceImpl implements CartService
return mergeCnt;
}
/**
* 쿠키 카트(비로그인 상태의 카트정보) 존재하는 자료 개수를 리턴한다.
*
* @param request
* @param response
* @param cartTypeCd
* @return
* @throws Exception
*/
public int countCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, String cartTypeCd) throws Exception {
if(StringUtil.isEmpty(cartTypeCd)) return 0;
String targetCookieName = CART_COOKIE_NAME + cartTypeCd;
String cartStr = getCookie(request, targetCookieName);
if(StringUtil.isEmpty(cartStr)) return 0;
String[] cartItemsStr = cartStr.split(":");
int retCnt = 0;
for(String itemStr : cartItemsStr) {
if(StringUtil.isEmpty(itemStr)) continue;
retCnt++;
}
return retCnt;
}
/**
* 사용자 카트의 자료 개수를 리턴한다.
*
* @param mbInfoId
* @param cartTypeCd
* @return
* @throws Exception
*/
public int countCartItems(String mbInfoId, String cartTypeCd) throws Exception {
return cartDAO.countCartItems(mbInfoId, cartTypeCd);
}
}

View File

@ -96,110 +96,25 @@ public class CollectionServiceImpl implements CollectionService {
* @return
* @throws Exception
*/
public List<CollectionVO> setDetailInfoForList_BK(List<CollectionVO> list) throws Exception {
if(list == null || list.size() < 1) return list;
final int MAX_CNT_FOR_ONE_QUERY = 10;
int cnt = list.size();
HashMap<String, String> orgCdMasterIdMap = new HashMap<String, String>();
HashMap<String, CollectionVO> collectionMap = new HashMap<String, CollectionVO>();
String mbInfoId = null;
// 문화원별 자료ID 항목값 생성
for(int i=0; i<cnt; i++) {
CollectionVO vo = list.get(i);
String orgCd = vo.getMngOrgCd();
String jsonMasterId = orgCdMasterIdMap.get(orgCd);
if(jsonMasterId == null) jsonMasterId = "";
if(mbInfoId == null) mbInfoId = vo.getMbInfoId();
// [{"masterId":"xxxx"}, {"masterId":"xxxb"},]
if(jsonMasterId.length() > 0) jsonMasterId += ",";
jsonMasterId += "{'masterId':'" + vo.getMasterId() + "}";
orgCdMasterIdMap.put(orgCd, jsonMasterId);
}
// 문화원별 API 요청 처리
for(String orgCd : orgCdMasterIdMap.keySet()) {
String jsonMasterId = orgCdMasterIdMap.get(orgCd);
if(StringUtil.isEmpty(jsonMasterId)) continue;
jsonMasterId = "[" + jsonMasterId + "]";
// API 호출
DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/listItemInfo", HttpMethod.GET);
reqVO.putInfoItem("mngOrgCd", orgCd);
reqVO.putInfoItem("jsonMasterId", jsonMasterId);
reqVO.setMbInfoId(mbInfoId); // 통신 , 암호화되어 송수신됨
DataApiResVO resVO = dataApi.request(reqVO);
// 결과 처리
if(resVO.getResultCode().charAt(0) == 'S') {
List<HashMap<String, String>> recordList = resVO.getList("record");
if(recordList == null || recordList.size() < 1) continue;
for(HashMap<String, String> record : recordList) {
CollectionVO cVO = (CollectionVO)XmlConverter.convertMapToObject(record, CollectionVO.class);
if(cVO != null && StringUtil.isNotEmpty(cVO.getMasterId())) {
collectionMap.put(cVO.getMasterId(), cVO);
}
}
} else {
log.error("setDetailInfoForCartItems > 소장자료 다건 메타정보 조회 오류(API) : " + resVO.getResultCode() + " : " + resVO.getResultMessage());
}
}
// 목록에 업데이트 설정
for(int i=0; i<cnt; i++) {
CollectionVO vo = list.get(i);
String masterId = vo.getMasterId();
CollectionVO cVO = collectionMap.get(masterId);
if(cVO == null) continue;
vo.setTitle (cVO.getTitle());
vo.setTypeDivCd (cVO.getTypeDivCd());
vo.setTypeCodeNm (cVO.getTypeCodeNm());
vo.setSubjectNm (cVO.getSubjectNm());
vo.setOrgNm (cVO.getOrgNm());
vo.setCreatYyyy (cVO.getCreatYyyy());
vo.setRprsThumbUrl (cVO.getRprsThumbUrl());
vo.setInterfaceId (cVO.getInterfaceId());
vo.setOpenDivCd (cVO.getOpenDivCd());
vo.setOperReadRangeCd(cVO.getOperReadRangeCd());
vo.setOperOutRangeCd (cVO.getOperOutRangeCd());
vo.setUseStatus (cVO.getUseStatus());
vo.setRtnExpctDd (cVO.getRtnExpctDd());
vo.setAwaiterCnt (cVO.getAwaiterCnt());
vo.setBookLentPsblYn (cVO.getBookLentPsblYn());
vo.setRsrvPsblYn (cVO.getRsrvPsblYn());
vo.setReqPsblYn (cVO.getReqPsblYn());
vo.setInterestYn (cVO.getInterestYn());
}
return list;
public List<CollectionVO> setDetailInfoForList(List<CollectionVO> list) throws Exception {
return setDetailInfoForList(list, null, null);
}
/**
* 목록의 자료정보에 상세정보를 조회하여 설정한 리턴한다.
*
* @param list
* @param mbInfoId
* @param defaultThumbnailUrl
* @return
* @throws Exception
*/
public List<CollectionVO> setDetailInfoForList(List<CollectionVO> list) throws Exception {
public List<CollectionVO> setDetailInfoForList(List<CollectionVO> list, String mbInfoId, String defaultThumbnailUrl) throws Exception {
if(list == null || list.size() < 1) return list;
int cnt = list.size();
HashMap<String, CollectionVO> collectionMap = new HashMap<String, CollectionVO>();
String mbInfoId = null;
// 문화원별 API 요청 처리
String jsonMasterId = "";
@ -254,18 +169,19 @@ public class CollectionServiceImpl implements CollectionService {
vo.setSubjectNm (cVO.getSubjectNm());
vo.setOrgNm (cVO.getOrgNm());
vo.setCreatYyyy (cVO.getCreatYyyy());
vo.setRprsThumbUrl (cVO.getRprsThumbUrl());
vo.setRprsThumbUrl (cVO.getRprsThumbUrl(), defaultThumbnailUrl);
vo.setInterfaceId (cVO.getInterfaceId());
vo.setOpenDivCd (cVO.getOpenDivCd());
vo.setOperReadRangeCd(cVO.getOperReadRangeCd());
vo.setOperOutRangeCd (cVO.getOperOutRangeCd());
vo.setUseStatus (cVO.getUseStatus());
vo.setRtnExpctDd (cVO.getRtnExpctDd());
vo.setRtnExpctDd (StringUtil.formatDateStr(cVO.getRtnExpctDd(), "-"));
vo.setAwaiterCnt (cVO.getAwaiterCnt());
vo.setBookLentPsblYn (cVO.getBookLentPsblYn());
vo.setRsrvPsblYn (cVO.getRsrvPsblYn());
vo.setReqPsblYn (cVO.getReqPsblYn());
vo.setInterestYn (cVO.getInterestYn());
vo.setMUseYn (cVO.getMUseYn());
// DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
// API에 존재하지 않을 경우, 추가 DB 조회

View File

@ -80,6 +80,8 @@ public class CartController extends NlibCommonController
String mbInfoId = getMbInfoId(request);
List<CollectionVO> list = null;
int cartTypeCd1Cnt = 0; // 대출 카트건수
int cartTypeCd2Cnt = 0; // 열람 카트건수
// 카트 목록 가져오기
if(StringUtil.isEmpty(mbInfoId)) {
@ -87,21 +89,33 @@ public class CartController extends NlibCommonController
list = cartService.listCartItemsFromCookie(request, response, cartTypeCd);
// 카트 목록 자료에 대한 상세자료 설정
collectionService.setDetailInfoForList(list);
collectionService.setDetailInfoForList(list, null, NlibProperty.getString("thumbnail.image.url.small"));
// 문화원별 처리
// 문화원별 처리
list = sortCollectionListByMngOrgCd(list);
// 카트 건수
cartTypeCd1Cnt = cartService.countCartItemsFromCookie(request, response, "1");
cartTypeCd2Cnt = cartService.countCartItemsFromCookie(request, response, "2");
} else {
list = cartService.listCartItems(mbInfoId, cartTypeCd);
// 카트 목록 자료에 대한 상세자료 설정
collectionService.setDetailInfoForList(list);
}
collectionService.setDetailInfoForList(list, getMbInfoId(request), NlibProperty.getString("thumbnail.image.url.small"));
// 카트 건수
cartTypeCd1Cnt = cartService.countCartItems(mbInfoId, "1");
cartTypeCd2Cnt = cartService.countCartItems(mbInfoId, "2");
}
if(StringUtil.isNotEmpty(message) && message.startsWith("%")) {
message = StringUtil.decodeUrl(message);
}
model.addAttribute("cartTypeCd1Cnt", cartTypeCd1Cnt);
model.addAttribute("cartTypeCd2Cnt", cartTypeCd2Cnt);
model.addAttribute("list", list);
model.addAttribute("cartTypeCd", cartTypeCd);
model.addAttribute("message", message);

View File

@ -36,6 +36,28 @@ import org.slf4j.LoggerFactory;
* @version 1.0
*
*/
/**
* <pre>
* @Class Name : StringUtil.java
*
* @Description :
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 10. 25. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 10. 25.
* @version 1.0
*
*/
public class StringUtil extends StringUtils {
private static final Logger log = LoggerFactory.getLogger(StringUtil.class);
@ -238,6 +260,28 @@ public class StringUtil extends StringUtils {
return str;
}
/**
* 날짜 문자열(YYYYMMDD) 받아서 화면 출력용 날짜 형식 문자열(YYYY-MM-DD) 리턴한다.
*
* @param dateStr
* @param defaultStr
* @return
*/
public static String formatDateStr(String dateStr, String defaultStr) {
if(isEmpty(dateStr)) return defaultStr;
String tmpDateStr = dateStr.trim();
switch(tmpDateStr.length()) {
case 4 : return dateStr; // 연도만 있는 경우
case 6 : return tmpDateStr.substring(0, 4) + "-" + tmpDateStr.substring(4); // YYYY-MM
case 8 : return tmpDateStr.substring(0, 4) + "-" + tmpDateStr.substring(4, 6) + "-" + tmpDateStr.substring(6); // YYYY-MM-DD
}
return defaultStr;
}
/** * 이메일 masking 후 리턴<br> * 변환 실패시 입력값 그대로 리턴<br> * 이메일 아이디 앞 2자리 노출<br> */
public static String maskEmail(String email){
try{
@ -284,4 +328,5 @@ public class StringUtil extends StringUtils {
catch (Exception e){
} return name;
}
}

View File

@ -30,6 +30,18 @@
ORDER BY B.MNG_ORG_CD
</select>
<select id="countCartItems" parameterType="String" resultType="Integer">
SELECT COUNT(A.MB_CART_ID) AS CNT
FROM MB_CART A
INNER JOIN RG_MASTER B ON A.MASTER_ID = B.MASTER_ID
WHERE A.MB_INFO_ID = #{mbInfoId}
<if test='cartTypeCd != null and !cartTypeCd.equals("") and !cartTypeCd.equals("0")'>
AND A.CART_TYPE_CD = #{cartTypeCd}
</if>
AND A.DELETE_YN = 'N'
AND IFNULL(A.CART_PROC_DIV_CD, 'N') = 'N'
</select>
<select id="countCartItem" parameterType="CollectionVO" resultType="Integer">
SELECT COUNT(1)
FROM MB_CART A

View File

@ -165,3 +165,12 @@ cart.cookie.domain = nculture.org
# \ubbf8\ub85c\uadf8\uc778 \uc0ac\uc6a9\uc790\uc758 \uce74\ud2b8\uc815\ubcf4\uac00 \uc800\uc7a5\ub418\ub294 \ucfe0\ud0a4\uba85
cart.cookie.name = _NLIB_CART_COOKIE
cart.cookie.path = /
#----------------------------------------
# \uc378\ub124\uc77c \uae30\ubcf8 \uc774\ubbf8\uc9c0 (\uc378\ub124\uc77c \uc5c6\uc74c)
#----------------------------------------
thumbnail.image.url.small = /images/thumbnail/noimage-s.jpg
thumbnail.image.url.middle = /images/thumbnail/noimage-m.jpg
thumbnail.image.url.big = /images/thumbnail/noimage-b.jpg

View File

@ -30,6 +30,7 @@
<%@ 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"%>
<script type="text/javaScript" language="javascript">
var BTN_APP_PREFIX = "대출신청/예약";
@ -73,6 +74,7 @@ $( document ).ready(function() {
$("[id^=chk_all_" + mngOrgCd + "]").prop("checked", checked);
$("#btnApp").val(BTN_APP_PREFIX + " (" + selNum + ")");
$("#appCnt").text("(" + selNum + ")");
});
$("[id^=selMngOrgCd]").filter(":first").prop("checked", true);
@ -80,6 +82,8 @@ $( document ).ready(function() {
}); // document ready
function fn_deleteCartItems() {
if($("[id^=chk_item_]:checked").length < 1) {
alert("삭제할 대상을 선택해 주세요.");
@ -152,6 +156,37 @@ function fn_changeCartItems(cartTypeCd, cartTypeNm) {
$("#frm").submit();
}
function fn_appRent() {
<sec:authorize access="not isAuthenticated()">
alert("먼저 로그인하신 후, 이용해 주시기 바랍니다.");
</sec:authorize>
<sec:authorize access="isAuthenticated()">
if($("[id^=chk_item_]:checked").length < 1) {
alert("대출할 대상을 선택해 주세요.");
return;
}
if(!confirm(($("[id^=chk_item_]:checked").length) + "건을 대출신청하시겠습니까?\n\n[안내]\n- 대출중인 자료는 대출예약으로 신청됩니다.\n- 대출대기자가 존재하는 경우, 대출신청/예약이 불가능합니다.")) {
return;
}
$("#selItems").val(fn_getCheckedCartItemsValues());
$("#frm").attr("action","${pageContext.request.contextPath}/cart/confirmRent.do");
$("#frm").submit();
</sec:authorize>
}
function fn_changeInterest(masterId, onOff) {
alert("관심등록/삭제 준비중 : " + masterId + ", " + onOff);
}
function fn_gotoDetail(masterId) {
alert("상세보기 준비중 : " + masterId);
}
$(document).ready(function() {
/* 탭메뉴 */
@ -200,10 +235,10 @@ $(document).ready(function() {
</div>
<div class="contents row-bottom">
<div class="cart-box">
<div class="tab">
<div class="cartTab">
<ul class="tabs active">
<li><a href="javascript:void(0);" onclick="fn_search('1')" <c:if test='${cartTypeCd == "1"}'>class="current"</c:if> >대출 <span>(5)</span></a></li>
<li><a href="javascript:void(0);" onclick="fn_search('2')" <c:if test='${cartTypeCd == "2"}'>class="current"</c:if> >방문열람 <span>(3)</span></a></li>
<li><a href="javascript:void(0);" onclick="fn_search('1')" <c:if test='${cartTypeCd == "1"}'>class="current"</c:if> >대출 <span>(${cartTypeCd1Cnt })</span></a></li>
<li><a href="javascript:void(0);" onclick="fn_search('2')" <c:if test='${cartTypeCd == "2"}'>class="current"</c:if> >방문열람 <span>(${cartTypeCd2Cnt })</span></a></li>
</ul>
<div class="tab_content">
@ -214,6 +249,7 @@ $(document).ready(function() {
<c:set var="preMngOrgCd" value="" />
<c:set var="mngOrgCdCnt" value="0" />
<c:set var="totCnt" value="0" />
<c:forEach var="cart" items="${list}" varStatus="status">
@ -242,21 +278,32 @@ $(document).ready(function() {
</c:if>
<c:set var="mngOrgCdCnt" value="${mngOrgCdCnt+1}" />
<c:set var="totCnt" value="${totCnt+1}" />
<!-- 행 : 시작 -->
<div class="list">
<div class="t-chk"><input type="checkbox" name="chk_item_${cart.mngOrgCd }" id="chk_item_${cart.mngOrgCd }" value="${cart.masterId }" ></div>
<div class="t-data">
<div class="img">${cart.interestYn }
<a href="javascript:void(0)"><img src="/images/img/img-cart-img01.jpg" alt=""></a>
<span class="favorites"><img src="images/icon/icon-cart-Favorites.png" class="off" alt="즐겨찾기 아이콘">
<img src="images/icon/icon-cart-Favorites-on.png" class="on" alt="즐겨찾기 아이콘">
<a href="javascript:void(0)"><img src="${cart.rprsThumbUrl }" alt="" width="60" height="91" title="상세보기" onclick="fn_gotoDetail('${cart.masterId }')"></a>
<sec:authorize access="isAuthenticated()">
<c:if test='${cart.MUseYn == "Y"}'>
<span class="favorites" onclick="fn_changeInterest('${cart.masterId }', 'off')" title="관심자료에서 삭제합니다.">
<img src="/images/icon/icon-cart-Favorites-on.png" class="off" alt="즐겨찾기 아이콘">
<img src="/images/icon/icon-cart-Favorites.png" class="on" alt="즐겨찾기 아이콘">
</span>
${cart.rprsThumbUrl }
</c:if>
<c:if test='${cart.MUseYn != "Y"}'>
<span class="favorites" onclick="fn_changeInterest('${cart.masterId }', 'on')" title="관심자료로 등록합니다.">
<img src="/images/icon/icon-cart-Favorites.png" class="off" alt="즐겨찾기 아이콘">
<img src="/images/icon/icon-cart-Favorites-on.png" class="on" alt="즐겨찾기 아이콘">
</span>
</c:if>
</sec:authorize>
</div>
<div class="type">
<c:if test="${cart.operReadRangeCd == '01' }">
<c:if test="${cart.openDivCd != '3' }">
<span class="online">온라인열람</span>
</c:if>
@ -264,17 +311,17 @@ $(document).ready(function() {
<span class="loan">대출</span>
</c:if>
<c:if test="${cart.operReadRangeCd == '01' }">
<c:if test="${cart.operReadRangeCd != '03' }">
<span class="visit">방문열람</span>
</c:if>
</div>
<div class="title">${cart.mbCartId }<a href="#">${cart.title }</a> ${cart.masterId }${cart.mngOrgCd }</div>
<div class="title"><a href="javascript:void(0)" onclick="fn_gotoDetail('${cart.masterId }')" title="상세보기">${cart.title }</a></div>
</div>
<div class="t-state"><p>${cart.useStatusNm }</p></div>
<div class="t-state <c:if test="${cart.useStatus != '03' and cart.useStatus != '06' }">poss</c:if> <c:if test="${cart.useStatus == '03' or cart.useStatus == '06' }">imposs</c:if>"><p>${cart.useStatusNm }</p></div>
<div class="t-date">${cart.rtnExpctDd }</div>
<div class="t-loan poss">${cart.operOutRangeNm }</div>
<div class="t-visit imposs">${cart.operReadRangeNm }</div>
<div class="t-loan <c:if test="${cart.operOutRangeCd == '01' }">poss</c:if> <c:if test="${cart.operOutRangeCd != '01' }">imposs</c:if>">${cart.operOutRangeNm }</div>
<div class="t-visit <c:if test="${cart.operReadRangeCd != '03' }">poss</c:if> <c:if test="${cart.operReadRangeCd == '03' }">imposs</c:if>">${cart.operReadRangeNm }</div>
</div>
<!-- 행 : 종료 -->
</c:forEach>
@ -285,6 +332,25 @@ $(document).ready(function() {
$("#_${preMngOrgCd}_cnt").text("${mngOrgCdCnt }");
</script>
</c:if>
<c:if test="${totCnt < 1 }">
<!-- 자료 없음 -->
<div class="list-cart">
<div class="list t-tit-line">
<div class="t-chk"><input type="checkbox"></div>
<div class="t-data">자료정보</div>
<div class="t-state">이용상태</div>
<div class="t-date">반납예정일</div>
<div class="t-loan">대출</div>
<div class="t-visit">방문열람</div>
</div>
<div class="compl-box">
<div class="compl-text">카트에 저장된 자료가 없습니다.</div>
</div>
</div>
</c:if>
<c:if test="${totCnt > 0 }">
<div class="btn-box">
<div class="left">
<button type="button" class="btn btn-gray" onclick="fn_deleteCartItems()">선택삭제</button>
@ -299,15 +365,19 @@ $(document).ready(function() {
</div>
<div class="right">
<c:if test='${cartTypeCd == "1"}'>
<button type="button" name="btnApp" id="btnApp" class="btn btn-color" onclick="fn_reserveCartItems()">대출신청/예약 <span class="count">(2)</span></button>
<button type="button" name="btnApp" id="btnApp" class="btn btn-color" onclick="fn_appRent()">대출신청/예약 <span id="appCnt" name="appCnt" class="count">(0)</span></button>
<script>BTN_APP_PREFIX = "대출신청/예약"; </script>
</c:if>
<c:if test='${cartTypeCd == "2"}'>
<button type="button" name="btnApp" id="btnApp" class="btn btn-color" onclick="fn_reserveCartItems()">열람신청 <span class="count">(2)</span></button>
<button type="button" name="btnApp" id="btnApp" class="btn btn-color" onclick="fn_appVisit()">열람신청 <span id="appCnt" name="appCnt" class="count">(0)</span></button>
<script>BTN_APP_PREFIX = "열람신청"; </script>
</c:if>
</div>
</div>
</c:if>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB