Explorar o código

마이페이지 임시 커밋

card007 %!s(int64=5) %!d(string=hai) anos
pai
achega
5f42a287f4

+ 22 - 0
src/main/java/com/style24/front/biz/dao/TsfOrderChangeDao.java

@@ -3,7 +3,9 @@ package com.style24.front.biz.dao;
 import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.Point;
 
 /**
  * 주문 변경 Dao
@@ -24,4 +26,24 @@ public interface TsfOrderChangeDao {
 	 */
 	Collection<Order> getCancelListForMypage(Order order);
 
+	/**
+	 * 사용 상품권 정보 조회
+	 *
+	 * @param Order
+	 * @return Collection<GiftCard>
+	 * @author card007
+	 * @since 2021. 03. 02
+	 */
+	Collection<GiftCard> getUsedGiftcardInfo(Order order);
+
+	/**
+	 * 사용 포인트 정보 조회
+	 *
+	 * @param Order
+	 * @return Collection<Point>
+	 * @author card007
+	 * @since 2021. 03. 02
+	 */
+	Collection<Point> getUsedPointInfo(Order order);
+
 }

+ 26 - 0
src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java

@@ -15,7 +15,9 @@ import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.support.env.TscConstants;
 import com.style24.front.biz.dao.TsfOrderChangeDao;
 import com.style24.front.biz.dao.TsfOrderDao;
+import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.Point;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -72,4 +74,28 @@ public class TsfOrderChangeService {
 		return map;
 	}
 
+	/**
+	 * 사용 상품권 정보 조회
+	 *
+	 * @param Order
+	 * @return Collection<GiftCard>
+	 * @author card007
+	 * @since 2021. 03. 02
+	 */
+	public Collection<GiftCard> getUsedGiftcardInfo(Order order) {
+		return orderChangeDao.getUsedGiftcardInfo(order);
+	}
+
+	/**
+	 * 사용 포인트 정보 조회
+	 *
+	 * @param Order
+	 * @return Collection<Point>
+	 * @author card007
+	 * @since 2021. 03. 02
+	 */
+	public Collection<Point> getUsedPointInfo(Order order) {
+		return orderChangeDao.getUsedPointInfo(order);
+	}
+
 }

+ 7 - 10
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -462,18 +462,15 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("customerInfo", customer);
 
 
-		// // 주문목록 조회
-		// Collection<GagaMap> orderList = orderService.getOrderListForMypage(order);
-		//
-		// if (orderList.size() == 0) {
-		// 	mav.setViewName("redirect:/mypage/order/list/form");
-		// 	return mav;
-		// }
-		//
-		// mav.addObject("orderList", orderList);
-		
+		// 반품 가능 리스트 조회
 		mav.addObject("returnList", orderChangeService.getCancelListForMypage(order));
 
+		// 사용 상품권 정보 조회
+		mav.addObject("usedGiftCardInfo", orderChangeService.getUsedGiftcardInfo(order));
+
+		// 사용 포인트 정보 조회
+		mav.addObject("usedPointInfo", orderChangeService.getUsedPointInfo(order));
+
 		// 주문 결제정보 조회
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 

+ 49 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -17,7 +17,7 @@
 
 	<!-- 마이페이지 취소/반품 목록 조회 -->
 	<select id="getCancelListForMypage" parameterType="Order" resultType="Order">
-		/* TscOrder.getCancelListForMypage */
+		/* TscOrderChange.getCancelListForMypage */
 		SELECT O.ORD_NO
 		     , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d')				AS ORD_DT
 		     , OD.ORD_DTL_NO
@@ -57,6 +57,7 @@
 		     , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL THEN 0
 					ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
 				END												AS ORD_REQ_CHG_QTY
+		     , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
 		     , OD.SAVE_PNT_AMT
 		     , OD.SHIP_COMP_CD
 		     , OD.GIFT_PACK_YN
@@ -166,5 +167,51 @@
 		</where>
 		 ORDER BY OD.ORD_DTL_NO
 	</select>
-
+	
+	<!-- 사용 상품권 정보 조회 -->
+	<select id="getUsedGiftcardInfo" parameterType="Order" resultType="GiftCard">
+		/* TscOrderChange.getUsedGiftcardInfo */
+		SELECT CGH.ORD_NO
+			 , CGH.ORD_DTL_NO
+			 , SUM(CGH.GFCD_AMT) AS GFCD_AMT
+		  FROM TB_CUST_GIFTCARD_HST CGH
+		 INNER JOIN TB_CUST_GIFTCARD CG
+		    ON CG.CUST_GFCD_SQ = CGH.CUST_GFCD_SQ
+		 WHERE CGH.CUST_NO = #{custNo}
+		   AND CGH.ORD_NO = #{ordNo}
+		<if test="ordDtlNoArr != null">
+		   AND CGH.ORD_DTL_NO IN
+			<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		   AND OCCUR_GB = 'G074_12'
+		   AND NOW() BETWEEN CG.USE_ST_DATE AND CG.USE_EXP_DATE
+		 GROUP BY CGH.ORD_NO, CGH.ORD_DTL_NO
+		 ORDER BY CGH.ORD_NO, CGH.ORD_DTL_NO
+	</select>
+	
+	<!-- 사용 포인트 정보 조회 -->
+	<select id="getUsedPointInfo" parameterType="Order" resultType="Point">
+		/* TscOrderChange.getUsedPointInfo */
+		SELECT CPH.ORD_NO
+			 , CPH.ORD_DTL_NO
+			 , SUM(CPH.PNT_AMT) AS PNT_AMT
+		  FROM TB_CUST_POINT_HST CPH
+		  INNER JOIN TB_CUST_POINT CP
+		  ON CP.CUST_PNT_SQ = CPH.CUST_PNT_SQ
+		 WHERE CPH.CUST_NO = #{custNo}
+		   AND CPH.ORD_NO = #{ordNo}
+		<if test="ordDtlNoArr != null">
+		   AND CPH.ORD_DTL_NO IN
+			<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		   AND CPH.OCCUR_GB = 'G069_10'
+		   AND CP.EXP_BE_DT <![CDATA[>]]> NOW()
+		   AND CP.EXP_CMP_DT IS NULL
+		 GROUP BY CPH.ORD_NO, CPH.ORD_DTL_NO
+		 ORDER BY CPH.ORD_NO, CPH.ORD_DTL_NO
+	</select>
 </mapper>

+ 63 - 9
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -87,11 +87,11 @@
 												<div class="form_field">
 													<div class="select_custom type1">
 														<div class="combo">
-															<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${return.ordDtlNo}"/>
+															<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${return.ordDtlNo}, ordCanChgQty=${return.ordCanChgQty}"/>
 															<div class="select">선택</div>
 															<ul class="list" style="width:100px; margin:0 auto">
 																<li class="selected" value="0">선택</li>
-																<li th:if="${return.ordQty > 0}" th:each="num : ${#numbers.sequence(1,return.ordQty)}" th:value="${num}" th:text="${num}" onclick="fnChangeQty(this);"></li>
+																<li th:if="${return.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,return.ordCanChgQty)}" th:value="${num}" th:text="${num}" onclick="fnChangeQty(this);"></li>
 															</ul>
 														</div>
 													</div>
@@ -316,6 +316,10 @@
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	let returnList = [[${returnList.returnList}]];
+	let usedGiftCardInfo = [[${usedGiftCardInfo}]];
+	let usedPointInfo = [[${usedPointInfo}]];
+	let refundPoint = 0;
+	let refundGiftCard = 0;
 
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
@@ -350,13 +354,19 @@
 			// 반품 수량 설정
 			let chgQtyArr = [];
 			let ordDtlNoArr = [];
+			let ordCanChgQtyArr = [];
 			$.each($('input[name=chgQty]'), function(idx, item) {
 				let chgQty = $(item).val();
 				let ordDtlNo = $(item).attr('ordDtlNo');
+				let ordCanChgQty = $(item).attr('ordCanChgQty');
 
 				chgQtyArr.push(Number(chgQty));
 				ordDtlNoArr.push(Number(ordDtlNo));
+				ordCanChgQtyArr.push(Number(ordCanChgQty));
 			});
+			
+			let refundPoint = fnCalculatePoint(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr);
+			let refundGiftCard = fnCalculateGiftCard(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr);
 
 			$.each(returnList, function(idx, item) {
 				let index = ordDtlNoArr.indexOf(item.ordDtlNo);
@@ -368,13 +378,22 @@
 			let jsonData = JSON.stringify(returnRequestList);
 			
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-				$('#returnAmt').text(result.spanRefundAmt.addComma());			// 환불예정금액
-				$('#goodsCancelAmt').text(result.spanRealCnclRtnAmt.addComma());	// 상품취소금액
-				$('#deliveryFee').text(result.spanTotDeliveryFee.addComma());		// 배송비
-				$('#deductDcAmt').text((result.spanGoodsCpnDcAmt + result.spanCartCpnDcAmt + result.spanTmtbDcAmt).addComma());		// 할인금액 차감(쿠폰+다다익선)
-				$('#refundPayAmt').text(result.spanRealCnclRtnAmt);		// 결제금액 환불
-				$('#refundPoint').text(result.spanPntDcAmt);		// 포인트 환불
-				$('#refundGiftCard').text(result.spanGfcdUseAmt);	// 상품권 환불
+				let returnAmt = result.spanRefundAmt;													// 환불예정금액
+				let goodsCancelAmt = result.spanCnclRtnAmt;												// 상품취소금액
+				let deliveryFee = result.sumDeliveryFee + result.spanTotDeliveryFee;					// 배송비
+				let deductDcAmt = result.spanCpnDcAmt + result.spanTmtbDcAmt + result.spanPrePntDcAmt;	// 할인금액 차감(쿠폰+다다익선+선포인트)
+				let refundPayAmt = result.spanRealCnclRtnAmt + result.sumDeliveryFee;					// 결제금액 환불
+				//let refundPoint = result.spanPntDcAmt;													// 포인트 환불
+				//let refundGiftCard = result.spanGfcdUseAmt;												// 상품권 환불
+
+				// 금액 설정
+				$('#returnAmt').text(returnAmt.addComma());
+				$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
+				$('#deliveryFee').text(deliveryFee.addComma());
+				$('#deductDcAmt').text(deductDcAmt.addComma());
+				$('#refundPayAmt').text(refundPayAmt.addComma());
+				$('#refundPoint').text(refundPoint.addComma());
+				$('#refundGiftCard').text(refundGiftCard.addComma());
 				console.log(result);
 			})
 		}
@@ -386,10 +405,45 @@
 		// 반품 사유 변경 처리
 	}
 	
+	// 반품 방식 선택 이벤트
 	var fnChangeWdGb = function() {
 		let wdGb = $('input[name=wdGb]:radio:checked').val();
 		console.log(wdGb);
 	}
+
+	// 환불 포인트 계산
+	var fnCalculatePoint = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
+		let refundAmt = 0;
+
+		$.each(usedPointInfo, function(idx, item) {
+			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
+			let chgQty = chgQtyArr[index];
+			let ordCanChgQty = ordCanChgQtyArr[index];
+			
+			if (chgQty = ordCanChgQty) {
+				refundAmt += item.pntAmt;
+			} else {
+				refundAmt += item.pntAmt * (chgQty / ordCanChgQty);
+			}
+		});
+	}
+	
+	// 환불 상품권 계산
+	var fnCalculateGiftCard = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
+		let refundAmt = 0;
+		
+		$.each(usedGiftCardInfo, function(idx, item) {
+			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
+			let chgQty = chgQtyArr[index];
+			let ordCanChgQty = ordCanChgQtyArr[index];
+			
+			if (chgQty = ordCanChgQty) {
+				refundAmt += item.gfcdAmt;
+			} else {
+				refundAmt += item.pntAmt * (chgQty / ordCanChgQty);
+			}
+		});
+	}
 </script>
 
 </th:block>