fix : 쇼핑몰 주문완료 화면 - 구독서비스 주문완료 분기 추가

This commit is contained in:
이대환
2026-03-27 11:49:32 +09:00
parent 3007f0780d
commit 5aa87c2526
8 changed files with 238 additions and 71 deletions

View File

@@ -996,6 +996,14 @@ public interface BOOrdrMapper {
public List<DataMap> selectMbrSubsvcOrdrList(BOOrdrDlvyVO ordrDlvyVO); public List<DataMap> selectMbrSubsvcOrdrList(BOOrdrDlvyVO ordrDlvyVO);
/**
* 사용자 > 주문완료 > 구독서비스 주문 목록 조회
* @param ordrDlvyVO
* @return List<DataMap>
*/
public List<DataMap> selectOrdrSubsvcDtllList(BOOrdrDlvyVO ordrDlvyVO);
/** /**
* 사용자 > 구독서비스 결제 > 구독서비스 주문 상품 목록 조회 * 사용자 > 구독서비스 결제 > 구독서비스 주문 상품 목록 조회
* @param subsvcVO * @param subsvcVO

View File

@@ -1981,7 +1981,13 @@ public class BOOrdrService{
DataMap ordrDtl = mapper.selectOrdrDtl(ordrVO); DataMap ordrDtl = mapper.selectOrdrDtl(ordrVO);
List<DataMap> goodsList = mapper.selectOrdrGoodsDtllList(ordrVO); List<DataMap> goodsList = new ArrayList<>();
if("Y".equals(ordrDlvyVO.getSubsvcAt())) {
int subsvcInnb = ((BigInteger) ordrDtl.get("subsvcInnb")).intValue();
goodsList = mapper.selectOrdrSubsvcDtllList(ordrDlvyVO);
} else {
goodsList = mapper.selectOrdrGoodsDtllList(ordrVO);
}
List<DataMap> dscntList = selectOrdrGoodsDtllDscntList(ordrVO); List<DataMap> dscntList = selectOrdrGoodsDtllDscntList(ordrVO);
@@ -2025,7 +2031,7 @@ public class BOOrdrService{
content.put("refundList", refundList); content.put("refundList", refundList);
content.put("total", total); content.put("total", total);
content.put("mlgAccmlNtcList", mlgAccmlNtcList); content.put("mlgAccmlNtcList", mlgAccmlNtcList);
content.put("mlgAccmlAmt", goodsList.stream().mapToLong(obj -> (long) obj.get("mlgAmt")).sum()); content.put("mlgAccmlAmt", goodsList.stream().mapToLong(obj -> ((Number) obj.get("mlgAmt")).longValue()).sum());
content.put("totalDscntAmt", dscntList.stream().mapToLong(obj -> ((BigDecimal) obj.get("dscntAmt")).longValue()).sum()); content.put("totalDscntAmt", dscntList.stream().mapToLong(obj -> ((BigDecimal) obj.get("dscntAmt")).longValue()).sum());
return content; return content;
@@ -6024,6 +6030,7 @@ public class BOOrdrService{
*/ */
public Map<String, Object> selectOrdrCompt(BOOrdrVO ordrVO) { public Map<String, Object> selectOrdrCompt(BOOrdrVO ordrVO) {
BOOrdrDlvyVO ordrDlvyVO = new BOOrdrDlvyVO(); BOOrdrDlvyVO ordrDlvyVO = new BOOrdrDlvyVO();
ordrVO.setSubsvcAt((String) mapper.selectOrdrDtl(ordrVO).get("subsvcAt"));
BeanUtils.copyProperties(ordrVO, ordrDlvyVO); BeanUtils.copyProperties(ordrVO, ordrDlvyVO);

View File

@@ -36,6 +36,8 @@ public class BOOrdrDlvyVO extends AbstractVO {
private String sysDvCd; // 시스템 구분 코드 private String sysDvCd; // 시스템 구분 코드
private String subsvcAt; // 구독서비스 여부
/** 현재 주문 상태 */ /** 현재 주문 상태 */
private String currOrdrSttusCd; private String currOrdrSttusCd;

View File

@@ -151,6 +151,9 @@ public class BOOrdrVO extends AbstractVO {
/** 장바구니 고유번호 배열 */ /** 장바구니 고유번호 배열 */
private String[] cartInnbs; private String[] cartInnbs;
/** 구독서비스 주문여부 */
private String subsvcAt;
/** 구독서비스 고유번호 */ /** 구독서비스 고유번호 */
private String subsvcInnb; private String subsvcInnb;

View File

@@ -791,7 +791,10 @@ public class OrdrController {
}); });
LinkedHashMap goodsOne = ((List<LinkedHashMap>) paramData.get("goodsList")).get(0); LinkedHashMap goodsOne = ((List<LinkedHashMap>) paramData.get("goodsList")).get(0);
if(goodsOne.containsKey("subsvcInnb")) { Boolean subsvcAt = goodsOne.containsKey("subsvcInnb");
if(subsvcAt) {
model.addAttribute("subsvcInnb", goodsOne.get("subsvcInnb"));
BOSubsvcVO subsvcVO = new BOSubsvcVO(); BOSubsvcVO subsvcVO = new BOSubsvcVO();
subsvcVO.setSopmalCd((String) goodsOne.get("sopmalCd")); subsvcVO.setSopmalCd((String) goodsOne.get("sopmalCd"));
subsvcVO.setSubsvcInnb(goodsOne.get("subsvcInnb").toString()); subsvcVO.setSubsvcInnb(goodsOne.get("subsvcInnb").toString());
@@ -1082,6 +1085,12 @@ public class OrdrController {
log.debug("=================insertKcpSetle after "); log.debug("=================insertKcpSetle after ");
model.addAttribute("paramVO", payVO); model.addAttribute("paramVO", payVO);
if ("1".equals(content.get("status"))) { // 에러처리
String subsvcInnb = request.getParameter("subsvc_innb");
if(subsvcInnb != "") {
model.addAttribute("subsvcInnb", subsvcInnb);
}
}
return "sopmal/ordr/OrdrRspnsKcpPayR"; return "sopmal/ordr/OrdrRspnsKcpPayR";
} }

View File

@@ -5594,6 +5594,51 @@
LIMIT #{recordCountPerPage} OFFSET #{firstIndex} LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select> </select>
<!-- 사용자 > 주문완료 > 구독서비스 주문 목록 조회 -->
<select id="selectOrdrSubsvcDtllList" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrDlvyVO" resultType="dataMap">
<![CDATA[
SELECT GO.SOPMAL_CD
, GS.IMG AS GOODS_IMG_COURS
, GS.SUBSVC_NM AS GOODS_NM
, GS.SUBSVC_GNR_NM AS OPTN_NM
, ITEM.INPUT_OPTN_TEXT
, ITEM.CNT AS ORDR_QY
, GS.SUBSVC_INNB AS GOODS_INNB
, GO.RL_SETLE_AMT AS SLEPRIC
, ITEM.DSCNT_AMT
, ROUND((IFNULL(GO.RL_SETLE_AMT, 0) - IFNULL(ITEM.DSCNT_AMT, 0))) AS APPLY_DSCNT_AMT
, ITEM.MLG_AMT
FROM GC_ORDER GO
INNER JOIN GC_SUBSVC GS ON GO.SUBSVC_INNB = GS.SUBSVC_INNB
INNER JOIN (
SELECT GOI.SOPMAL_CD
, GOI.ORDR_INNB
, MAX(GOI.GOODS_INNB) AS GOODS_INNB
, MAX(GOIO.ORDR_DLVY_INNB) AS ORDR_DLVY_INNB
, COUNT(DISTINCT GOI.ORDR_GOODS_INNB) AS CNT
, SUM(GOIO.ORDR_QY) AS ORDR_QY
, MAX(FN_GET_ORDER_INPUT_OPTN(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_INNB, GOIO.ORDR_GOODS_OPTN_INNB)) AS INPUT_OPTN_TEXT
, MAX(GOI.GOODS_IMG_COURS) AS GOODS_IMG_COURS
, SUM(FN_GET_ORDER_GOODS_DSCNT_AMT_2(GOI.SOPMAL_CD, GOI.ORDR_GOODS_INNB, GOIO.ORDR_GOODS_OPTN_INNB)) AS DSCNT_AMT
, SUM(FN_GET_ORDER_ACCML_MLG_AMT(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_INNB, GOIO.ORDR_GOODS_OPTN_INNB)) AS MLG_AMT
FROM GC_ORDER_ITEM GOI
INNER JOIN GC_ORDER_ITEM_OPTION GOIO ON GOI.SOPMAL_CD = GOIO.SOPMAL_CD
AND GOI.ORDR_GOODS_INNB = GOIO.ORDR_GOODS_INNB
WHERE GOI.SOPMAL_CD = #{sopmalCd}
AND GOI.ORDR_INNB = #{ordrInnb}
AND GOI.GOODS_KND_CD = '01'
) ITEM ON ITEM.SOPMAL_CD = GO.SOPMAL_CD
AND ITEM.ORDR_INNB = GO.ORDR_INNB
LEFT JOIN GC_ORDER_SETLE GOS ON GOS.SOPMAL_CD = GO.SOPMAL_CD
AND GOS.ORDR_INNB = GO.ORDR_INNB
WHERE GO.USE_AT = 'Y'
AND GO.SUBSVC_AT = 'Y' /*구독서비스*/
AND GO.SOPMAL_CD = #{sopmalCd}
AND GO.ORDR_INNB = #{ordrInnb}
ORDER BY GO.REGIST_DT desc
]]>
</select>
<!-- 사용자 > 구독서비스 결제 > 구독서비스 주문 상품 목록 조회 --> <!-- 사용자 > 구독서비스 결제 > 구독서비스 주문 상품 목록 조회 -->
<select id="selectSubsvcGoodsList" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO" resultType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO"> <select id="selectSubsvcGoodsList" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO" resultType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
WITH RECURSIVE seq AS ( WITH RECURSIVE seq AS (

View File

@@ -58,7 +58,10 @@
/* 주문/배송 목록 화면 이동 버튼 선택 이벤트 */ /* 주문/배송 목록 화면 이동 버튼 선택 이벤트 */
$('#btnOrdrList').on('click', function() { $('#btnOrdrList').on('click', function() {
location.href = '<c:url value="/sopmal/mpage/ordr/selectMbrOrdrListInqire"/>'; const subsvcAt = '${data.order.subsvcAt}';
location.href = subsvcAt === 'Y'
? '<c:url value="/sopmal/mpage/ordr/selectMbrSubsvcOrdrListInqireRForm"/>'
: '<c:url value="/sopmal/mpage/ordr/selectMbrOrdrListInqire"/>';
}); });
} }
@@ -94,6 +97,90 @@
<h2 class="cartOrder__title">주문완료</h2> <h2 class="cartOrder__title">주문완료</h2>
<div class="sub-right-content"> <div class="sub-right-content">
<c:choose> <c:choose>
<c:when test="${order.subsvcAt eq 'Y'}">
<div class="sub-right-content__section">
<div class="sub-right-content__section">
<div class="cartOrder__list">
<div class="table-wrapper">
<table class="table vertical">
<caption>주문상세내역</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 40px;">
<col style="width: 10%;">
</colgroup>
<thead>
<tr>
<th>상품명</th>
<th>수량</th>
<th>상품금액</th>
<th>할인금액</th>
<th>할인적용금액</th>
<th>적립금</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty data.goodsList}">
<c:forEach var="goods" items="${data.goodsList}">
<tr>
<td>
<div class="cartItem">
<div class="cartItem__image">
<img src="<c:out value="${cdnurl}${goods.goodsImgCours}"/>" onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${goods.goodsNm}"/>">
</div>
<div class="cartItem__productInfo">
<a href="javascript:void(0);" class="cartItem__productTitle"><c:out value="${goods.goodsNm}"/></a>
<span class="cartItem__productOption"><span class="option-badge">옵션</span> <c:out value="${goods.optnNm}"/></span>
<c:if test="${not empty goods.inputOptnText}">
<span class="cartItem__productOption"><c:out value="${goods.inputOptnText}"/></span>
</c:if>
</div>
</div>
</td>
<td>
<span><fmt:formatNumber value="${goods.ordrQy}" pattern="#,###"/></span>
<input type="hidden" class="goodsInnb" name="goodsInnb" value ="${goods.goodsInnb}"/>
</td>
<td>
<span class="cartItem__normalPrice">
<span class=" comma"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/></span>
<span class="priceUnit">${curUnit}</span>
</span>
</td>
<td>
<span class="cartItem__discountPrice">
<span class="cartItem__discountMinus">(-)</span>
<span class="comma"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/></span>
<span class="priceUnit">${curUnit}</span>
</span>
</td>
<td>
<span class="cartItem__afterPrice">
<span class="comma"><fmt:formatNumber value="${goods.applyDscntAmt}" pattern="#,###"/></span>
<span class="priceUnit">${curUnit}</span>
</span>
</td>
<td>
<span class="cartItem__mileage">
<span class=" comma"><fmt:formatNumber value="${goods.mlgAmt}" pattern="#,###"/></span>
<span class="priceUnit">${curUnit}</span>
</span>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr><td colspan="100%" ><spring:message code="common.nodata"/></td></tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
</div>
</div>
</c:when>
<c:when test="${'04' == order.ordrTyCd || '05' == order.ordrTyCd}"> <c:when test="${'04' == order.ordrTyCd || '05' == order.ordrTyCd}">
<div class="sub-right-content__section"> <div class="sub-right-content__section">
<c:choose> <c:choose>
@@ -335,44 +422,45 @@
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
<c:if test="${'04' != order.ordrTyCd && '05' != order.ordrTyCd}"> <c:if test="${order.subsvcAt eq 'Y' || '04' != order.ordrTyCd && '05' != order.ordrTyCd}">
<div class="sub-right-content__section"> <div class="sub-right-content__section">
<h3 class="sub-right-content__innerTitle">배송지 정보</h3> <h3 class="sub-right-content__innerTitle">배송지 정보</h3>
<c:choose> <c:choose>
<c:when test="${not empty data.shippingList}"> <c:when test="${not empty data.shippingList}">
<c:forEach var="shipping" items="${data.shippingList}" varStatus="status"> <c:forEach var="shipping" items="${data.shippingList}" varStatus="status">
<div class="table-wrapper orderDetail__table"> <c:if test="${order.subsvcAt ne 'Y' || status.first}">
<table class="table"> <div class="table-wrapper orderDetail__table">
<caption>배송지 정보</caption> <table class="table">
<colgroup> <caption>배송지 정보</caption>
<col style="width: 220px;"> <colgroup>
<col style="width: auto;"> <col style="width: 220px;">
</colgroup> <col style="width: auto;">
<tbody> </colgroup>
<tr> <tbody>
<th>받는분</th> <tr>
<td><c:out value="${shipping.recpntNm}"/></td> <th>받는분</th>
</tr> <td><c:out value="${shipping.recpntNm}"/></td>
<tr> </tr>
<th>주소</th> <tr>
<td> <th>주소</th>
<c:out value="${not empty shipping.dlvylcZip ? '(' += shipping.dlvylcZip += ')' : ''}"/> <td>
<c:out value="${shipping.adres}"/> <c:out value="${not empty shipping.dlvylcZip ? '(' += shipping.dlvylcZip += ')' : ''}"/>
<c:out value="${shipping.dlvylcAdresDtl}"/> <c:out value="${shipping.adres}"/>
</td> <c:out value="${shipping.dlvylcAdresDtl}"/>
</tr> </td>
<tr> </tr>
<th>휴대폰번호</th> <tr>
<td><c:out value="${shipping.recpntMbtlnb}"/></td> <th>휴대폰번호</th>
</tr> <td><c:out value="${shipping.recpntMbtlnb}"/></td>
<tr> </tr>
<th>배송 시 요청사항</th> <tr>
<td><c:out value="${shipping.dlvyMssageCn}"/></td> <th>배송 시 요청사항</th>
</tr> <td><c:out value="${shipping.dlvyMssageCn}"/></td>
</tbody> </tr>
</table> </tbody>
</div> </table>
</div>
</c:if>
</c:forEach> </c:forEach>
</c:when> </c:when>
<c:otherwise> <c:otherwise>

View File

@@ -39,7 +39,10 @@
/* 주문/배송 목록 화면 이동 버튼 선택 이벤트 */ /* 주문/배송 목록 화면 이동 버튼 선택 이벤트 */
$('#btnOrdrList').on('click', function() { $('#btnOrdrList').on('click', function() {
location.href = '<c:url value="/sopmal/mpage/ordr/selectMbrOrdrListInqire"/>'; const subsvcAt = '${data.order.subsvcAt}';
location.href = subsvcAt === 'Y'
? '<c:url value="/sopmal/mpage/ordr/selectMbrSubsvcOrdrListInqireRForm"/>'
: '<c:url value="/sopmal/mpage/ordr/selectMbrOrdrListInqire"/>';
}); });
/* 주문번호 복사 버튼 선택 이벤트 */ /* 주문번호 복사 버튼 선택 이벤트 */
@@ -152,7 +155,7 @@
</div> </div>
</div> </div>
<c:choose> <c:choose>
<c:when test="${'04' != order.ordrTyCd && '05' != order.ordrTyCd}"> <c:when test="${order.subsvcAt eq 'Y' || '04' != order.ordrTyCd && '05' != order.ordrTyCd}">
<div class="sub-box"> <div class="sub-box">
<div class="orderDetailProduct"> <div class="orderDetailProduct">
<div class="orderDetailProduct__top" role="button" tabindex="0"> <div class="orderDetailProduct__top" role="button" tabindex="0">
@@ -164,38 +167,40 @@
<c:choose> <c:choose>
<c:when test="${not empty data.shippingList}"> <c:when test="${not empty data.shippingList}">
<c:forEach var="shipping" items="${data.shippingList}" varStatus="status"> <c:forEach var="shipping" items="${data.shippingList}" varStatus="status">
<div class="table-wrapper orderDetail__table"> <c:if test="${order.subsvcAt ne 'Y' || status.first}">
<table class="table"> <div class="table-wrapper orderDetail__table">
<colgroup> <table class="table">
<col style="width: 40%"> <colgroup>
<col style="width: 60%"> <col style="width: 40%">
</colgroup> <col style="width: 60%">
<tbody> </colgroup>
<tr> <tbody>
<th>받는분</th> <tr>
<td><c:out value="${shipping.recpntNm}"/></td> <th>받는분</th>
</tr> <td><c:out value="${shipping.recpntNm}"/></td>
<tr> </tr>
<th>주소</th> <tr>
<td> <th>주소</th>
<span class="orderDetail__table__address"> <td>
<c:out value="${not empty shipping.dlvylcZip ? '(' += shipping.dlvylcZip += ')' : ''}"/> <span class="orderDetail__table__address">
<c:out value="${shipping.adres}"/> <c:out value="${not empty shipping.dlvylcZip ? '(' += shipping.dlvylcZip += ')' : ''}"/>
<c:out value="${shipping.dlvylcAdresDtl}"/> <c:out value="${shipping.adres}"/>
</span> <c:out value="${shipping.dlvylcAdresDtl}"/>
</td> </span>
</tr> </td>
<tr> </tr>
<th>휴대폰번호</th> <tr>
<td><c:out value="${shipping.recpntMbtlnb}"/></td> <th>휴대폰번호</th>
</tr> <td><c:out value="${shipping.recpntMbtlnb}"/></td>
<tr> </tr>
<th>배송 시 요청사항</th> <tr>
<td><c:out value="${shipping.dlvyMssageCn}"/></td> <th>배송 시 요청사항</th>
</tr> <td><c:out value="${shipping.dlvyMssageCn}"/></td>
</tbody> </tr>
</table> </tbody>
</div> </table>
</div>
</c:if>
</c:forEach> </c:forEach>
</c:when> </c:when>
</c:choose> </c:choose>