From 554de444b87aab5f93cb1593a8095612cf9479a7 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 09 六月 2020 17:34:30 +0800
Subject: [PATCH] 订单

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java |  173 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 100 insertions(+), 73 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java
index daa1f7a..f9fe5fb 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java
@@ -2,7 +2,6 @@
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -54,7 +53,6 @@
 import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
 import com.yeshi.fanli.service.manger.order.TeamRewardManager;
-import com.yeshi.fanli.service.manger.order.TeamSubsidyManager;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager;
@@ -109,9 +107,6 @@
 	@Resource
 	private TeamRewardManager teamRewardManager;
 
-	@Resource
-	private TeamSubsidyManager teamSubsidyManager;
-
 	// 涓嬬骇琚皝绂侊紝绾㈠寘澶辨晥
 	private void invalidHongBaoForbidden(Long id) {
 		HongBaoV2 updateHongBaoV2 = new HongBaoV2(id);
@@ -160,6 +155,9 @@
 				}
 			}
 		}
+		
+		if(hongBaoList.size()==0)
+			return;
 
 		String taskKey = getTaskKey(uid);
 
@@ -229,6 +227,9 @@
 				}
 			}
 		}
+		
+		if(hongBaoList.size()==0)
+			return;
 
 		// 閭�璇疯禋鍒拌处浜嬪姟娑堟伅
 
@@ -295,6 +296,9 @@
 				}
 			}
 		}
+		
+		if(hongBaoList.size()==0)
+			return;
 
 		// 閭�璇疯禋鍒拌处浜嬪姟娑堟伅
 		String taskKey = getTaskKey(uid);
@@ -322,8 +326,74 @@
 
 	@Transactional(rollbackFor = Exception.class)
 	@Override
-	public void shareSettleTB(Long uid) throws OrderMoneySettleException {
-		Date maxPregetTime = new Date();
+	public void inviteSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException {
+		// 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋
+		int sourceType = Constant.SOURCE_TYPE_VIP;
+		List<Integer> types = new ArrayList<>();
+		types.add(HongBaoV2.TYPE_YIJI);
+		types.add(HongBaoV2.TYPE_ERJI);
+		types.add(HongBaoV2.TYPE_SHARE_YIJI);
+		types.add(HongBaoV2.TYPE_SHARE_ERJI);
+		long count = hongBaoV2Mapper.countCanBalanceHongBaoByTypeAndUid(types, uid, sourceType, maxPregetTime);
+		List<HongBaoV2> hongBaoList = new ArrayList<>();
+		// 1000鏉℃暟鎹负1椤�
+		int page = (int) (count % 1000 == 0 ? count / 1000 : count / 1000 + 1);
+		for (int i = 0; i < page; i++) {
+			List<HongBaoV2> tempHongBaoList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, sourceType,
+					maxPregetTime, i * 1000, 1000);
+			if (tempHongBaoList != null && tempHongBaoList.size() > 0)
+				hongBaoList.addAll(tempHongBaoList);
+		}
+
+		for (int i = 0; i < hongBaoList.size(); i++) {
+			HongBaoV2 item = hongBaoList.get(i);
+			if (item != null && item.getParent() != null) {
+				if (item != null) {
+					HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(item.getParent().getId());
+					if (hongBaoOrder != null && hongBaoOrder.getCommonOrder() != null) {
+						CommonOrder co = hongBaoOrder.getCommonOrder();
+						// 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处
+						UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId());
+						if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
+							invalidHongBaoForbidden(item.getId());
+							hongBaoList.remove(i);
+							i--;
+						}
+					}
+				}
+			}
+		}
+		
+		if(hongBaoList.size()==0)
+			return;
+
+		// 閭�璇疯禋鍒拌处浜嬪姟娑堟伅
+		String taskKey = getTaskKey(uid);
+		TeamRewardPreRecieveMQMsg mqMsg = new TeamRewardPreRecieveMQMsg(taskKey, uid, sourceType, maxPregetTime,
+				new Date());
+		Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.teamRewardPreRecieved, mqMsg);
+		msg.setKey(taskKey);
+		// 娣诲姞浜嬪姟娑堟伅
+		try {
+			orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
+				@Override
+				public TransactionStatus execute(Message arg0, Object arg1) {
+					try {
+						fanliInvite(hongBaoList, uid, sourceType, taskKey, maxPregetTime);
+					} catch (Exception e) {
+						return TransactionStatus.RollbackTransaction;
+					}
+					return TransactionStatus.CommitTransaction;
+				}
+			}, null);
+		} catch (Exception e) {
+			LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg));
+		}
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	@Override
+	public void shareSettleTB(Long uid, Date maxPregetTime) throws OrderMoneySettleException {
 		/**
 		 * 澶勭悊鍒嗕韩璧�
 		 */
@@ -369,8 +439,7 @@
 
 	@Transactional(rollbackFor = Exception.class)
 	@Override
-	public void shareSettleJD(Long uid) throws OrderMoneySettleException {
-		Date maxPregetTime = new Date();
+	public void shareSettleJD(Long uid, Date maxPregetTime) throws OrderMoneySettleException {
 		/**
 		 * 澶勭悊鍒嗕韩璧�
 		 */
@@ -411,12 +480,20 @@
 
 	@Transactional(rollbackFor = Exception.class)
 	@Override
-	public void shareSettlePDD(Long uid) throws OrderMoneySettleException {
-		Date maxPregetTime = new Date();
+	public void shareSettlePDD(Long uid, Date maxPregetTime) throws OrderMoneySettleException {
+		shareSettleVipShop(Constant.SOURCE_TYPE_PDD, uid, maxPregetTime);
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	@Override
+	public void shareSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException {
+		shareSettleVipShop(Constant.SOURCE_TYPE_VIP, uid, maxPregetTime);
+	}
+
+	private void shareSettleVipShop(int sourceType, Long uid, Date maxPregetTime) throws OrderMoneySettleException {
 		/**
 		 * 澶勭悊鍒嗕韩璧�
 		 */
-		int sourceType = Constant.SOURCE_TYPE_PDD;
 		List<Integer> types = new ArrayList<>();
 
 		// 鏌ヨUID鐨勫垎浜禋璁㈠崟
@@ -669,7 +746,6 @@
 		List<Long> hbIdList = new ArrayList<>();
 		Set<String> drawBackOrders = new HashSet<String>();
 		List<Long> recieveHongBaoIds = new ArrayList<>();
-		int shareGoodsCount = 0;
 		Set<String> shareOrders = new HashSet<>();
 
 		for (HongBaoV2 hongBao : hongBaoList) {
@@ -693,7 +769,6 @@
 				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId());
 				if (hongBaoOrder != null) {
 					balanceTime = hongBaoOrder.getCommonOrder().getSettleTime();
-					shareGoodsCount += hongBaoOrder.getCommonOrder().getCount();
 				}
 				shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
 				if (balanceTime != null
@@ -710,22 +785,8 @@
 		if (sharemoney.compareTo(new BigDecimal(0)) > 0) {
 			// 娣诲姞鏂扮増璇︽儏璁板綍
 			try {
-				// 璁$畻鏈湀鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗�
-				Calendar ca = Calendar.getInstance();
-
-				Date maxDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				ca.add(Calendar.MONTH, -1);
-
-				Date minDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
-						minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
-				long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
-						minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
-
 				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO,
-						(int) validCount, (int) weiQuanCount, sharemoney, new Date());
+						sharemoney, new Date());
 				// 娣诲姞璧勯噾
 				userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail);
 
@@ -742,9 +803,8 @@
 			}
 
 			// 鏂扮増閫氱煡
-			userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, shareOrders.size(),
-					shareGoodsCount, sharemoney, userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), null,
-					null);
+			userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, sharemoney,
+					userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), new Date());
 
 			for (String orderId : drawBackOrders)
 				taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId);
@@ -755,7 +815,8 @@
 		// 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID
 		for (Long hongBaoId : recieveHongBaoIds) {
 			try {
-				HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
+				if (Constant.ENABLE_MQ)
+					HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
 			} catch (Exception e) {
 				LogHelper.errorDetailInfo(e);
 			}
@@ -774,7 +835,6 @@
 		BigDecimal sharemoney = new BigDecimal(0);
 		List<Long> hbIdList = new ArrayList<>();
 		List<Long> recieveHongBaoIds = new ArrayList<>();
-		int shareGoodsCount = 0;
 		Set<String> shareOrders = new HashSet<>();
 
 		for (HongBaoV2 hongBao : hongBaoList) {
@@ -795,9 +855,6 @@
 				hbIdList.add(hongBao.getId());
 				// 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈
 				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId());
-				if (hongBaoOrder != null) {
-					shareGoodsCount += hongBaoOrder.getCommonOrder().getCount();
-				}
 				shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
 			}
 		}
@@ -809,22 +866,8 @@
 		if (sharemoney.compareTo(new BigDecimal(0)) > 0) {
 			// 娣诲姞鏂扮増璇︽儏璁板綍
 			try {
-				// 璁$畻鏈湀鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗�
-				Calendar ca = Calendar.getInstance();
-
-				Date maxDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				ca.add(Calendar.MONTH, -1);
-
-				Date minDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
-						minDate, maxDate, sourceType);
-				long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
-						minDate, maxDate, sourceType);
-
-				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, (int) validCount,
-						(int) weiQuanCount, sharemoney, new Date());
+				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, sharemoney,
+						new Date());
 				// 娣诲姞璧勯噾
 				userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail);
 
@@ -840,10 +883,8 @@
 				}
 			}
 
-			// 鏂扮増閫氱煡
-			userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, shareOrders.size(),
-					shareGoodsCount, sharemoney, userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), null,
-					null);
+			userMoneyMsgNotificationService.shareOrderReceived(uid, sourceType, sharemoney,
+					userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), new Date());
 		}
 
 		hongBaoV2SettleTempService.addTemp(recieveHongBaoIds, key);
@@ -851,26 +892,12 @@
 		// 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID
 		for (Long hongBaoId : recieveHongBaoIds) {
 			try {
-				HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
+				if (Constant.ENABLE_MQ)
+					HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
 			} catch (Exception e) {
 				LogHelper.errorDetailInfo(e);
 			}
 		}
-	}
-
-	/**
-	 * 閭�璇疯ˉ璐寸粨绠�
-	 * 
-	 * @param orderId
-	 * @param sourceType
-	 * @throws ParamsException 
-	 * @throws TeamEincomeRecordException 
-	 */
-	@Transactional(rollbackFor = Exception.class)
-	@Override
-	public void inviteSubsidySettle(Long uid, String taskKey,Date maxPreGetTime)
-			throws OrderMoneySettleException, TeamEincomeRecordException, ParamsException {
-		teamSubsidyManager.addToTeamEincome(uid, taskKey,maxPreGetTime);
 	}
 
 	private String getTaskKey(Long uid) {

--
Gitblit v1.8.0