From 0b57cfd62e842b309d03467b96a331c673ecad7c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 21 四月 2020 14:08:18 +0800
Subject: [PATCH] 删除普通会员等级

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteSeparateServiceImpl.java |  147 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 133 insertions(+), 14 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteSeparateServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteSeparateServiceImpl.java
index 4aa4dab..19b1323 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteSeparateServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteSeparateServiceImpl.java
@@ -5,23 +5,68 @@
 
 import javax.annotation.Resource;
 
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.yeshi.utils.DateUtil;
 
+import com.aliyun.openservices.ons.api.Message;
+import com.aliyun.openservices.ons.api.Producer;
 import com.yeshi.fanli.dao.mybatis.user.UserInviteSeparateMapper;
+import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
+import com.yeshi.fanli.dto.mq.user.body.ThreeSaleSeparateMQMsg;
+import com.yeshi.fanli.entity.bus.user.ThreeSale;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.bus.user.UserInviteSeparate;
+import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
 import com.yeshi.fanli.service.inter.user.UserInviteSeparateService;
+import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService;
+import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
+import com.yeshi.fanli.service.inter.user.invite.UserInviteValidRecordService;
+import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
 import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
+import com.yeshi.fanli.util.rocketmq.MQTopicName;
 
 @Service
 public class UserInviteSeparateServiceImpl implements UserInviteSeparateService {
 
 	@Resource
 	private UserInviteSeparateMapper userInviteSeparateMapper;
-	
+
 	@Resource
 	private UserVipConfigService userVipConfigService;
+
+	@Lazy
+	@Resource
+	private ThreeSaleSerivce threeSaleSerivce;
+
+	@Lazy
+	@Resource
+	private UserVIPPreInfoService userVIPPreInfoService;
+
+	@Lazy
+	@Resource
+	private UserInfoService userInfoService;
+
+	@Lazy
+	@Resource
+	private UserInviteMsgNotificationService userInviteMsgNotificationService;
+
+	@Lazy
+	@Resource
+	private UserInviteValidRecordService userInviteValidRecordService;
+
+	@Lazy
+	@Resource
+	private UserInviteValidNumService userInviteValidNumService;
+	
+	@Resource(name = "producer")
+	private Producer producer;
 	
 	
 
@@ -29,17 +74,16 @@
 	public void insertSelective(UserInviteSeparate record) {
 		userInviteSeparateMapper.insertSelective(record);
 	}
-	
-	
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void addPreSeparateRecord(Long workerId, Long bossId) {
 		// 鏇存柊涔嬪墠鐘舵�佸け鏁�
 		userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, UserInviteSeparate.STATE_INVALID);
-		
+
 		// 闄愬埗澶╂暟
 		int limitDays = Integer.parseInt(userVipConfigService.getValueByKey("invite_separate_limit_days"));
-		
+
 		// 淇濆瓨璁板綍
 		UserInviteSeparate inviteSeparate = new UserInviteSeparate();
 		inviteSeparate.setBossId(bossId);
@@ -50,14 +94,12 @@
 		inviteSeparate.setUpdateTime(new Date());
 		userInviteSeparateMapper.insertSelective(inviteSeparate);
 	}
-	
-	
-	
+
 	@Override
 	public void updateInvalidByBossId(Long uid) {
 		userInviteSeparateMapper.updateInvalidByBossId(uid);
 	}
-	
+
 	@Override
 	public void updateStateByWorkerIdAndBossId(Long workerId, Long bossId, int state) {
 		userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, state);
@@ -67,13 +109,90 @@
 	public UserInviteSeparate selectByWorkerIdAndBossId(Long workerId, Long bossId) {
 		return userInviteSeparateMapper.selectByWorkerIdAndBossId(workerId, bossId);
 	}
-	
+
 	@Override
 	public List<UserInviteSeparate> getHandleOverdue(int start, int count) {
 		return userInviteSeparateMapper.getHandleOverdue(start, count);
 	}
-	
-	
-	
-	
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void inviteSeparate(UserInviteSeparate record) {
+		if (record == null)
+			return;
+
+		Long workerId = record.getWorkerId();
+		Long bossId = record.getBossId();
+		ThreeSale threeSale = threeSaleSerivce.getMyBoss(workerId);
+		if (threeSale == null) {
+			// 宸茬粡鎴愬姛鑴辩 涓嶅彂娑堟伅
+			userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, UserInviteSeparate.STATE_SUCCESS);
+			return;
+		}
+
+		boolean separate = false;
+		UserVIPPreInfo info = userVIPPreInfoService.getLatestProcessInfo(bossId);
+		if (info == null) {
+			separate = true;
+		} else if (info.getProcess() == UserVIPPreInfo.PROCESS_1) {
+			if (info.getCreateTime().getTime() < record.getEndTime().getTime()) {
+				separate = true; // 鎴愪负浼氬憳 鏅氫簬 鑴辩鏃堕棿
+			}
+		} else if (info.getProcess() == UserVIPPreInfo.PROCESS_2) {
+			Date upTime = info.getCreateTime();
+			UserVIPPreInfo info1 = userVIPPreInfoService.getVipByProcess(bossId, UserVIPPreInfo.PROCESS_1);
+			if (info1 != null) {
+				upTime = info1.getCreateTime();
+			}
+
+			if (upTime.getTime() < record.getEndTime().getTime()) {
+				separate = true; // 鎴愪负浼氬憳 鏅氫簬 鑴辩鏃堕棿
+			}
+		}
+
+		// 鏈劚绂�
+		if (!separate) {
+			userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, UserInviteSeparate.STATE_INVALID);
+			return;
+		}
+
+		// 鑴辩鍏崇郴
+		userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, UserInviteSeparate.STATE_SUCCESS);
+		// 鑴辩閭�璇峰叧绯�
+		threeSaleSerivce.inviteSeparate(workerId, bossId);
+		
+		if (!Constant.IS_TEST) {
+			ThreeSaleSeparateMQMsg msg = new ThreeSaleSeparateMQMsg(bossId, workerId , new Date());
+			Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.threeSaleSeparate, msg);
+			producer.send(message);
+		}
+		
+		// 鐩存帴鏈夋晥绮変笣鑴辩-1
+		userInviteValidNumService.reduceValidNumFirst(bossId, workerId);
+		// 闂存帴鏈夋晥绮変笣鑴辩-1
+		ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId);
+		if (threeSaleSuper != null) {
+			Long bossIdSuper = threeSaleSuper.getBoss().getId();
+			userInviteValidNumService.reduceValidNumSecond(bossIdSuper, workerId);
+		}
+		
+		// 閫氱煡涓婄骇娑堟伅
+		try {
+			// 鎻愰啋涓婄骇鑴辩
+			Date date = new Date();
+			UserInfo worker = userInfoService.selectByPKey(workerId);
+			String nickName = worker.getNickName();
+			userInviteMsgNotificationService.fansDivorced(bossId, nickName, date);
+
+			// 鎻愰啋涓婁笂绾ц劚绂�
+			if (threeSaleSuper != null) {
+				Long bossIdSuper = threeSaleSuper.getBoss().getId();
+				UserInfo boss = userInfoService.selectByPKey(workerId);
+				userInviteMsgNotificationService.fansDivorcedIndirect(bossIdSuper, nickName, boss.getNickName(), date);
+			}
+		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
+		}
+	}
+
 }

--
Gitblit v1.8.0