From aa43ebe703d3b28520a8b1e4b852b8beb957c5ca Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 20 四月 2020 14:21:25 +0800 Subject: [PATCH] 京东订单爬单规则修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteSeparateServiceImpl.java | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 163 insertions(+), 4 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 2962055..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 @@ -1,39 +1,198 @@ package com.yeshi.fanli.service.impl.user.invite; +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 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; + @Override 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); + inviteSeparate.setWorkerId(workerId); + inviteSeparate.setState(UserInviteSeparate.STATE_INIT); + inviteSeparate.setEndTime(DateUtil.plusDayDate(limitDays, new Date())); + inviteSeparate.setCreateTime(new Date()); + 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); } - @Override 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