From fe879975a3e8a0a1aa280fb839e02d159bfbcff8 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 27 八月 2019 18:04:38 +0800
Subject: [PATCH] 金币任务多次获取bug修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java |  216 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 198 insertions(+), 18 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java
index a289caa..d4c47ac 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java
@@ -8,6 +8,8 @@
 
 import javax.annotation.Resource;
 
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -15,16 +17,24 @@
 import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
 import com.yeshi.fanli.entity.bus.user.ThreeSale;
 import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
+import com.yeshi.fanli.entity.bus.user.UserActiveLog;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.exception.ThreeSaleException;
+import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
+import com.yeshi.fanli.service.inter.hongbao.ThreeSaleExtraInfoSerivce;
 import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.integral.IntegralGetService;
 import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService;
 import com.yeshi.fanli.service.inter.msg.UserInviteMsgNotificationService;
+import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
+import com.yeshi.fanli.service.inter.user.UserActiveLogService;
+import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.ThreeSaleCMQManager;
+import com.yeshi.fanli.util.VersionUtil;
+import com.yeshi.fanli.util.cmq.ThreeSaleCMQManager;
 
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -50,7 +60,28 @@
 	@Resource
 	private MsgInviteDetailService msgInviteDetailService;
 
+	@Resource
+	private UserTaoLiJinOriginService userTaoLiJinOriginService;
+
+	@Resource
+	private UserActiveLogService userActiveLogService;
+
+	@Resource
+	private UserInfoExtraService userInfoExtraService;
+
+	@Resource
+	private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce;
+
+	
+	@Lazy
+	@Resource
+	private IntegralGetService integralGetService;
+
+	@Resource(name = "taskExecutor")
+	private TaskExecutor executor;
+
 	public UserInfo getBoss(final long uid) {
+		//TODO 鏈塨ug
 		return threeSaleMapper.selectBoss(uid);
 	}
 
@@ -298,18 +329,8 @@
 	}
 
 	@Override
-	public List<ThreeSale> listFirstTeam(long start, int count, Long uid) {
-		return threeSaleMapper.listFirstTeam(start, count, uid);
-	}
-
-	@Override
 	public long countFirstTeam(Long uid, Integer state) {
 		return threeSaleMapper.countFirstTeam(uid, state);
-	}
-
-	@Override
-	public List<ThreeSale> listSecondTeam(long start, int count, Long uid) {
-		return threeSaleMapper.listSecondTeam(start, count, uid);
 	}
 
 	@Override
@@ -333,26 +354,26 @@
 	}
 
 	@Override
-	public JSONObject getMyFirstTeam(long start, int count, Long uid) {
+	public JSONObject getMyFirstTeam(long start, int count, Long uid, Integer state) {
 
-		List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid);
+		List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid, state);
 		if (list == null) {
 			list = new ArrayList<ThreeSale>();
 		}
 
-		long countTotal = threeSaleMapper.countFirstTeam(uid, null);
+		long countTotal = threeSaleMapper.countFirstTeam(uid, state);
 
 		return organizeTeam(countTotal, list);
 	}
 
 	@Override
-	public JSONObject getMySecondTeam(long start, int count, Long uid) {
-		List<ThreeSale> list = threeSaleMapper.listSecondTeam(start, count, uid);
+	public JSONObject getMySecondTeam(long start, int count, Long uid, Integer state) {
+		List<ThreeSale> list = threeSaleMapper.listSecondTeam(start, count, uid, state);
 		if (list == null) {
 			list = new ArrayList<ThreeSale>();
 		}
 
-		long countTotal = threeSaleMapper.countSecondTeam(uid, null);
+		long countTotal = threeSaleMapper.countSecondTeam(uid, state);
 
 		return organizeTeam(countTotal, list);
 	}
@@ -494,6 +515,8 @@
 
 		if (threeSale != null) {
 			// 鏈夋晥鍏崇郴--鐢熸晥
+			threeSale.setBoss(inviter);
+			threeSale.setWorker(invitee);
 			threeSale.setState(true);
 			threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
 			threeSale.setSucceedTime(java.lang.System.currentTimeMillis());
@@ -510,7 +533,6 @@
 			threeSale.setCreateTime(java.lang.System.currentTimeMillis());
 			threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
 			threeSaleMapper.insertSelective(threeSale);
-
 		}
 
 		List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), invitee.getId());
@@ -528,6 +550,149 @@
 
 		// 閭�璇锋秷鎭�
 		userInviteMsgNotificationService.inviteSuccess(inviter.getId(), threeSale);
+
+		executor.execute(new Runnable() {
+			@Override
+			public void run() {
+
+				UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(inviter.getId());
+				try {
+					if (activeLog != null && !StringUtil.isNullOrEmpty(activeLog.getVersionCode())) {
+						String versionCode = activeLog.getVersionCode();
+						String channel = activeLog.getChannel();
+
+						boolean result = false;
+						// 娓犻亾鏄痑ppstore 鍒ゆ柇涓篒OS
+						if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) {
+							result = VersionUtil.greaterThan_1_5_60("ios", versionCode);
+						} else {
+							result = VersionUtil.greaterThan_1_5_60("android", versionCode);
+						}
+
+						if (result) {
+							// 琚個璇峰悕绉�
+							String inviteName = invitee.getNickName();
+							if (StringUtil.isNullOrEmpty(inviteName)) {
+								UserInfo userInfo = userInfoService.selectByPKey(invitee.getId());
+								if (userInfo != null) {
+									inviteName = userInfo.getNickName();
+								}
+							}
+							// 濂栧姳閭�璇风孩鍖咃紙娣樼ぜ閲戯級
+							userTaoLiJinOriginService.addInviteWinMoney(inviter.getId(), inviteName);
+						}
+					}
+				} catch (Exception e) {
+					LogHelper.errorDetailInfo(e);
+				}
+
+				// 閭�璇烽噾甯�
+				integralGetService.addInviteLevelOne(inviter.getId(), invitee.getId());
+			}
+		});
+
+	}
+
+	@Override
+	@Transactional
+	public void bindRelationshipByWX(UserInfo invitee, Long inviterId, ThreeSale threeSaleOld)
+			throws ThreeSaleException {
+
+		if (invitee == null || (inviterId == null && threeSaleOld == null))
+			throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖");
+
+		ThreeSale threeSale = null;
+		if (inviterId != null) {
+			// 鏂板缓绔嬬‘瀹氬叧绯�
+			threeSale = new ThreeSale();
+			threeSale.setBoss(new UserInfo(inviterId));
+			threeSale.setWorker(invitee);
+			threeSale.setState(true);
+			threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
+			threeSale.setSucceedTime(java.lang.System.currentTimeMillis());
+			threeSale.setCreateTime(java.lang.System.currentTimeMillis());
+			threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
+			threeSaleMapper.insertSelective(threeSale);
+
+			// 閭�璇峰叧绯诲け鏁� 1.5.3 涔嬪墠澶辨晥
+			if (threeSaleOld != null) {
+				ThreeSale three = new ThreeSale();
+				three.setId(threeSaleOld.getId());
+				three.setExpire(ThreeSale.EXPIRE_OUTOFDATE);
+				three.setUpdateTime(java.lang.System.currentTimeMillis());
+				threeSaleMapper.updateByPrimaryKeySelective(three);
+			}
+		} else if (threeSaleOld != null && inviterId == null) {
+			// 1.5.3 涔嬪墠鐢熸晥
+			threeSaleOld.setState(true);
+			threeSaleOld.setExpire(ThreeSale.EXPIRE_NORMAL);
+			threeSaleOld.setSucceedTime(java.lang.System.currentTimeMillis());
+			threeSaleOld.setUpdateTime(java.lang.System.currentTimeMillis());
+			threeSaleMapper.updateByPrimaryKeySelective(threeSaleOld);
+
+			threeSale = threeSaleOld;
+		}
+
+		if (threeSale == null) {
+			throw new ThreeSaleException(1, "鍏崇郴缁戝畾澶辫触");
+		}
+
+		UserInfo boss = userInfoService.selectByPKey(threeSale.getBoss().getId());
+		threeSale.setBoss(boss);
+		threeSale.setWorker(invitee);
+
+		// 娣诲姞鍒伴槦鍒�
+		ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale);
+
+		// 閭�璇锋秷鎭�
+		userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale);
+
+		executor.execute(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(inviterId);
+					if (activeLog != null && !StringUtil.isNullOrEmpty(activeLog.getVersionCode())) {
+						boolean result = false;
+						String versionCode = activeLog.getVersionCode();
+						String channel = activeLog.getChannel();
+
+						// 娓犻亾鏄痑ppstore 鍒ゆ柇涓篒OS
+						if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) {
+							result = VersionUtil.greaterThan_1_5_60("ios", versionCode);
+						} else {
+							result = VersionUtil.greaterThan_1_5_60("android", versionCode);
+						}
+
+						if (result) {
+							// 琚個璇峰悕绉�
+							String inviteName = invitee.getNickName();
+							if (StringUtil.isNullOrEmpty(inviteName)) {
+								UserInfo userInfo = userInfoService.selectByPKey(invitee.getId());
+								if (userInfo != null) {
+									inviteName = userInfo.getNickName();
+								}
+							}
+							// 濂栧姳閭�璇风孩鍖咃紙娣樼ぜ閲戯級
+							userTaoLiJinOriginService.addInviteWinMoney(inviterId, inviteName);
+						}
+					}
+				} catch (Exception e) {
+					LogHelper.errorDetailInfo(e);
+				}
+			}
+		});
+	}
+
+	/**
+	 * 鏍规嵁閭�璇疯�呮煡璇㈠叧绯�
+	 * 
+	 * @param workerId
+	 * @return
+	 */
+	@Override
+	public ThreeSale getByWorkerId(Long workerId) {
+		return threeSaleMapper.getByWorkerId(workerId);
 	}
 
 	@Override
@@ -540,4 +705,19 @@
 		return threeSaleMapper.selectSuccessByWorkerId(workerId);
 	}
 
+	@Override
+	public List<ThreeSale> getSuccessByDate(Long bossId, Long minTime, Long maxTime) {
+		return threeSaleMapper.getSuccessByDate(bossId, minTime, maxTime);
+	}
+
+	@Override
+	public List<ThreeSale> listFirstTeam(long start, int count, Long uid, Integer state) {
+		return threeSaleMapper.listFirstTeam(start, count, uid, state);
+	}
+
+	@Override
+	public List<ThreeSale> listSecondTeam(long start, int count, Long uid, Integer state) {
+		return threeSaleMapper.listSecondTeam(start, count, uid, state);
+	}
+
 }

--
Gitblit v1.8.0