From 8c04d27e5cebb7e654c208533e9567c4df2c8acc Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 12 十二月 2019 14:21:44 +0800
Subject: [PATCH] 券时间限制

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java |  109 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 70 insertions(+), 39 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 99052bb..09ebb52 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
@@ -19,7 +19,7 @@
 import org.yeshi.utils.NumberUtil;
 
 import com.aliyun.openservices.ons.api.Message;
-import com.aliyun.openservices.ons.api.SendResult;
+import com.aliyun.openservices.ons.api.Producer;
 import com.aliyun.openservices.ons.api.transaction.LocalTransactionExecuter;
 import com.aliyun.openservices.ons.api.transaction.TransactionProducer;
 import com.aliyun.openservices.ons.api.transaction.TransactionStatus;
@@ -30,9 +30,10 @@
 import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
 import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
+import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
+import com.yeshi.fanli.dto.mq.order.body.OrderMQMsg;
+import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg;
 import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO;
-import com.yeshi.fanli.dto.order.OrderMQMsgDTO;
-import com.yeshi.fanli.dto.order.OrderMoneyRecievedMQMsgDTO;
 import com.yeshi.fanli.entity.bus.user.HongBaoV2;
 import com.yeshi.fanli.entity.bus.user.Order;
 import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
@@ -56,6 +57,7 @@
 import com.yeshi.fanli.exception.order.HongBaoException;
 import com.yeshi.fanli.exception.order.OrderItemException;
 import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException;
+import com.yeshi.fanli.exception.user.UserAccountException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.elme.ElmeHongBaoOrderMapService;
 import com.yeshi.fanli.service.inter.elme.ElmeOrderService;
@@ -75,6 +77,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.util.CMQManager;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
@@ -85,7 +88,7 @@
 import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
 import com.yeshi.fanli.util.jd.JDApiUtil;
 import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
-import com.yeshi.fanli.util.rocketmq.MQTagConstant;
+import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
 import com.yeshi.fanli.util.rocketmq.MQTopicName;
 
 @Service
@@ -151,8 +154,14 @@
 	@Resource(name = "orderTransactionProducer")
 	private TransactionProducer orderTransactionProducer;
 
+	@Resource(name = "producer")
+	private Producer producer;
+
 	@Resource
 	private OrderMoneySettleService orderMoneySettleService;
+
+	@Resource
+	private HongBaoV2AddManager hongBaoV2AddManager;
 
 	/**
 	 * 鏄惁鏄垎浜鍗�
@@ -410,11 +419,11 @@
 			}
 
 		// 鑷喘鍒拌处浜嬪姟娑堟伅
-		OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_ZIGOU,
+		OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_ZIGOU,
 				mainUser.getId(), hongBaoOrder.getCommonOrder().getSourceType(),
-				hongBaoOrder.getCommonOrder().getOrderNo(), null, new Date());
+				hongBaoOrder.getCommonOrder().getOrderNo(), null, new Date(), 0);
 		mqMsg.setOrderFirst(first);
-		Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+		Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg);
 		String key = mainUser.getId() + "-" + UUID.randomUUID().toString();
 		msg.setKey(key);
 		try {
@@ -498,8 +507,10 @@
 		List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceShareAndInvite(1000);
 		Set<Long> uidSets = new HashSet<>();
 		if (inviteAndShareUids != null)
-			for (Long uid : inviteAndShareUids)
-				uidSets.add(uid);
+			for (Long uid : inviteAndShareUids) {
+				if (userInfoMapper.selectAvailableByPrimaryKey(uid) != null)
+					uidSets.add(uid);
+			}
 		// 鏍规嵁鐢ㄦ埛ID
 		Iterator<Long> its = uidSets.iterator();
 		while (its.hasNext()) {
@@ -522,15 +533,13 @@
 		} catch (OrderMoneySettleException e) {
 			e.printStackTrace();
 		}
-		if (1 > 0)
-			return;
-
+		//
 		try {
 			orderMoneySettleService.inviteSettleJD(uid);
 		} catch (OrderMoneySettleException e) {
 			e.printStackTrace();
 		}
-
+		//
 		try {
 			orderMoneySettleService.inviteSettlePDD(uid);
 		} catch (OrderMoneySettleException e) {
@@ -549,7 +558,7 @@
 		} catch (OrderMoneySettleException e) {
 			e.printStackTrace();
 		}
-
+		//
 		try {
 			orderMoneySettleService.shareSettlePDD(uid);
 		} catch (OrderMoneySettleException e) {
@@ -729,12 +738,15 @@
 	public void processJDOrder(JDOrder order) {
 		if (order == null || order.getOrderItemList() == null || order.getOrderItemList().size() == 0)
 			return;
-
 		// 鎷嗗崟鐨勪笉鍋氬鐞�
 		if (order.getValidCode() == 2)
 			return;
 
+		// 鏍规嵁ext1涓巗ubUnionId璺熷崟
 		String uidStr = order.getExt1();
+		if (StringUtil.isNullOrEmpty(uidStr))
+			uidStr = order.getOrderItemList().get(0).getSubUnionId();
+
 		Long uid = null;
 		if (!StringUtil.isNullOrEmpty(uidStr) && NumberUtil.isNumeric(uidStr))
 			uid = Long.parseLong(uidStr);
@@ -1194,33 +1206,52 @@
 	 * @param sourceType
 	 * @param hongBaoType
 	 */
+	@Transactional
 	private void addHongBaoWithMQ(List<CommonOrderAddResultDTO> commonOrderList, String orderId, Long uid,
 			int sourceType, int hongBaoType) {
+
 		final List<CommonOrder> coList = convertCommonOrder(commonOrderList);
-		OrderMQMsgDTO mqMsg = new OrderMQMsgDTO(orderId, sourceType, uid);
-		Message msg = new Message(MQTopicName.TOPIC_ORDER.name(),
-				String.format(MQTagConstant.TAG_ORDER_STATISTIC_PREFIX + "%s-%s", sourceType, hongBaoType),
-				new Gson().toJson(mqMsg).getBytes());
-		SendResult result = orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
-			@Override
-			public TransactionStatus execute(Message arg0, Object arg1) {
-				int resultCode = 0;
-				try {
-					resultCode = hongBaoV2Service.addHongBao(coList, hongBaoType);
-				} catch (HongBaoException e) {
-					try {
-						LogHelper.errorDetailInfo(e, "addJDOrder鎴朼ddHongBao鍑洪敊", "璁㈠崟鍙�:" + orderId);
-					} catch (Exception e1) {
-						e1.printStackTrace();
-					}
-				}
-				return TransactionStatus.CommitTransaction;
-				// if (resultCode != 0)
-				// return TransactionStatus.CommitTransaction;
-				// else
-				// return TransactionStatus.RollbackTransaction;
+		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");
+
+			if (coList.get(0).getThirdCreateTime().getTime() < time)
+				resultCode = hongBaoV2Service.addHongBao(coList, hongBaoType);
+			else
+				resultCode = hongBaoV2AddManager.addHongBao(coList, hongBaoType);
+		} catch (HongBaoException e) {
+			try {
+				LogHelper.errorDetailInfo(e, "addJDOrder鎴朼ddHongBao鍑洪敊", "璁㈠崟鍙�:" + orderId);
+			} catch (Exception e1) {
+				e1.printStackTrace();
 			}
-		}, null);
-		System.out.println(result);
+		} 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);
+		}
 	}
+
+	/**
+	 * 璁㈠崟鏄惁鏈夋晥
+	 * 
+	 * @param coList
+	 * @return
+	 */
+	private boolean isCommonOrderValid(List<CommonOrder> coList) {
+		for (CommonOrder commonOrder : coList) {
+			if (commonOrder.getState() == CommonOrder.STATE_JS || commonOrder.getState() == CommonOrder.STATE_FK
+					|| commonOrder.getState() == CommonOrder.STATE_WQ) {
+				return true;
+			}
+		}
+		return false;
+	}
+
 }

--
Gitblit v1.8.0