|
@@ -0,0 +1,151 @@
|
|
|
|
|
+package com.style24.core.biz.service;
|
|
|
|
|
+
|
|
|
|
|
+import java.text.NumberFormat;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.Collection;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.core.env.Environment;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+
|
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
+import com.gagaframework.excel.env.GagaExcelConstants;
|
|
|
|
|
+import com.gagaframework.excel.xssf.GagaExcelResultHandler;
|
|
|
|
|
+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.biz.dao.TscScmDao;
|
|
|
|
|
+import com.style24.core.support.env.TscConstants;
|
|
|
|
|
+import com.style24.core.support.message.TscMessageByLocale;
|
|
|
|
|
+import com.style24.core.support.util.CryptoUtils;
|
|
|
|
|
+import com.style24.persistence.domain.Order;
|
|
|
|
|
+import com.style24.persistence.domain.OrderChange;
|
|
|
|
|
+import com.style24.persistence.domain.Point;
|
|
|
|
|
+
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 주문관리 Service
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author moon
|
|
|
|
|
+ * @since 2021. 04. 23
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class TscDeliveryService {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TscMessageByLocale message;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private Environment env;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TscOrderDao orderDao;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TscScmDao scmDao;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TscOrderChangeDao orderChangeDao;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TscOrderChangeService orderChangeService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TscPointService pointService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ObjectMapper mapper;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 품절취소
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param
|
|
|
|
|
+ * @return void
|
|
|
|
|
+ * @author moon
|
|
|
|
|
+ * @since 2020. 04. 23
|
|
|
|
|
+ */
|
|
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
|
|
+ public void cancelSoldout(Collection<Order> soldoutList, Integer userNo) {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ List<OrderChange> cancelDataList = new ArrayList<OrderChange>();
|
|
|
|
|
+
|
|
|
|
|
+ for(Order param : soldoutList) {
|
|
|
|
|
+ if(param.getCnclRtnQty() > 0) {
|
|
|
|
|
+ boolean chkOrd = true;
|
|
|
|
|
+
|
|
|
|
|
+ for(OrderChange cancelData : cancelDataList) {
|
|
|
|
|
+ if(param.getOrdNo().equals(cancelData.getOrdNo())) {
|
|
|
|
|
+ chkOrd = false;
|
|
|
|
|
+ cancelData.getOrdDtlNoList().add(param.getOrdDtlNo());
|
|
|
|
|
+ cancelData.getCnclRtnReqQtyList().add(param.getCnclRtnQty());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(chkOrd) {
|
|
|
|
|
+ OrderChange change = new OrderChange();
|
|
|
|
|
+ change.setOrdNo(param.getOrdNo());
|
|
|
|
|
+ change.setCustNo(param.getCustNo());
|
|
|
|
|
+ change.setOrderNm(param.getOrdNm());
|
|
|
|
|
+ change.setPgGb(param.getPgGb());
|
|
|
|
|
+ change.setPayMeans(param.getPayMeans());
|
|
|
|
|
+ change.setBankCd(param.getBankCd());
|
|
|
|
|
+ change.setAccountNm(param.getAccountNm());
|
|
|
|
|
+ change.setAccountNo(CryptoUtils.decryptAES(param.getAccountNo()));
|
|
|
|
|
+ change.getOrdDtlNoList().add(param.getOrdDtlNo());
|
|
|
|
|
+ change.getCnclRtnReqQtyList().add(param.getCnclRtnQty());
|
|
|
|
|
+ change.setChgReason(TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value());
|
|
|
|
|
+ change.setChgReasonNm("품절취소");
|
|
|
|
|
+ cancelDataList.add(change);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 리스트로 지정된 주문상세번호와 취소수량 배열로 변경 후 취소
|
|
|
|
|
+ for(OrderChange change : cancelDataList) {
|
|
|
|
|
+ change.setOrdDtlNoArr(change.getOrdDtlNoList().stream().mapToInt(i->i).toArray());
|
|
|
|
|
+ change.setCnclRtnReqQtyArr(change.getCnclRtnReqQtyList().stream().mapToInt(i->i).toArray());
|
|
|
|
|
+
|
|
|
|
|
+ // 무통장입금 주문 중 환불계좌정보 없을 경우 취소신청
|
|
|
|
|
+ if(TscConstants.PgGb.KCP.value().equals(change.getPgGb()) && TscConstants.PayMeans.BANK_DEPOSIT.value().equals(change.getPayMeans()) && StringUtils.isEmpty(change.getAccountNo())) {
|
|
|
|
|
+ // TODO: 취소신청
|
|
|
|
|
+ log.info("CHECK IN PART CANCEL ORD_DTL_NO_ARR ::::: {} / {} / {}", change.getOrdNo(), change.getOrdDtlNoArr(), change.getAccountNo());
|
|
|
|
|
+ } else { // 무통장입금 주문 중 환불계좌정보 없을 경우 제외는 취소처리
|
|
|
|
|
+ // 취소완료
|
|
|
|
|
+ log.info("CHECK IN PART CANCEL ORD_DTL_NO_ARR ::::: {} / {} / {}", change.getOrdNo(), change.getOrdDtlNoArr(), change.getAccountNo());
|
|
|
|
|
+ GagaMap cancelInfo = orderChangeService.orderCancelPreInfo(change,userNo);
|
|
|
|
|
+
|
|
|
|
|
+ // TODO: 품절취소 알림톡 발송 예정
|
|
|
|
|
+ //
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|