From a364fbab598a45842d4b38d156e8b5e55f9513ad Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 十一月 2019 14:35:54 +0800
Subject: [PATCH] 红包封禁   + 后台管理

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java |   61 +++++++++++++++---------------
 1 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
index b7710be..e6d4e2b 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
@@ -18,6 +18,7 @@
 import com.yeshi.fanli.entity.bus.user.UserActiveLog;
 import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.order.CommonOrder;
 import com.yeshi.fanli.entity.redpack.RedPackWinInvite;
 import com.yeshi.fanli.entity.redpack.RedPackWinInvite.RedPackWinInviteTypeEnum;
 import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
@@ -36,6 +37,7 @@
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.VersionUtil;
 import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
+import com.yeshi.fanli.util.annotation.redpack.RedPackGetVersionLimit;
 import com.yeshi.fanli.util.factory.RedPackDetailFactory;
 
 @Service
@@ -148,6 +150,7 @@
 		winInvite.setUid(bossId);
 		winInvite.setTeamUid(teamUid);
 		winInvite.setMoney(money);
+		winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.oneStageReward.name() + ":" + teamUid));
 		redPackWinInviteMapper.insertSelective(winInvite);
 		
 		// 澧炲姞绾㈠寘
@@ -163,53 +166,48 @@
 	
 	
 	@RequestSerializableByKeyService(key = "#uid")
+	@RedPackGetVersionLimit(uid = "#uid")
 	@Transactional(rollbackFor = Exception.class)
 	@Override
-	public void orderArriveReward(Long uid, Integer source, String orderNo) throws Exception {
+	public void inviteOrderArriveReward(Long uid, Integer source, String orderNo) throws Exception {
 		if (uid == null || source == null || StringUtil.isNullOrEmpty(orderNo))
 			return;
 		
-		ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(uid, Constant.RED_PACK_REWARD_TIME);
-		if(threeSale == null)
-			return;
-		bossReward(threeSale.getBoss().getId(), uid, source, orderNo);
-	}
-	
-	
-	/**
-	 * 涓婄骇濂栧姳
-	 * @param uid
-	 * @param teamUid
-	 * @param source
-	 * @param orderNo
-	 * @throws Exception
-	 */
-	@Transactional
-	private void  bossReward(Long bossId, Long teamUid, Integer source, String orderNo)  throws Exception {
-		UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId);
-		if (activeLog == null) 
+		//鑾峰彇璁㈠崟瀵瑰簲涓嬪崟浜�
+		List<CommonOrder> list = commonOrderService.listBySourceTypeAndOrderId(source, orderNo);
+		if (list == null || list.isEmpty())
 			return;
 		
-		// 灏忎簬2.0.2鐗堟湰涓嶅鍔�
-		if (!VersionUtil.greaterThan_2_1("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
-				activeLog.getVersionCode()))
+		CommonOrder commonOrder = list.get(0);
+		if (commonOrder == null || commonOrder.getUserInfo() == null)
+			return;
+		
+		// 涓嬪崟浜篿d
+		Long teamUid = commonOrder.getUserInfo().getId();
+		if (teamUid == null)
+			return;
+		
+		// 楠岃瘉涓婁笅绾у叧绯�
+		ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, Constant.RED_PACK_REWARD_TIME);
+		if(threeSale == null || threeSale.getBoss().getId().longValue() != uid.longValue())
 			return;
 		
 		// 绗竴闃舵(楠岃瘉)
-		RedPackWinInvite oneStage = redPackWinInviteMapper.getByUidAndTeamUidAndType(bossId, teamUid, RedPackWinInviteTypeEnum.oneStageReward.name());
+		RedPackWinInvite oneStage = redPackWinInviteMapper.getByUidAndTeamUidAndType(uid, teamUid, RedPackWinInviteTypeEnum.oneStageReward.name());
 		if (oneStage == null)
 			return;
 		
 		// 绗簩闃舵(楠岃瘉)
-		RedPackWinInvite twoStage = redPackWinInviteMapper.getByUidAndTeamUidAndType(bossId, teamUid, RedPackWinInviteTypeEnum.twoStageReward.name());
+		RedPackWinInvite twoStage = redPackWinInviteMapper.getByUidAndTeamUidAndType(uid, teamUid, RedPackWinInviteTypeEnum.twoStageReward.name());
 		if (twoStage == null) {
-			twoStageRewardToBoss(bossId, teamUid, oneStage.getCreateTime(), source, orderNo);
+			twoStageRewardToBoss(uid, teamUid, oneStage.getCreateTime(), source, orderNo);
 			return;
 		} 
 		
 		// 绗笁闃舵
-		threeStageRewardToBoss(bossId, teamUid, twoStage.getCreateTime(), source, orderNo);
+		threeStageRewardToBoss(uid, teamUid, twoStage.getCreateTime(), source, orderNo);
 	}
+	
 	
 	/**
 	 *    涓婄骇濂栧姳--绗簩闃舵
@@ -222,7 +220,8 @@
 	private void twoStageRewardToBoss(Long bossId, Long teamUid, Date oneStageTime, Integer source, String orderNo) throws Exception{
 		// 绗竴闃舵瀹屾垚涔嬪悗鐨�90澶╁唴 ; 闃熷弸浜х敓鐨勮鍗曚腑锛堣嚜璐�+鍒嗕韩锛夛紝閭�璇蜂汉绱浜х敓鈮�1 鍏冨閲�  
 		Date endDate = DateUtil.plusDayDate(Constant.TWO_STAGE_LIMIT_DAYS, oneStageTime);
-		BigDecimal rewardMoney = hongBaoV2CountService.getShareRewardByTeamUid(bossId, teamUid, endDate);
+		// 缁熻璁㈠崟濂栭噾 锛堚�滃ソ鍙嬭嚜璐�濆拰鈥滃ソ鍙嬪垎浜�濓級
+		BigDecimal rewardMoney = hongBaoV2CountService.getOrderRewardByTeamUid(bossId, teamUid, endDate);
 		if (rewardMoney == null || rewardMoney.compareTo(Constant.TWO_STAGE_ORDER_REWARD_MIN) < 0)
 			return;
 		
@@ -244,6 +243,7 @@
 		winInvite.setCreateTime(new Date());
 		winInvite.setUpdateTime(new Date());
 		winInvite.setType(RedPackWinInviteTypeEnum.twoStageReward);
+		winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.twoStageReward.name() + ":" + teamUid));
 		redPackWinInviteMapper.insertSelective(winInvite);
 		
 		// 4銆佸鍔犵孩鍖�
@@ -287,8 +287,8 @@
 		if (monthSpace !=  totalNum + 1)
 			return;
 		
-		// 姣忔湀缁欎綘绱浜х敓鈮�2 鍏�
-		BigDecimal rewardMoney = hongBaoV2CountService.getShareRewardByTeamUidLastMonth(bossId, teamUid);
+		// 缁熻鏈湀鑾峰緱濂栭噾 锛堚�滃ソ鍙嬭嚜璐�濆拰鈥滃ソ鍙嬪垎浜�濓級
+		BigDecimal rewardMoney = hongBaoV2CountService.getOrderRewardByTeamUidTheMonth(bossId, teamUid);
 		if (rewardMoney == null || rewardMoney.compareTo(Constant.THREE_STAGE_ORDER_REWARD_MIN) < 0)
 			return;
 		
@@ -307,6 +307,7 @@
 		winInvite.setMoney(money);
 		winInvite.setSource(source);
 		winInvite.setOrderNo(orderNo);
+		winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.threeStageReward.name() + ":" + teamUid + "-" + monthSpace));
 		redPackWinInviteMapper.insertSelective(winInvite);
 		
 		// 4銆佸鍔犵孩鍖�

--
Gitblit v1.8.0