Browse Source

Merge remote-tracking branch 'origin/jsh77b' into order

card007 5 năm trước cách đây
mục cha
commit
584ee27fdc

+ 77 - 15
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -732,7 +732,6 @@ public class TscOrderService {
 					
 					// 4. 상품쿠폰목록에 담기 가능 상품 담기
 					if (temp) {
-						
 						Order goodsCpn = new Order();
 						goodsCpn.setCpnId(goodsCpnAll.getCpnId());
 						goodsCpn.setGoodsCd(tmtbGoods.getGoodsCd());
@@ -789,19 +788,60 @@ public class TscOrderService {
 	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>();
+			int[] cartCpnCartSqArr 	= new int[tmtbGoodsApplyList.size()];
+			int i 					= 0;
+			int cpnDcAmt 			= 0;
+			int ordAmtSum  			= 0;
 			
 			for (Order tmtbGoods : tmtbGoodsApplyList) {
 				if ("A".equals(cartCpn.getApplyScope()) || tmtbGoods.getGoodsCd().equals(cartCpn.getGoodsCd())) {
-					cartCpnGoodsList.add(tmtbGoods);
+					cartCpnCartSqArr[i] = tmtbGoods.getCartSq();
+					
+					// 최소주문금액을 체크를 위한 해당 상품 주문금액 합계
+					if (tmtbGoods.getTmtbDcAmt() > 0) {
+						ordAmtSum = ordAmtSum + tmtbGoods.getTmtbDcAmt();
+					} else {
+						ordAmtSum = ordAmtSum + tmtbGoods.getCurrPrice();
+					}
+					
+					// TODO 장바구니 쿠폰 다다익선할인가로 할인한 금액을 합계
+					// 6. 할인율 일때 최대금액 판단으로 할인금액 등록
+					if ("G240_20".equals(cartCpn.getDcWay())) {
+						if (tmtbGoods.getTmtbDcAmt() > 0) {
+							cpnDcAmt = cpnDcAmt + (tmtbGoods.getTmtbDcAmt() * cartCpn.getDcVal()) / 100;
+						} else {
+							cpnDcAmt = cpnDcAmt + (tmtbGoods.getCurrPrice() * cartCpn.getDcVal()) / 100;
+						}
+					}
+					i++;
 				}
 			}
-			cartCpn.setCartCpnGoodsList(cartCpnGoodsList);
-			cartApplyCpnList.add(cartCpn);
+			
+			if ("G240_10".equals(cartCpn.getDcWay())) {
+				cpnDcAmt = cartCpn.getDcVal();
+			}
+						
+			// 7. 할인금액 최대값보다 작으면 적용 or getMaxDcAmt( == 0 이면 무제한
+			if (cartCpn.getMaxDcAmt() > cpnDcAmt || cartCpn.getMaxDcAmt() == 0) {
+				cartCpn.setCpnDcAmt(cpnDcAmt);
+			} else {
+				cartCpn.setCpnDcAmt(cartCpn.getMaxDcAmt());
+			}
+			
+			// 최소금액주문이상일때 쿠폰사용불가
+			if (cartCpn.getMinOrdAmt() > ordAmtSum) {
+				cartCpn.setCartCpnCartSqArr(null);
+			} else {
+				cartCpn.setCartCpnCartSqArr(cartCpnCartSqArr);
+				cartApplyCpnList.add(cartCpn);
+			}
 		}
 		
+		// TODO 장바구니쿠폰 최대할인 정렬 
+		
 		return cartApplyCpnList;
 	}
 	
@@ -901,15 +941,18 @@ public class TscOrderService {
 		// 1. 장바구니 상품 배송단위별 건수 체크 로직 (자사:총알배송, 자사:일반배송, 입점업체, 예약배송)
 		GagaMap resultMap = new GagaMap();
 		
-		int wmsCnt 			= 0; // 자사배송 (style 24) 건수
+		int shotCnt			= 0; // 자사총알배송 건수
+		int wmsCnt 			= 0; // 자사일반배송 건수
 		int resCnt 			= 0; // 자사예약배송 건수
 		int delvCnt 		= 0; // 업체직배송 건수
 		int delvFeeTotCnt 	= 0; // 배송단위 총 건수
 		int delvTotCnt		= 0; // 배송 총 건수
 		
-		Collection<Order> wmsCartList 	= (Collection<Order>)new ArrayList();
-		Collection<Order> resCartList 	= (Collection<Order>)new ArrayList();
-		Collection<Order> delvCartList 	= (Collection<Order>)new ArrayList();
+		Collection<Order> shotCartList 						= (Collection<Order>)new ArrayList();					// 자사 총알배송
+		Collection<Order> wmsCartList 						= (Collection<Order>)new ArrayList();					// 자사 일반배송
+		Collection<Order> resCartList 						= (Collection<Order>)new ArrayList();					// 자사 예약배송
+		Collection<Order> delvCartList 						= (Collection<Order>)new ArrayList();					// 입점 일반배송
+		Collection<Collection<Order>> delvAllCartList 		= (Collection<Collection<Order>>)new ArrayList();		// 배송전체목록
 		
 		List<Order> delvFeeCdList 		= (ArrayList<Order>)new ArrayList();
 		int ordAmt 						= 0; // 주문금액
@@ -932,6 +975,7 @@ public class TscOrderService {
 			
 			// 1.2 즉시할인 적용가 * 주문수량(장바구니수량)
 			order.setCurrPrice(order.getCurrPrice() * order.getGoodsQty());
+			order.setOrgCurrPrice(order.getOrgCurrPrice() * order.getGoodsQty());
 			
 			// 1.3 배송정책별 상품 구분
 			// 1.3.1 자사일반배송
@@ -952,7 +996,13 @@ public class TscOrderService {
 			delvTotCnt++;
 			
 			// 1.4 배송단위별 배송비 설정
-			ordAmt 		= (order.getCurrPrice() + order.getOptAddPrice()) * order.getGoodsQty(); // 주문금액
+			// 다다익선 할인 금액 적용
+			if (order.getTmtbDcAmt() > 0) {
+				ordAmt 	= (order.getTmtbDcAmt() + order.getOptAddPrice()) * order.getGoodsQty(); // 주문금액
+			} else {
+				ordAmt 	= (order.getCurrPrice() + order.getOptAddPrice()) * order.getGoodsQty(); // 주문금액
+			}
+			
 			Boolean temp = false;
 
 			// 1.4.1 업체별 배송비 합계
@@ -1000,24 +1050,36 @@ public class TscOrderService {
 		// 입점업체건수 적용
 		delvFeeTotCnt = delvCnt;
 		
-		// 자사배송건수 1추가
+		// 자사총알배송건수 추가
+		if (shotCnt > 0) {
+			delvFeeTotCnt++;
+		}
+		
+		// 자사일반배송건수 1추가
 		if (wmsCnt > 0) {
 			delvFeeTotCnt++;
 		}
 		
-		// 자사 예약배송건수 1추가
+		// 자사예약배송건수 1추가
 		if (resCnt > 0) {
 			delvFeeTotCnt++;
 		}
 		
+		delvAllCartList.add(shotCartList);
+		delvAllCartList.add(wmsCartList);
+		delvAllCartList.add(delvCartList);
+		delvAllCartList.add(resCartList);
+
 		resultMap.set("wmsCnt"				, wmsCnt);				// 자사몰 일반배송건수
 		resultMap.set("resCnt"				, resCnt);				// 자사몰 예약배송건수
 		resultMap.set("delvCnt"				, delvCnt);				// 입점업체 배송건수
 		resultMap.set("delvTotCnt"			, delvTotCnt);			// 배송유형건수
 		resultMap.set("delvFeeTotCnt"		, delvFeeTotCnt);		// 전체배송건수
-		resultMap.set("wmsCartList"			, wmsCartList);			// 자사 일반상품 목록
-		resultMap.set("resCartList"			, resCartList);			// 자사 예약상품 목록
-		resultMap.set("delvCartList"		, delvCartList);		// 입점업체 상품 목록
+		resultMap.set("shotCartList"		, shotCartList);		// 자사총알배송상품목록
+		resultMap.set("wmsCartList"			, wmsCartList);			// 자사일반배송상품목록
+		resultMap.set("resCartList"			, resCartList);			// 자사예약배송상품목록
+		resultMap.set("delvAllCartList"		, delvAllCartList);		// 전체배송목록 sort
+		resultMap.set("delvCartList"		, delvCartList);		// 입점업체상품목록
 		resultMap.set("sumDelvFee"			, sumDelvFee);			// 배송비합계
 				
 		return resultMap;

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

@@ -411,11 +411,14 @@ public class Order extends TscBaseDomain {
 	private int delvTotCnt;
 	private int delvFeeTotCnt;
 
-	Collection<Order> wmsCartList;
-	Collection<Order> resCartList;
-	Collection<Order> delvCartList;
+	Collection<Order> shotCartList;					// 자사총알배송목록
+	Collection<Order> wmsCartList;					// 자사일반배송목록
+	Collection<Order> resCartList;					// 자사예약배송목록
+	Collection<Order> delvCartList;					// 입점업체배송목록
+	Collection<Order> delvAllCartList;				// 배송전체목록 sort
 	List<Order> goodsCpnList;
-	List<Order> cartCpnGoodsList;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] cartCpnCartSqArr;
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private int[] freegiftSqArr;

+ 3 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1645,6 +1645,7 @@
 			 , Z.CURR_PRICE
 			 , Z.ORG_CURR_PRICE
 			 , Z.OPT_ADD_PRICE
+			 , Z.CPN1_CPN_SQ
 		     , Z.PNT_PRATE
 		     , Z.PNT_MRATE
 			 , GI.SYS_IMG_NM
@@ -1756,6 +1757,8 @@
 			 , Z.MIN_ORD_AMT
 			 , Z.DELV_FEE
 			 , Z.CURR_PRICE
+			 , Z.ORG_CURR_PRICE
+			 , Z.CPN1_CPN_SQ
 			 , Z.OPT_ADD_PRICE
 		     , Z.PNT_PRATE
 		     , Z.PNT_MRATE