카트 연동 처리 보완

This commit is contained in:
KNKIM 2021-11-12 18:02:57 +09:00
parent c564adb49e
commit 6ae986e3ce
9 changed files with 75 additions and 36 deletions

View File

@ -47,7 +47,7 @@ public interface ReadService {
* @param mngOrgCd
* @return
*/
public List<CollectionVO> insertReadItems(List<CollectionVO> list, String mbInfoId, CollectionVO readVO) throws Exception;
public List<CollectionVO> insertReadItems(List<CollectionVO> list, String mbInfoId, CollectionVO readVO, boolean fromCart) throws Exception;
/**

View File

@ -27,6 +27,9 @@ public class ReadServiceImpl implements ReadService {
@Resource(name="readDAO")
private ReadDAO readDAO;
@Resource(name="cartDAO")
private CartDAO cartDAO;
@Resource(name="informService")
private InformService informService;
@ -53,7 +56,7 @@ public class ReadServiceImpl implements ReadService {
* @param mngOrgCd
* @return
*/
public List<CollectionVO> insertReadItems(List<CollectionVO> list, String mbInfoId, CollectionVO readVO) throws Exception {
public List<CollectionVO> insertReadItems(List<CollectionVO> list, String mbInfoId, CollectionVO readVO, boolean fromCart) throws Exception {
if(list == null || list.size() < 1) {
log.error("insertReadItems > 열람 신청 대상 목록이 없습니다.");
@ -130,9 +133,26 @@ public class ReadServiceImpl implements ReadService {
reqVO.putInfoItem("jsonMasterId", jsonMasterId);
resVO = dataApi.request(reqVO);
CollectionVO rVO = null;
cVO.setResult(resVO.getResultCode(), resVO.getResultMessage());
// 카트에서 신청하여 성공한 경우, 카트 처리완료 변경 작업
if(resVO != null && resVO.getResultCode() != null && resVO.getResultCode().startsWith("S") && fromCart) {
CollectionVO vVO = null;
for(int i=0; i<list.size(); i++) {
vVO = list.get(i);
if(StringUtil.isEmpty(vVO.getMasterId())) continue;
// 카트에서의 처리 여부 업데이트
if(fromCart) {
vVO.setMbInfoId(mbInfoId);
vVO.setCartProcDivCd("V"); // 방문열람신청완료
vVO.setModId(mbInfoId);
int retUpdateProc = cartDAO.changeCartProcDivCd(vVO);
log.debug("insertReadItems > changeCartProcDivCd=" + retUpdateProc);
}
}
}
readVO.setResultCode(resVO.getResultCode());
readVO.setResultMessage(resVO.getResultMessage());
@ -140,8 +160,8 @@ public class ReadServiceImpl implements ReadService {
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.setReqId(resVO.getInfoItem("reqId", "")); // 열람신청번호
readVO.setReqDd(resVO.getInfoItem("reqDd", "")); // 열람신청일자
readVO.setSelItems(resVO.getInfoItem("masterId")); // 자료번호
} else {
readVO.setRsrvId(null); // 열람신청번호

View File

@ -149,7 +149,7 @@ public class ReadController extends NlibCommonController {
List<CollectionVO> list = collectionService.makeListOfCollectionVO(selItems);
list = readService.insertReadItems(list, mbInfoId, readVO);
list = readService.insertReadItems(list, mbInfoId, readVO, fromCart);
list = collectionService.setDetailInfoForList(list, mbInfoId, NlibProperty.getString("thumbnail.image.url.small"));
model.addAttribute("readVO", readVO);
@ -267,15 +267,15 @@ public class ReadController extends NlibCommonController {
resultMessage = "로그인하신 후, 이용바랍니다.";
}
if(StringUtil.isEmpty(searchVO.getMngOrgCd())) {
if(resultMessage != null && StringUtil.isEmpty(searchVO.getMngOrgCd())) {
resultMessage = "문화원정보가 부적합합니다. 다시 요청하여 주시기 바랍니다.";
}
if(StringUtil.isEmpty(searchVO.getReqId())) {
if(resultMessage != null && StringUtil.isEmpty(searchVO.getReqId())) {
resultMessage = "취소할 방문열람신청번호 정보가 부적합합니다. 다시 요청하여 주시기 바랍니다.";
}
if(StringUtil.isEmpty(searchVO.getMasterId())) {
if(resultMessage != null && StringUtil.isEmpty(searchVO.getMasterId())) {
resultMessage = "취소할 자료정보 정보가 부적합합니다. 다시 요청하여 주시기 바랍니다.";
}

View File

@ -273,11 +273,9 @@ public class StringUtil extends StringUtils {
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
}
if(4 <= tmpDateStr.length() && tmpDateStr.length() < 6) return tmpDateStr.substring(0, 4); // 연도만 있는 경우
else if(6 <= tmpDateStr.length() && tmpDateStr.length() < 8) return tmpDateStr.substring(0, 4) + "-" + tmpDateStr.substring(4, 6); // YYYY-MM
else if(8 <= tmpDateStr.length()) return tmpDateStr.substring(0, 4) + "-" + tmpDateStr.substring(4, 6) + "-" + tmpDateStr.substring(6, 8); // YYYY-MM-DD
return defaultStr;
}

View File

@ -57,6 +57,7 @@
WHERE MB_INFO_ID = #{mbInfoId}
AND MASTER_ID = #{masterId}
AND DELETE_YN = 'N'
AND IFNULL(A.CART_PROC_DIV_CD, 'N') = 'N'
</select>
<insert id="insertCartItem" parameterType="CollectionVO">

View File

@ -158,15 +158,6 @@ function fn_changeCartItems(cartTypeCd, cartTypeNm) {
$("#frm").submit();
}
function fn_changeInterest(masterId, onOff) {
alert("관심등록/삭제 준비중 : " + masterId + ", " + onOff);
}
function fn_gotoDetail(masterId) {
alert("상세보기 준비중 : " + masterId);
}
// 대출신청으로 이동
function fn_appRent() {
@ -311,17 +302,17 @@ $(document).ready(function() {
<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="${cart.rprsThumbUrl }" alt="" width="60" height="91" title="상세보기" onclick="fn_gotoDetail('${cart.masterId }')"></a>
<a href="javascript:void(0)"><img src="${cart.rprsThumbUrl }" alt="" width="60" height="91" title="상세보기" onclick="gfn_getDetail('${cart.masterId }')"></a>
<sec:authorize access="isAuthenticated()">
<c:if test='${cart.MUseYn == "Y"}'>
<span class="favorites" onclick="fn_changeInterest('${cart.masterId }', 'off')" title="관심자료에서 삭제합니다.">
<span id="favorites_${cart.masterId }" class="favorites" onclick="fn_changeInterestBtn('${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>
</c:if>
<c:if test='${cart.MUseYn != "Y"}'>
<span class="favorites" onclick="fn_changeInterest('${cart.masterId }', 'on')" title="관심자료로 등록합니다.">
<span class="favorites" onclick="fn_changeInterestBtn('${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>
@ -342,7 +333,7 @@ $(document).ready(function() {
</c:if>
</div>
<div class="title"><a href="javascript:void(0)" onclick="fn_gotoDetail('${cart.masterId }')" title="상세보기">${cart.title }</a></div>
<div class="title"><a href="javascript:void(0)" onclick="gfn_getDetail('${cart.masterId }')" title="상세보기">${cart.title }</a></div>
</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>

View File

@ -294,7 +294,7 @@ $(document).ready(function() {
<div class="v-date">
<select id="hopeReqPridDtmFrom" name="hopeReqPridDtmFrom">
<c:forEach var="dtItem" items="${listDates}" varStatus="status">
<option value="${dtItem.dt }">${dtItem.dt } (${dtItem.dtName })</option>
<option value="${dtItem.dt }">${dtItem.dt }</option>
</c:forEach>
</select>
<span>에서</span>
@ -302,7 +302,7 @@ $(document).ready(function() {
<c:forEach var="dtItem" items="${listDates}" varStatus="status">
<option value="${dtItem.dt }"
<c:if test='${status.count == 2}'>selected</c:if>
>${dtItem.dt } (${dtItem.dtName })</option>
>${dtItem.dt }</option>
</c:forEach>
</select>
<span>사이</span>

View File

@ -244,12 +244,12 @@ $(document).ready(function() {
<div class="compl-box">
<div class="compl-icon"><img src="/images/icon/icon-cart-com.png" alt="체크 아이콘"></div>
<c:if test='${readVO.resultMessage == "S"}'>
<div class="compl-text">자료 <span>${totCnt}</span>건 방문열람신청이 접수되었습니다. [${readVO.rsrvId}]</div>
<c:if test='${readVO.resultCode == "S"}'>
<div class="compl-text">자료 <span>${totCnt}</span>건 방문열람신청이 접수되었습니다.</div>
<div class="compl-date">(희망방문일자: ${readVO.hopeReqPridDtmFrom} ~ ${readVO.hopeReqPridDtmTo})</div>
</c:if>
<c:if test='${readVO.resultMessage != "S"}'>
<c:if test='${readVO.resultCode != "S"}'>
<div class="compl-text">처리에 실패하였습니다.</div>
<div class="compl-date">${readVO.resultMessage } (${readVO.resultCode })</div>
</c:if>

View File

@ -134,17 +134,19 @@ function fn_search(reqStatusDivCd) {
var statusHtml1 = "";
var statusHtml2 = "";
var statusHtml3 = "";
if(obj.reqStatusDivCd == null) {
statusHtml1 = '<span class="ti imposs">-<span class="da"></span></span>';
} else if(obj.reqStatusDivCd == "A0") { // 신청
statusHtml1 = '<span class="ti imposs">' + obj.reqStatusDivNm + '<span class="da"></span></span>';
statusHtml2 = '<button type="button" onclick="fn_cancel(\"' + obj.title + '\",\"' + obj.mngOrgCd + '\", \"' + obj.reqId + '\", \"' + obj.masterId + '\")>취소</button>';
statusHtml2 = '<button type="button" onclick="fn_cancel(\'' + obj.title + '\',\'' + obj.mngOrgCd + '\', \'' + obj.reqId + '\', \'' + obj.masterId + '\')">취소</button>';
} else if(obj.reqStatusDivCd == "A1") { // 승인
statusHtml1 = '<span class="ti poss">' + obj.reqStatusDivNm + '<span class="da">' + fn_formatDateStr(obj.modDd,"-") + '</span></span>';
statusHtml2 = '<button type="button" onclick="fn_cancel(\"' + obj.title + '\",\"' + obj.mngOrgCd + '\", \"' + obj.reqId + '\", \"' + obj.masterId + '\")>취소</button>';
statusHtml2 = '<button type="button" onclick="fn_cancel(\'' + obj.title + '\',\'' + obj.mngOrgCd + '\', \'' + obj.reqId + '\', \'' + obj.masterId + '\')">취소</button>';
} else if(obj.reqStatusDivCd == "A2") { // 반려
statusHtml1 = '<span class="ti poss">' + obj.reqStatusDivNm + '<span class="da">' + fn_formatDateStr(obj.modDd,"-") + '</span></span>';
statusHtml2 = '<button type="button" onclick="fn_reson(\"' + obj.title + '\",\"' + obj.mngOrgCd + '\", \"' + obj.reqId + '\", \"' + obj.masterId + '\")>사유</button>';
statusHtml2 = '<button type="button" onclick="fn_reson(\'' + obj.reqId + '\')">사유</button>';
statusHtml3 = '<div id="rejected_reason_' + obj.reqId + '" style="display:none;">' + obj.rtnCont + '</div>';
} else if(obj.reqStatusDivCd == "R") { // 열람완료
statusHtml1 = '<span class="ti imposs">' + obj.reqStatusDivNm + '<span class="da">' + fn_formatDateStr(obj.modDd,"-") + '</span></span>';
statusHtml2 = '';
@ -153,7 +155,7 @@ function fn_search(reqStatusDivCd) {
statusHtml2 = '';
}
div.append($('<div />').attr('class', 'n-state').html(statusHtml1 + statusHtml2));
div.append($('<div />').attr('class', 'n-state').html(statusHtml1 + statusHtml2 + statusHtml3));
$("div.list-data").append(div);
@ -167,6 +169,16 @@ function fn_search(reqStatusDivCd) {
});
}
function fn_reson(reqId) {
$("#divRejectedReasonDetail").html($("#rejected_reason_" + reqId).text());
$("#divRejectedReason").fadeIn();
}
function fn_closeReason() {
$("#divRejectedReason").fadeOut();
$("#divRejectedReasonDetail").html("");
}
function fn_cancel(title, mngOrgCd, reqId, masterId) {
if(!confirm(title + " 방문열람을 취소하시겠습니까?")) return;
@ -292,3 +304,20 @@ function fn_search(reqStatusDivCd) {
</div>
<!-- 소장자료 반려 팝업 -->
<div id="divRejectedReason" class="pop-return" style="display:none;">
<div class="row Title">
<p>지방문화원 소장자료</p>
<h3>반려사유</h3>
</div>
<div class="inner">
<div class="row Text">
<div class="text-box mCustomScrollbar" data-mcs-theme="dark-2" id="divRejectedReasonDetail"></div>
</div>
<div class="row btn-box">
<button type="button" class="btn btn-color" onclick="fn_closeReason()">확인</button>
</div>
<button type="button" class="return-close" onclick="fn_closeReason()"></button>
</div>
<div class="Bg"></div>
</div>