From b3da9f82b7740d39742fef1a81a56c22fe1c8b9c Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期一, 08 六月 2020 17:27:02 +0800
Subject: [PATCH] 券后价调整

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java |  106 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 86 insertions(+), 20 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 d1b375d..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
@@ -53,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;
@@ -108,9 +107,6 @@
 	@Resource
 	private TeamRewardManager teamRewardManager;
 
-	@Resource
-	private TeamSubsidyManager teamSubsidyManager;
-
 	// 涓嬬骇琚皝绂侊紝绾㈠寘澶辨晥
 	private void invalidHongBaoForbidden(Long id) {
 		HongBaoV2 updateHongBaoV2 = new HongBaoV2(id);
@@ -159,6 +155,9 @@
 				}
 			}
 		}
+		
+		if(hongBaoList.size()==0)
+			return;
 
 		String taskKey = getTaskKey(uid);
 
@@ -228,6 +227,9 @@
 				}
 			}
 		}
+		
+		if(hongBaoList.size()==0)
+			return;
 
 		// 閭�璇疯禋鍒拌处浜嬪姟娑堟伅
 
@@ -294,6 +296,76 @@
 				}
 			}
 		}
+		
+		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 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);
@@ -409,10 +481,19 @@
 	@Transactional(rollbackFor = Exception.class)
 	@Override
 	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鐨勫垎浜禋璁㈠崟
@@ -817,21 +898,6 @@
 				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