瀏覽代碼

마이페이지 취반교 임시 커밋

card007 5 年之前
父節點
當前提交
bd92c1ac80

+ 21 - 0
src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.GiftCard;
+import com.style24.persistence.domain.Order;
 
 /**
  * 상품권 Dao
@@ -85,4 +86,24 @@ public interface TsfGiftcardDao {
 	 * @since 2021. 4. 19
 	 */
 	 void createCustGiftcardHistory(GiftCard giftcard);
+
+	/**
+	 * 상품권 KCP 현금영수증 신청 정보 조회
+	 * 
+	 * @param GiftCard
+	 * @return GiftCard
+	 * @author card007
+	 * @since 2021. 04. 25
+	 */
+	GiftCard getCashReceiptsInfo(GiftCard giftCard);
+
+	/**
+	 * 상품권 KCP 현금영수증 신청 여부 조회
+	 *
+	 * @param Order
+	 * @return GiftCard
+	 * @author card007
+	 * @since 2021. 04. 25
+	 */
+	GiftCard getCashReceiptsRequestInfo(Order order);
 }

+ 25 - 2
src/main/java/com/style24/front/biz/service/TsfGiftcardService.java

@@ -1,7 +1,6 @@
 package com.style24.front.biz.service;
 
 import java.util.Collection;
-import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -10,6 +9,7 @@ import com.style24.front.biz.dao.TsfGiftcardDao;
 import com.style24.front.biz.thirdparty.Yes24Giftcard;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.GiftCard;
+import com.style24.persistence.domain.Order;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -156,5 +156,28 @@ public class TsfGiftcardService {
 	 public Collection<GiftCard> getRecentlyDate(){
 		 return giftcardDao.getRecentlyDate();
 	 }
-	 
+
+	/**
+	 * 상품권 KCP 현금영수증 신청 정보 조회
+	 *
+	 * @param GiftCard
+	 * @return GiftCard
+	 * @author card007
+	 * @since 2021. 04. 25
+	 */
+	public GiftCard getCashReceiptsInfo(GiftCard giftCard) {
+		return giftcardDao.getCashReceiptsInfo(giftCard);
+	}
+
+	/**
+	 * 상품권 KCP 현금영수증 신청 여부 조회
+	 *
+	 * @param GiftCard
+	 * @return GiftCard
+	 * @author card007
+	 * @since 2021. 04. 25
+	 */
+	public GiftCard getCashReceiptsRequestInfo(Order order) {
+		return giftcardDao.getCashReceiptsRequestInfo(order);
+	}
 }

+ 39 - 2
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -54,7 +54,6 @@ import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 import com.style24.persistence.domain.Point;
@@ -249,6 +248,9 @@ public class TsfMypageController extends TsfBaseController {
 		// 주문 배송지 정보 조회
 		mav.addObject("deliveryAddrInfo", orderService.getOrderDeliveryAddrInfo(order));
 
+		// 상품권 현금영수증 신청 정보 조회
+		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
+
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderDetailForm"));
 
 		return mav;
@@ -281,9 +283,9 @@ public class TsfMypageController extends TsfBaseController {
 
 		if (ordNoList.size() > 0) {
 			order.setOrdNoList(ordNoList.stream().mapToInt(Integer::intValue).toArray());
+			map.set("orderList", orderService.getOrderListForMypage(order));
 		}
 
-		map.set("orderList", orderService.getOrderListForMypage(order));
 		map.set("orderInfo", order);
 
 		return map;
@@ -1034,6 +1036,41 @@ public class TsfMypageController extends TsfBaseController {
 		return result;
 	}
 
+	/**
+	 * 상품권 KCP 현금영수증 신청
+	 * 
+	 * @param Order
+	 * @return GagaResponse
+	 * @author card007
+	 * @since 2021. 04. 25
+	 */
+	@PostMapping("/cash/receipts/request")
+	@ResponseBody
+	public GagaMap requestCashReceipts(@RequestBody GiftCard giftCard) {
+		GagaMap map = new GagaMap();
+		// 상품권 KCP 현금영수증 신청 정보 조회
+		giftCard = giftcardService.getCashReceiptsInfo(giftCard);
+
+		if (giftCard == null || giftCard.getUsGfcdAmt() == 0) {
+			throw new IllegalStateException(message.getMessage("FAIL_0004"));
+		}
+
+		// 상품권 KCP 현금영수증 신청
+		GiftCard result = orderService.kcpCashReceiptsRequest(giftCard);
+
+		// 결과 처리
+		if("0000".equals(result.getResultCd())) {
+			map.set("status", GagaResponseStatus.SUCCESS.getCode());
+			map.set("message", message.getMessage("SUCC_0004"));
+		} else {
+			map.set("status", GagaResponseStatus.SUCCESS.getCode());
+			map.set("message", message.getMessage("FAIL_0004"));
+		}
+
+		return map;
+	}
+	
+
 	/**
 	 * 마이페이지 STYLE24 포인트화면
 	 *

+ 30 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml

@@ -212,6 +212,36 @@
 		       ) ORIGINAL
 		WHERE  NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
 	</sql>
+	
+	<!-- 상품권 KCP 현금영수증 신청 정보 조회 -->
+	<select id="getCashReceiptsInfo" parameterType="GiftCard" resultType="GiftCard">
+		/* TsfGiftcard.getCashReceiptsInfo */
+		SELECT O.ORD_NO
+		     , DATE_FORMAT(O.ORD_DT, '%Y%m%d%H%i%S') AS TRADE_TIME
+		     , O.ORD_NM
+		     , O.ORD_PHNNO
+		     , O.ORD_EMAIL
+		     , MAX((SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = OD.GOODS_CD)) OVER(ORDER BY OD.ORD_DTL_NO) AS GOODS_NM
+		     , SUM(OD.GFCD_USE_AMT) AS US_GFCD_AMT
+		  FROM TB_ORDER O
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON O.ORD_NO = OD.ORD_NO
+		 WHERE O.ORD_NO = #{ordNo}
+		 GROUP BY O.ORD_NO, DATE_FORMAT(O.ORD_DT, '%Y%m%d%H%i%S'), O.ORD_NM, O.ORD_PHNNO, O.ORD_EMAIL
+	</select>
+	
+	<!-- 상품권 KCP 현금영수증 신청 여부 조회 -->
+	<select id="getCashReceiptsRequestInfo" parameterType="Order" resultType="GiftCard">
+		/* TsfGiftcard.getCashReceiptsRequestInfo */
+		SELECT ORD_NO
+		     , TRADE_NO
+		     , AUTH_NO
+		     , AMT
+		     , REG_DT
+		     , UPD_DT
+		  FROM TB_GIFTCARD_RECEIPT
+		 WHERE ORD_NO = #{ordNo}
+	</select>
 
 
 </mapper>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html

@@ -142,7 +142,7 @@
 											</div>
 											<div class="include_item">
 												<dt>배송비</dt>
-												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee * -1, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html

@@ -202,9 +202,9 @@
 	// 검색기간 버튼 클릭 이벤트 처리
 	var fnSetSearchPeriod = function(period) {
 		let date = new Date();
-		let edDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+		let edDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
 		date.setMonth(date.getMonth() - period);
-		let stDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+		let stDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
 
 		$('#edDate').val(edDate);
 		$('#searchForm input[name=edDate]').val(edDate);

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html

@@ -204,7 +204,7 @@
 											</div>
 											<div class="include_item">
 												<dt>배송비</dt>
-												<dd><em th:text="${#numbers.formatInteger(-oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>

+ 18 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html

@@ -442,7 +442,7 @@
 												<dd>
 													<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
 													<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and not #strings.isEmpty(paymentInfo.cashAuthNo) and (paymentInfo.payMeans == 'G014_10' or paymentInfo.payMeans == 'G014_20')}" onclick="fnReceipt('cash')"><span>현금 영수증</span></button>
-													<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
+													<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and (cashReceiptsInfo == null or #strings.isEmpty(cashReceiptsInfo.authNo))}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
 												</dd>
 											</div>
 										</dl>
@@ -658,6 +658,23 @@
 		// 반품처리
 		fnReturn();
 	}
+
+	// 상품권 현금영수증 신청 처리
+	var fnRequestCashReceipt = function(param) {
+		// TODO
+		// 현금영수증 신청 처리
+		let url = '/mypage/cash/receipts/request';
+		let ordNo = $(param).attr('ordNo');
+		
+		let data = {};
+		data.ordNo = ordNo;
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+		});
+	}
 </script>
 
 </th:block>

+ 28 - 4
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -240,9 +240,9 @@
 	// 검색기간 버튼 클릭 이벤트 처리
 	var fnSetSearchPeriod = function(period) {
 		let date = new Date();
-		let edDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+		let edDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
 		date.setMonth(date.getMonth() - period);
-		let stDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+		let stDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
 
 		$('#edDate').val(edDate);
 		$('#searchForm input[name=edDate]').val(edDate);
@@ -265,15 +265,39 @@
 
 	// 검색기간 설정 체크
 	var fnCheckPeriod = function(param) {
+		let id = $(param).attr('id');
 		let stDate = $('#stDate').val();
 		let edDate = $('#edDate').val();
 
+		$('#searchForm input[name=stDate]').val(stDate);
+		$('#searchForm input[name=edDate]').val(edDate);
+
 		let sdt = new Date(stDate);
 		let edt = new Date(edDate);
+
+		// 시작 종료일자 확인
+		if (sdt > edt) {
+			mcxDialog.alert('조회기간을 확인해주세요.');
+			
+			let chgDate;
+			if (id == 'stDate') {
+				chgDate = sdt.getFullYear() + '-' + ('0' + (sdt.getMonth() + 1)).slice(-2) + '-' + ('0' + (sdt.getDate())).slice(-2);
+			} else {
+				chgDate = edt.getFullYear() + '-' + ('0' + (edt.getMonth() + 1)).slice(-2) + '-' + ('0' + (edt.getDate())).slice(-2);
+			}
+
+			$('#stDate').val(chgDate);
+			$('#edDate').val(chgDate);
+			$('#searchForm input[name=stDate]').val(chgDate);
+			$('#searchForm input[name=edDate]').val(chgDate);
+			
+			return false;
+		}
+
+		// 기간 1년 확인
 		let dateDiff = Math.ceil((edt.getTime() - sdt.getTime()) / (1000 * 3600 * 24));
 
 		if (dateDiff > 366) {
-			let id = $(param).attr('id');
 			mcxDialog.alert('조회기간은 최대 1년을 넘을 수 없습니다.');
 			if (id == 'stDate') {
 				sdt.setFullYear(sdt.getFullYear() + 1);
@@ -634,7 +658,7 @@
 			tag += '							</div>';
 			tag += '						</div>';
 		}
-
+console.log(tag);
 		return tag;
 	}
 /*]]>*/

+ 4 - 10
src/main/webapp/biz/mypage.js

@@ -295,10 +295,10 @@ var fnReceipt = function(param) {
 		if (refundYn == 'Y') {
 			// TODO
 			// 취소전표 확인 처리
-			//receiptWin += '?cmd=card_bill';
-			//receiptWin += '&tno=' + oneData.pgTid;
-			//receiptWin += '&order_no=' + oneData.ordNo;
-			//receiptWin += '&trade_mony=' + oneData.refundAmt;
+			receiptWin += '?cmd=card_bill';
+			receiptWin += '&tno=' + oneData.pgTid;
+			receiptWin += '&order_no=' + oneData.ordNo;
+			receiptWin += '&trade_mony=' + oneData.refundAmt;
 		} else {
 			mcxDialog.alert('아직 전표생성이 되지 않았습니다.');
 			return false;
@@ -321,12 +321,6 @@ var fnReceipt = function(param) {
 	window.open(receiptWin, "", option);
 }
 
-// 상품권 현금영수증 신청 처리
-var fnRequestCashReceipt = function(param) {
-	// TODO
-	// 현금영수증 신청 처리
-}
-
 // 문자열 길이를 체크
 var cfnGetTextLength = function(obj, maxLen, dpLoc) {
 	var valLen = $(obj).val().length;