From 9a24f2802a3d6fe3e82c05e52f2880d65ad04dcf Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 29 四月 2019 08:59:47 +0800
Subject: [PATCH] Merge branch 'div_develop' into master_develop

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java |  304 ++++++++++++++------------------------------------
 1 files changed, 87 insertions(+), 217 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 2733077..93cef48 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
@@ -1,32 +1,22 @@
 package com.yeshi.fanli.service.impl.hongbao;
 
-import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 import javax.annotation.Resource;
 
-import org.hibernate.HibernateException;
-import org.hibernate.Query;
-import org.hibernate.SQLQuery;
-import org.hibernate.Session;
-import org.springframework.orm.hibernate4.HibernateCallback;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.yeshi.utils.NumberUtil;
 
 import com.yeshi.fanli.dao.mybatis.ThreeSaleMapper;
 import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
-import com.yeshi.fanli.dao.user.ThreeSaleDao;
 import com.yeshi.fanli.entity.bus.user.ThreeSale;
 import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.exception.ThreeSaleException;
-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;
@@ -34,7 +24,7 @@
 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.cmq.ThreeSaleCMQManager;
 
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -43,16 +33,10 @@
 public class ThreeSaleSerivceImpl implements ThreeSaleSerivce {
 
 	@Resource
-	private ThreeSaleDao dao;
-
-	@Resource
 	private HongBaoManageService hongBaoManageService;
 
 	@Resource
 	private UserInfoService userInfoService;
-
-	@Resource
-	private InviteGetMoneyService inviteGetMoneyService;
 
 	@Resource
 	private UserInfoMapper userInfoMapper;
@@ -67,41 +51,14 @@
 	private MsgInviteDetailService msgInviteDetailService;
 
 	public UserInfo getBoss(final long uid) {
-		return (UserInfo) dao.excute(new HibernateCallback<UserInfo>() {
-			public UserInfo doInHibernate(Session session) throws HibernateException {
-				Query query = session.createQuery("select ts.boss FROM ThreeSale ts where ts.worker.id = ?");
-				query.setParameter(0, uid);
-				List<UserInfo> list = query.list();
-				if (list.size() > 0) {
-					return list.get(0);
-				}
-				return null;
-			}
-		});
-	}
-
-	public int findInviteCount(final long id) {
-
-		return (Integer) dao.excute(new HibernateCallback<Integer>() {
-
-			public Integer doInHibernate(Session session) throws HibernateException {
-				SQLQuery query = session.createSQLQuery(
-						"SELECT COUNT(*) from `yeshi_ec_threesale` t1  RIGHT JOIN (SELECT t2.`worker_id` AS worker_id FROM `yeshi_ec_threesale` t2  WHERE t2.`boss_id`=? ) t3 ON t1.`boss_id`=t3.worker_id WHERE t1.`boss_id`=t3.worker_id ");
-				query.setParameter(0, id);
-				SQLQuery query2 = session
-						.createSQLQuery("SELECT COUNT(*) from `yeshi_ec_threesale` t4 WHERE t4.`boss_id`=?");
-				query2.setParameter(0, id);
-				int int1 = Integer.parseInt(query.uniqueResult() + "");
-				int int2 = Integer.parseInt(query2.uniqueResult() + "");
-				return int1 + int2;
-			}
-		});
+		return threeSaleMapper.selectBoss(uid);
 	}
 
 	@Transactional
 	public void bind(UserInfo worker, UserInfo inviter) throws ThreeSaleException {
 		if (worker == null || inviter == null)
 			throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖");
+
 		if (worker.getId() == null)// 璇ョ敤鎴疯繕涓嶅瓨鍦�
 		{
 			// 淇濆瓨鐢ㄦ埛
@@ -132,6 +89,9 @@
 			userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale);
 
 		} else {// 鏄凡缁忓瓨鍦ㄧ殑鐢ㄦ埛
+			if (worker.getId().longValue() == inviter.getId())
+				throw new ThreeSaleException(4, "涓嶈兘缁戝畾鑷繁");
+
 			worker = userInfoService.selectByPKey(worker.getId());
 
 			// 鐢ㄦ埛宸茬粡瀛樺湪鎴戜滑鐨勭敤鎴峰簱涓�
@@ -212,7 +172,7 @@
 						update.setState(true);
 						update.setSucceedTime(System.currentTimeMillis());
 						threeSaleMapper.updateByPrimaryKeySelective(update);
-						ThreeSaleCMQManager.getInstance().addThreeSaleMsg(list.get(0));//娣诲姞閫氱煡
+						ThreeSaleCMQManager.getInstance().addThreeSaleMsg(list.get(0));// 娣诲姞閫氱煡
 						userInviteMsgNotificationService.inviteSuccess(inviter.getId(), list.get(0));
 					}
 				}
@@ -255,165 +215,14 @@
 		}
 	}
 
-	@Transactional
-	public void validateTwentyFour() {
-		dao.excute(new HibernateCallback() {
-			@Override
-			public Object doInHibernate(Session session) throws HibernateException {
-				long currentTimeMillis = System.currentTimeMillis();
-				Query query = session
-						.createQuery("delete from ThreeSale ts where ts.state = ? and (?-ts.createTime) > 86400000");
-				query.setParameter(0, false);
-				query.setParameter(1, currentTimeMillis);
-				query.executeUpdate();
-				return null;
-			}
-		});
-	}
-
-	@Transactional
-	public void validate365() {
-		dao.excute(new HibernateCallback() {
-			@Override
-			public Object doInHibernate(Session session) throws HibernateException {
-				long currentTimeMillis = System.currentTimeMillis();
-				Query query = session.createQuery("delete from ThreeSale ts where (?-ts.createTime) > 31536000000");
-				query.setParameter(0, currentTimeMillis);
-				query.executeUpdate();
-				return null;
-			}
-		});
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public List<UserInfo> getFirstUsers(Long uid, int page) {
-		return (List<UserInfo>) dao.excute(new HibernateCallback<List<UserInfo>>() {
-
-			@Override
-			public List<UserInfo> doInHibernate(Session session) throws HibernateException {
-				Query query = session
-						.createSQLQuery(
-								"SELECT u.* FROM `yeshi_ec_threesale` t LEFT JOIN `yeshi_ec_user` u ON u.`id`=t.`worker_id` WHERE  t.`boss_id`=? ORDER BY t.`createtime` DESC")
-						.addEntity(UserInfo.class);
-				query.setParameter(0, uid);
-				query.setFirstResult((page - 1) * Constant.PAGE_SIZE).setMaxResults(Constant.PAGE_SIZE);
-				return query.list();
-			}
-		});
-
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public List<UserInfo> getSecondUsers(Long uid, int page) {
-		return (List<UserInfo>) dao.excute(new HibernateCallback<List<UserInfo>>() {
-
-			@Override
-			public List<UserInfo> doInHibernate(Session session) throws HibernateException {
-				Query query = session
-						.createSQLQuery(
-								"SELECT u.* FROM `yeshi_ec_threesale` t LEFT JOIN yeshi_ec_threesale t1 ON t1.`boss_id`=t.`worker_id` LEFT JOIN `yeshi_ec_user` u ON u.`id`=t1.`worker_id` WHERE  t.`boss_id`=? AND u.`id` IS NOT NULL GROUP BY u.`id` ORDER BY t.`createtime` DESC")
-						.addEntity(UserInfo.class);
-				query.setParameter(0, uid);
-				query.setFirstResult((page - 1) * Constant.PAGE_SIZE).setMaxResults(Constant.PAGE_SIZE);
-				return query.list();
-			}
-		});
-	}
-
-	@Override
-	public List<ThreeSale> getLastestThreeSaleList(int page, String key) {
-		if (NumberUtil.isNumeric(key)) {
-			Long uid = Long.parseLong(key);
-			int start = (page - 1) * Constant.PAGE_SIZE;
-			List<ThreeSale> list = dao.list(
-					"from ThreeSale ts where ts.boss.nickName like ? or ts.boss.id = ? or ts.worker.nickName like ? or ts.worker.id = ? order by ts.createTime desc",
-					start, Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%", uid, "%" + key + "%", uid });
-			return list;
-		}
-		int start = (page - 1) * Constant.PAGE_SIZE;
-		List<ThreeSale> list = dao.list(
-				"from ThreeSale ts where ts.boss.nickName like ? or ts.worker.nickName like ? order by ts.createTime desc",
-				start, Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%", "%" + key + "%" });
-		return list;
-
-	}
-
-	@Override
-	public int getLastestThreeSaleCount(String key) {
-		if (NumberUtil.isNumeric(key)) {
-			long lk = Long.parseLong(key);
-			return (int) dao.getCount(
-					"select count(*) from ThreeSale ts where ts.boss.id = ? or ts.worker.id = ? or ts.boss.nickName like ? or ts.worker.nickName like ?",
-					new Serializable[] { lk, lk, "%" + key + "%", "%" + key + "%" });
-		}
-		Long lcount = dao.getCount(
-				"select count(*) from ThreeSale ts where ts.boss.nickName like ? or ts.worker.nickName like ?",
-				new Serializable[] { "%" + key + "%", "%" + key + "%" });
-		return lcount.intValue();
-
-	}
-
 	@Override
 	public long getFirstUsersCount(Long uid) {
-		return (Long) dao.excute(new HibernateCallback<Long>() {
-
-			@Override
-			public Long doInHibernate(Session session) throws HibernateException {
-				Query query = session.createSQLQuery(
-						"SELECT count(u.id) FROM `yeshi_ec_threesale` t LEFT JOIN `yeshi_ec_user` u ON u.`id`=t.`worker_id` WHERE  t.`boss_id`=?");
-				query.setParameter(0, uid);
-				Object count = query.uniqueResult();
-				return Long.parseLong(count + "");
-			}
-		});
+		return threeSaleMapper.countFirstTeam(uid, null);
 	}
 
 	@Override
 	public long getSecondUsersCount(Long uid) {
-		return (Long) dao.excute(new HibernateCallback<Long>() {
-
-			@Override
-			public Long doInHibernate(Session session) throws HibernateException {
-				Query query = session.createSQLQuery(
-						"SELECT count(1) FROM `yeshi_ec_threesale` t LEFT JOIN yeshi_ec_threesale t1 ON t1.`boss_id`=t.`worker_id` LEFT JOIN `yeshi_ec_user` u ON u.`id`=t1.`worker_id` WHERE  t.`boss_id`=? AND u.`id` IS NOT NULL");
-				query.setParameter(0, uid);
-				Object count = query.uniqueResult();
-				return Long.parseLong(count + "");
-			}
-		});
-	}
-
-	@Override
-	public void reComputeUserRank(Long uid) {
-		int myFirstTeamCount = inviteGetMoneyService.myFirstTeamCount(uid + "");
-		int mySecondTeamCount = inviteGetMoneyService.mySecondTeamCount(uid + "");
-		int count = myFirstTeamCount + mySecondTeamCount;
-		UserInfo user = userInfoService.getUserById(uid);
-		if (user == null)
-			return;
-
-		Map<String, String> convertMap = hongBaoManageService.convertMap();
-		int tong = Integer.parseInt(convertMap.get("sale_tong"));
-		int yin = Integer.parseInt(convertMap.get("sale_yin"));
-		int jin = Integer.parseInt(convertMap.get("sale_jin"));
-		int rank = user.getRank();
-		if (count >= jin) {
-			rank = 3;
-		} else if (count >= yin) {
-			rank = 2;
-		} else if (count >= tong) {
-			rank = 1;
-		}
-
-		if (rank > user.getRank()) {
-			// 鏇存柊Rank
-			UserInfo userInfo = new UserInfo(uid);
-			userInfo.setRank(rank);
-			userInfoMapper.updateByPrimaryKeySelective(userInfo);
-		}
-
+		return threeSaleMapper.countSecondTeam(uid, null);
 	}
 
 	@Override
@@ -488,20 +297,12 @@
 		return threeSaleMapper.countSuperiorQuery(state, uid);
 	}
 
-	@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
 	public long countSecondTeam(Long uid, Integer state) {
@@ -524,26 +325,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);
 	}
@@ -677,9 +478,9 @@
 	@Transactional
 	public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException {
 
-		if (invitee == null || inviter == null)
+		if (invitee == null || inviter == null) 
 			throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖");
-
+		
 		// 鑾峰彇鏈夋晥鐨勯個璇峰叧绯�
 		ThreeSale threeSale = threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId());
 
@@ -701,7 +502,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());
@@ -722,8 +522,78 @@
 	}
 
 	@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);
+		
+		
+		// 娣诲姞鍒伴槦鍒�
+		ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale);
+		// 閭�璇锋秷鎭�
+		userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale);
+	}
+	
+	/**
+	 * 鏍规嵁閭�璇疯�呮煡璇㈠叧绯�
+	 * 
+	 * @param workerId
+	 * @return
+	 */
+	@Override
+	public ThreeSale getByWorkerId(Long workerId) {
+		return threeSaleMapper.getByWorkerId(workerId);
+	}
+	
+	
+	@Override
 	public long countSuccessFirstTeam(Long uid) {
 		return threeSaleMapper.countFirstTeam(uid, 1);
 	}
 
+	@Override
+	public ThreeSale selectByWorkerId(Long workerId) {
+		return threeSaleMapper.selectSuccessByWorkerId(workerId);
+	}
+
 }

--
Gitblit v1.8.0