xodud lee %!s(int64=5) %!d(string=hai) anos
pai
achega
71da4d821e

+ 41 - 0
src/main/java/com/style24/core/biz/service/TscKakaotalkService.java

@@ -672,6 +672,47 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
+
+	/**
+	 * 배송출발
+	 * @param order - 주문정보
+	 * @return void
+	 * @throws Exception - exception
+	 * @author xodud1202
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendDeliveryStart(Order order, Integer senderNo) throws Exception {
+		SsgDirectMessage dm = new SsgDirectMessage();
+		dm.setFdestine(order.getOrdPhnno());
+		dm.setFkkoresendtype("LMS");
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setString("siteNm"			, siteNm);
+		replaceInfo.setString("ordNm"			, order.getOrdNm());
+		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
+		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
+		replaceInfo.setString("goodsCnt"		, order.getGoodsCnt());
+
+		// 테스트중
+		if ("전석훈".equals(order.getOrdNm()) || "이태영".equals(order.getOrdNm()) || "김지철".equals(order.getOrdNm()) || "신주승".equals(order.getOrdNm())) {
+			kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GOODS_SEND.value(), dm, replaceInfo);
+		}
+
+		try {
+			CustContactHst custContactHst = new CustContactHst();
+			// 고객접촉이력 정보
+			custContactHst.setContactType(TscConstants.ContactType.BANK_DEPOSIT_INFO.value());
+			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value());
+			custContactHst.setContactContents("배송시작");
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setCustNo(order.getCustNo());
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
 	
 	/**
 	 * 선물받기 배송지입력

+ 40 - 6
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -2311,14 +2311,11 @@ public class TscOrderService {
 	@Transactional("shopTxnManager")
 	public void updateSellerDelvStartAndPartCancel(Collection<Order> params, int userNo) {
 		try {
-			/* TODO 조회 후 취소 ? 그냥 취소 ? 추후 결품 취소 로직 나오면 취소 진행
-			 * 주문번호별로 ordDtlNoArr[] 배열과 cnclRtnReqQtyArr[] 배열에 담고, 각 custNo 가져오고, 비회원이면 ordNm, orderNo
-			 * OrderChange 객체에 담아서 넘긴다.
-			 * 무통장입금의 경우 환불계좌가 없을 경우 취소 신청으로 세팅. > 만들어야하나 ?
-			 * 무통장입금 환불계좌가 있으면 넘기면됨. */
-
 			// 주문번호별 상세번호, 취소수량 및 주문정보 세팅
 			List<OrderChange> cancelDataList = new ArrayList<OrderChange>();
+			// 배송중 주문 목록 (알림톡 송부 위함)
+			List<Order> delvStartList = new ArrayList<Order>();
+
 			for(Order param : params) {
 				if(param.getCnclRtnQty() > 0) {
 					boolean chkOrd = true;
@@ -2384,8 +2381,45 @@ public class TscOrderService {
 					scmDao.createOrderDetailInvoice(param);
 					// 주문 변경 이력 저장
 					orderDao.createOrderDetailHst(param);
+
+					boolean isOther = true;
+					for(Order delv : delvStartList) {
+						if(delv.getOrdNo().equals(param.getOrdNo())) {
+							delv.setGoodsCnt(String.valueOf(Integer.parseInt(delv.getGoodsCnt()) + 1));
+							isOther = false;
+						}
+					}
+
+					if(isOther) {
+						Order delv = new Order();
+						delv.setOrdNo(param.getOrdNo());
+						delv.setOrdNm(param.getOrdNm());
+						delv.setGoodsNm(param.getGoodsNm());
+						delv.setOrdPhnno(param.getOrdPhnno());
+						delv.setCustNo(param.getCustNo());
+						delv.setGoodsCnt("0");		// 첫 상품은 외 0건
+
+						delvStartList.add(delv);
+					}
 				}
 			}
+
+			try {
+				// 2021.06.08 알림톡전송 배송중 주문 알림톡 송부
+				for(Order kakaoSend : delvStartList) {
+					if (StringUtils.isNotBlank(kakaoSend.getOrdPhnno())) {
+						try {
+							kakaotalkService.sendDeliveryStart(kakaoSend, userNo);
+						} catch (Exception e) {
+							e.printStackTrace();
+							// Do nothing
+						}
+					}
+				}
+			} catch (Exception e) {
+				// 카카오 발송 에러시에는 그냥 진행되어야함
+				e.printStackTrace();
+			}
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw new IllegalArgumentException(e);