|
|
@@ -9,8 +9,11 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import com.gagaframework.web.parameter.GagaMap;
|
|
|
+import com.gagaframework.web.rest.server.GagaResponseStatus;
|
|
|
import com.style24.core.biz.dao.TscOrderChangeDao;
|
|
|
+import com.style24.core.biz.dao.TscOrderDao;
|
|
|
import com.style24.core.support.env.TscConstants;
|
|
|
+import com.style24.persistence.domain.DeliveryFee;
|
|
|
import com.style24.persistence.domain.Order;
|
|
|
import com.style24.persistence.domain.OrderChange;
|
|
|
|
|
|
@@ -29,6 +32,9 @@ public class TscOrderChangeService {
|
|
|
@Autowired
|
|
|
private TscOrderChangeDao orderChangeDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private TscOrderDao orderDao;
|
|
|
+
|
|
|
/**
|
|
|
* 주문변경정보 (상세번호배열, 취소수량배열) 취소 목록으로 변환
|
|
|
* @param Order
|
|
|
@@ -721,13 +727,165 @@ public class TscOrderChangeService {
|
|
|
* @author jsh77b
|
|
|
* @since 2021. 01. 19
|
|
|
*/
|
|
|
- public GagaMap exchReq(List<Order> cnclRtnList) {
|
|
|
- GagaMap mav = new GagaMap();
|
|
|
+ public GagaMap exchReq(OrderChange excReq) {
|
|
|
+ GagaMap result = new GagaMap();
|
|
|
+ result.set("status", GagaResponseStatus.FAIL.getCode());
|
|
|
+
|
|
|
+ // 교환 기본 정보
|
|
|
+ int ordNo = excReq.getOrdNo(); // 주문번호
|
|
|
+ String isCustomer = excReq.getIsCustomer(); // 귀책사유
|
|
|
+ String wdGb = excReq.getWdGb(); // 회수구분 (D:직접배송, W:회수요청)
|
|
|
+ String chgMemo = excReq.getChgMemo(); // 교환메모
|
|
|
+ int addPayCost = excReq.getAddPayCost(); // 추가배송비
|
|
|
+ Integer regNo = excReq.getRegNo(); // 등록자번호
|
|
|
+ Integer updNo = excReq.getUpdNo(); // 수정자번호
|
|
|
+
|
|
|
+ // 회수지 정보
|
|
|
+ String chgerNm = excReq.getChgerNm();
|
|
|
+ String chgerTelno = excReq.getChgerTelno();
|
|
|
+ String chgerPhnno = excReq.getChgerPhnno();
|
|
|
+ String chgerEmail = excReq.getChgerEmail();
|
|
|
+ String chgerZipcode = excReq.getChgerZipcode();
|
|
|
+ String chgerBaseAddr = excReq.getChgerBaseAddr();
|
|
|
+ String chgerDtlAddr = excReq.getChgerDtlAddr();
|
|
|
+
|
|
|
+ // 교환지 정보
|
|
|
+ String recipNm = excReq.getRecipNm();
|
|
|
+ String recipTelno = excReq.getRecipTelno();
|
|
|
+ String recipPhnno = excReq.getRecipPhnno();
|
|
|
+ String recipEmail = excReq.getRecipEmail();
|
|
|
+ String recipZipcode = excReq.getRecipZipcode();
|
|
|
+ String recipBaseAddr = excReq.getRecipBaseAddr();
|
|
|
+ String recipDtlAddr = excReq.getRecipDtlAddr();
|
|
|
+
|
|
|
+ //
|
|
|
+ Collection<Order> excReqList = excReq.getCancelReqList();
|
|
|
+
|
|
|
+ // 1. 재고 체크 (세트아이템 포함)
|
|
|
|
|
|
+
|
|
|
+ // 2. 교환상품 주문 상세 등록
|
|
|
+ int preOrdDtlNo = 0;
|
|
|
+ for (Order order : excReqList) {
|
|
|
+ int ordDtlNo = order.getOrdDtlNo();
|
|
|
+
|
|
|
+ if (preOrdDtlNo != ordDtlNo) {
|
|
|
+ // 2. TB_ORDER_DETAIL 등록
|
|
|
+ Order ordDtl = new Order();
|
|
|
+ ordDtl.setOrdDtlNo(order.getOrdDtlNo());
|
|
|
+ ordDtl.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
|
|
|
+ ordDtl.setChgQty(order.getChgQty());
|
|
|
+ ordDtl.setRegNo(order.getRegNo());
|
|
|
+ ordDtl.setUpdNo(order.getUpdNo());
|
|
|
+ orderDao.createOrderDetailForExchange(ordDtl);
|
|
|
+
|
|
|
+ // 3. TB_ORDER_DETAIL_HST 등록
|
|
|
+ orderDao.createOrderDetailHstForExchange(ordDtl);
|
|
|
+
|
|
|
+ preOrdDtlNo = ordDtlNo;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. TB_ORDER_DETAIL_ITEM 등록
|
|
|
+ Order ordDtlItem = new Order();
|
|
|
+ ordDtlItem.setOrdDtlItemSq(order.getOrdDtlItemSq());
|
|
|
+ ordDtlItem.setOrdDtlNo(order.getOrdDtlNo());
|
|
|
+ ordDtlItem.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
|
|
|
+ ordDtlItem.setOrdChgOpt(order.getOrdChgOpt());
|
|
|
+ ordDtlItem.setRegNo(order.getRegNo());
|
|
|
+ ordDtlItem.setUpdNo(order.getUpdNo());
|
|
|
+
|
|
|
+ orderDao.createOrderDetailItemForExchange(ordDtlItem);
|
|
|
+
|
|
|
+ // 5. TB_ORDER_DETAIL_ITEM_HST 등록
|
|
|
+ orderDao.createOrderDetailItemHstForExchange(ordDtlItem);
|
|
|
+ }
|
|
|
|
|
|
- return mav;
|
|
|
+ // 6. TB_ORDER_CHANGE 등록
|
|
|
+ OrderChange orderChange = new OrderChange();
|
|
|
+ orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
|
|
|
+ orderChange.setChgReason(excReq.getChgReason());
|
|
|
+ orderChange.setChgMemo(excReq.getChgMemo());
|
|
|
+ orderChange.setChgerNm(excReq.getChgerNm());
|
|
|
+ orderChange.setChgerPhnno(excReq.getChgerPhnno());
|
|
|
+ orderChange.setChgerTelno(excReq.getChgerTelno());
|
|
|
+ orderChange.setChgerEmail(excReq.getChgerEmail());
|
|
|
+ orderChange.setChgerZipcode(excReq.getChgerZipcode());
|
|
|
+ orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
|
|
|
+ orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
|
|
|
+ orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
|
|
|
+ orderChange.setAddPayCost(excReq.getAddPayCost());
|
|
|
+ orderChange.setAddPayAmt(excReq.getAddPayAmt());
|
|
|
+ orderChange.setRegNo(excReq.getRegNo());
|
|
|
+ orderChange.setUpdNo(excReq.getUpdNo());
|
|
|
+
|
|
|
+ orderChangeDao.createOrderChange(orderChange);
|
|
|
+
|
|
|
+ // 생성된 ordChgSq 설정
|
|
|
+ excReq.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+
|
|
|
+ // 7. TB_ORDER_CHANGE_DETAIL 등록
|
|
|
+ String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
|
|
|
+
|
|
|
+ if (addPayCost > 0) {
|
|
|
+ orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 8. TB_DELIVERY_FEE 추가배송비 등록
|
|
|
+
|
|
|
+ // 9. TB_SELL_QTY 등록
|
|
|
+
|
|
|
+
|
|
|
+ result.set("status", GagaResponseStatus.SUCCESS.getCode());
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 교환 추가배송비 조회
|
|
|
+ * @param Collection<Order>
|
|
|
+ * @return Collection<DeliveryFee>
|
|
|
+ * @author card007
|
|
|
+ * @since 2021. 01. 26
|
|
|
+ */
|
|
|
+ public GagaMap getAddDeliveryFeeListForExchange(OrderChange orderChange) {
|
|
|
+ GagaMap result = new GagaMap();
|
|
|
+ Collection<DeliveryFee> deliveryFeeList = new ArrayList<>();
|
|
|
+ List<String> delvFeeCdList = new ArrayList<>();
|
|
|
+ int totalDelvFee = 0;
|
|
|
+
|
|
|
+ String wdGb = orderChange.getWdGb();
|
|
|
+ Collection<Order> excReqList = orderChange.getCancelReqList();
|
|
|
+
|
|
|
+ for (Order order : excReqList) {
|
|
|
+ String delvFeeCd = order.getDelvFeeCd();
|
|
|
+
|
|
|
+ if (!delvFeeCdList.contains(delvFeeCd)) {
|
|
|
+ int delvFee = 0;
|
|
|
+
|
|
|
+ if ("true".equals(orderChange.getIsCustomer())) {
|
|
|
+ delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
|
|
|
+ }
|
|
|
+
|
|
|
+ DeliveryFee deliveryFee = new DeliveryFee();
|
|
|
+ deliveryFee.setOrdNo(orderChange.getOrdNo());
|
|
|
+ deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
|
|
|
+ deliveryFee.setDelvFeeCd(delvFeeCd);
|
|
|
+ deliveryFee.setDelvFee(delvFee);
|
|
|
+ deliveryFee.setRealDelvAmt(delvFee);
|
|
|
+ deliveryFee.setOrdChgSq(orderChange.getOrdChgSq());
|
|
|
+ deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
|
|
|
+
|
|
|
+ deliveryFeeList.add(deliveryFee);
|
|
|
+ totalDelvFee += delvFee;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ result.set("totalDelvFee", totalDelvFee);
|
|
|
+ result.set("deliveryFeeList", deliveryFeeList);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 교환회수
|
|
|
* @param Order
|