From 69bee82b81626b82b7f39f0e459e4f56b1699b51 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 13 三月 2019 12:02:16 +0800
Subject: [PATCH] 正式数据库修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java |  182 ++++++++++++++++++++++++++++++++++-----------
 1 files changed, 137 insertions(+), 45 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 17f0b0f..a2eefb0 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
@@ -10,9 +10,6 @@
 
 import javax.annotation.Resource;
 
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
 import org.hibernate.HibernateException;
 import org.hibernate.Query;
 import org.hibernate.SQLQuery;
@@ -32,10 +29,15 @@
 import com.yeshi.fanli.service.inter.config.InviteGetMoneyService;
 import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
 import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService;
 import com.yeshi.fanli.service.inter.msg.UserInviteMsgNotificationService;
 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 net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 
 @Service
 public class ThreeSaleSerivceImpl implements ThreeSaleSerivce {
@@ -57,9 +59,12 @@
 
 	@Resource
 	private ThreeSaleMapper threeSaleMapper;
-	
+
 	@Resource
 	private UserInviteMsgNotificationService userInviteMsgNotificationService;
+
+	@Resource
+	private MsgInviteDetailService msgInviteDetailService;
 
 	public UserInfo getBoss(final long uid) {
 		return (UserInfo) dao.excute(new HibernateCallback<UserInfo>() {
@@ -94,13 +99,14 @@
 	}
 
 	@Transactional
-	public void bind(UserInfo invitee, UserInfo inviter) throws ThreeSaleException {
-		if (invitee == null || inviter == null)
+	public void bind(UserInfo worker, UserInfo inviter) throws ThreeSaleException {
+		if (worker == null || inviter == null)
 			throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖");
-		if (invitee.getId() == null)// 璇ョ敤鎴疯繕涓嶅瓨鍦�
+
+		if (worker.getId() == null)// 璇ョ敤鎴疯繕涓嶅瓨鍦�
 		{
 			// 淇濆瓨鐢ㄦ埛
-			UserInfo inviteeUser = userInfoService.addUser(invitee, Constant.APPID);
+			UserInfo inviteeUser = userInfoService.addUser(worker, Constant.APPID);
 			if (inviteeUser == null)
 				throw new ThreeSaleException(2, "鍒涘缓鐢ㄦ埛澶辫触");
 			// 淇濆瓨鍏崇郴
@@ -112,22 +118,32 @@
 			threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
 			threeSale.setWorker(inviteeUser);
 			threeSaleMapper.insertSelective(threeSale);
-			
-			// 鍒犻櫎宸插け鏁堝叧绯�
-			threeSaleMapper.deleteExpireRecord(inviter.getId(), inviteeUser.getId());
-			
-			//鍒涘缓閫氱煡
+
+			List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), inviteeUser.getId());
+			if (listExpire != null && listExpire.size() > 0) {
+				// 鍒犻櫎澶辨晥
+				for (ThreeSale saleExpire : listExpire) {
+					msgInviteDetailService.deleteByThreeSale(saleExpire);
+				}
+				// 鍒犻櫎宸插け鏁堝叧绯�
+				threeSaleMapper.deleteExpireRecord(inviter.getId(), inviteeUser.getId());
+			}
+
+			// 鍒涘缓閫氱煡
 			userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale);
-			
-			
+
 		} else {// 鏄凡缁忓瓨鍦ㄧ殑鐢ㄦ埛
+			if (worker.getId().longValue() == inviter.getId())
+				throw new ThreeSaleException(4, "涓嶈兘缁戝畾鑷繁");
+
+			worker = userInfoService.selectByPKey(worker.getId());
 
 			// 鐢ㄦ埛宸茬粡瀛樺湪鎴戜滑鐨勭敤鎴峰簱涓�
-			if (invitee.getLastLoginTime() == null || invitee.getLastLoginTime() == 0L) {
+			if (worker.getLastLoginTime() == null || worker.getLastLoginTime() == 0L) {
 				// 鐢ㄦ埛鏈櫥褰�
 				int outOfDateCount = 0;// 杩囨湡鏁伴噺
 				// 鏌ヨ閭�璇峰叧绯�
-				List<ThreeSale> list = listByWorkerId(invitee.getId());
+				List<ThreeSale> list = listByWorkerId(worker.getId());
 				if (list != null && list.size() > 0) {
 					for (ThreeSale ts : list) {
 						if (!ts.getState() && ts.getExpire() == ThreeSale.EXPIRE_OUTOFDATE) {
@@ -143,12 +159,22 @@
 						threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
 						threeSale.setState(false);
 						threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
-						threeSale.setWorker(invitee);
+						threeSale.setWorker(worker);
 						threeSaleMapper.insertSelective(threeSale);
-						
+
 						// 鍒犻櫎宸插け鏁堝叧绯�
-						threeSaleMapper.deleteExpireRecord(inviter.getId(), invitee.getId());
-						
+						threeSaleMapper.deleteExpireRecord(inviter.getId(), worker.getId());
+
+						List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), worker.getId());
+						if (listExpire != null && listExpire.size() > 0) {
+							// 鍒犻櫎鍘嗗彶閫氱煡
+							for (ThreeSale saleExpire : listExpire) {
+								msgInviteDetailService.deleteByThreeSale(saleExpire);
+							}
+							// 鍒犻櫎宸插け鏁堝叧绯�
+							threeSaleMapper.deleteExpireRecord(inviter.getId(), worker.getId());
+						}
+
 						userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale);
 						// threeSaleSerivce.bind(invitee, inviter);
 
@@ -159,27 +185,77 @@
 					// 鐢ㄦ埛鏈櫥褰�,鍙堜笉瀛樺湪閭�璇峰叧绯�,涓嶅仛澶勭悊
 				}
 			} else {
-				// 宸茬粡鐧诲綍锛屼笉鍋氬鐞�
+				// 宸茬粡鐧诲綍锛岃�屼笖娌℃湁涓婁笅绾у叧绯绘垨鑰呬笂涓嬬骇鍏崇郴鏈敓鏁堬紝鍒欑粦瀹氬叧绯�
+				List<ThreeSale> list = threeSaleMapper.listByWorkerId(worker.getId());
+				// 鍒犻櫎鏃犳晥鐨�
+				if (list != null)
+					for (int i = 0; i < list.size(); i++) {
+						if (list.get(i).getState() != null && list.get(i).getState() == false
+								&& list.get(i).getExpire() == ThreeSale.EXPIRE_OUTOFDATE) {// 杩囨湡鐨�
+							list.remove(i);
+							i--;
+						}
+					}
+				// 鏌ヨ涓婄骇鏄惁鏈夊拰鐜板湪涓婄骇涓�鏍风殑
+				if (list == null || list.size() == 0)// 灏氭湭纭珛鍏崇郴锛屽缓绔嬪叧绯�
+				{
+					ThreeSale ts = new ThreeSale();
+					ts.setBoss(inviter);
+					ts.setCreateTime(System.currentTimeMillis());
+					ts.setExpire(ThreeSale.EXPIRE_NORMAL);
+					ts.setState(true);
+					ts.setSucceedTime(System.currentTimeMillis());
+					ts.setWorker(worker);
+					threeSaleMapper.insertSelective(ts);
+					ThreeSaleCMQManager.getInstance().addThreeSaleMsg(ts);
+					userInviteMsgNotificationService.inviteSuccess(inviter.getId(), ts);
+				} else {
+					if (!list.get(0).getState() && list.get(0).getExpire() == ThreeSale.EXPIRE_NORMAL
+							&& list.get(0).getBoss().getId() == inviter.getId().longValue()) {// 鏈敓鏁堢殑涓婄骇鍜岀幇鍦ㄤ笂绾т竴鏍峰氨鐢熸晥
+						ThreeSale update = new ThreeSale(list.get(0).getId());
+						update.setState(true);
+						update.setSucceedTime(System.currentTimeMillis());
+						threeSaleMapper.updateByPrimaryKeySelective(update);
+						ThreeSaleCMQManager.getInstance().addThreeSaleMsg(list.get(0));// 娣诲姞閫氱煡
+						userInviteMsgNotificationService.inviteSuccess(inviter.getId(), list.get(0));
+					}
+				}
 			}
 		}
 	}
 
 	@Transactional
-	public void effective(UserInfo invitee) {
-		List<ThreeSale> list = dao.list("from ThreeSale ts where ts.worker.id = ? and ts.state=0 and ts.expire=0",
-				new Serializable[] { invitee.getId() });
+	public void effective(UserInfo worker) {
+		List<ThreeSale> list = threeSaleMapper.listByWorkerId(worker.getId());
+		if (list != null)
+			for (int i = 0; i < list.size(); i++) {
+				if (list.get(i).getState() != null && list.get(i).getState() == false
+						&& list.get(i).getExpire() == ThreeSale.EXPIRE_NORMAL) {
+					;
+				} else {
+					list.remove(i);
+					i--;
+				}
+			}
 		if (list.size() > 0) {
-			ThreeSale threeSale = list.get(0);
-			UserInfo inviter = threeSale.getBoss();
-			threeSale.setState(true);
-			threeSale.setSucceedTime(System.currentTimeMillis());
-			dao.update(threeSale);
-			if (inviter != null)
-				reComputeUserRank(inviter.getId());
-			//閫氱煡
-			userInviteMsgNotificationService.inviteSuccess(inviter.getId(), threeSale);
-			// }
-			// });
+			ThreeSale oldSale = list.get(0);
+
+			ThreeSale update = new ThreeSale(list.get(0).getId());
+			update.setState(true);
+			update.setSucceedTime(System.currentTimeMillis());
+			threeSaleMapper.updateByPrimaryKeySelective(update);
+
+			oldSale.setState(update.getState());
+			oldSale.setSucceedTime(update.getSucceedTime());
+
+			UserInfo inviter = list.get(0).getBoss();
+			// 涓嶄互閭�璇蜂汉鏁拌绠楃瓑绾�
+			// if (inviter != null)
+			// reComputeUserRank(inviter.getId());
+			// 娣诲姞鍒伴槦鍒�
+			ThreeSaleCMQManager.getInstance().addThreeSaleMsg(oldSale);
+			// 閫氱煡
+			userInviteMsgNotificationService.inviteSuccess(inviter.getId(), oldSale);
 		}
 	}
 
@@ -595,8 +671,7 @@
 	public List<ThreeSale> listByWorkerId(Long workerId) {
 		return threeSaleMapper.listByWorkerId(workerId);
 	}
-	
-	
+
 	@Override
 	public int getSuccessRelationshipNum(Long uid) {
 		return threeSaleMapper.getSuccessRelationshipNum(uid);
@@ -605,14 +680,13 @@
 	@Override
 	@Transactional
 	public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException {
-		
+
 		if (invitee == null || inviter == null)
 			throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖");
-		
+
 		// 鑾峰彇鏈夋晥鐨勯個璇峰叧绯�
-		ThreeSale threeSale = 
-				threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId());
-		
+		ThreeSale threeSale = threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId());
+
 		if (threeSale != null) {
 			// 鏈夋晥鍏崇郴--鐢熸晥
 			threeSale.setState(true);
@@ -631,11 +705,29 @@
 			threeSale.setCreateTime(java.lang.System.currentTimeMillis());
 			threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
 			threeSaleMapper.insertSelective(threeSale);
-			
+
+		}
+
+		List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), invitee.getId());
+		if (listExpire != null && listExpire.size() > 0) {
+			// 鍒犻櫎鍘嗗彶閫氱煡
+			for (ThreeSale saleExpire : listExpire) {
+				msgInviteDetailService.deleteByThreeSale(saleExpire);
+			}
 			// 鍒犻櫎宸插け鏁堝叧绯�
 			threeSaleMapper.deleteExpireRecord(inviter.getId(), invitee.getId());
 		}
 
+		// 娣诲姞鍒伴槦鍒�
+		ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale);
+
+		// 閭�璇锋秷鎭�
+		userInviteMsgNotificationService.inviteSuccess(inviter.getId(), threeSale);
 	}
-	
+
+	@Override
+	public long countSuccessFirstTeam(Long uid) {
+		return threeSaleMapper.countFirstTeam(uid, 1);
+	}
+
 }

--
Gitblit v1.8.0