|
|
@@ -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;
|