소스 충돌 제거

This commit is contained in:
JSYOO 2021-10-13 14:36:52 +09:00
commit 30abedef77
15 changed files with 567 additions and 75 deletions

View File

@ -0,0 +1,113 @@
package nlib.col.service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : CartCookieVO.java
*
* @Description : 비로그인 회원의 카트정보를 담는 쿠키 정보값
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 10. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 10. 13.
* @version 1.0
*
*/
public class CartCookieVO {
String rentValues = null; /* 대출 목록으로 ":"로 구분되어 짐 */
String readValues = null; /* 방문열람 목록으로 ":"로 구분되어 짐 */
/**
* 쿠키 카트값에 자료 항목을 추가한다.
*
* @param cartTypeCd
* @param masterId
* @return
*/
public String addCartItem(String cartTypeCd, String masterId) {
if(StringUtil.isEmpty(cartTypeCd)) return "카트구분 정보가 없습니다.";
if(StringUtil.isEmpty(masterId)) return "자료정보가 없습니다.";
String cartStr = null;
if("1".equals(cartTypeCd)) cartStr = getRentValues();
else if("2".equals(cartTypeCd)) cartStr = getReadValues();
else return "카트구분 정보가 적합하지 않습니다.";
cartStr = (StringUtil.isEmpty(cartStr) ? ":" : cartStr);
if(cartStr.contains(":" + masterId + ":")) return "이미 카트에 존재합니다.";
cartStr += (":" + masterId + ":");
if("1".equals(cartTypeCd)) setRentValues(cartStr);
else if("2".equals(cartTypeCd)) setReadValues(cartStr);
return null;
}
/**
* 쿠키 카트값에서 자료 항목을 삭제한다.
*
* @param cartTypeCd
* @param masterId
* @return
*/
public String removeCartItem(String cartTypeCd, String masterId) {
if(StringUtil.isEmpty(cartTypeCd)) return "카트구분 정보가 없습니다.";
if(StringUtil.isEmpty(masterId)) return "자료정보가 없습니다.";
String cartStr = null;
if("1".equals(cartTypeCd)) cartStr = getRentValues();
else if("2".equals(cartTypeCd)) cartStr = getReadValues();
else return "카트구분 정보가 적합하지 않습니다.";
cartStr = (StringUtil.isEmpty(cartStr) ? ":" : cartStr);
if(StringUtil.isEmpty(cartStr) || !cartStr.contains(":" + masterId + ":")) return "해당 자료는 카트에 존재하지 않습니다.";
int startIdx = cartStr.indexOf(":" + masterId + ":");
if(startIdx < 0) return "해당 자료는 카트에 존재하지 않습니다.";
int endIdx = startIdx + (":" + masterId).length();
cartStr = cartStr.substring(0, startIdx) + cartStr.substring(endIdx);
if("1".equals(cartTypeCd)) setRentValues(cartStr);
else if("2".equals(cartTypeCd)) setReadValues(cartStr);
return null;
}
// GET & SET
public String getRentValues() {
return rentValues;
}
public void setRentValues(String rentValues) {
this.rentValues = rentValues;
}
public String getReadValues() {
return readValues;
}
public void setReadValues(String readValues) {
this.readValues = readValues;
}
}

View File

@ -1,16 +1,9 @@
package nlib.col.service;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.HttpMethod;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.restful.service.XmlConverter;
import nlib.util.StringUtil;
import javax.servlet.http.HttpServletResponse;
public interface CartService
{
@ -23,7 +16,7 @@ public interface CartService
* @return
* @throws Exception
*/
public List<CollectionVO> listCartItems(String mbInfoId, String cartDivCd) throws Exception;
public List<CollectionVO> listCartItems(String mbInfoId, String cartTypeCd) throws Exception;
/**
* (비로그인자용) 쿠키에서 카트 목록을 조회한다.
@ -33,7 +26,7 @@ public interface CartService
* @return
* @throws Exception
*/
public List<CollectionVO> listCartItemsFromCookie(HttpServletRequest request, String cartDivCd) throws Exception;
public List<CollectionVO> listCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, String cartDivCd) throws Exception;
/**
* (로그인자용) 카트 영역 구분코드를 변경한다. (대출 <-> 방문열람)
@ -53,7 +46,7 @@ public interface CartService
* @return
* @throws Exception
*/
public int changeCartTypeFromCookie(HttpServletRequest request, List<CollectionVO> targetCartItems) throws Exception;
public String changeCartTypeToCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception;
/**
* (로그인자용) 카트에 추가한다.
@ -71,7 +64,7 @@ public interface CartService
* @return
* @throws Exception
*/
public String insertCartItemToCookie(HttpServletRequest request, CollectionVO cartVO) throws Exception;
public String insertCartItemToCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception;
/**
* (로그인자용) 카트에서 선택된 자료들을 삭제한다.
@ -89,7 +82,7 @@ public interface CartService
* @return
* @throws Exception
*/
public String deleteCartItems(HttpServletRequest request, List<CollectionVO> targetCartItems) throws Exception;
public String deleteCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception;
/**
* 비로그인시 카트에 저장된 내역을 로그인한 해당 사용자의 카트로 저장하고, 쿠키 카트내용은 초기화한다.

View File

@ -137,6 +137,13 @@ public class CollectionVO extends PagingVO {
this.resultMessage = resultMessage;
}
public static CollectionVO createWithMasterId(String cartTypeCd, String masterId) {
CollectionVO vo = new CollectionVO();
vo.setCartTypeCd(cartTypeCd);
vo.setMasterId(masterId);
return vo;
}
// GET & SET
public String getMasterId() {

View File

@ -1,14 +1,18 @@
package nlib.col.service.impl;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import nlib.col.service.CartCookieVO;
import nlib.col.service.CartService;
import nlib.col.service.CollectionService;
import nlib.col.service.CollectionVO;
@ -41,6 +45,10 @@ public class CartServiceImpl implements CartService
{
private static final Logger log = LoggerFactory.getLogger(CartServiceImpl.class);
// 비로그인회원의 카트정보 쿠키명
public static final String CART_COOKIE_NAME = "_NLIB_COOKIE";
@Resource(name="cartDAO")
private CartDAO cartDAO;
@ -67,8 +75,31 @@ public class CartServiceImpl implements CartService
* @return
* @throws Exception
*/
public List<CollectionVO> listCartItemsFromCookie(HttpServletRequest request, String cartDivCd) throws Exception {
return null;
public List<CollectionVO> listCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, String cartDivCd) throws Exception {
Cookie[] cookies = request.getCookies();
if(cookies == null || cookies.length < 1) return null;
List<CollectionVO> list = new ArrayList<CollectionVO>();
String targetCookieName = CART_COOKIE_NAME + (cartDivCd == null || cartDivCd.equals("0") ? "" : cartDivCd);
for(Cookie cookie : cookies) {
String cookieName = cookie.getName();
if(cookieName.startsWith(targetCookieName)) {
// _NLIB_COOKIE1=:masterId:masterId:
String cartStr = cookie.getValue();
String[] cartItemsStr = cartStr.split(":");
for(String itemStr : cartItemsStr) {
if(StringUtil.isEmpty(itemStr)) continue;
CollectionVO vo = CollectionVO.createWithMasterId(cookieName.substring(cookieName.length()-2), itemStr);
vo.setMbCartId(vo.getMasterId()); // 비회원 쿠키 카트의 경우, 카트ID를 자료ID로 대체한다.
if(vo != null) list.add(vo);
}
}
}
return list;
}
/**
@ -82,6 +113,11 @@ public class CartServiceImpl implements CartService
public String changeCartType(CollectionVO cartVO) throws Exception {
if(cartVO == null || StringUtil.isEmpty(cartVO.getMbInfoId())) return "회원 정보가 없습니다.";
if(StringUtil.isEmpty(cartVO.getSelItems())) return "변경할 대상 정보가 없습니다.";
String checkResult = checkValidCartItems(cartVO.getCartTypeCd(), cartVO.getSelItems());
if(checkResult != null) return checkResult;
updateSelItemsForDB(cartVO);
int resultCnt = cartDAO.changeCartType(cartVO);
if(resultCnt > 0) return null;
@ -97,8 +133,65 @@ public class CartServiceImpl implements CartService
* @return
* @throws Exception
*/
public int changeCartTypeFromCookie(HttpServletRequest request, List<CollectionVO> targetCartItems) throws Exception {
return 0;
public String changeCartTypeToCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception {
if(cartVO == null) return "요청 정보가 없습니다.";
if(StringUtil.isEmpty(cartVO.getSelItems())) return "변경할 대상 정보가 없습니다.";
String checkResult = checkValidCartItems(cartVO.getCartTypeCd(), cartVO.getSelItems());
if(checkResult != null) return checkResult;
int totCnt = 0;
int sucCnt = 0;
int errCnt = 0;
String addCartTypeCd = null;
String delCartTypeCd = null;
if("1".equals(cartVO.getCartTypeCd())) {
addCartTypeCd = "1";
delCartTypeCd = "2";
} else if("2".equals(cartVO.getCartTypeCd())) {
addCartTypeCd = "2";
delCartTypeCd = "1";
} else {
return "카트 구분값 정보가 정확하지 않습니다.";
}
String[] masterIds = cartVO.getSelItems().split(",");
String resultMsgAdd = null;
String resultMsgDel = null;
// 쿠키 카트 정보 가져오기
CartCookieVO cartCookie = getCartCookieInfo(request);
for(int i=0; i<masterIds.length; i++) {
if(StringUtil.isEmpty(masterIds[i])) continue;
totCnt++;
resultMsgAdd = cartCookie.addCartItem(addCartTypeCd, masterIds[i]);
if(resultMsgAdd == null) {
sucCnt++;
resultMsgDel = cartCookie.removeCartItem(delCartTypeCd, masterIds[i]);
if(resultMsgDel != null) log.error("changeCartTypeFromCookie removing > " + delCartTypeCd + "카트 " + masterIds[i] + " : 삭제오류 => " + resultMsgDel);
} else {
errCnt++;
log.error("changeCartTypeFromCookie adding > " + addCartTypeCd + "카트 " + masterIds[i] + " : 추가 오류 => " + resultMsgAdd);
}
}
if(sucCnt > 0) {
String result = setCookieCart(response, cartCookie);
if(result == null) {
if(totCnt == sucCnt) return null;
else return String.format("총 %d건의 자료 중 %d건에 대한 변경 처리가 정상적으로 처리되었습니다.", totCnt, sucCnt);
} else {
return result;
}
}
return StringUtil.getString(resultMsgAdd, "") + StringUtil.getString(resultMsgDel, "");
}
/**
@ -124,6 +217,126 @@ public class CartServiceImpl implements CartService
return "등록 처리에 실패하였습니다. 관리자에게 문의하여 주시기 바랍니다.";
}
/**
* (비로그인자용) 카트에 추가한다.
*
* @param cartVO
* @return
* @throws Exception
*/
public String insertCartItemToCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception {
cartVO = checkValidCartItem(cartVO);
if(cartVO.getResultCode().charAt(0) != 'S') return cartVO.getResultMessage();
//-----------------------------------------------
// 등록 처리
//-----------------------------------------------
// 쿠키 카트 정보 가져오기
CartCookieVO cartCookie = getCartCookieInfo(request);
String result = cartCookie.addCartItem(cartVO.getCartTypeCd(), cartVO.getMasterId());
if(result != null) return result;
return setCookieCart(response, cartCookie);
}
/**
* (비로그인자용) 쿠키에서 카트 정보를 조회하여 CartCookieVO 생성하여 리턴한다.
*
* @param request
* @return
*/
public CartCookieVO getCartCookieInfo(HttpServletRequest request) {
CartCookieVO cartCookieInfo = new CartCookieVO();
cartCookieInfo.setRentValues(getCookie(request, CART_COOKIE_NAME + "1"));
cartCookieInfo.setReadValues(getCookie(request, CART_COOKIE_NAME + "2"));
return cartCookieInfo;
}
/**
* (비로그인자용) 쿠키 카트에 자료 항목을 추가한다.
*
* @param request
* @param response
* @param cartTypeCd
* @param masterId
* @return
*/
public String setCookieCart(HttpServletResponse response, CartCookieVO cartCookie) {
if(response == null) return "쿠키를 저장할 Response 객체 정보가 없습니다.";
if(cartCookie == null) return "쿠키에 저장할 카트정보가 없습니다.";
setCookie(response, CART_COOKIE_NAME + "1", cartCookie.getRentValues());
setCookie(response, CART_COOKIE_NAME + "2", cartCookie.getReadValues());
return null;
}
/**
* (비로그인자용) 쿠키값을 설정한다.
*
* @param response
* @param name
* @param value
*/
public void setCookie(HttpServletResponse response, String name, String value) {
Cookie cookie = new Cookie(name, value);
response.addCookie(cookie);
}
/**
* (비로그인자용) 쿠키값을 가져온다.
*
* @param request
* @param cookieName
* @return
*/
public String getCookie(HttpServletRequest request, String cookieName) {
Cookie[] cookies = request.getCookies();
if(cookies == null || cookies.length < 1) return null;
if(StringUtil.isEmpty(cookieName)) return null;
for(Cookie cookie : cookies) {
if(cookieName.equalsIgnoreCase(cookie.getName())) {
return cookie.getValue();
}
}
return null;
}
/**
* 해당 자료가 대출/열람 카트 유형에 추가될 있는지 검증한다.
*
* @param String : null 정상
* @return
* @throws Exception
*/
public String checkValidCartItems(String cartTypeCd, String selItems) throws Exception {
if(StringUtil.isEmpty(cartTypeCd)) return "카트 유형 정보가 존재하지 않습니다.";
if(StringUtil.isEmpty(selItems)) return "대상 자료 정보가 존재하지 않습니다.";
String masterIds[] = selItems.split(",");
for(int i=0; i<masterIds.length; i++) {
CollectionVO cartVO = CollectionVO.createWithMasterId(cartTypeCd, masterIds[i]);
cartVO = checkValidCartItem(cartVO);
if(cartVO.getResultCode().charAt(0) != 'S') return cartVO.getTitle() + "에 대한 유형변경은 불가합니다. 대출 또는 방문열람이 가능한 자료인지 확인바랍니다.";
}
return null;
}
/**
* 카트에 추가할 있는 자료인지 확인하고, 대출/열람 유형을 검증한다. 필요시 대출/열람 유형을 변경하고 리턴한다.
*
@ -156,6 +369,9 @@ public class CartServiceImpl implements CartService
// 자료 상세 조회 성공한 경우
if(collectionVO.getResultCode().startsWith("S")) {
cartVO.setTitle(collectionVO.getTitle());
// 대출인 경우
if("1".equals(cartVO.getCartTypeCd())) {
@ -210,17 +426,6 @@ public class CartServiceImpl implements CartService
}
/**
* (비로그인자용) 카트에 추가한다.
*
* @param cartVO
* @return
* @throws Exception
*/
public String insertCartItemToCookie(HttpServletRequest request, CollectionVO cartVO) throws Exception {
return null;
}
/**
* (로그인자용) 카트에서 선택된 자료들을 삭제한다.
*
@ -230,12 +435,15 @@ public class CartServiceImpl implements CartService
*/
public String deleteCartItems(CollectionVO cartVO) throws Exception {
if(cartVO == null || StringUtil.isEmpty(cartVO.getMbInfoId())) return "회원 정보가 없습니다.";
if(StringUtil.isEmpty(cartVO.getSelItems())) return "삭제할 대상 정보가 없습니다.";
String selItems = cartVO.getSelItems();
if(StringUtil.isEmpty(selItems)) return "삭제할 자료 정보가 없습니다.";
updateSelItemsForDB(cartVO);
int resultCnt = cartDAO.deleteCartItems(cartVO);
if(resultCnt > 0) return null;
return "변경 처리에 실패하였습니다. 관리자에게 문의하여 주시기 바랍니다.";
}
/**
@ -245,8 +453,73 @@ public class CartServiceImpl implements CartService
* @return
* @throws Exception
*/
public String deleteCartItems(HttpServletRequest request, List<CollectionVO> targetCartItems) throws Exception {
return null;
public String deleteCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception {
if(cartVO == null) return "요청 정보가 없습니다.";
if(StringUtil.isEmpty(cartVO.getSelItems())) return "변경할 대상 정보가 없습니다.";
int totCnt = 0;
int sucCnt = 0;
int errCnt = 0;
String delCartTypeCd = cartVO.getCartTypeCd();
if(!"1".equals(delCartTypeCd) && !"2".equals(delCartTypeCd)) {
return "카트 구분값 정보가 정확하지 않습니다.";
}
// 쿠키 카트 정보 가져오기
CartCookieVO cartCookie = getCartCookieInfo(request);
String[] masterIds = cartVO.getSelItems().split(",");
String resultMsgDel = null;
for(int i=0; i<masterIds.length; i++) {
if(StringUtil.isEmpty(masterIds[i])) continue;
totCnt++;
resultMsgDel = cartCookie.removeCartItem(delCartTypeCd, masterIds[i]);
if(resultMsgDel == null) {
sucCnt++;
} else {
errCnt++;
log.error("changeCartTypeFromCookie removing > " + delCartTypeCd + "카트 " + masterIds[i] + " : 삭제 오류 => " + resultMsgDel);
}
}
if(sucCnt > 0) {
String result = setCookieCart(response, cartCookie);
if(result == null) {
if(totCnt == sucCnt) return null;
else return String.format("총 %d건의 자료 중 %d건에 대한 삭제가 정상적으로 처리되었습니다.", totCnt, sucCnt);
} else {
return result;
}
}
return StringUtil.getString(resultMsgDel, "");
}
public void updateSelItemsForDB(CollectionVO cartVO) {
if(cartVO == null || StringUtil.isEmpty(cartVO.getMbInfoId())) return;
String selItems = cartVO.getSelItems();
if(!selItems.startsWith("'")) {
String[] items = selItems.split(",");
String newSelItems = "";
for(String item : items) {
if(StringUtil.isEmpty(item)) continue;
if(newSelItems.length() > 0) newSelItems += ",";
newSelItems += "'" + item + "'";
}
cartVO.setSelItems(newSelItems);
}
log.debug("updateSelItemsForDB > " + cartVO.getSelItems());
}
/**

View File

@ -0,0 +1,11 @@
package nlib.col.service.impl;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.col.service.CollectionVO;
@Mapper("collectionDAO")
public interface CollectionDAO {
public CollectionVO selectMngOrgInfo(String masterId) throws Exception;
}

View File

@ -49,6 +49,10 @@ public class CollectionServiceImpl implements CollectionService {
@Resource(name = "dataApi")
private DataApi dataApi;
@Resource(name="collectionDAO")
private CollectionDAO collectionDAO;
/**
* 자료 상세정보를 조회한다.
*
@ -262,8 +266,17 @@ public class CollectionServiceImpl implements CollectionService {
vo.setRsrvPsblYn (cVO.getRsrvPsblYn());
vo.setReqPsblYn (cVO.getReqPsblYn());
vo.setInterestYn (cVO.getInterestYn());
}
// DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
// API에 존재하지 않을 경우, 추가 DB 조회
if(StringUtil.isEmpty(cVO.getMngOrgCd()) || StringUtil.isEmpty(cVO.getMngOrgNm())) {
CollectionVO dbVO = collectionDAO.selectMngOrgInfo(vo.getMasterId());
if(dbVO != null) {
vo.setMngOrgCd(dbVO.getMngOrgCd());
vo.setMngOrgNm(dbVO.getMngOrgNm());
}
}
}
//
// // DDDDDDDDDDDDDDDDDd 문화원 멀티 처리를 위해 테스트용으로 데이터 변경
// CollectionVO vo = list.get(cnt-2);

View File

@ -1,10 +1,13 @@
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;
@ -63,15 +66,16 @@ public class CartController extends NlibCommonController
* 로그인되지 않은 사용자의 경우, 쿠키에 저장된 값으로 처리한다.
*
* @param request
* @param cartTypeCd
* @param cartTyp
* eCd
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cart/listCartItems.do")
public String listCartItems(HttpServletRequest request, String message, String cartTypeCd, ModelMap model) throws Exception {
public String listCartItems(HttpServletRequest request, HttpServletResponse response, String message, String cartTypeCd, ModelMap model) throws Exception {
if(StringUtil.isEmpty(cartTypeCd)) cartTypeCd = "0"; // 대출 기본 설정
if(StringUtil.isEmpty(cartTypeCd)) cartTypeCd = "1"; // 대출 기본 설정
String mbInfoId = getMbInfoId(request);
@ -80,14 +84,24 @@ public class CartController extends NlibCommonController
// 카트 목록 가져오기
if(StringUtil.isEmpty(mbInfoId)) {
// 쿠키에서 가져오기
list = cartService.listCartItemsFromCookie(request, cartTypeCd);
} else {
list = cartService.listCartItems(mbInfoId, cartTypeCd);
}
list = cartService.listCartItemsFromCookie(request, response, cartTypeCd);
// 카트 목록 자료에 대한 상세자료 설정
collectionService.setDetailInfoForList(list);
// 문화원별 정령 처리
list = sortCollectionListByMngOrgCd(list);
} else {
list = cartService.listCartItems(mbInfoId, cartTypeCd);
// 카트 목록 자료에 대한 상세자료 설정
collectionService.setDetailInfoForList(list);
}
if(StringUtil.isNotEmpty(message) && message.startsWith("%")) {
message = StringUtil.decodeUrl(message);
}
model.addAttribute("list", list);
model.addAttribute("cartTypeCd", cartTypeCd);
model.addAttribute("message", message);
@ -95,6 +109,48 @@ public class CartController extends NlibCommonController
return "nlib/cart/listCartItems";
}
/**
* 자료 목록을 문화원별로 정렬하여 리턴한다.
*
* @param list
* @return
*/
public List<CollectionVO> sortCollectionListByMngOrgCd(List<CollectionVO> list) {
if(list == null || list.size() < 1) return list;
Map<String, List<CollectionVO>> orgMap = new HashMap<String, List<CollectionVO>>();
for(CollectionVO vo : list) {
String mngOrgCd = vo.getMngOrgCd();
if(StringUtil.isEmpty(mngOrgCd)) {
mngOrgCd = "NONE";
vo.setMngOrgCd(mngOrgCd);
vo.setMngOrgNm("(없음)");
}
List<CollectionVO> orgList = orgMap.get(mngOrgCd);
if(orgList == null) {
orgList = new ArrayList<CollectionVO>();
}
orgList.add(vo);
orgMap.put(mngOrgCd, orgList);
}
List<CollectionVO> retList = new ArrayList<CollectionVO>();
for(String key : orgMap.keySet()) {
List<CollectionVO> orgList = orgMap.get(key);
for(CollectionVO vo : orgList) {
retList.add(vo);
}
}
return retList;
}
/**
* 카트 영역 구분코드를 변경한다. (대출 <-> 방문열람)
*
@ -105,20 +161,21 @@ public class CartController extends NlibCommonController
* @throws Exception
*/
@RequestMapping("/cart/changeCartType.do")
public String changeCartType(HttpServletRequest request, CollectionVO cartVO, ModelMap model) throws Exception {
public String changeCartType(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO, ModelMap model) throws Exception {
String message = null;
String mbInfoId = getMbInfoId(request);
if(StringUtil.isEmpty(mbInfoId)) {
cartService.changeCartTypeFromCookie(request, null);
message = cartService.changeCartTypeToCookie(request, response, cartVO);
} else {
cartVO.setMbInfoId(getMbInfoId(request));
message = cartService.changeCartType(cartVO);
}
if(message == null) message = "정상적으로 변경되었습니다.";
model.addAttribute("message", message);
model.addAttribute("message", StringUtil.encodeUrl(message));
model.addAttribute("cartTypeCd", cartVO.getCartTypeCd());
return "redirect:/cart/listCartItems.do";
}
@ -132,7 +189,7 @@ public class CartController extends NlibCommonController
* @throws Exception
*/
@RequestMapping("/cart/insertCartItemAjax.do")
public ResponseEntity<String> insertCartItemAjax(HttpServletRequest request, @RequestBody CollectionVO cartVO, ModelMap model) throws Exception {
public ResponseEntity<String> insertCartItemAjax(HttpServletRequest request, HttpServletResponse response, @RequestBody CollectionVO cartVO, ModelMap model) throws Exception {
log.debug("insertCartItemAjax > masterId = " + cartVO.getMasterId());
@ -152,11 +209,10 @@ public class CartController extends NlibCommonController
cartVO.setMbInfoId(mbInfoId);
cartVO.setRegId(mbInfoId);
message = cartService.insertCartItem(cartVO);
}
// 비회원인 경우
else {
message = cartService.insertCartItemToCookie(request, cartVO);
message = cartService.insertCartItemToCookie(request, response, cartVO);
}
if(message == null) {
@ -187,10 +243,16 @@ public class CartController extends NlibCommonController
}
@RequestMapping("/cart/deleteCartItems.do")
public String deleteCartItems(HttpServletRequest request, CollectionVO cartVO, ModelMap model) throws Exception {
public String deleteCartItems(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO, ModelMap model) throws Exception {
String mbInfoId = getMbInfoId(request);
cartVO.setMbInfoId(mbInfoId);
String message = cartService.deleteCartItems(cartVO);
String message = null;
if(!StringUtil.isEmpty(mbInfoId)) {
message = cartService.deleteCartItems(cartVO);
} else {
message = cartService.deleteCartItemsFromCookie(request, response, cartVO);
}
if(message == null) message = "정상적으로 삭제되었습니다.";
model.addAttribute("message", StringUtil.encodeUrl(message));

View File

@ -136,7 +136,7 @@ public class DataApiVO {
public List<HashMap<String, String>> getList(String listName) {
if(StringUtil.isEmpty(listName)) return null;
if(listMap == null && listMap.size() < 1) return null;
if(listMap == null || listMap.size() < 1) return null;
return listMap.get(listName);
}

View File

@ -87,6 +87,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/code/**").permitAll()
.antMatchers("/homes/**").permitAll()
.antMatchers("/homes/**").permitAll()
.antMatchers("/cart/**").permitAll()
.antMatchers("/bbs/**").permitAll()
.anyRequest().authenticated()
.and().formLogin()

View File

@ -1,6 +1,7 @@
package nlib.util;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
@ -123,7 +124,7 @@ public class StringUtil extends StringUtils {
}
/**
* Base64 인코딩한다.
* URLEncoder 인코딩한다.
*
* @return
*/
@ -142,6 +143,26 @@ public class StringUtil extends StringUtils {
return encodedStr;
}
/**
* URLDecoder로 디코딩한다.
*
* @return
*/
public static String decodeUrl(String str) {
if(isEmpty(str)) return "";
String decodedStr = null;
try {
decodedStr = URLDecoder.decode(str, "UTF-8");
} catch(Exception e) {
log.error("encodeUrl > Error while encoding for [" + str + "] " + e.toString());
decodedStr = str;
}
return decodedStr;
}
/**
* Base64로 인코딩한다.
*

View File

@ -74,7 +74,7 @@
<![CDATA[
UPDATE MB_CART SET DELETE_YN = 'Y', MOD_ID = #{modId}, MOD_DD = NOW()
WHERE MB_INFO_ID = #{mbInfoId}
AND MB_CART_ID IN (${selItems})
AND MASTER_ID IN (${selItems})
AND DELETE_YN = 'N'
]]>
</delete>
@ -83,7 +83,7 @@
<![CDATA[
UPDATE MB_CART SET CART_TYPE_CD = #{cartTypeCd}, MOD_ID = #{modId}, MOD_DD = NOW()
WHERE MB_INFO_ID = #{mbInfoId}
AND MB_CART_ID IN (${selItems})
AND MASTER_ID IN (${selItems})
AND DELETE_YN = 'N'
]]>
</update>

View File

@ -1,7 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?><!--Converted at: Wed May 11 15:49:38 KST 2016-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="CollectionDAO">
<mapper namespace="nlib.col.service.impl.CollectionDAO">
<select id="selectMngOrgInfo" parameterType="String" resultType="CollectionVO">
SELECT
A.MNG_ORG_CD
, B.DEPT_NM AS MNG_ORG_NM
FROM RG_MASTER A
LEFT OUTER JOIN SM_DEPT B ON A.MNG_ORG_CD = B.ORG_CD
WHERE A.MASTER_ID = #{masterId}
</select>
</mapper>
</mapper>

View File

@ -189,16 +189,7 @@ function fn_changeCartItems(cartTypeCd, cartTypeNm) {
cartTypeCd = <input type="text" id="cartTypeCd" name="cartTypeCd" value="${cartTypeCd }" />
mngOrgCd = <input type="text" id="mngOrgCd" name="mngOrgCd" value="" />
selItems = <input type="text" id="selItems" name="selItems" value="" />
message = ${message }
<br>
<c:if test='${cartTypeCd == "0"}'>
<a href="javascript:void(0);" onclick="fn_search('0')"><span style="color:red">전체</span></a>
</c:if>
<c:if test='${cartTypeCd != "0"}'>
<a href="javascript:void(0);" onclick="fn_search('0')"><span style="color:blue">전체</span></a>
</c:if>
&nbsp;&nbsp;|&nbsp;&nbsp;
<c:if test='${cartTypeCd == "1"}'>
<a href="javascript:void(0);" onclick="fn_search('1')"><span style="color:red">대출</span></a>
@ -268,10 +259,11 @@ function fn_changeCartItems(cartTypeCd, cartTypeNm) {
<tr>
<td>
chk_item_${cart.mngOrgCd }
<input type="checkbox" name="chk_item_${cart.mngOrgCd }" id="chk_item_${cart.mngOrgCd }" value="${cart.mbCartId }" /></td>
<input type="checkbox" name="chk_item_${cart.mngOrgCd }" id="chk_item_${cart.mngOrgCd }" value="${cart.masterId }" /></td>
<td>${cart.mbCartId }</td>
<td><img src="${cart.rprsThumbUrl }" width="30" height="40"> : ${cart.interestYn }</td>
<td>${cart.title }
<td>${cart.title }<br>
${cart.masterId }
${cart.mngOrgCd }
</td>

View File

@ -85,7 +85,7 @@
&nbsp;&nbsp;&nbsp;&nbsp; > useStatus = ${record.useStatus} <br />
&nbsp;&nbsp;&nbsp;&nbsp; > masterId = ${record.masterId} <br />
<input type="button" name="addCartBtn" id="addCartBtn" onclick="fn_addRentCart('${record.masterId}', '${record.mngOrgCd}', '${record.typeDivCd}', '${record.useStatus}')" value="관심자료 추가" />
<input type="button" name="addCartBtn" id="addCartBtn" onclick="fn_addRentCart('${record.masterId}', '${record.useStatus}')" value="관심자료 추가" />
<br />
</c:forEach>

View File

@ -6,7 +6,7 @@
*
*/
function fn_addRentCart(masterId, mngOrgCd, typeDivCd, useStatus) {
function fn_addRentCart(masterId, useStatus) {
/* useStatus
01 : 이용가능
@ -17,7 +17,7 @@ function fn_addRentCart(masterId, mngOrgCd, typeDivCd, useStatus) {
06 : 열람대기(대출불가능)
07 : 온라인열람만"
*/
fn_addRentCartItem(masterId, mngOrgCd, typeDivCd, useStatus
fn_addRentCartItem(masterId, useStatus
, function(data) {
if(data.code == "S") {
if(confirm(data.message + "\n카트로 이동하시겠습니까?")) {
@ -39,7 +39,7 @@ function fn_gotoCart() {
location.href = "/cart/listCartItems.do";
}
function fn_addRentCartItem(masterId, mngOrgCd, typeDivCd, useStatus, resolve, reject) {
function fn_addRentCartItem(masterId, useStatus, resolve, reject) {
var cartTypeCd = null;
@ -73,8 +73,6 @@ function fn_addRentCartItem(masterId, mngOrgCd, typeDivCd, useStatus, resolve, r
type : "POST",
data: JSON.stringify({
masterId : masterId,
mngOrgCd : mngOrgCd,
typeDivCd : typeDivCd,
cartTypeCd : cartTypeCd
}),
success : function(data) {