From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java |  504 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 354 insertions(+), 150 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java
index 4319d83..a470b90 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java
@@ -1,150 +1,354 @@
-package com.yeshi.fanli.service.impl.user.invite;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-import javax.annotation.Resource;
-
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.yeshi.fanli.dao.mybatis.user.UserInviteValidNumMapper;
-import com.yeshi.fanli.dao.mybatis.user.UserInviteValidRecordMapper;
-import com.yeshi.fanli.entity.bus.user.ThreeSale;
-import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
-import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
-import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
-import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.StringUtil;
-
-@Service
-public class UserInviteValidNumServiceImpl implements UserInviteValidNumService {
-	@Resource
-	private UserInviteValidNumMapper userInviteValidNumMapper;
-
-	@Resource
-	private UserInviteValidRecordMapper userInviteValidRecordMapper;
-	
-	@Resource
-	private ThreeSaleSerivce threeSaleSerivce;
-	
-	
-	@Override
-	public UserInviteValidNum selectByPrimaryKey(Long id) {
-		return userInviteValidNumMapper.selectByPrimaryKey(id);
-	}
-	
-
-	/**
-	 *  鐩存帴绮変笣 +1
-	 * @param uid
-	 */
-	@Transactional(rollbackFor = Exception.class)
-	private void addNumFirst(Long uid) {
-		UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
-		if (inviteValid != null) {
-			userInviteValidNumMapper.addNumFirst(uid, 1);
-		} else {
-			inviteValid = new UserInviteValidNum();
-			inviteValid.setId(uid);
-			inviteValid.setNumFirst(1);
-			inviteValid.setNumSecond(0);
-			inviteValid.setUpdateTime(new Date());
-			userInviteValidNumMapper.insertSelective(inviteValid);
-		}
-	}
-
-	/**
-	 *  闂存帴绮変笣 +1
-	 * @param uid
-	 */
-	@Transactional(rollbackFor = Exception.class)
-	private void addNumSecond(Long uid) {
-		UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
-		if (inviteValid != null) {
-			userInviteValidNumMapper.addNumSecond(uid, 1);
-		} else {
-			inviteValid = new UserInviteValidNum();
-			inviteValid.setId(uid);
-			inviteValid.setNumFirst(0);
-			inviteValid.setNumSecond(1);
-			inviteValid.setUpdateTime(new Date());
-			userInviteValidNumMapper.insertSelective(inviteValid);
-		}
-	}
-	
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void addValidTeamNum(Long uid, BigDecimal payment, Date payDate) {
-		if (uid == null || payment == null || payDate == null) {
-			return;
-		}
-		
-		try {
-			// 浠樻閲戦灏忎簬1
-			if (payment.compareTo(Constant.VIP_ORDER_PAY) < 0) {
-				return;
-			}
-			
-			// 鏄惁涓婄骇
-			ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
-			if (threeSale == null) {
-				return;
-			}
-			
-			// 闃熷憳鍏崇郴鏈夋晥鏃堕棿
-			Long succeedTime = threeSale.getSucceedTime();
-			if (succeedTime == null) {
-				succeedTime = threeSale.getCreateTime();
-			}
-			
-			// 涓嬪崟鏃堕棿鍦ㄧ敓浜у叧绯讳箣鍓�
-			if (payDate.getTime() <= succeedTime.longValue()) {
-				return;
-			}
-			
-			Long bossId = threeSale.getBoss().getId();
-			String uniqueKey = StringUtil.Md5(bossId + "#" + uid + "#" + UserInviteValidRecord.TYPE_ONE);
-			UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
-			if (record == null) {
-				record = new UserInviteValidRecord();
-				record.setUid(bossId);
-				record.setWorkerId(uid);
-				record.setType(UserInviteValidRecord.TYPE_ONE);
-				record.setUniqueKey(uniqueKey);
-				record.setCreateTime(new Date());
-				userInviteValidRecordMapper.insertSelective(record);
-				
-				// 鏇存柊涓婄骇鐨勭洿鎺ョ矇涓濇暟閲�
-				addNumFirst(bossId);
-			}
-			
-			// 鏄惁涓婁笂绾�
-			ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId);
-			if (threeSaleSuper == null) {
-				return;
-			}
-			// 闂存帴鍏崇郴
-			Long bossIdSuper = threeSaleSuper.getBoss().getId();
-			String uniqueKeySuper = StringUtil.Md5(bossIdSuper + "#" + uid + "#" + UserInviteValidRecord.TYPE_TWO);
-			UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
-			if (recordSuper == null) {
-				recordSuper = new UserInviteValidRecord();
-				recordSuper.setUid(bossIdSuper);
-				recordSuper.setWorkerId(uid);
-				recordSuper.setType(UserInviteValidRecord.TYPE_TWO);
-				recordSuper.setUniqueKey(uniqueKeySuper);
-				recordSuper.setCreateTime(new Date());
-				userInviteValidRecordMapper.insertSelective(recordSuper);
-				
-				// 鏇存柊涓婁笂绾х殑闂存帴绮変笣鏁伴噺
-				addNumSecond(bossIdSuper);
-			}
-		} catch (Exception e) {
-			LogHelper.error(e);
-		}
-	}
-	 
-}
+package com.yeshi.fanli.service.impl.user.invite;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.aliyun.openservices.ons.api.Message;
+import com.aliyun.openservices.ons.api.Producer;
+import com.yeshi.fanli.dao.mybatis.user.UserInviteValidNumMapper;
+import com.yeshi.fanli.dao.mybatis.user.UserInviteValidRecordMapper;
+import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
+import com.yeshi.fanli.dto.mq.user.body.BeComeValidUserMQMsg;
+import com.yeshi.fanli.entity.bus.user.ThreeSale;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
+import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.order.CommonOrderService;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
+import com.yeshi.fanli.service.manger.msg.RocketMQManager;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
+import com.yeshi.fanli.util.rocketmq.MQTopicName;
+
+@Service
+public class UserInviteValidNumServiceImpl implements UserInviteValidNumService {
+	@Resource
+	private UserInviteValidNumMapper userInviteValidNumMapper;
+
+	@Resource
+	private UserInviteValidRecordMapper userInviteValidRecordMapper;
+
+	@Lazy
+	@Resource
+	private ThreeSaleSerivce threeSaleSerivce;
+
+	@Lazy
+	@Resource
+	private UserInfoService userInfoService;
+
+	@Lazy
+	@Resource
+	private CommonOrderService commonOrderService;
+
+	@Resource
+	private RocketMQManager rocketMQManager;
+
+	@Override
+	public UserInviteValidNum selectByPrimaryKey(Long id) {
+		return userInviteValidNumMapper.selectByPrimaryKey(id);
+	}
+
+	/**
+	 *  鐩存帴绮変笣 +1
+	 * @param uid
+	 */
+	@Transactional(rollbackFor = Exception.class)
+	private void addNumFirst(Long uid) {
+		UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
+		if (inviteValid != null) {
+			userInviteValidNumMapper.addNumFirst(uid, 1);
+		} else {
+			inviteValid = new UserInviteValidNum();
+			inviteValid.setId(uid);
+			inviteValid.setNumFirst(1);
+			inviteValid.setNumSecond(0);
+			inviteValid.setUpdateTime(new Date());
+			userInviteValidNumMapper.insertSelective(inviteValid);
+		}
+	}
+
+	/**
+	 *  鐩存帴绮変笣 -1
+	 * @param uid
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void reduceValidNumFirst(Long uid, Long workerId) {
+		UserInviteValidRecord record = userInviteValidRecordMapper.getByUidAndWorkerId(uid, workerId,
+				UserInviteValidRecord.TYPE_ONE);
+		if (record == null) {
+			return;
+		}
+
+		UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
+		if (inviteValid != null) {
+			int num = 0;
+			if (inviteValid.getNumFirst() > 0) {
+				num = inviteValid.getNumFirst() - 1;
+			}
+			inviteValid.setId(uid);
+			inviteValid.setNumFirst(num);
+			inviteValid.setUpdateTime(new Date());
+			userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid);
+		}
+
+		// 鍒犻櫎鏈夋晥璁板綍
+		userInviteValidRecordMapper.deleteByPrimaryKey(record.getId());
+	}
+
+	/**
+	 *  鐩存帴绮変笣 -1
+	 * @param uid
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void reduceValidNumSecond(Long uid, Long workerId) {
+		UserInviteValidRecord record = userInviteValidRecordMapper.getByUidAndWorkerId(uid, workerId,
+				UserInviteValidRecord.TYPE_TWO);
+		if (record == null) {
+			return;
+		}
+
+		UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
+		if (inviteValid != null) {
+			int num = 0;
+			if (inviteValid.getNumFirst() > 0) {
+				num = inviteValid.getNumSecond() - 1;
+			}
+			inviteValid.setId(uid);
+			inviteValid.setNumSecond(num);
+			inviteValid.setUpdateTime(new Date());
+			userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid);
+		}
+
+		// 鍒犻櫎鏈夋晥璁板綍
+		userInviteValidRecordMapper.deleteByPrimaryKey(record.getId());
+	}
+
+	/**
+	 *  闂存帴绮変笣 +1
+	 * @param uid
+	 */
+	@Transactional(rollbackFor = Exception.class)
+	private void addNumSecond(Long uid) {
+		UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
+		if (inviteValid != null) {
+			userInviteValidNumMapper.addNumSecond(uid, 1);
+		} else {
+			inviteValid = new UserInviteValidNum();
+			inviteValid.setId(uid);
+			inviteValid.setNumFirst(0);
+			inviteValid.setNumSecond(1);
+			inviteValid.setUpdateTime(new Date());
+			userInviteValidNumMapper.insertSelective(inviteValid);
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void addValidTeamNum(Long uid, BigDecimal payment, Date payDate) {
+		if (uid == null || payment == null || payDate == null) {
+			return;
+		}
+
+		try {
+			// 浠樻閲戦灏忎簬1
+			if (payment.compareTo(Constant.VIP_ORDER_PAY) < 0) {
+				return;
+			}
+
+			// 鏄惁涓婄骇
+			ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
+			if (threeSale == null) {
+				return;
+			}
+
+			// 闃熷憳鍏崇郴鏈夋晥鏃堕棿
+			Long succeedTime = threeSale.getSucceedTime();
+			if (succeedTime == null) {
+				succeedTime = threeSale.getCreateTime();
+			}
+
+			// 涓嬪崟鏃堕棿鍦ㄧ敓浜у叧绯讳箣鍓�
+			if (payDate.getTime() <= succeedTime.longValue()) {
+				return;
+			}
+
+			Long bossId = threeSale.getBoss().getId();
+			String uniqueKey = StringUtil.Md5(uid + "#" + UserInviteValidRecord.TYPE_ONE);
+			UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
+			if (record == null) {
+				record = new UserInviteValidRecord();
+				record.setUid(bossId);
+				record.setWorkerId(uid);
+				record.setType(UserInviteValidRecord.TYPE_ONE);
+				record.setUniqueKey(uniqueKey);
+				record.setCreateTime(new Date());
+				userInviteValidRecordMapper.insertSelective(record);
+
+				// 鏇存柊涓婄骇鐨勭洿鎺ョ矇涓濇暟閲�
+				addNumFirst(bossId);
+			}
+
+			// 鍙戦�佹垚涓烘湁鏁堢矇涓濈殑娑堟伅
+			if (!Constant.IS_TEST) {
+				BeComeValidUserMQMsg msg = new BeComeValidUserMQMsg(uid, new Date());
+				Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.becomeValidUser,
+						msg);
+				rocketMQManager.sendNormalMsg(message, null);
+			}
+
+			// 鏄惁涓婁笂绾�
+			ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId);
+			if (threeSaleSuper == null) {
+				return;
+			}
+			// 闂存帴鍏崇郴
+			Long bossIdSuper = threeSaleSuper.getBoss().getId();
+			String uniqueKeySuper = StringUtil.Md5(uid + "#" + UserInviteValidRecord.TYPE_TWO);
+			UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
+			if (recordSuper == null) {
+				recordSuper = new UserInviteValidRecord();
+				recordSuper.setUid(bossIdSuper);
+				recordSuper.setWorkerId(uid);
+				recordSuper.setType(UserInviteValidRecord.TYPE_TWO);
+				recordSuper.setUniqueKey(uniqueKeySuper);
+				recordSuper.setCreateTime(new Date());
+				userInviteValidRecordMapper.insertSelective(recordSuper);
+
+				// 鏇存柊涓婁笂绾х殑闂存帴绮変笣鏁伴噺
+				addNumSecond(bossIdSuper);
+			}
+		} catch (Exception e) {
+			LogHelper.error(e);
+		}
+	}
+
+	@Override
+	public void syncInfoAgain(Long workerId) {
+		// 鏇存柊涓婄骇
+		ThreeSale threeSale = threeSaleSerivce.getByWorkerId(workerId);
+		if (threeSale == null) {
+			return;
+		}
+
+		Long uid = threeSale.getBoss().getId();
+		UserInfo userInfo = userInfoService.selectByPKey(uid);
+		if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
+			return;
+		}
+
+		int countTeam1 = 0;
+		List<ThreeSale> listFirstTeam = threeSaleSerivce.listFirstTeam(0, Integer.MAX_VALUE, uid);
+		if (listFirstTeam != null && listFirstTeam.size() > 0) {
+			for (ThreeSale firstTeam : listFirstTeam) {
+				if (firstTeam.getWorker() == null || firstTeam.getWorker().getId() == null) {
+					continue;
+				}
+				Long wid = firstTeam.getWorker().getId();
+				String uniqueKey = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_ONE);
+				UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
+				if (record != null) {
+					countTeam1++;
+				} else {
+					long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY);
+					if (countValid > 0) {
+						countTeam1++;
+
+						record = new UserInviteValidRecord();
+						record.setUid(uid);
+						record.setWorkerId(wid);
+						record.setType(UserInviteValidRecord.TYPE_ONE);
+						record.setUniqueKey(uniqueKey);
+						record.setCreateTime(new Date());
+						userInviteValidRecordMapper.insertSelective(record);
+					}
+				}
+			}
+		}
+
+		UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
+		if (inviteValid != null) {
+			UserInviteValidNum updateObj = new UserInviteValidNum();
+			updateObj.setId(uid);
+			updateObj.setNumFirst(countTeam1);
+			;
+			userInviteValidNumMapper.updateByPrimaryKeySelective(updateObj);
+		} else {
+			inviteValid = new UserInviteValidNum();
+			inviteValid.setId(uid);
+			inviteValid.setNumFirst(countTeam1);
+			inviteValid.setNumSecond(0);
+			inviteValid.setUpdateTime(new Date());
+			userInviteValidNumMapper.insertSelective(inviteValid);
+		}
+
+		// 鏇存柊涓婁笂绾т俊鎭�
+		ThreeSale superThreeSale = threeSaleSerivce.getByWorkerId(uid);
+		if (superThreeSale == null) {
+			return;
+		}
+
+		Long superUid = superThreeSale.getBoss().getId();
+		UserInfo superUserInfo = userInfoService.selectByPKey(superUid);
+		if (superUserInfo == null || superUserInfo.getState() != UserInfo.STATE_NORMAL) {
+			return;
+		}
+
+		int countTeam2 = 0;
+		List<ThreeSale> listSecondTeam = threeSaleSerivce.listSecondTeam(0, Integer.MAX_VALUE, superUid);
+		if (listSecondTeam != null && listSecondTeam.size() > 0) {
+			for (ThreeSale team : listSecondTeam) {
+				if (team.getWorker() == null || team.getWorker().getId() == null) {
+					continue;
+				}
+				Long wid = team.getWorker().getId();
+				String uniqueKeySuper = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_TWO);
+				UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
+				if (recordSuper != null) {
+					countTeam2++;
+				} else {
+					long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY);
+					if (countValid > 0) {
+						countTeam2++;
+
+						recordSuper = new UserInviteValidRecord();
+						recordSuper.setUid(superUid);
+						recordSuper.setWorkerId(wid);
+						recordSuper.setType(UserInviteValidRecord.TYPE_TWO);
+						recordSuper.setUniqueKey(uniqueKeySuper);
+						recordSuper.setCreateTime(new Date());
+						userInviteValidRecordMapper.insertSelective(recordSuper);
+					}
+				}
+			}
+		}
+
+		UserInviteValidNum inviteValid2 = userInviteValidNumMapper.selectForUpdate(superUid);
+		if (inviteValid2 != null) {
+			UserInviteValidNum updateObj = new UserInviteValidNum();
+			updateObj.setId(superUid);
+			updateObj.setNumSecond(countTeam2);
+			userInviteValidNumMapper.updateByPrimaryKeySelective(updateObj);
+		} else {
+			inviteValid2 = new UserInviteValidNum();
+			inviteValid2.setId(superUid);
+			inviteValid2.setNumFirst(0);
+			inviteValid2.setNumSecond(countTeam2);
+			inviteValid2.setUpdateTime(new Date());
+			userInviteValidNumMapper.insertSelective(inviteValid2);
+		}
+	}
+
+}

--
Gitblit v1.8.0