From 0ec22dcf4fd9c4496e6f681e7fab89f56c6e4e8a Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 02 四月 2020 14:45:20 +0800
Subject: [PATCH] vip 消息

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java |  225 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 174 insertions(+), 51 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
index 09ebb52..f31c9d9 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -51,6 +51,7 @@
 import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
+import com.yeshi.fanli.exception.elme.ElmeOrderException;
 import com.yeshi.fanli.exception.money.OrderMoneySettleException;
 import com.yeshi.fanli.exception.money.UserMoneyDetailException;
 import com.yeshi.fanli.exception.order.CommonOrderException;
@@ -59,7 +60,9 @@
 import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException;
 import com.yeshi.fanli.exception.user.UserAccountException;
 import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.log.OrderLogHelper;
 import com.yeshi.fanli.service.inter.elme.ElmeHongBaoOrderMapService;
+import com.yeshi.fanli.service.inter.elme.ElmeOrderProcessService;
 import com.yeshi.fanli.service.inter.elme.ElmeOrderService;
 import com.yeshi.fanli.service.inter.hongbao.AccountDetailsHongBaoMapService;
 import com.yeshi.fanli.service.inter.money.UserMoneyService;
@@ -70,6 +73,7 @@
 import com.yeshi.fanli.service.inter.order.LostOrderService;
 import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
 import com.yeshi.fanli.service.inter.order.OrderProcessService;
+import com.yeshi.fanli.service.inter.order.OrderTeamRewardService;
 import com.yeshi.fanli.service.inter.order.jd.JDOrderService;
 import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService;
 import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
@@ -77,7 +81,7 @@
 import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
 import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
-import com.yeshi.fanli.service.manger.HongBaoV2AddManager;
+import com.yeshi.fanli.service.manger.order.HongBaoV2AddManager;
 import com.yeshi.fanli.util.CMQManager;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
@@ -163,6 +167,9 @@
 	@Resource
 	private HongBaoV2AddManager hongBaoV2AddManager;
 
+	@Resource
+	private OrderTeamRewardService orderTeamRewardService;
+
 	/**
 	 * 鏄惁鏄垎浜鍗�
 	 * 
@@ -202,6 +209,7 @@
 		Iterator<String> its = orders.keySet().iterator();
 		Map<String, List<TaoBaoOrder>> fanliOrderMap = new HashMap<>();
 		Map<String, List<TaoBaoOrder>> shareOrderMap = new HashMap<>();
+		Map<String, List<TaoBaoOrder>> elmeOrderMap = new HashMap<>();
 		while (its.hasNext()) {
 			String orderId = its.next();
 
@@ -209,26 +217,35 @@
 				List<TaoBaoOrder> list = orders.get(orderId);
 				String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(),
 						list.get(0).getSourceMediaId(), list.get(0).getAdPositionId());
-
-				if (!StringUtil.isNullOrEmpty(list.get(0).getSpecialId())
-						|| pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)) {// 璁剧疆娓犻亾ID褰撳仛浼氬憳杩愯惀ID鐨勪綅缃甀D
-					fanliOrderMap.put(orderId, list);
-				} else if (!StringUtil.isNullOrEmpty(list.get(0).getRelationId())) {
-					shareOrderMap.put(orderId, list);
-				} else {
-					// 閫氳繃绾㈠寘鏌ヨ
-					CommonOrder commonOrder = commonOrderService
-							.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, list.get(0).getTradeId());
-
-					if (commonOrder != null) {
-						HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
-						if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null
-								&& hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_SHARE_GOODS) {
-							shareOrderMap.put(orderId, list);
-							continue;
-						}
+				if ("楗夸簡涔�".equalsIgnoreCase(list.get(0).getOrderType())) {
+					// 楗夸簡涔堣鍗曞紑濮嬪綊鍏ュ埌娣樺疂璁㈠崟
+					if (TimeUtil.convertToTimeTemp(list.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") > TimeUtil
+							.convertToTimeTemp("2020-04-15", "yyyy-MM-dd")) {
+						fanliOrderMap.put(orderId, list);
+					} else {
+						elmeOrderMap.put(orderId, list);
 					}
-					fanliOrderMap.put(orderId, list);
+				} else {
+					if (!StringUtil.isNullOrEmpty(list.get(0).getSpecialId())
+							|| pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)) {// 璁剧疆娓犻亾ID褰撳仛浼氬憳杩愯惀ID鐨勪綅缃甀D
+						fanliOrderMap.put(orderId, list);
+					} else if (!StringUtil.isNullOrEmpty(list.get(0).getRelationId())) {
+						shareOrderMap.put(orderId, list);
+					} else {
+						// 閫氳繃绾㈠寘鏌ヨ
+						CommonOrder commonOrder = commonOrderService
+								.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, list.get(0).getTradeId());
+
+						if (commonOrder != null) {
+							HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
+							if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null
+									&& hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_SHARE_GOODS) {
+								shareOrderMap.put(orderId, list);
+								continue;
+							}
+						}
+						fanliOrderMap.put(orderId, list);
+					}
 				}
 			}
 		}
@@ -237,6 +254,54 @@
 		processShopingFanliOrder(fanliOrderMap);
 		// 澶勭悊鍒嗕韩璧氳鍗�
 		processShareGoodsOrder(shareOrderMap);
+		// 澶勭悊楗夸簡涔堣鍗�
+		processElemeOrder(elmeOrderMap);
+	}
+
+	private ElmeOrder createElmeOrder(TaoBaoOrder taoBaoOrder) {
+		ElmeOrder elmeOrder = new ElmeOrder();
+		elmeOrder.setChannelId("");
+		elmeOrder.setCreateTime(new Date());
+		elmeOrder
+				.setOrderDate(new Date(TimeUtil.convertToTimeTemp(taoBaoOrder.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
+		elmeOrder.setOrderId(taoBaoOrder.getOrderId());
+		elmeOrder.setPayMoney(taoBaoOrder.getPayment());
+		elmeOrder.setRid(taoBaoOrder.getRelationId());
+		if (taoBaoOrder.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻"))
+			elmeOrder.setIsSettle(true);
+		else
+			elmeOrder.setIsSettle(false);
+
+		if (!taoBaoOrder.getOrderState().equalsIgnoreCase("璁㈠崟澶辨晥"))
+			elmeOrder.setState(1);
+		else {
+			elmeOrder.setState(0);
+			elmeOrder.setPayMoney(new BigDecimal(0));
+		}
+		elmeOrder.setTrackPid(
+				String.format("mm_124933865_%s_%s", taoBaoOrder.getSourceMediaId(), taoBaoOrder.getAdPositionId()));
+		if (!StringUtil.isNullOrEmpty(taoBaoOrder.getRelationId())) {
+			UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService.getByRelationId(taoBaoOrder.getRelationId());
+			if (extraInfo != null)
+				elmeOrder.setUid(extraInfo.getUser().getId());
+		}
+		return elmeOrder;
+	}
+
+	private void processElemeOrder(Map<String, List<TaoBaoOrder>> orders) {
+		for (Iterator<String> its = orders.keySet().iterator(); its.hasNext();) {
+			String orderId = its.next();
+			List<TaoBaoOrder> orderList = orders.get(orderId);
+			for (TaoBaoOrder taoBaoOrder : orderList) {
+				ElmeOrder elmeOrder = createElmeOrder(taoBaoOrder);
+				try {
+					elmeOrderProcessService.processOrder(elmeOrder);
+				} catch (ElmeOrderException e) {
+					e.printStackTrace();
+				}
+
+			}
+		}
 	}
 
 	@Override
@@ -360,7 +425,7 @@
 	private HongBaoOrderMapper hongBaoOrderMapper;
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	public void fanli(HongBaoV2 hb1) throws TaoBaoWeiQuanException {
 		// 鏌ヨ鏈�鏂扮殑绾㈠寘鏁版嵁
 		hb1 = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hb1.getId());
@@ -427,18 +492,27 @@
 		String key = mainUser.getId() + "-" + UUID.randomUUID().toString();
 		msg.setKey(key);
 		try {
-			orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
-				@Override
-				public TransactionStatus execute(Message arg0, Object arg1) {
-					try {
-						orderMoneySettleService.ziGouSettle(hongBaoOrder.getCommonOrder().getOrderNo(),
-								hongBaoOrder.getCommonOrder().getSourceType(), key);
-						return TransactionStatus.CommitTransaction;
-					} catch (Exception e) {
-						return TransactionStatus.RollbackTransaction;
+			if (!Constant.IS_TEST)
+				orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
+					@Override
+					public TransactionStatus execute(Message arg0, Object arg1) {
+						try {
+							orderMoneySettleService.ziGouSettle(hongBaoOrder.getCommonOrder().getOrderNo(),
+									hongBaoOrder.getCommonOrder().getSourceType(), key);
+							return TransactionStatus.CommitTransaction;
+						} catch (Exception e) {
+							e.printStackTrace();
+							return TransactionStatus.RollbackTransaction;
+						}
 					}
+				}, null);
+			else {
+				try {
+					orderMoneySettleService.ziGouSettle(hongBaoOrder.getCommonOrder().getOrderNo(),
+							hongBaoOrder.getCommonOrder().getSourceType(), key);
+				} catch (Exception e) {
 				}
-			}, null);
+			}
 		} catch (Exception e) {
 			LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg));
 		}
@@ -467,13 +541,8 @@
 		if (orderList != null && orderList.size() > 0 & !StringUtil.isNullOrEmpty(orderList.get(0).getSettlementTime()))
 			order.setJieSuanTime(
 					new Date(TimeUtil.convertToTimeTemp(orderList.get(0).getSettlementTime(), "yyyy-MM-dd HH:mm:ss")));
-		// if (order.getJieSuanTime().getTime() >=
-		// TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) {
-		// return;
-		// }
 
-		// TODO 澶勭悊缁存潈鎴愬姛浣嗘槸宸插埌璐︾殑璁㈠崟
-
+		// 澶勭悊缁存潈鎴愬姛浣嗘槸宸插埌璐︾殑璁㈠崟
 		if (order.getJieSuanTime().getTime() > TimeUtil.convertToTimeTemp("2019-01-01", "yyyy-MM-dd")) {// 缁撶畻鏃堕棿鍦�2鏈�1鍙风殑寮�濮嬪鐞嗗凡鍒拌处浣嗘槸缁存潈鐨�
 			CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
 					order.getOrderItemId());
@@ -484,15 +553,34 @@
 					TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService
 							.selectByOrderItemId(order.getOrderItemId());
 					if (drawBack == null) {// 杩樻湭鎵f
+						OrderLogHelper.taoBaoWeiQuan("宸插埌璐︽湭鎵f澶勭悊:瀛愯鍗曞彿:" + order.getOrderItemId());
 						try {
-							taoBaoWeiQuanDrawBackService.doWeiQuanFanli(order.getOrderId());
+							taoBaoWeiQuanDrawBackService.doWeiQuanFanli(order.getOrderId(), true);
 							taoBaoWeiQuanDrawBackService.doWeiQuanShare(order.getOrderId());
 							taoBaoWeiQuanDrawBackService.doWeiQuanInvite(order.getOrderId());
 						} catch (TaoBaoWeiQuanException e) {
 							try {
-								LogHelper.errorDetailInfo(e, null, "璁㈠崟鍙�:" + order.getOrderId());
+								LogHelper.errorDetailInfo(e, "鍒拌处鍚庡鐞嗙淮鏉冩墸娆惧嚭閿�", "璁㈠崟鍙�:" + order.getOrderId());
 							} catch (Exception e1) {
 								e1.printStackTrace();
+							}
+						}
+					} else {
+						// 鏌ヨ瀛愮孩鍖呮槸鍚﹀凡鍒拌处
+						List<HongBaoV2> children = hongBaoV2Service
+								.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
+						for (HongBaoV2 hongBaoV2 : children) {
+							if (hongBaoV2.getState() == HongBaoV2.STATE_YILINGQU) {
+								try {
+									taoBaoWeiQuanDrawBackService.doWeiQuanInvite(order.getOrderId());
+								} catch (TaoBaoWeiQuanException e) {
+									try {
+										LogHelper.errorDetailInfo(e, "鍒拌处鍚庡鐞嗙淮鏉冩墸娆惧嚭閿�", "璁㈠崟鍙�:" + order.getOrderId());
+									} catch (Exception e1) {
+										e1.printStackTrace();
+									}
+								}
+								break;
 							}
 						}
 					}
@@ -525,7 +613,7 @@
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException {
 		// 閭�璇疯禋鍒拌处
 		try {
@@ -533,7 +621,7 @@
 		} catch (OrderMoneySettleException e) {
 			e.printStackTrace();
 		}
-		//
+
 		try {
 			orderMoneySettleService.inviteSettleJD(uid);
 		} catch (OrderMoneySettleException e) {
@@ -587,9 +675,16 @@
 			if (oldOrder == null) {
 				Long targetUid = null;
 				if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)
-						&& !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {
+						&& !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {// 澶勭悊闈炶繑鍒╁晢鍝佸簱鐨勫晢鍝�
 					targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId());
 
+				} else if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_ELEME_PID)
+						&& !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {// 澶勭悊楗夸簡涔堢殑璁㈠崟
+					UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService
+							.getByRelationId(orderList.get(0).getRelationId());
+					if (extraInfo != null) {
+						targetUid = extraInfo.getUser().getId();
+					}
 				} else if (!StringUtil.isNullOrEmpty(orderList.get(0).getSpecialId())) {
 					UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService
 							.getBySpecialId(orderList.get(0).getSpecialId());
@@ -658,7 +753,8 @@
 					order.setOrderType(Constant.SOURCE_TYPE_TAOBAO);
 					order.setUserInfo(new UserInfo(uid));
 					try {
-						PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order);
+						if (!Constant.IS_TEST)
+							PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order);
 					} catch (Exception e) {
 					}
 				}
@@ -1144,6 +1240,9 @@
 	@Resource
 	private ElmeOrderService elmeOrderService;
 
+	@Resource
+	private ElmeOrderProcessService elmeOrderProcessService;
+
 	/**
 	 * 鑾峰彇楗夸簡涔堝彲浠ヨ繑鍒╃殑绾㈠寘
 	 * 
@@ -1209,13 +1308,12 @@
 	@Transactional
 	private void addHongBaoWithMQ(List<CommonOrderAddResultDTO> commonOrderList, String orderId, Long uid,
 			int sourceType, int hongBaoType) {
-
 		final List<CommonOrder> coList = convertCommonOrder(commonOrderList);
 		int resultCode = 0;
 		try {
 			long time = TimeUtil.convertToTimeTemp("2019-12-06", "yyyy-MM-dd");
 			if (!Constant.IS_TEST)
-				time = TimeUtil.convertToTimeTemp("2020-01-01", "yyyy-MM-dd");
+				time = TimeUtil.convertToTimeTemp("2019-12-20", "yyyy-MM-dd");
 
 			if (coList.get(0).getThirdCreateTime().getTime() < time)
 				resultCode = hongBaoV2Service.addHongBao(coList, hongBaoType);
@@ -1230,12 +1328,13 @@
 		} catch (UserAccountException e) {
 
 		}
-		if (resultCode == 1) {// 鍙彂閫佹柊澧炴秷鎭�
-			OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid, OrderMQMsg.HANDLE_TYPE_ADD,
-					isCommonOrderValid(coList), 0, new Date());
-			Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderStatistic, mqMsg);
-			producer.send(msg);
-		}
+		if (!Constant.IS_TEST)
+			if (resultCode == 1) {// 鍙彂閫佹柊澧炴秷鎭�
+				OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid, OrderMQMsg.HANDLE_TYPE_ADD,
+						isCommonOrderValid(coList), 0, new Date());
+				Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderStatistic, mqMsg);
+				producer.send(msg);
+			}
 	}
 
 	/**
@@ -1254,4 +1353,28 @@
 		return false;
 	}
 
+	@Override
+	public void fanliOrderTeamReward() {
+		Date time = new Date();
+		long count = orderTeamRewardService.countCanSettleUid(time);
+		int pageSize = 500;
+		int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
+		List<Long> uidList = new ArrayList<>();
+		for (int i = 0; i < page; i++) {
+			List<Long> list = orderTeamRewardService.listCanSettleUid(time, i + 1, pageSize);
+			if (list != null && list.size() > 0)
+				uidList.addAll(list);
+		}
+		// 娣诲姞鍒伴槦鍒�
+		if (uidList != null)
+			for (Long uid : uidList)
+				if (!Constant.IS_TEST)
+					CMQManager.getInstance().addFanLiOrderTeamRewardMsg(uid);
+	}
+
+	@Override
+	public void fanliOrderTeamReward(Long uid) throws OrderMoneySettleException {
+		orderMoneySettleService.orderTeamRewardSettle(uid);
+	}
+
 }

--
Gitblit v1.8.0