소스 검색

Merge branch 'order' into develop

card007 5 년 전
부모
커밋
c347909b27

+ 125 - 5
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -701,6 +701,13 @@ public class TscOrderService {
 		return orderDao.getDelvCpnList(order);
 	}
 	
+	/**
+	 * 상품단위 상품쿠폰 등록 
+	 *
+	 * @param Order
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */
 	public Collection<Order> getGoodsCpnApplyList(Collection<Order> tmtbGoodsApplyList, Collection<Order> goodsCpnAllList) {
 		Collection<Order> goodsApplyCpnList = new ArrayList<Order>();
 		
@@ -730,7 +737,7 @@ public class TscOrderService {
 						goodsCpn.setCpnId(goodsCpnAll.getCpnId());
 						goodsCpn.setGoodsCd(tmtbGoods.getGoodsCd());
 						goodsCpn.setCpnNm(goodsCpnAll.getCpnNm());
-						
+						goodsCpn.setCustCpnSq(goodsCpnAll.getCustCpnSq());
 						
 						// 5. 할인방식 금액, 율 판단 
 						// 할인금액 (G240_10)
@@ -772,6 +779,32 @@ public class TscOrderService {
 		return goodsApplyCpnList;
 	}
 	
+	/**
+	 * 장바구니쿠폰단위 상품 등록 
+	 *
+	 * @param Order
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */
+	public Collection<Order> getCartCpnApplyList(Collection<Order> tmtbGoodsApplyList, Collection<Order> cartCpnAllList) {
+		Collection<Order> cartApplyCpnList = new ArrayList<Order>();
+		
+		// 1. 쿠폰대상이 있는 상품만 정리
+		for (Order cartCpn : cartCpnAllList) {
+			List<Order> cartCpnGoodsList = new ArrayList<Order>();
+			
+			for (Order tmtbGoods : tmtbGoodsApplyList) {
+				if ("A".equals(cartCpn.getApplyScope()) || tmtbGoods.getGoodsCd().equals(cartCpn.getGoodsCd())) {
+					cartCpnGoodsList.add(tmtbGoods);
+				}
+			}
+			cartCpn.setCartCpnGoodsList(cartCpnGoodsList);
+			cartApplyCpnList.add(cartCpn);
+		}
+		
+		return cartApplyCpnList;
+	}
+	
 	// 쿠폰할인금액이 높은순으로 정렬 함수
 	private List<Order> getListSort(List<Order> goodsCpnList) {
 		int cnt 			= 0;
@@ -821,6 +854,40 @@ public class TscOrderService {
 		return orderDao.getDailyDeliveryZoneInfo(order);
 	}
 	
+	/**
+	 * 배송단위별 장바구니 상품 건수 조회
+	 *
+	 * @param Order
+	 * @author jsh77b
+	 * @since 2021. 02. 02
+	 */	
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	public GagaMap getGoodsDcAmt(Collection<Order> tmtbGoodsApplyList) {
+		
+		GagaMap resultMap = new GagaMap();
+		
+		int prePntDcAmt 	= 0;
+		int goodsSumAmt 	= 0;
+		int tmtbDcSumAmt 	= 0;
+		
+		// 상품금액, 배송비, 할인금액, 다다익선할인금액, 쿠폰할인금액, 선포인트사용, 포인트사용, 상품권사용
+		for (Order tmtbGoodsApply : tmtbGoodsApplyList) {
+			prePntDcAmt 	= prePntDcAmt + tmtbGoodsApply.getPrePntDcAmt();
+			goodsSumAmt 	= goodsSumAmt + ((tmtbGoodsApply.getCurrPrice() + tmtbGoodsApply.getOptAddPrice()) * tmtbGoodsApply.getGoodsQty());
+
+			// 다다익선 할인금액이 있을때 적용
+			if (tmtbGoodsApply.getTmtbDcAmt() > 0) {
+				tmtbDcSumAmt = tmtbDcSumAmt + (((tmtbGoodsApply.getCurrPrice() + tmtbGoodsApply.getOptAddPrice()) * tmtbGoodsApply.getGoodsQty()) - tmtbGoodsApply.getTmtbDcAmt());
+			}
+		}
+
+		resultMap.set("prePntDcAmt"		, prePntDcAmt);
+		resultMap.set("goodsSumAmt"		, goodsSumAmt);
+		resultMap.set("tmtbDcSumAmt"	, tmtbDcSumAmt);
+		
+		return resultMap;
+	}
+	
 	/**
 	 * 배송단위별 장바구니 상품 건수 조회
 	 *
@@ -844,6 +911,11 @@ public class TscOrderService {
 		Collection<Order> resCartList 	= (Collection<Order>)new ArrayList();
 		Collection<Order> delvCartList 	= (Collection<Order>)new ArrayList();
 		
+		List<Order> delvFeeCdList 		= (ArrayList<Order>)new ArrayList();
+		int ordAmt 						= 0; // 주문금액
+		int sumOrdAmt 					= 0; // 배송단위 주문합계금액
+		int sumDelvFee					= 0; // 전체배송금액
+		
 		for (Order order : cartGoodsList) {
 			
 			// 1.1 세트상품 옵션별 배열로 담기
@@ -852,7 +924,7 @@ public class TscOrderService {
 				order.setOptCdArr(order.getOptCd().split(","));
 				order.setItemQtyArr(order.getItemQtyr().split(","));
 			} else {
-				String[] arr = {order.getItemNm()}, arr2 = {order.getOptCd()},arr3 = {order.getItemQtyr()};
+				String[] arr = {order.getItemNm()}, arr2 = {order.getOptCd()}, arr3 = {order.getItemQtyr()};
 				order.setItemNmArr(arr);
 				order.setOptCdArr(arr2);
 				order.setItemQtyArr(arr3);
@@ -862,20 +934,67 @@ public class TscOrderService {
 			order.setCurrPrice(order.getCurrPrice() * order.getGoodsQty());
 			
 			// 1.3 배송정책별 상품 구분
+			// 1.3.1 자사일반배송
 			if ("WMS".equals(order.getResDelvFeeCd())) {
 				wmsCartList.add(order);
 				wmsCnt++;
 			} 
+			// 1.3.2 자사예약배송
 			else if ("RES".equals(order.getResDelvFeeCd())) {
 				resCartList.add(order);
 				resCnt++;
 			} 
+			// 1.3.3 입점업체일반배송
 			else {
 				delvCartList.add(order);
 				delvCnt++;
 			}
+			delvTotCnt++;
 			
-			delvTotCnt++;		
+			// 1.4 배송단위별 배송비 설정
+			ordAmt 		= (order.getCurrPrice() + order.getOptAddPrice()) * order.getGoodsQty(); // 주문금액
+			Boolean temp = false;
+
+			// 1.4.1 업체별 배송비 합계
+			if (delvFeeCdList.size() > 0) {
+				for (int i=0 ; i<delvFeeCdList.size() ; i++) {
+					Order delvFeeCdObj = delvFeeCdList.get(i);
+					
+					// 1.4.2 업체코드가 같으면 SUM
+					if (delvFeeCdObj.getDelvFeeCd().equals(order.getDelvFeeCd())) {
+						sumOrdAmt = delvFeeCdObj.getSumOrdAmt() + ordAmt;
+						delvFeeCdObj.setSumOrdAmt(sumOrdAmt);
+					}
+					// 1.4.2 업체코드가 다르면 ADD
+					else {
+						temp = true;
+					}
+				}
+				
+				if (temp) {
+					order.setSumOrdAmt(ordAmt);
+					delvFeeCdList.add(order);
+				}
+					
+			}
+			// 1.4.2 최초등록이면 ADD
+			else {
+				order.setSumOrdAmt(ordAmt);
+				delvFeeCdList.add(order);
+			}
+		}
+		
+		// 배송비
+		for (int i=0 ; i<delvFeeCdList.size() ; i++) {
+			Order delvFeeCdObj = delvFeeCdList.get(i);
+			
+			// 배송정책별 무료배송비 체크
+			if (delvFeeCdObj.getMinOrdAmt() > delvFeeCdObj.getSumOrdAmt()) {
+				delvFeeCdObj.setDelvFee(delvFeeCdObj.getDelvFee());
+				sumDelvFee += delvFeeCdObj.getDelvFee();
+			} else {
+				delvFeeCdObj.setDelvFee(0);
+			}
 		}
 		
 		// 입점업체건수 적용
@@ -884,9 +1003,9 @@ public class TscOrderService {
 		// 자사배송건수 1추가
 		if (wmsCnt > 0) {
 			delvFeeTotCnt++;
-		} 
+		}
 		
-		// 자사 예약배송건 1추가
+		// 자사 예약배송건 1추가
 		if (resCnt > 0) {
 			delvFeeTotCnt++;
 		}
@@ -899,6 +1018,7 @@ public class TscOrderService {
 		resultMap.set("wmsCartList"			, wmsCartList);			// 자사 일반상품 목록
 		resultMap.set("resCartList"			, resCartList);			// 자사 예약상품 목록
 		resultMap.set("delvCartList"		, delvCartList);		// 입점업체 상품 목록
+		resultMap.set("sumDelvFee"			, sumDelvFee);			// 배송비합계
 				
 		return resultMap;
 	}

+ 4 - 1
src/main/java/com/style24/persistence/domain/Order.java

@@ -51,7 +51,8 @@ public class Order extends TscBaseDomain {
 	private String formalGbNm;						// 정상,이월구분명
 	private String goodsType;						// 상품타입
 	private int listPrice;							// 정상가
-	private int currPrice;							// 판매가
+	private int currPrice;							// 판매가 (1차쿠폰적용가능가)
+	private int orgCurrPrice;						// 판매가
 	private double dcRate;							// 할인율
 	private int optAddPrice;						// 옵션추가금액
 	private int ordQty;								// 주문수량
@@ -299,6 +300,7 @@ public class Order extends TscBaseDomain {
 	private int dcMval;
 	private int dcAval;
 	private String applyScope;
+	private int custCpnSq;
 	
 	// 주문포인트
 	private int pntPrate;
@@ -413,6 +415,7 @@ public class Order extends TscBaseDomain {
 	Collection<Order> resCartList;
 	Collection<Order> delvCartList;
 	List<Order> goodsCpnList;
+	List<Order> cartCpnGoodsList;
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private int[] freegiftSqArr;

+ 6 - 6
src/main/java/com/style24/persistence/mybatis/shop/TscFreegift.xml

@@ -57,16 +57,16 @@
 			     , GD.ADD_PRICE
 			     , GD.GOODS_QTY
 			FROM   GOODS_DATA GD
-			INNER  JOIN TB_FREEGIFT_GOODS FGG1
+			INNER  JOIN TB_FREEGIFT_GOODS_APPLY FGG1
 			ON     GD.SUPPLY_COMP_CD = FGG1.TARGET_VAL
-			AND    FGG1.GOODS_GB = 'G800_20' -- 적용상품
+			-- AND    FGG1.GOODS_GB = 'G800_20' -- 적용상품
 			AND    FGG1.TARGET_GB= 'G260_13' -- 공급처
-			AND    FGG1.DEL_YN = 'N'
-			INNER  JOIN TB_FREEGIFT_GOODS FGG2
+			-- AND    FGG1.DEL_YN = 'N'
+			INNER  JOIN TB_FREEGIFT_GOODS_APPLY FGG2
 			ON     GD.BRAND_CD = FGG2.TARGET_VAL
-			AND    FGG2.GOODS_GB = 'G800_20' -- 적용상품
+			-- AND    FGG2.GOODS_GB = 'G800_20' -- 적용상품
 			AND    FGG2.TARGET_GB= 'G260_12' -- 브랜드
-			AND    FGG2.DEL_YN = 'N'
+			-- AND    FGG2.DEL_YN = 'N'
 		) FGG
 		ON     FG.FREEGIFT_SQ = FGG.FREEGIFT_SQ 
 		LEFT   OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY_GOODS

+ 8 - 1
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1538,7 +1538,7 @@
 			   INNER JOIN TB_TMTB TM2
 				  ON OD.TMTB2_SQ = TM2.TMTB_SQ
 			   WHERE 1 = 1
-				 AND OD.ORD_NO = 9
+				 AND OD.ORD_NO = #{ordNo}
 		  )
 		SELECT Z.*
 		  FROM (
@@ -1643,6 +1643,7 @@
 			 , Z.MIN_ORD_AMT
 			 , Z.DELV_FEE
 			 , Z.CURR_PRICE
+			 , Z.ORG_CURR_PRICE
 			 , Z.OPT_ADD_PRICE
 		     , Z.PNT_PRATE
 		     , Z.PNT_MRATE
@@ -1690,6 +1691,8 @@
 					 , DFP.DELV_FEE
 					 , VS.CURR_STOCK_QTY
 					 , FN_GET_APPLY_CPN1_PRICE(CA.GOODS_CD, #{frontGb}) AS CURR_PRICE
+					 , G.CURR_PRICE AS ORG_CURR_PRICE
+					 , FN_GET_APPLY_CPN1_ID(CA.GOODS_CD, #{frontGb}) AS CPN1_CPN_SQ
 					 , IFNULL(OP.ADD_PRICE, 0) AS OPT_ADD_PRICE
 					 , CASE WHEN G.SELF_GOODS_YN = 'Y' AND G.GOODS_TYPE != 'G056_S' THEN CD.OPT_CD1
 							ELSE '00' END AS COLOR_CD
@@ -1897,6 +1900,7 @@
 			     , CP.MAX_DC_AMT
 			     , CP.BUY_LIMIT_AMT
 			     , CP.APPLY_SCOPE
+			     , CCP.CUST_CPN_SQ
 			FROM   TB_COUPON CP
 			INNER  JOIN TB_COUPON_CUST_GRADE CGR
 			ON     CP.CPN_ID = CGR.CPN_ID
@@ -2016,6 +2020,7 @@
 				 , CP.MAX_DC_AMT
 				 , CP.BUY_LIMIT_AMT
 				 , CP.APPLY_SCOPE
+				 , CCP.CUST_CPN_SQ
 			UNION  ALL
 			SELECT 'ALL'		AS GOODS_CD
 			     , 0            AS CART_SQ
@@ -2030,6 +2035,7 @@
 			     , CP.MAX_DC_AMT
 			     , CP.BUY_LIMIT_AMT
 			     , CP.APPLY_SCOPE
+			     , CCP.CUST_CPN_SQ
 			FROM   TB_COUPON CP
 			INNER  JOIN TB_COUPON_CUST_GRADE CGR
 			ON     CP.CPN_ID = CGR.CPN_ID
@@ -2067,6 +2073,7 @@
 		     , CP.DC_AVAL
 		     , CP.MAX_DC_AMT
 		     , CP.BUY_LIMIT_AMT
+		     , CCP.CUST_CPN_SQ
 		FROM   TB_COUPON CP
 		INNER  JOIN TB_COUPON_CUST_GRADE CGR
 		ON     CP.CPN_ID = CGR.CPN_ID