fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/vip/UserLevelStatisticMapper.java
New file @@ -0,0 +1,32 @@ package com.yeshi.fanli.dao.mybatis.user.vip; import java.util.List; import com.yeshi.fanli.dto.vip.UserLevelStatisticDTO; public interface UserLevelStatisticMapper { /** * 统计一级队员的情况 * @Title: statisticFirstTeamLevelCount * @Description: * @param uid * @return * List<UserLevelStatisticDTO> 返回类型 * @throws */ List<UserLevelStatisticDTO> statisticFirstTeamLevelCount(Long uid); /** * 统计二级队员的情况 * @Title: statisticSecondTeamLevelCount * @Description: * @param uid * @return * List<UserLevelStatisticDTO> 返回类型 * @throws */ List<UserLevelStatisticDTO> statisticSecondTeamLevelCount(Long uid); } fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
@@ -146,10 +146,10 @@ Map<String, Object> map = new HashMap<>(); map.put("firstDaRen", 0); map.put("secondDaRen", 0); map.put("firstHighVIP", 0); map.put("secondHighVIP", 0); map.put("firstSuperVIP", 0); map.put("secondDaRen", 0); map.put("secondHighVIP", 0); map.put("secondSuperVIP", 0); BasicDBObject dbObject = new BasicDBObject(map); DBObject result = mongoTemplate.getCollection(collectionName).group(agg, query.getQueryObject(), dbObject, reduce); @@ -159,12 +159,12 @@ BasicDBObject object = mapResult.get(i + ""); TeamDailyRecord record = new TeamDailyRecord(); record.setFirstDaRen(new BigDecimal(object.get("totalNum").toString()).intValue()); record.setFirstHighVIP(new BigDecimal(object.get("totalNum").toString()).intValue()); record.setFirstSuperVIP(new BigDecimal(object.get("totalNum").toString()).intValue()); record.setSecondDaRen(new BigDecimal(object.get("totalNum").toString()).intValue()); record.setSecondHighVIP(new BigDecimal(object.get("totalNum").toString()).intValue()); record.setSecondSuperVIP(new BigDecimal(object.get("totalNum").toString()).intValue()); record.setFirstDaRen(new BigDecimal(object.get("firstDaRen").toString()).intValue()); record.setFirstHighVIP(new BigDecimal(object.get("firstHighVIP").toString()).intValue()); record.setFirstSuperVIP(new BigDecimal(object.get("firstSuperVIP").toString()).intValue()); record.setSecondDaRen(new BigDecimal(object.get("secondDaRen").toString()).intValue()); record.setSecondHighVIP(new BigDecimal(object.get("secondHighVIP").toString()).intValue()); record.setSecondSuperVIP(new BigDecimal(object.get("secondSuperVIP").toString()).intValue()); listDailyCount.add(record); } } fanli/src/main/java/com/yeshi/fanli/dto/mq/user/UserTopicTagEnum.java
@@ -35,7 +35,6 @@ userMoneyAdd(UserMoneyChangeMQMsg.class), // 用户资金增加 taobaoBindSuccess(TaoBaoBindSuccessMQMsg.class), becomeValidUser(BeComeValidUserMQMsg.class), // 成为有效用户 threeSaleSeparate(ThreeSaleSeparateMQMsg.class),// 邀请关系脱离 userPhoneOpen(UserPhoneOpenMQMsg.class);// 电话号码公开情况变化 private final Class<?> clazz; fanli/src/main/java/com/yeshi/fanli/dto/mq/user/body/TaoBaoBindSuccessMQMsg.java
@@ -13,10 +13,10 @@ public class TaoBaoBindSuccessMQMsg extends BaseMQMsgBody { private Long uid;// 用户ID private Long fromUid;// 淘宝绑定的原用户ID private Long taoBaoUid;// 淘宝ID private String taoBaoUid;// 淘宝ID private Date createTime;// 发生时间 public TaoBaoBindSuccessMQMsg(Long uid, Long fromUid, Long taoBaoUid, Date createTime) { public TaoBaoBindSuccessMQMsg(Long uid, Long fromUid, String taoBaoUid, Date createTime) { super(); this.uid = uid; this.fromUid = fromUid; @@ -48,11 +48,11 @@ this.fromUid = fromUid; } public Long getTaoBaoUid() { public String getTaoBaoUid() { return taoBaoUid; } public void setTaoBaoUid(Long taoBaoUid) { public void setTaoBaoUid(String taoBaoUid) { this.taoBaoUid = taoBaoUid; } } fanli/src/main/java/com/yeshi/fanli/dto/vip/UserLevelStatisticDTO.java
New file @@ -0,0 +1,23 @@ package com.yeshi.fanli.dto.vip; public class UserLevelStatisticDTO { private Integer level;// 等级 private Integer num;// 数量 public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public Integer getLevel() { return level; } public void setLevel(Integer level) { this.level = level; } } fanli/src/main/java/com/yeshi/fanli/mapping/user/vip/UserLevelStatisticMapper.xml
New file @@ -0,0 +1,42 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yeshi.fanli.dao.mybatis.user.vip.UserLevelStatisticMapper"> <resultMap id="BaseResultMap" type="com.yeshi.fanli.dto.vip.UserLevelStatisticDTO"> <result column="level" property="level" jdbcType="INTEGER" /> <result column="num" property="num" jdbcType="INTEGER" /> </resultMap> <select id="statisticFirstTeamLevelCount" resultMap="BaseResultMap" parameterType="java.lang.Long"> SELECT a.l as level,COUNT(*) as num FROM ( SELECT MAX(v.`vpi_process`) AS l FROM yeshi_ec_threesale s LEFT JOIN `yeshi_ec_user_vip_pre_info` v ON s.`worker_id`=v.`vpi_uid` WHERE s.`boss_id`=389677 GROUP BY s.`worker_id` ) a GROUP BY l; </select> <select id="statisticSecondTeamLevelCount" resultMap="BaseResultMap" parameterType="java.lang.Long"> SELECT a.l as level,COUNT(*) as num FROM ( SELECT MAX(v.`vpi_process`) AS l FROM yeshi_ec_threesale s LEFT JOIN yeshi_ec_threesale ss ON ss.`boss_id`=s.`worker_id` LEFT JOIN `yeshi_ec_user_vip_pre_info` v ON ss.`worker_id`=v.`vpi_uid` WHERE s.`boss_id`=389677 GROUP BY ss.`worker_id` ) a GROUP BY l </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyServiceImpl.java
@@ -1,22 +1,29 @@ package com.yeshi.fanli.service.impl.money; 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.aliyun.openservices.ons.api.Message; import com.aliyun.openservices.ons.api.Producer; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper; import com.yeshi.fanli.dao.mybatis.share.ShareMapper; import com.yeshi.fanli.dto.money.UserMoneyChangeDTO; import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; import com.yeshi.fanli.dto.mq.user.body.UserMoneyChangeMQMsg; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.money.UserMoneyDetail; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.money.UserMoneyService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.cmq.UserMoneyChangeCMQManager; import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; import com.yeshi.fanli.util.rocketmq.MQTopicName; @Service public class UserMoneyServiceImpl implements UserMoneyService { @@ -29,6 +36,9 @@ @Resource private UserMoneyDetailMapper userMoneyDetailMapper; @Resource(name = "producer") private Producer producer; @Override public BigDecimal getMoneyToday(Long uid) { @@ -82,7 +92,13 @@ e1.printStackTrace(); } } // 发送资金到账消息 if (!Constant.IS_TEST) { UserMoneyChangeMQMsg msg = new UserMoneyChangeMQMsg(uid, money, new Date()); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userMoneyAdd, msg); producer.send(message); } } @Override fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoModifyRecordServiceImpl.java
@@ -115,10 +115,18 @@ if (!Constant.IS_TEST) producer.send(message); } else {// 修改 UserInfoUpdateMQMsg mqMsg = null; if (type == ModifyTypeEnum.portrait) { mqMsg = new UserInfoUpdateMQMsg(uid, UserInfoUpdateTypeEnum.portrait, value, new Date()); } else if (type == ModifyTypeEnum.nickName) mqMsg = new UserInfoUpdateMQMsg(uid, UserInfoUpdateTypeEnum.nickName, value, new Date()); else if (type == ModifyTypeEnum.setWeiXinNum) mqMsg = new UserInfoUpdateMQMsg(uid, UserInfoUpdateTypeEnum.wxId, value, new Date()); if (mqMsg != null) { Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userInfoUpdate,new UserInfoUpdateMQMsg(uid, UserInfoUpdateTypeEnum.portrait, value, new Date())); UserTopicTagEnum.userInfoUpdate, mqMsg); producer.send(message); } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java
@@ -10,8 +10,12 @@ 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; @@ -23,6 +27,8 @@ import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService; 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 { @@ -31,26 +37,26 @@ @Resource private UserInviteValidRecordMapper userInviteValidRecordMapper; @Lazy @Resource private ThreeSaleSerivce threeSaleSerivce; @Lazy @Resource private UserInfoService userInfoService; @Lazy @Resource private CommonOrderService commonOrderService; @Resource(name = "producer") private Producer producer; @Override public UserInviteValidNum selectByPrimaryKey(Long id) { return userInviteValidNumMapper.selectByPrimaryKey(id); } /** * 直接粉丝 +1 @@ -70,20 +76,20 @@ userInviteValidNumMapper.insertSelective(inviteValid); } } /** * 直接粉丝 -1 * @param uid */ @Override @Transactional(rollbackFor = Exception.class) public void reduceValidNumFirst(Long uid, Long workerId) { 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; @@ -95,11 +101,11 @@ inviteValid.setUpdateTime(new Date()); userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid); } // 删除有效记录 userInviteValidRecordMapper.deleteByPrimaryKey(record.getId()); } /** * 直接粉丝 -1 * @param uid @@ -112,7 +118,7 @@ if (record == null) { return; } UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid); if (inviteValid != null) { int num = 0; @@ -124,13 +130,10 @@ inviteValid.setUpdateTime(new Date()); userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid); } // 删除有效记录 userInviteValidRecordMapper.deleteByPrimaryKey(record.getId()); } /** * 间接粉丝 +1 @@ -150,37 +153,37 @@ 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); @@ -192,11 +195,19 @@ 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); producer.send(message); } // 是否上上级 ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId); if (threeSaleSuper == null) { @@ -214,7 +225,7 @@ recordSuper.setUniqueKey(uniqueKeySuper); recordSuper.setCreateTime(new Date()); userInviteValidRecordMapper.insertSelective(recordSuper); // 更新上上级的间接粉丝数量 addNumSecond(bossIdSuper); } @@ -222,8 +233,7 @@ LogHelper.error(e); } } @Override public void syncInfoAgain(Long workerId) { // 更新上级 @@ -231,17 +241,17 @@ 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) { for (ThreeSale firstTeam : listFirstTeam) { if (firstTeam.getWorker() == null || firstTeam.getWorker().getId() == null) { continue; } @@ -249,12 +259,12 @@ String uniqueKey = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_ONE); UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey); if (record != null) { countTeam1 ++; countTeam1++; } else { long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY); if (countValid > 0) { countTeam1 ++; countTeam1++; record = new UserInviteValidRecord(); record.setUid(uid); record.setWorkerId(wid); @@ -266,12 +276,13 @@ } } } UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid); if (inviteValid != null) { UserInviteValidNum updateObj = new UserInviteValidNum(); updateObj.setId(uid); updateObj.setNumFirst(countTeam1);; updateObj.setNumFirst(countTeam1); ; userInviteValidNumMapper.updateByPrimaryKeySelective(updateObj); } else { inviteValid = new UserInviteValidNum(); @@ -281,23 +292,23 @@ 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) { for (ThreeSale team : listSecondTeam) { if (team.getWorker() == null || team.getWorker().getId() == null) { continue; } @@ -305,12 +316,12 @@ String uniqueKeySuper = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_TWO); UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper); if (recordSuper != null) { countTeam2 ++; countTeam2++; } else { long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY); if (countValid > 0) { countTeam2 ++; countTeam2++; recordSuper = new UserInviteValidRecord(); recordSuper.setUid(superUid); recordSuper.setWorkerId(wid); @@ -322,7 +333,7 @@ } } } UserInviteValidNum inviteValid2 = userInviteValidNumMapper.selectForUpdate(superUid); if (inviteValid2 != null) { UserInviteValidNum updateObj = new UserInviteValidNum(); @@ -338,5 +349,5 @@ userInviteValidNumMapper.insertSelective(inviteValid2); } } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/tb/UserExtraTaoBaoInfoServiceImpl.java
@@ -8,7 +8,11 @@ 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.UserExtraTaoBaoInfoMapper; import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; import com.yeshi.fanli.dto.mq.user.body.TaoBaoBindSuccessMQMsg; import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode; import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum; import com.yeshi.fanli.entity.bus.user.UserAccountBindingHistory; @@ -20,6 +24,8 @@ import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; 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 UserExtraTaoBaoInfoServiceImpl implements UserExtraTaoBaoInfoService { @@ -33,7 +39,10 @@ @Resource private UserAccountBindingHistoryService userAccountBindingHistoryService; @Transactional(rollbackFor=Exception.class) @Resource(name = "producer") private Producer producer; @Transactional(rollbackFor = Exception.class) @Override public void addRelationId(Long uid, String relationId, String taoBaoUid, String nickName, boolean valid) throws UserExtraTaoBaoInfoException { @@ -77,7 +86,7 @@ } } @Transactional(rollbackFor=Exception.class) @Transactional(rollbackFor = Exception.class) @Override public void addSpecialId(Long uid, String specialId, String taoBaoUid, String nickName, boolean valid) throws UserExtraTaoBaoInfoException { @@ -121,7 +130,7 @@ } } @Transactional(rollbackFor=Exception.class) @Transactional(rollbackFor = Exception.class) @Override public void saveUserTaoBaoInfo(Long uid, String relationId, String specialId, String taoBaoUid, String nickName, boolean valid) throws UserExtraTaoBaoInfoException { @@ -156,12 +165,15 @@ // 清除之前的用户ID userExtraTaoBaoInfoMapper.clearUid(uid); Long fromUid = null; if (list == null || list.size() == 0) { // 新增 taoBaoInfo.setCreateTime(new Date()); userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo); } else { if (list.get(0).getUser() != null) fromUid = list.get(0).getUser().getId(); // 取第一个替换uid 等信息 taoBaoInfo.setId(list.get(0).getId()); taoBaoInfo.setUpdateTime(new Date()); @@ -187,6 +199,10 @@ else history.setFirst(true); userAccountBindingHistoryService.addUserAccountBindingHistory(history); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.taobaoBindSuccess, new TaoBaoBindSuccessMQMsg(uid, fromUid, taoBaoUid, new Date())); producer.send(message); } /** fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/TeamUserLevelStatisticServiceImpl.java
@@ -11,13 +11,14 @@ import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.mybatis.user.vip.TeamUserLevelStatisticMapper; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord; import com.yeshi.fanli.dao.mybatis.user.vip.UserLevelStatisticMapper; import com.yeshi.fanli.dto.vip.UserLevelStatisticDTO; import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic; import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService; import com.yeshi.fanli.service.manger.user.UserLevelManager; import com.yeshi.fanli.util.user.UserLevelUtil; @Service public class TeamUserLevelStatisticServiceImpl implements TeamUserLevelStatisticService { @@ -30,6 +31,9 @@ @Resource private ThreeSaleSerivce threeSaleSerivce; @Resource private UserLevelStatisticMapper userLevelStatisticMapper; @Override public TeamUserLevelStatistic selectByUid(Long uid) { @@ -64,56 +68,46 @@ @Override public void initData(Long uid) { int pageSize = 1000; // 直接粉丝统计 List<UserLevelStatisticDTO> firstList = userLevelStatisticMapper.statisticFirstTeamLevelCount(uid); List<UserLevelStatisticDTO> secondList = userLevelStatisticMapper.statisticSecondTeamLevelCount(uid); int daRenFirstCount = 0; int highFirstCount = 0; int superFirstCount = 0; int tearcherFirstCount = 0; for (int i = 0; i < 100; i++) { List<ThreeSale> list = threeSaleSerivce.listFirstTeam(i * pageSize, pageSize, uid); if (list == null || list.size() == 0) { break; } for (ThreeSale ts : list) { UserLevelEnum level = userLevelManager.getUserLevel(ts.getWorker().getId()); if (level == UserLevelEnum.daRen || level == UserLevelEnum.normalVIP) { daRenFirstCount++; } else if (level == UserLevelEnum.highVIP) { highFirstCount++; } else if (level == UserLevelEnum.superVIP) { superFirstCount++; } else if (level == UserLevelEnum.tearcher) { tearcherFirstCount++; } } for (UserLevelStatisticDTO dto : firstList) { UserLevelEnum level = UserLevelUtil.getByLevel(dto.getLevel()); if (level == null) level = UserLevelEnum.daRen; if (level == UserLevelEnum.daRen || level == UserLevelEnum.normalVIP) { daRenFirstCount += dto.getNum(); } else if (level == UserLevelEnum.highVIP) highFirstCount += dto.getNum(); else if (level == UserLevelEnum.superVIP) superFirstCount += dto.getNum(); else if (level == UserLevelEnum.tearcher) tearcherFirstCount += dto.getNum(); } // 间接粉丝统计 int daRenSecondCount = 0; int highSecondCount = 0; int superSecondCount = 0; int tearcherSecondCount = 0; for (int i = 0; i < 100; i++) { List<ThreeSale> list = threeSaleSerivce.listSecondTeam(i * pageSize, pageSize, uid); if (list == null || list.size() == 0) { break; } for (ThreeSale ts : list) { UserLevelEnum level = userLevelManager.getUserLevel(ts.getWorker().getId()); if (level == UserLevelEnum.daRen || level == UserLevelEnum.normalVIP) { daRenSecondCount++; } else if (level == UserLevelEnum.highVIP) { highSecondCount++; } else if (level == UserLevelEnum.superVIP) { superSecondCount++; } else if (level == UserLevelEnum.tearcher) { tearcherSecondCount++; } } for (UserLevelStatisticDTO dto : secondList) { UserLevelEnum level = UserLevelUtil.getByLevel(dto.getLevel()); if (level == null) level = UserLevelEnum.daRen; if (level == UserLevelEnum.daRen || level == UserLevelEnum.normalVIP) { daRenSecondCount += dto.getNum(); } else if (level == UserLevelEnum.highVIP) highSecondCount += dto.getNum(); else if (level == UserLevelEnum.superVIP) superSecondCount += dto.getNum(); else if (level == UserLevelEnum.tearcher) tearcherSecondCount += dto.getNum(); } UserLevelEnum level = userLevelManager.getUserLevel(uid); fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java
@@ -267,13 +267,6 @@ } catch (Exception e) { e.printStackTrace(); } if (!Constant.IS_TEST) { UserLevelChangedMQMsg msg = new UserLevelChangedMQMsg(uid, UserLevelEnum.highVIP, UserLevelEnum.superVIP, new Date()); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userLevelChanged, msg); producer.send(message); } } /** fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java
@@ -94,6 +94,7 @@ @Resource private TeamUserLevelStatisticService teamUserLevelStatisticService; @Transactional @Override public void addUserVIPPreInfo(UserVIPPreInfo info) throws UserVIPPreInfoException { if (info == null || info.getUid() == null || info.getProcess() == null || info.getSourceType() == null) @@ -108,9 +109,31 @@ throw new UserVIPPreInfoException(2, "进度已存在"); if (info.getCreateTime() == null) info.setCreateTime(new Date()); UserVIPPreInfo old = getLatestProcessInfo(info.getUid()); userVIPPreInfoMapper.insertSelective(info); // 设置统计数据 teamUserLevelStatisticService.setUserLevel(info.getUid(), UserLevelUtil.getByLevel(info.getProcess())); // 发送等级变化消息 if (!Constant.IS_TEST) { UserLevelEnum oldLevel = null; if (old == null) oldLevel = UserLevelEnum.daRen; else { oldLevel = UserLevelUtil.getByLevel(old.getProcess()); } if (oldLevel == UserLevelEnum.normalVIP) oldLevel = UserLevelEnum.daRen; UserLevelChangedMQMsg msg = new UserLevelChangedMQMsg(info.getUid(), oldLevel, UserLevelUtil.getByLevel(info.getProcess()), new Date()); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userLevelChanged, msg); producer.send(message); } } @Override @@ -315,12 +338,6 @@ LogHelper.error(e); } if (!Constant.IS_TEST) { UserLevelChangedMQMsg msg = new UserLevelChangedMQMsg(uid, UserLevelEnum.daRen, UserLevelEnum.highVIP, new Date()); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userLevelChanged, msg); producer.send(message); } } @Override fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserTeamMessageListener.java
@@ -91,7 +91,7 @@ teamFansInfoService.updateFansNum(mqMsg.getBossId()); // 添加粉丝信息 teamFansInfoService.addFansInfo(mqMsg.getWorkerId(), mqMsg.getBossId()); threeSaleDetailService.addByWorkerUid(mqMsg.getWorkerId()); } } else if (tag.equalsIgnoreCase(UserTopicTagEnum.userMoneyAdd.name())) {// 资金到账 fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserVIPMessageListener.java
@@ -88,18 +88,7 @@ } return Action.CommitMessage; } else if (tag.equalsIgnoreCase(UserTopicTagEnum.threeSaleSeparate.name())) {// 邀请关系脱离 ThreeSaleSeparateMQMsg msg = new Gson().fromJson(new String(message.getBody()), ThreeSaleSeparateMQMsg.class); // 更新上两级邀请统计 teamUserLevelStatisticService.initData(msg.getBossUid()); UserInfo boss = threeSaleSerivce.getBoss(msg.getBossUid()); if (boss != null) { teamUserLevelStatisticService.initData(boss.getId()); } return Action.CommitMessage; } } } else if (MQTopicName.TOPIC_ORDER.name().equalsIgnoreCase(message.getTopic())) { // 订单到账相关 fanli/src/main/resource/rocket/consumer.xml
@@ -149,7 +149,7 @@ <key> <bean class="com.aliyun.openservices.ons.api.bean.Subscription"> <property name="topic" value="TOPIC_USER" /> <property name="expression" value="userLevelChanged||threeSaleSeparate" /> <property name="expression" value="userLevelChanged" /> </bean> </key> </entry> @@ -296,9 +296,9 @@ <key> <bean class="com.aliyun.openservices.ons.api.bean.Subscription"> <property name="topic" value="TOPIC_USER" /> <!-- 用户活跃,用户信息更新,淘宝绑定成功,邀请成功,用户资金增加,成为有效用户,账号绑定 --> <!-- 用户活跃,用户信息更新,淘宝绑定成功,邀请成功,用户资金增加,成为有效用户,账号绑定 ,电话号码公开 --> <property name="expression" value="userActve||userInfoUpdate||taobaoBindSuccess||inviteSuccess||userMoneyAdd||becomeValidUser" /> value="userActve||userInfoUpdate||taobaoBindSuccess||inviteSuccess||userMoneyAdd||becomeValidUser||userPhoneOpen" /> </bean> </key> </entry>