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