yujian
2020-05-14 7a408cba1b66e4e644d42a747f427938e6274dd8
粉丝信息消息
8个文件已修改
252 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/mq/user/UserTopicTagEnum.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/invite/TeamDailyRecord.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserCustomSettingsServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamFansInfoServiceImpl.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamFansInfoService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserTeamMessageListener.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -1227,7 +1227,7 @@
        int type = 1;
        ThreeSale threeSale = threeSaleSerivce.getByWorkerId(workerId);
        if (threeSale == null) {
        if (threeSale != null && threeSale.getBoss().getId() != uid) {
            type = 2;
        }
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
@@ -20,7 +20,7 @@
@Repository
public class TeamDailyRecordDao extends MongodbBaseDao<TeamDailyRecord> {
    private static String collectionName = "team_daily_Record";
    private static String collectionName = "teamDailyRecord";
     
    /**
fanli/src/main/java/com/yeshi/fanli/dto/mq/user/UserTopicTagEnum.java
@@ -13,6 +13,7 @@
import com.yeshi.fanli.dto.mq.user.body.UserInviteMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserLevelChangedMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserMoneyChangeMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserPhoneOpenMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserRedPackGiftMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserRegisterMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserSystemCouponUseMQMsg;
@@ -34,7 +35,8 @@
    userMoneyAdd(UserMoneyChangeMQMsg.class), // 用户资金增加
    taobaoBindSuccess(TaoBaoBindSuccessMQMsg.class),
    becomeValidUser(BeComeValidUserMQMsg.class), // 成为有效用户
    threeSaleSeparate(ThreeSaleSeparateMQMsg.class);// 邀请关系脱离
    threeSaleSeparate(ThreeSaleSeparateMQMsg.class),// 邀请关系脱离
    userPhoneOpen(UserPhoneOpenMQMsg.class);// 电话号码公开情况变化
    private final Class<?> clazz;
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/invite/TeamDailyRecord.java
@@ -13,7 +13,7 @@
 * @author Administrator
 *
 */
@Document(collection = "team_daily_record")
@Document(collection = "teamDailyRecord")
public class TeamDailyRecord {
    @Id
@@ -22,8 +22,10 @@
    @Indexed
    private Long uid;
    @Field
    @Indexed
    private Date countDay; // 统计日期: 年-月-日
    @Field
    @Indexed
    private String yearMonth; // 统计日期: 年-月
    @Field
    private Integer firstNum; // 一级
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserCustomSettingsServiceImpl.java
@@ -8,12 +8,19 @@
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.UserCustomSettingsMapper;
import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
import com.yeshi.fanli.dto.mq.user.body.UserPhoneOpenMQMsg;
import com.yeshi.fanli.entity.bus.user.UserCustomSettings;
import com.yeshi.fanli.entity.bus.user.UserCustomSettings.UserSettingTypeEnum;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.exception.user.UserCustomSettingsException;
import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
import com.yeshi.fanli.vo.user.UserSettingsVO;
@Service
@@ -22,6 +29,9 @@
    @Resource
    private UserCustomSettingsMapper userCustomSettingsMapper;
    @Resource(name = "producer")
    private Producer producer;
    @Override
    @Transactional
    public void saveModuleState(Long uid, String type, Integer state) throws UserCustomSettingsException {
@@ -66,6 +76,12 @@
            settings.setCreateTime(new Date());
            userCustomSettingsMapper.insertSelective(settings);
        }
        if (mineTypeNum == UserSettingTypeEnum.noDisplayPhoneNum && !Constant.IS_TEST) {
            UserPhoneOpenMQMsg msg = new UserPhoneOpenMQMsg(uid, state == 1? false: true, new Date());
            Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userPhoneOpen, msg);
            producer.send(message);
        }
    }
    @Override
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamFansInfoServiceImpl.java
@@ -10,11 +10,27 @@
import com.yeshi.fanli.dao.user.invite.TeamFansInfoDao;
import com.yeshi.fanli.dto.user.ThreeSaleFocusDTO;
import com.yeshi.fanli.dto.vip.UserVIPLevel;
import com.yeshi.fanli.entity.bus.user.TeamFansInfo;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
import com.yeshi.fanli.entity.bus.user.UserActiveLog;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.invite.TeamFansInfoService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleExtraInfoSerivce;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.invite.UserInviteService;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.user.UserLevelUtil;
@Service
public class TeamFansInfoServiceImpl implements TeamFansInfoService {
@@ -24,6 +40,33 @@
    
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    @Resource
    private  UserInfoService userInfoService;
    @Resource
    private UserInfoExtraService userInfoExtraService;
    @Resource
    private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce;
    @Resource
    private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
    @Resource
    private HongBaoV2CountService hongBaoV2CountService;
    @Resource
    private UserInviteService userInviteService;
    @Resource
    private CommonOrderService commonOrderService;
    @Resource
    private UserActiveLogService userActiveLogService;
    
    @Override
    public void save(TeamFansInfo record) {
@@ -68,13 +111,13 @@
            record.setActiveTime(new Date());
        if (record.getFansNum() == null)
            record.setFansNum(0);
        if (record.getIncome() != null)
        if (record.getIncome() == null)
            record.setIncome(0);
        if (record.getIncomeTime() == null)
            record.setIncomeTime(new Date());
        if (record.getMemoName() == null)
            record.setMemoName("");
        if (record.getTags() != null)
        if (record.getTags() == null)
            record.setTags("");
        if (record.getMemoNameSup() == null)
            record.setMemoNameSup("");
@@ -88,6 +131,123 @@
        }
            
    }
    @Override
    public void addFansInfo(Long workerId, Long bossId) {
        UserInfo userInfo = userInfoService.selectByPKey(workerId);
        if (userInfo == null) {
            return;
        }
        String phone = "";
        if (!StringUtil.isNullOrEmpty(userInfo.getPhone())) {
            phone = userInfo.getPhone();
        }
        // 备注名
        String memoName = null;
        ThreeSaleExtraInfo threeSaleExtraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(bossId,
                workerId);
        if (threeSaleExtraInfo != null) {
            if (!StringUtil.isNullOrEmpty(threeSaleExtraInfo.getNickname())) {
                memoName = threeSaleExtraInfo.getNickname();
            }
        }
        // 微信号、活跃时间
        String inviteCode = "";
        String weixinId = "";
        boolean weixinBind = false;
        UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(workerId);
        if (userInfoExtra != null) {
            String weiXin = userInfoExtra.getWeiXin();
            if (!StringUtil.isNullOrEmpty(weiXin)) {
                weixinId = weiXin;
                weixinBind = true;
            }
            String inviteCodeVip = userInfoExtra.getInviteCodeVip();
            String inviteCode2 = userInfoExtra.getInviteCode();
            if (!StringUtil.isNullOrEmpty(inviteCode2)) {
                if (!StringUtil.isNullOrEmpty(inviteCodeVip)) {
                    inviteCode = inviteCodeVip;
                } else {
                    inviteCode = inviteCode2;
                }
            }
        }
        Date activeTime = new Date(1514736000000L); // 默认20181-1-1;
        UserActiveLog userActiveLog = userActiveLogService.getUserLatestActiveInfo(workerId);
        if (userActiveLog != null) {
            activeTime = userActiveLog.getCreateTime();
        }
        // 淘宝授权
        boolean taobaoBind = false;
        UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(workerId);
        if (taoBaoInfo != null && !StringUtil.isNullOrEmpty(taoBaoInfo.getRelationId())
                && !StringUtil.isNullOrEmpty(taoBaoInfo.getSpecialId())) {
            taobaoBind = true;
        }
        // 粉丝数量
        long firstTeam = threeSaleSerivce.countFirstTeam(workerId);
        long secondTeam = threeSaleSerivce.countSecondTeam(workerId);
        int fansNum = (int) (firstTeam + secondTeam);
        // 收入
        BigDecimal income = hongBaoV2CountService.sumMoneyArrivalByUidAndNearDay(workerId, 60);
        if (income == null)
            income = new BigDecimal(0);
        // 有效粉丝
        boolean stateValid = false;
        long countValid = commonOrderService.countOrderByUidAndSettled(workerId, BigDecimal.valueOf(1));
        if (countValid > 0) {
            stateValid = true;
        }
        // 查询粉丝等级
        UserLevelEnum level = null;
        UserVIPLevel vipLevel = userInviteService.getVIPLevelByUid(workerId);
        if (vipLevel != null && vipLevel.getLevel() != null) {
            level = UserLevelUtil.getByLevel(vipLevel.getLevel());
        }
        if (level == null) {
            level = UserLevelEnum.daRen;
        }
        level = UserLevelUtil.getShowLevel(level);
        // 是否存在上上级
        Long bossSuperId = null;
        ThreeSale superThree = threeSaleSerivce.selectByWorkerId(bossId);
        if (superThree != null)
            bossSuperId = superThree.getBoss().getId();
        TeamFansInfo focusInfo = new TeamFansInfo();
        focusInfo.setBossId(bossId);
        focusInfo.setWorkerId(workerId);
        focusInfo.setBossSuperId(bossSuperId);
        focusInfo.setNickName(userInfo.getNickName());
        focusInfo.setMemoName(memoName);
        focusInfo.setWeixinIdExist(weixinBind);
        focusInfo.setWeixinId(weixinId);
        focusInfo.setPhone(phone);
        focusInfo.setPhoneOpen(true);
        focusInfo.setInviteCode(inviteCode);
        focusInfo.setActiveTime(activeTime);
        focusInfo.setFansNum(fansNum);
        focusInfo.setTaobaoBind(taobaoBind);
        focusInfo.setIncome(income.multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_DOWN).intValue());
        focusInfo.setIncomeTime(new Date());
        focusInfo.setStateValid(stateValid);
        focusInfo.setLevel(level);
        focusInfo.setId(workerId.toString());
        save(focusInfo);
    }
    
    
    @Override
@@ -181,6 +341,14 @@
    }
    
    @Override
    public void updateLevel(Long workerId, UserLevelEnum level) {
        TeamFansInfo teamFansInfo = new TeamFansInfo();
        teamFansInfo.setLevel(level);
        teamFansInfo.setWorkerId(workerId);
        save(teamFansInfo);
    }
    @Override
    public void updatePhoneOpen(Long workerId, boolean phoneOpen) {
        TeamFansInfo teamFansInfo = new TeamFansInfo();
        teamFansInfo.setWorkerId(workerId);
@@ -197,7 +365,7 @@
        
        TeamFansInfo teamFansInfo = new TeamFansInfo();
        teamFansInfo.setWorkerId(workerId);
        teamFansInfo.setIncome(income.multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_DOWN).intValue());
        teamFansInfo.setIncome(income.multiply(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_DOWN).intValue());
        teamFansInfo.setIncomeTime(new Date());
        save(teamFansInfo);
    }
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamFansInfoService.java
@@ -6,6 +6,7 @@
import com.yeshi.fanli.dto.user.ThreeSaleFocusDTO;
import com.yeshi.fanli.entity.bus.user.TeamFansInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
public interface TeamFansInfoService {
@@ -122,4 +123,18 @@
     */
    public void updatePhoneOpen(Long workerId, boolean phoneOpen);
    /**
     * 更新等级
     * @param workerId
     * @param level
     */
    public void updateLevel(Long workerId, UserLevelEnum level);
    /**
     * 添加粉丝信息
     * @param workerId
     * @param bossId
     */
    public void addFansInfo(Long workerId, Long bossId);
}
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserTeamMessageListener.java
@@ -12,11 +12,14 @@
import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
import com.yeshi.fanli.dto.mq.user.body.BeComeValidUserMQMsg;
import com.yeshi.fanli.dto.mq.user.body.TaoBaoBindSuccessMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserAccountBindingMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserActiveMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserInfoUpdateMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserInfoUpdateMQMsg.UserInfoUpdateTypeEnum;
import com.yeshi.fanli.dto.mq.user.body.UserInviteMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserLevelChangedMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserMoneyChangeMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserPhoneOpenMQMsg;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.user.invite.TeamFansInfoService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService;
@@ -49,7 +52,6 @@
            tag = "";
        // 订阅粉丝增加/粉丝成为有效用户 消息,淘宝授权,微信号绑定,最近登录,用户资金增加
        if (MQTopicName.TOPIC_USER.name().equalsIgnoreCase(message.getTopic())) {
            if (tag.equalsIgnoreCase(UserTopicTagEnum.userActve.name())) {// 用户活跃
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
@@ -66,6 +68,8 @@
                        teamFansInfoService.updateNickName(mqMsg.getUid(), mqMsg.getValue());
                    } else if (UserInfoUpdateTypeEnum.wxId == mqMsg.getType()) { // 微信号绑定
                        teamFansInfoService.updateWeixinId(mqMsg.getUid(), mqMsg.getValue());
                    } else if (UserInfoUpdateTypeEnum.inviteCode == mqMsg.getType()) { // 邀请码更改
                        teamFansInfoService.updateInviteCode(mqMsg.getUid(), mqMsg.getValue());
                    }
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.taobaoBindSuccess.name())) {// 淘宝绑定成功
@@ -73,7 +77,6 @@
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
                TaoBaoBindSuccessMQMsg mqMsg = new Gson().fromJson(json.toString(), TaoBaoBindSuccessMQMsg.class);
                if (mqMsg != null) {
                    // 更新淘宝绑定
                    teamFansInfoService.updateTaobaoBind(mqMsg.getUid(), true);
                    Long fromUid = mqMsg.getFromUid();
                    if (fromUid != null) { // 淘宝被解绑
@@ -81,28 +84,50 @@
                    }
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.inviteSuccess.name())) {// 邀请成功
                // 更新粉丝数量
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
                UserInviteMQMsg mqMsg = new Gson().fromJson(json.toString(), UserInviteMQMsg.class);
                if (mqMsg != null) {
                    // 更新上级的粉丝数量
                    teamFansInfoService.updateFansNum(mqMsg.getBossId());
                    // 添加粉丝信息
                    teamFansInfoService.addFansInfo(mqMsg.getWorkerId(), mqMsg.getBossId());
                    threeSaleDetailService.addByWorkerUid(mqMsg.getWorkerId());
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.userMoneyAdd.name())) {// 资金到账
                // 更新近60天到账
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
                UserMoneyChangeMQMsg mqMsg = new Gson().fromJson(json.toString(), UserMoneyChangeMQMsg.class);
                if (mqMsg != null) {
                    // 更新近60天到账
                    teamFansInfoService.updateIncome(mqMsg.getUid(), mqMsg.getChangeMoney());
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.becomeValidUser.name())) {// 成为有效用户
                // 有效用户标识
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
                BeComeValidUserMQMsg mqMsg = new Gson().fromJson(json.toString(), BeComeValidUserMQMsg.class);
                if (mqMsg != null) {
                    // 更新成为有效粉丝
                    teamFansInfoService.updateStateValid(mqMsg.getUid(), true);
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.userAccountBinding.name())) {// 绑定信息
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
                UserAccountBindingMQMsg mqMsg = new Gson().fromJson(json.toString(), UserAccountBindingMQMsg.class);
                if (mqMsg != null) {
                    if (mqMsg.getType() == UserAccountBindingMQMsg.TYPE_PHONE) { // 绑定电话号码
                        teamFansInfoService.updatePhone(mqMsg.getUid(), mqMsg.getValue());
                    }
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.userLevelChanged.name())) {// 等级变化
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
                UserLevelChangedMQMsg mqMsg = new Gson().fromJson(json.toString(), UserLevelChangedMQMsg.class);
                if (mqMsg != null) {
                    teamFansInfoService.updateLevel(mqMsg.getUid(), mqMsg.getToLevel());
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.userPhoneOpen.name())) {// 电话号码公开
                JSONObject json = JSONObject.fromObject(new String(message.getBody()));
                UserPhoneOpenMQMsg mqMsg = new Gson().fromJson(json.toString(), UserPhoneOpenMQMsg.class);
                if (mqMsg != null) {
                    teamFansInfoService.updatePhoneOpen(mqMsg.getUid(), mqMsg.isState());
                }
            }
        }
        return Action.CommitMessage;