From 744594ef1a2f530fc3e86ea9dc48b62247f79420 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 19 五月 2020 17:13:23 +0800
Subject: [PATCH] 饿了么绘图,添加口碑

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java |  129 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 121 insertions(+), 8 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 2f4db5e..9687b36 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
@@ -1,6 +1,7 @@
 package com.yeshi.fanli.service.impl.redpack;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -35,10 +36,12 @@
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TimeUtil;
 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;
+import com.yeshi.fanli.vo.redpack.RedPackWinProgressVO;
 
 @Service
 public class RedPackWinInviteServiceImpl implements RedPackWinInviteService {
@@ -94,9 +97,41 @@
 	@Override
 	@RequestSerializableByKeyService(key = "#teamUid")
 	@Transactional(rollbackFor = Exception.class)
+	public void initCreateRedPackWin(Long bossId, Long teamUid) {
+		UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId);
+		if (activeLog == null)
+			return;
+
+		// 灏忎簬2.0.5鐗堟湰涓嶅鍔�
+		if (!VersionUtil.greaterThan_2_0_5("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
+				activeLog.getVersionCode()))
+			return;
+
+		// 鍚屼竴闃熷憳鍙褰曚竴娆�
+		int totalReward = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid,
+				RedPackWinInviteTypeEnum.zeroStageReward.name());
+		if (totalReward > 0)
+			return;
+
+		// 鑾峰緱绾㈠寘
+		RedPackWinInvite winInvite = new RedPackWinInvite();
+		winInvite.setUid(bossId);
+		winInvite.setTeamUid(teamUid);
+		winInvite.setMoney(new BigDecimal(0));
+		winInvite.setType(RedPackWinInviteTypeEnum.zeroStageReward);
+		winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.zeroStageReward.name() + ":" + teamUid));
+		winInvite.setCreateTime(new Date());
+		winInvite.setUpdateTime(new Date());
+		redPackWinInviteMapper.insertSelective(winInvite);
+	}
+
+	@Override
+	@RequestSerializableByKeyService(key = "#teamUid")
+	@Transactional(rollbackFor = Exception.class)
 	public void inviteSucceedReward(Long teamUid) throws Exception {
 		// 鏄惁鍦ㄤ笂绾夸箣鍚庣殑閭�璇峰叧绯�
-		ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, Constant.RED_PACK_REWARD_TIME);
+		ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid,
+				TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME));
 		if (threeSale == null)
 			return;
 
@@ -107,8 +142,13 @@
 			return;
 
 		// 灏忎簬2.0.2鐗堟湰涓嶅鍔�
-		if (!VersionUtil.greaterThan_2_1("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
+		if (!VersionUtil.greaterThan_2_0_5("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
 				activeLog.getVersionCode()))
+			return;
+
+		int totalRewardZero = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid,
+				RedPackWinInviteTypeEnum.zeroStageReward.name());
+		if (totalRewardZero <= 0)
 			return;
 
 		// 鍚屼竴闃熷憳濂栧姳涓�娆�
@@ -161,7 +201,7 @@
 		dto.setNickName(userInfo.getNickName());
 		dto.setPortrait(userInfo.getPortrait());
 		userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackOneStageReward, money,
-				"闃熷憳锛堝ソ鍙嬶級瀹屾垚绗竴闃舵", new Gson().toJson(dto));
+				"绮変笣锛堝ソ鍙嬶級瀹屾垚绗竴闃舵", new Gson().toJson(dto));
 	}
 
 	@RequestSerializableByKeyService(key = "#uid")
@@ -187,7 +227,8 @@
 			return;
 
 		// 楠岃瘉涓婁笅绾у叧绯�
-		ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, Constant.RED_PACK_REWARD_TIME);
+		ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid,
+				TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME));
 		if (threeSale == null || threeSale.getBoss().getId().longValue() != uid.longValue())
 			return;
 
@@ -217,7 +258,7 @@
 	 * @param orderNo
 	 * @param bossId
 	 */
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	private void twoStageRewardToBoss(Long bossId, Long teamUid, Date oneStageTime, Integer source, String orderNo)
 			throws Exception {
 		// 绗竴闃舵瀹屾垚涔嬪悗鐨�90澶╁唴 ; 闃熷弸浜х敓鐨勮鍗曚腑锛堣嚜璐�+鍒嗕韩锛夛紝閭�璇蜂汉绱浜х敓鈮�1 鍏冨閲�
@@ -259,7 +300,7 @@
 		dto.setNickName(userInfo.getNickName());
 		dto.setPortrait(userInfo.getPortrait());
 		userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackTwoStageReward, money,
-				"闃熷憳锛堝ソ鍙嬶級瀹屾垚绗簩闃舵", new Gson().toJson(dto));
+				"绮変笣锛堝ソ鍙嬶級瀹屾垚绗簩闃舵", new Gson().toJson(dto));
 	}
 
 	/**
@@ -270,7 +311,7 @@
 	 * @param orderNo
 	 * @param bossId
 	 */
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	private void threeStageRewardToBoss(Long bossId, Long teamUid, Date twoStageTime, Integer source, String orderNo)
 			throws Exception {
 		// 浜屻�佷笁闃舵涓嶅彲鍚屾湀
@@ -328,7 +369,79 @@
 		dto.setNickName(userInfo.getNickName());
 		dto.setPortrait(userInfo.getPortrait());
 		userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackThreeStageReward,
-				money, "闃熷憳锛堝ソ鍙嬶級瀹屾垚绗笁闃舵杩炵画[绗�" + monthSpace + "涓湀]", new Gson().toJson(dto));
+				money, "绮変笣锛堝ソ鍙嬶級瀹屾垚绗笁闃舵杩炵画[绗�" + monthSpace + "涓湀]", new Gson().toJson(dto));
 	}
 
+	@Override
+	public List<RedPackWinProgressVO> getInviteProgressByWorkerId(Long uid, Long tid) {
+		List<RedPackWinProgressVO> listVO = new ArrayList<RedPackWinProgressVO>();
+		ThreeSale threeSale = threeSaleSerivce.getNearRelationByBossIdAndWorkerId(uid, tid);
+		if (threeSale == null || threeSale.getSucceedTime() == null)
+			return listVO;
+
+		UserInfo userInfo = userInfoService.selectByPKey(tid);
+		if (userInfo == null)
+			return listVO;
+
+		// 濂栧姳璁板綍
+		List<RedPackWinInvite> listWin = redPackWinInviteMapper.getWinListByBossIdAndTeamUid(uid, tid);
+		if (listWin == null || listWin.size() == 0)
+			return listVO;
+
+		int month = 1;
+		for (RedPackWinInvite win : listWin) {
+			if (win.getType() == RedPackWinInviteTypeEnum.zeroStageReward) {
+				listVO.add(new RedPackWinProgressVO("鎴愬姛娉ㄥ唽", TimeUtil.formatDate(userInfo.getCreatetime())));
+				listVO.add(new RedPackWinProgressVO("纭珛閭�璇�", TimeUtil.formatDate(threeSale.getSucceedTime())));
+			}
+			String time = TimeUtil.formatDate(win.getCreateTime());
+			BigDecimal money = win.getMoney().setScale(2);
+			if (win.getType() == RedPackWinInviteTypeEnum.oneStageReward) {
+				listVO.add(new RedPackWinProgressVO("绗竴闃舵", time, money.toString()));
+				continue;
+			}
+
+			if (win.getType() == RedPackWinInviteTypeEnum.twoStageReward) {
+				listVO.add(new RedPackWinProgressVO("绗簩闃舵", time, money.toString()));
+				continue;
+			}
+
+			if (win.getType() == RedPackWinInviteTypeEnum.threeStageReward) {
+				listVO.add(new RedPackWinProgressVO("绗笁闃舵绗�" + month + "涓湀", time, money.toString()));
+				month++;
+				continue;
+			}
+		}
+		return listVO;
+	}
+
+	@Override
+	public List<RedPackWinInvite> getWinTopListByBossId(int page, int count, Long uid) {
+		return redPackWinInviteMapper.getWinTopListByBossId(count * (page - 1), count, uid);
+	}
+
+	@Override
+	public long countWinTopListByBossId(Long uid) {
+		return redPackWinInviteMapper.countWinTopListByBossId(uid);
+	}
+
+	@Override
+	public long countTeamNumByTid(Long uid, Long teamUid) {
+		return redPackWinInviteMapper.countTeamNumByTid(uid, teamUid);
+	}
+
+	
+	@Override
+	public List<RedPackWinInvite> query(long page, int count, String key, String type){
+		return redPackWinInviteMapper.query(count * (page - 1), count, key, type);
+	}
+	
+	@Override
+	public long count(String key, String type){
+		Long count = redPackWinInviteMapper.count(key, type);
+		if (count == null) {
+			count = 0L;
+		}
+		return count;
+	}
 }

--
Gitblit v1.8.0