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;