From a4637ae9d71aa4a624b217ed3a1483f0e3a3a7ed Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期三, 06 五月 2020 14:04:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div

---
 fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java |   57 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java
index 0825bf6..10ff0a0 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java
@@ -136,8 +136,10 @@
 					throw new HongBaoException(1, "璁㈠崟淇℃伅涓嶅畬鏁�");
 				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
 				if (hongBaoOrder == null) {
-					miandan = saveHongBao(commonOrder, type, notificationMap, userLevel, placeOrderDate);
-					hasAdd = true;
+					HongBaoSaveResult result = saveHongBao(commonOrder, type, notificationMap, userLevel,
+							placeOrderDate);
+					miandan = result.isMiandan();
+					hasAdd = result.isAdd();
 				} else {
 					boolean update = updateHongBao(hongBaoOrder, commonOrder, type, notificationMap, placeOrderDate);
 					if (update) {
@@ -498,7 +500,7 @@
 	}
 
 	@Transactional(rollbackFor = Exception.class)
-	private boolean saveHongBao(CommonOrder commonOrder, int type, Map<Integer, HongBaoOrder> notificationMap,
+	private HongBaoSaveResult saveHongBao(CommonOrder commonOrder, int type, Map<Integer, HongBaoOrder> notificationMap,
 			UserLevelEnum buyerLevel, Date placeOrderDate) throws HongBaoException, UserAccountException {
 
 		if (type == HongBaoV2.TYPE_ZIGOU) {
@@ -539,7 +541,7 @@
 					orderHongBaoMoneyComputeService.computeFanliMoney(commonOrder, buyerLevel), mianDanMoney,
 					buyerLevel);
 			if (hongBao == null)
-				return mianDanMoney != null;
+				return new HongBaoSaveResult(false, mianDanMoney != null);
 			addFanLiOrShareHongBao(hongBao, commonOrder, notificationMap);
 			UserInfo boss = threeSaleSerivce.getBoss(hongBao.getUserInfo().getId());
 			if (boss != null && hongBao.getState() != HongBaoV2.STATE_SHIXIAO && mianDanMoney == null) {// 1绾OSS瀛樺湪涓旂孩鍖呮湭澶辨晥,鍏嶅崟涓嶆敮鎸佸绾у垎閿�
@@ -549,7 +551,7 @@
 				BigDecimal money = orderHongBaoMoneyComputeService.computeFirstInviteMoney(commonOrder, buyerLevel,
 						bossList);
 				if (money == null)// 杩斿埄璧勯噾涓虹┖涓嶅弬涓庡垎鎴�
-					return mianDanMoney != null;
+					return new HongBaoSaveResult(true, mianDanMoney != null);
 
 				UserLevelEnum bossLevel = userLevelManager.getUserLevel(boss.getId());
 
@@ -564,7 +566,7 @@
 					money = orderHongBaoMoneyComputeService.computeSecondInviteMoney(commonOrder, buyerLevel, bossList);
 					bossLevel = userLevelManager.getUserLevel(boss.getId());
 					if (money == null)
-						return mianDanMoney != null;
+						return new HongBaoSaveResult(true, mianDanMoney != null);
 					HongBaoV2 secondHongbao = createInviteHongBao(boss.getId(), hongBao, commonOrder,
 							HongBaoV2.TYPE_ERJI, money, bossLevel);
 					addInviteHongBao(secondHongbao, null, notificationMap, commonOrder);
@@ -574,7 +576,7 @@
 		} else if (type == HongBaoV2.TYPE_SHARE_GOODS) {
 			// 鍒嗕韩璧氫笉鍔犲叆澶辨晥鐨勮鍗�
 			if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ)
-				return false;
+				return new HongBaoSaveResult(false, false);
 			// 鍒嗕韩璧�
 			BigDecimal money = null;
 			if (commonOrder.getSourceType() == Constant.SOURCE_TYPE_TAOBAO
@@ -591,10 +593,10 @@
 				money = orderHongBaoMoneyComputeService.computeShareMoney(commonOrder, buyerLevel);
 
 			if (money == null || money.compareTo(new BigDecimal(0)) <= 0)
-				return false;
+				return new HongBaoSaveResult(false, false);
 			HongBaoV2 hongBao = createShareHongBao(commonOrder, money, buyerLevel);
 			if (hongBao == null)
-				return false;
+				return new HongBaoSaveResult(false, false);
 			addFanLiOrShareHongBao(hongBao, commonOrder, notificationMap);
 			// 4鏈�17鏃ュ悗鎵嶆湁涓�绾у垎浜禋
 			if (placeOrderDate.getTime() > TimeUtil.convertToTimeTemp("2019-04-17", "yyyy-MM-dd")) {
@@ -605,7 +607,7 @@
 
 					money = orderHongBaoMoneyComputeService.computeFirstInviteMoney(commonOrder, buyerLevel, bossList);
 					if (money == null)
-						return false;
+						return new HongBaoSaveResult(true, false);
 					UserLevelEnum bossLevel = userLevelManager.getUserLevel(boss.getId());
 					HongBaoV2 firstHongbao = createInviteHongBao(boss.getId(), hongBao, commonOrder,
 							HongBaoV2.TYPE_SHARE_YIJI, money, bossLevel);
@@ -618,7 +620,7 @@
 						money = orderHongBaoMoneyComputeService.computeSecondInviteMoney(commonOrder, buyerLevel,
 								bossList);
 						if (money == null)// 杩斿埄姣斾緥涓�0灏变笉缁熻
-							return false;
+							return new HongBaoSaveResult(true, false);
 						bossLevel = userLevelManager.getUserLevel(boss.getId());
 						HongBaoV2 secondChild = createInviteHongBao(boss.getId(), hongBao, commonOrder,
 								HongBaoV2.TYPE_SHARE_ERJI, money, bossLevel);
@@ -652,7 +654,7 @@
 		} else
 			throw new HongBaoException(2, "type閿欒");
 
-		return false;
+		return new HongBaoSaveResult(true, false);
 	}
 
 	/**
@@ -665,6 +667,11 @@
 	private void addInviteHongBao(HongBaoV2 child, String parentHongBaoUserName,
 			Map<Integer, HongBaoOrder> notificationMap, CommonOrder commonOrder) {
 		if (child != null) {
+			// 鑰佺増鏈祫閲戜负0鐨勭孩鍖呬笉鍔犲叆閭�璇疯鍗�
+			if (child.getMoney() == null || (child.getMoney().compareTo(new BigDecimal(0)) == 0
+					&& commonOrder.getThirdCreateTime().getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME))
+				return;
+
 			hongBaoV2Mapper.insertSelective(child);
 			// 鐢ㄦ埛閫氱煡
 			if (notificationMap.get(child.getType()) == null) {
@@ -927,4 +934,30 @@
 		return hongBao;
 	}
 
+	class HongBaoSaveResult {
+		boolean add;
+		boolean miandan;
+
+		public void setMiandan(boolean miandan) {
+			this.miandan = miandan;
+		}
+
+		public HongBaoSaveResult(boolean add, boolean miandan) {
+			super();
+			this.add = add;
+			this.miandan = miandan;
+		}
+
+		public boolean isAdd() {
+			return add;
+		}
+
+		public void setAdd(boolean add) {
+			this.add = add;
+		}
+
+		public boolean isMiandan() {
+			return miandan;
+		}
+	}
 }

--
Gitblit v1.8.0