소스 검색

Merge branch 'develop' of
http://112.172.147.34:4936/style24/style24.core.git into develop

Conflicts:
src/main/java/com/style24/core/biz/service/TscWmsService.java

gagamel 5 년 전
부모
커밋
d886e467e8

+ 96 - 1
src/main/java/com/style24/core/biz/service/TscKakaotalkService.java

@@ -21,6 +21,7 @@ import com.style24.persistence.domain.CustCoupon;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.OrderChange;
 import com.style24.persistence.domain.Point;
 import com.style24.persistence.domain.SsgDirectMessage;
 
@@ -270,9 +271,18 @@ public class TscKakaotalkService {
 		dm.setFdestine(customer.getCellPhnno());
 		dm.setFkkoresendtype("LMS");
 
+		String custId = customer.getCustId();
+		if (TscConstants.SnsType.NAVER.value().equals(customer.getSnsType())) {
+			custId = "네이버 간편가입회원";
+		} else if (TscConstants.SnsType.KAKAO.value().equals(customer.getSnsType())) {
+			custId = "카카오 간편가입회원";
+		} else if (TscConstants.SnsType.YES24.value().equals(customer.getSnsType())) {
+			custId = "YES24 간편가입회원";
+		}
+
 		GagaMap replaceInfo = new GagaMap();
 		replaceInfo.setInt("custNo", customer.getCustNo());
-		replaceInfo.setString("custId", customer.getCustId());
+		replaceInfo.setString("custId", custId);
 		replaceInfo.setString("custNm", customer.getCustNm());
 		replaceInfo.setString("dormantDt", customer.getDormantDt());
 
@@ -868,4 +878,89 @@ public class TscKakaotalkService {
 	}
 	
 	//----------------------------
+
+
+	/**
+	 * 주문취소 알림톡
+	 * 
+	 * @param OrderChange
+	 * @param senderNo
+	 * @author card007
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendOrderCancelComplete(OrderChange orderChange, Integer senderNo) throws Exception {
+		SsgDirectMessage dm = new SsgDirectMessage();
+		dm.setFuserid(String.valueOf(senderNo));
+		dm.setFdestine(orderChange.getOrdPhnno());
+		dm.setFkkoresendtype("LMS");
+		dm.setButtonNm("주문 취소 확인");
+
+		DecimalFormat dc = new DecimalFormat("###,###,###,###");
+		String refundAmt = dc.format(orderChange.getRefundAmt());
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setString("siteNm"				, siteNm);
+		replaceInfo.setString("ordNm"				, orderChange.getOrdNm());
+		replaceInfo.setInt("ordNo"					, orderChange.getOrdNo());
+		replaceInfo.setString("goodsNm"				, orderChange.getGoodsNm());
+		replaceInfo.setInt("goodsCnt"				, orderChange.getGoodsCnt());
+		replaceInfo.setString("payMeansNm"			, orderChange.getPayMeansNm());
+		replaceInfo.setString("refundAmt"			, refundAmt);
+
+		if (orderChange.getIsCustomer()) {
+			replaceInfo.setString("url", "/mypage/cre/list/form");
+		} else {
+			replaceInfo.setString("url", "/customer/noncust/order/confirm/form");
+		}
+
+		Integer ansSq = 0;
+		String pgGb = orderChange.getPgGb();
+		String payMeans = orderChange.getPayMeans();
+		if (TscConstants.PgGb.KCP.value().equals(pgGb)) {
+			if (TscConstants.PayMeans.CREDIT_CARD.value().equals(payMeans)) {
+				ansSq = SsgKakaoSender.KakaoAnswerSq.CARD_CANCEL_REFUND.value();
+			} else if (TscConstants.PayMeans.CELL_PHONE.value().equals(payMeans)) {
+				ansSq = SsgKakaoSender.KakaoAnswerSq.NA_CANCEL_REFUND.value();
+			} else if (TscConstants.PayMeans.ACCOUNT_TRANSFER.value().equals(payMeans)) {
+				ansSq = SsgKakaoSender.KakaoAnswerSq.AT_CANCEL_REFUND.value();
+			} else if (TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payMeans)) {
+				ansSq = SsgKakaoSender.KakaoAnswerSq.VA_CANCEL_REFUND.value();
+			}
+		} else if (TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
+			// TODO
+			// PAYCO 취소 알림톡 처리
+		} else if (TscConstants.PgGb.KAKAO.value().equals(pgGb)) {
+			// TODO
+			// 카카오페이 취소 알림톡 처리
+		} else if (TscConstants.PgGb.NAVER.value().equals(pgGb)) {
+			// TODO
+			// 네이버페이 취소 알림톡 처리
+		} else if (TscConstants.PgGb.ISTYLE.value().equals(pgGb)) {
+			// TODO
+			// 상품권 전체 결제 취소 알림톡 처리
+		}
+
+		if (ansSq > 0) {
+			// 테스트중
+			if ("전석훈".equals(orderChange.getOrdNm()) || "이태영".equals(orderChange.getOrdNm()) || "김지철".equals(orderChange.getOrdNm()) || "신주승".equals(orderChange.getOrdNm())) {
+				kakaoSender.send(ansSq, dm, replaceInfo);
+			}
+
+			try {
+				// 고객접촉이력 정보
+				CustContactHst custContactHst = new CustContactHst();
+				custContactHst.setContactType(TscConstants.ContactType.CANCEL_INFO.value());		// 접촉유형:주문-취소안내(공통코드G054)
+				custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value());		// 접촉방법:알림톡+문자(공통코드G055)
+				custContactHst.setContactContents("주문-취소안내");
+				custContactHst.setReceiverNo(orderChange.getCustNo());
+				custContactHst.setSenderNo(senderNo);
+				custContactHst.setRegNo(senderNo);
+				coreCustomerService.createCustomerContactHistory(custContactHst);
+			} catch (Exception e) {
+				log.error("error", e);
+				// Do nothing
+			}
+		}
+	}
 }

+ 14 - 5
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -290,6 +290,9 @@ public class TscOrderChangeService {
 					orderChange.setOrdChgSq(ordChgSq);
 				}
 
+				// 주문변경일련번호 설정
+				map.setInt("ordChgSq", ordChgSq);
+
 				// 3-2. 주문상세정보 수정
 				for (Order vo : cancelOrderDetailList) {
 					// 배송정책코드 별 주문상세 처리
@@ -2491,7 +2494,7 @@ public class TscOrderChangeService {
 	 */
 	@SuppressWarnings("unchecked")
 	@Transactional("shopTxnManager")
-	public void allCnclComplete(OrderChange orderChange) {
+	public Integer allCnclComplete(OrderChange orderChange) {
 		Integer ordNo = orderChange.getOrdNo();											// 주문번호
 		String chgReason = orderChange.getChgReason();									// G686_10:고객변심, G686_20:관리자취소, G686_30:품절취소
 		String chgReasonNm = orderChange.getChgReasonNm();								// 고객변심, 관리자취소, 품절취소
@@ -2747,6 +2750,8 @@ public class TscOrderChangeService {
 
 			kcpService.kcpCashReceiptCancel(giftCardCashReceipts);
 		}
+		
+		return ordChgSq;
 	}
 
 	/**
@@ -2781,7 +2786,7 @@ public class TscOrderChangeService {
 		} else {
 			// 3. 환불금액계산
 			// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-			result = orderRefundService.cnclRtnRefundAmt(cnclReqList);
+			result = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
 
 			// 4. 부분취소 처리 정보 설정
 			result.setInt("ordNo", orderChange.getOrdNo());							// 주문번호
@@ -2801,7 +2806,7 @@ public class TscOrderChangeService {
 			result.setString("cashAuthNo", refundPreInfo.getString("cashAuthNo"));	// 현금영수증 승인번호
 			result.setString("batchYn", orderChange.getBatchYn());
 			// 부분취소 처리
-			partialCancel(result, userNo);
+			partialCancelTemp(result, userNo);
 		}
 
 		return result;
@@ -2819,6 +2824,7 @@ public class TscOrderChangeService {
 	@Transactional("shopTxnManager")
 	public GagaMap orderCancelPreInfoTemp(OrderChange orderChange, Integer userNo) {
 		GagaMap result = new GagaMap();
+		Integer ordChgSq;
 
 		// 1. 환불 사전 정보 조회
 		GagaMap refundPreInfo = getRefundPreInfo2(orderChange);
@@ -2835,7 +2841,7 @@ public class TscOrderChangeService {
 			orderChange.setUpdNo(userNo);
 
 			// 전체 취소 처리
-			allCnclComplete(orderChange);
+			ordChgSq = allCnclComplete(orderChange);
 		} else {
 			// 3. 환불금액계산
 			// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
@@ -2858,8 +2864,9 @@ public class TscOrderChangeService {
 			result.setString("pgGb", refundPreInfo.getString("pgGb"));				// PG구분
 			result.setString("cashAuthNo", refundPreInfo.getString("cashAuthNo"));	// 현금영수증 승인번호
 			result.setString("batchYn", orderChange.getBatchYn());
+
 			// 부분취소 처리
-			partialCancelTemp(result, userNo);
+			result = partialCancelTemp(result, userNo);
 		}
 
 		return result;
@@ -3499,6 +3506,7 @@ public class TscOrderChangeService {
 				pg.setPgTid(pgTid);
 				pg.setPayMeans(payMeans);
 				pg.setPartCancelAmt(spanRefundAmt);
+				pg.setOrdChgSq(ordChgSq);
 				// pg.setLeftAmt(orderChangeDao.getLeftAmt(ordNo));
 				pg.setLeftAmt(payAmt);
 				pg.setRegNo(userNo);
@@ -3889,6 +3897,7 @@ public class TscOrderChangeService {
 		pg.setRegNo(regNo);
 		pg.setUpdNo(updNo);
 		pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
+		pg.setOrdChgSq(ordChgSq);
 
 		// 상품권으로만 결제 시 PG점프
 		if("G011_10".equals(mallGb)) { // 자사몰일경우

+ 42 - 43
src/main/java/com/style24/core/biz/service/TscWmsService.java

@@ -9,7 +9,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.core.biz.dao.TscDeliveryDao;
 import com.style24.core.biz.dao.TscWmsDao;
-import com.style24.core.biz.thirdparty.HansaeErp;
 import com.style24.core.support.env.TscConstants;
 import com.style24.persistence.domain.ErpStock;
 import com.style24.persistence.domain.Order;
@@ -17,6 +16,7 @@ import com.style24.persistence.domain.WmsDelivery;
 
 import lombok.extern.slf4j.Slf4j;
 
+
 /**
  * Wms Service
  * 
@@ -29,15 +29,12 @@ public class TscWmsService {
 
 	@Autowired
 	private TscWmsDao wmsDao;
-
+	
 	@Autowired
 	private TscDeliveryDao deliveryDao;
 
-//	@Autowired
-//	private TscErpService erpService;
-
 	@Autowired
-	private HansaeErp hansaeErp;
+	private TscErpService erpService;		
 
 	/**	
 	 * 실시간 재고조회(WMS&ERP)
@@ -46,8 +43,8 @@ public class TscWmsService {
 	 * @author moon
 	 * @since  2021. 03. 28
 	 */
-	public Collection<WmsDelivery> getRealStock(Integer productNo, String skuCode, String styleCd, String colorCd, String sizeCd) {
-
+	public Collection<WmsDelivery> getRealStock(Integer productNo, String skuCode, String styleCd, String colorCd, String sizeCd)  {
+		
 		////  임시 
 		//productNo = 14475554;
 		//skuCode   = "13096364-5"; // "13096364-5"
@@ -55,39 +52,41 @@ public class TscWmsService {
 		//colorCd   = "CE";         //"CE"
 		//sizeCd    = "150";
 		//////
-
+		
 		Collection<WmsDelivery> list = new ArrayList();
 		String chk1 = "N";
 		String chk2 = "N";
-
-		WmsDelivery wmsRtn = getWmsRealStock(productNo, skuCode);
-
-		Collection<ErpStock> erpRtnList = hansaeErp.getErpRealStockList(styleCd, colorCd, sizeCd);
-
-		if (wmsRtn != null) {
+		
+		
+		WmsDelivery  wmsRtn = getWmsRealStock(productNo, skuCode);
+		
+		Collection<ErpStock> erpRtnList = erpService.getErpRealStock(styleCd, colorCd, sizeCd);
+		
+		if(wmsRtn != null ) {
 			list.add(wmsRtn);
-		} else {
+		} 
+		else {
 			chk1 = "Y";
 		}
-
-		if (!"".equals(erpRtnList) && erpRtnList != null) {
-			for (ErpStock data : erpRtnList) {
+		
+		if(erpRtnList != null) {
+			for(ErpStock data : erpRtnList) {
 				WmsDelivery tmp = new WmsDelivery();
 				tmp.setStockLoc(data.getStockLoc());
 				tmp.setLocQty(data.getLocQty());
 				list.add(tmp);
 			}
-		} else {
+		}  else {
 			chk2 = "Y";
 		}
-
-		if ("Y".equals(chk1) && "Y".equals(chk2)) {
+		
+		if("Y".equals(chk1) && "Y".equals(chk2)) {
 			list = null;
 		}
-
+		
 		return list;
 	}
-
+	
 	/**
 	 * WMS 실재고 조회
 	 * @param productNo,skuCode
@@ -96,15 +95,15 @@ public class TscWmsService {
 	 * @since 2021. 03. 15
 	 */
 	//@Transactional("wmsTxnManager")
-	public WmsDelivery getWmsRealStock(Integer productNo, String skuCode) {
+	public WmsDelivery getWmsRealStock(Integer productNo, String skuCode) {	
 
 		WmsDelivery wmsRtn = null;
 		WmsDelivery wmsDelv = new WmsDelivery();
 		wmsDelv.setProductNo(productNo);
 		wmsDelv.setSkuCode(skuCode);
 		wmsDelv.setWhCode(TscConstants.WH_CODE);
-
-		log.info("wmsDelv {}" + wmsDelv);
+		
+		log.info("wmsDelv {}"+wmsDelv);
 		wmsRtn = wmsDao.getRealStock(wmsDelv);
 
 		return wmsRtn;
@@ -118,16 +117,16 @@ public class TscWmsService {
 	 * @since 2021. 03. 15
 	 */
 	public String getCancelYn(Integer ordNo, Integer ordDtlNo) {
-
+		
 		WmsDelivery wmsData = new WmsDelivery();
 		wmsData.setOrdNo(ordNo);
 		wmsData.setOrdDtlNo(ordDtlNo);
-
+		
 		String result = wmsDao.getCancelYn(wmsData);
 
 		return result;
 	}
-
+	
 	/**
 	 * WMS 주문취소
 	 * @param Collection<Order>
@@ -141,43 +140,43 @@ public class TscWmsService {
 		// 세트상품 취소 
 		// 오픈시점 이전 출고data 취소시 --주문상세번호 없음. productNo, skuCode 로 비교 
 		// 사은품 취소 
-
+		
 		Integer vOrdNo = null;
-		for (Order cData : ordCancelList) {
-
+		for(Order cData : ordCancelList) {
+			
 			vOrdNo = cData.getOrdNo();
-
+			
 			//1. 주문TB 조회  PRODUCT_NO, SKU_CODE 및  세트상품일경우 포함됨.
 			WmsDelivery inData = new WmsDelivery();
 			inData.setOrdNo(cData.getOrdNo());
 			inData.setOrdDtlNo(cData.getOrdDtlNo());
 			inData.setChgQty(cData.getChgQty());
-			Collection<WmsDelivery> ordDtlList = deliveryDao.getOrderDetailItemList(inData);
-
+			Collection<WmsDelivery> ordDtlList =  deliveryDao.getOrderDetailItemList(inData);
+			
 			//1-1. WMS_IF (TB_IF_DELIVERYORDERITEM) 에 주문상세번호 있는지 체크   Y: 주문상세번호 null , N:주문상세번호 존재함.
 			String chkYn = wmsDao.getWmsOrdDtlNoYn(inData);
-
+			
 			//2. WMS_IF (TB_IF_DELIVERYORDERITEM) 주문상세 취소 업데이트 
-			for (WmsDelivery uData : ordDtlList) {
-				if ("Y".equals(chkYn)) {
+			for(WmsDelivery uData : ordDtlList) {
+				if("Y".equals(chkYn)) {
 					uData.setOrdDtlNo(null);
 				}
 				wmsDao.updateWmsIfDeliveryOrderItemCancel(uData);
 				wmsDao.updateWmsTbIfDelifixQty(uData);
 			}
 		}
-
+		
 		//3. WMS 남은 주문건수 조회  Y: 전체취소 N: 부분취소 
 		WmsDelivery sData = new WmsDelivery();
 		sData.setOrdNo(vOrdNo);
 		String cancelChk = wmsDao.getWmsAllCancelYn(sData);
-
+		
 		//4. WMS 남은 주문건수 0일경우  WMS (TB_IF_DELIVERYORDER)주문TB 취소 업데이트  (TB_IF_DELIVERYORDERITEM) 사은품 취소 업데이트 
-		if ("Y".equals(cancelChk)) {
+		if("Y".equals(cancelChk)) {
 			wmsDao.updateWmsIfDeliveryOrderCancel(sData);
 			// 사은품 취소
 			wmsDao.updateWmsIfDeliveryOrderGiftCancel(sData);
-
+			
 			wmsDao.deleteWmsTbIfDelifixQty(sData);
 		}
 	}

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

@@ -208,5 +208,5 @@ public class OrderChange extends TscBaseDomain {
 	private int spanRefundAmt;
 	private int codFee;
 	private int encloseFee;	
-	
+	private int goodsCnt;
 }