admin
2020-05-14 cd5cddf2425f8f6267cfaaf49e37bf624781d3f5
增加rocketmq消息
13个文件已修改
3个文件已添加
404 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/vip/UserLevelStatisticMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/mq/user/UserTopicTagEnum.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/mq/user/body/TaoBaoBindSuccessMQMsg.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/vip/UserLevelStatisticDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/user/vip/UserLevelStatisticMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoModifyRecordServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/tb/UserExtraTaoBaoInfoServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/TeamUserLevelStatisticServiceImpl.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserTeamMessageListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserVIPMessageListener.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/rocket/consumer.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>