fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserVipController.java
@@ -26,6 +26,7 @@ import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.ThreeSaleDetail; import com.yeshi.fanli.entity.bus.user.vip.GiveVIPApplyInfo; import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; import com.yeshi.fanli.exception.ParamsException; @@ -63,7 +64,13 @@ @RequestMapping(value = "applyVip") public void applyVip(AcceptData acceptData, GiveVIPApplyInfo info, String callback, PrintWriter out) { // TODO 查询开通人是否为他的下级 // 查询开通人是否为他的下级 ThreeSaleDetail detail = threeSaleDetailService.getByBossUidAndWorkerUid(info.getSourceUid(), info.getTargetUid()); if (detail == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户不是您的粉丝")); return; } try { info = giveVIPApplyInfoService.addGiveVIPApplyInfo(info); fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/vip/UserLevelStatisticMapper.java
@@ -2,6 +2,8 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.yeshi.fanli.dto.vip.UserLevelStatisticDTO; public interface UserLevelStatisticMapper { @@ -15,7 +17,7 @@ * List<UserLevelStatisticDTO> 返回类型 * @throws */ List<UserLevelStatisticDTO> statisticFirstTeamLevelCount(Long uid); List<UserLevelStatisticDTO> statisticFirstTeamLevelCount(@Param("uid") Long uid); /** @@ -27,6 +29,6 @@ * List<UserLevelStatisticDTO> 返回类型 * @throws */ List<UserLevelStatisticDTO> statisticSecondTeamLevelCount(Long uid); List<UserLevelStatisticDTO> statisticSecondTeamLevelCount(@Param("uid") Long uid); } fanli/src/main/java/com/yeshi/fanli/mapping/user/vip/UserLevelStatisticMapper.xml
@@ -17,7 +17,7 @@ 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` s.`boss_id`=#{uid} GROUP BY s.`worker_id` ) a GROUP BY l; </select> @@ -33,7 +33,7 @@ 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` s.`boss_id`=#{uid} AND ss.`worker_id`>0 GROUP BY ss.`worker_id` ) a GROUP BY l fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -141,8 +141,7 @@ } userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid()); // 判断用户是否被删除 if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL)) if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL)) userInfo = null; if (userInfo == null) {// 原先的账号不存在 userInfo = new UserInfo(); @@ -185,9 +184,7 @@ userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid()); // 判断用户是否被删除 if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL )) if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL)) userInfo = null; // 直接用的微信登录 if (lastUser == null) { @@ -324,8 +321,7 @@ userInfo = getUserInfoByPhone(appId, phone); // 判断用户是否被删除 if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL)) if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL)) userInfo = null; if (userInfo == null) {// 原先的账号不存在 @@ -450,7 +446,6 @@ return new LoginResult(LoginResult.TYPE_CREATE, userInfo); } } /** * 根据系统与unionid寻找用户 @@ -856,7 +851,6 @@ String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSLoginCount, phone); redisManager.removeCommonString(key); // 采用redis事务防止一个手机号多次注册问题 String watchKey = StringUtil.Md5("REGISTER:" + phone); Jedis jedis = jedisPool.getResource(); @@ -965,8 +959,8 @@ InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()); if (asInputStream != null) { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) portrait = result.getUrl(); } else { @@ -1042,7 +1036,8 @@ UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid()); if (userInfo == null) { String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.emptyKey, StringUtil.Md5("WXLogin:" + weiXinUser.getUnionid())); String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.emptyKey, StringUtil.Md5("WXLogin:" + weiXinUser.getUnionid())); redisManager.cacheCommonString(key, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20); throw new UserAccountException(101, key); } @@ -1131,9 +1126,6 @@ bindWeiXin(uid, weiXinUser); } @Transactional(rollbackFor=UserAccountException.class) @Override public void bindWeiXin(Long uid,WeiXinUser weiXinUser) throws UserAccountException { @@ -1189,8 +1181,9 @@ if (asInputStream == null) { LogHelper.test("微信头像下载失败: " + weiXinUser.getUnionid() + " " + headimgurl); } else { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String .format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) { headimgurl = result.getUrl(); } else { @@ -1222,9 +1215,6 @@ @Override public UserInfo bindPhoneToLogin(String phone, String key, String appId, HttpServletRequest request) throws UserAccountException { UserInfo phoneUser = userInfoMapper.getEffectiveUserInfoByPhone(phone); if (phoneUser != null) throw new UserAccountException(1, "号码已经被占用"); // 判断手机号码是否被封禁 ForbiddenUserIdentifyCode identifyCode1 = forbiddenUserIdentifyCodeService @@ -1249,8 +1239,9 @@ if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) { InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()); if (asInputStream != null) { FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String .format(FilePathEnum.userWXPortrait.getPath() +"%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) portrait = result.getUrl(); } else { @@ -1261,6 +1252,21 @@ if (StringUtil.isNullOrEmpty(portrait)) portrait = Constant.systemCommonConfig.getDefaultPortrait(); // 是否需要创建新账户 UserInfo phoneUser = userInfoMapper.getEffectiveUserInfoByPhone(phone); if (phoneUser != null) { // 绑定微信 if (StringUtil.isNullOrEmpty(phoneUser.getWxUnionId())) { try { bindWeiXin(phoneUser.getId(), weiXinUser); } catch (Exception e) { throw new UserAccountException(1, "微信绑定失败"); } } else { throw new UserAccountException(1, "该微信已被绑定"); } userInfo = userInfoMapper.selectAvailableByPrimaryKey(phoneUser.getId()); } else { // 创建新账户 userInfo = new UserInfo(); userInfo.setPhone(phone); @@ -1276,6 +1282,7 @@ userInfo.setLastLoginIp(request.getRemoteHost()); userInfo.setState(UserInfo.STATE_NORMAL); addUser(userInfo); } Long uid = userInfo.getId(); ThreadUtil.run(new Runnable() { @@ -1427,6 +1434,5 @@ // 插入记录 userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_DELETE_OUT_OF_DATE, reason); } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamFansInfoServiceImpl.java
@@ -19,6 +19,7 @@ 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.log.LogHelper; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.user.UserActiveLogService; @@ -65,26 +66,30 @@ @Resource private UserActiveLogService userActiveLogService; @Override public void save(TeamFansInfo record) { if (record == null || record.getWorkerId() == null ) { return; } // 无邀请关系 不操作 ThreeSale threeSale = threeSaleSerivce.selectByWorkerId(record.getWorkerId()); if (threeSale == null) return; record.setId(record.getWorkerId().toString()); TeamFansInfo teamFansInfo = teamFansInfoDao.get(record.getId()); if (teamFansInfo != null) { teamFansInfoDao.updateSelective(record); LogHelper.test("队员粉丝信息:更新-" + record.getId()); } else { initData(record); record.setCrateTime(new Date()); LogHelper.test("队员粉丝信息:新增-" + record.getId()); teamFansInfoDao.save(record); } } /** * 初始化数据 @@ -146,8 +151,7 @@ // 备注名 String memoName = null; ThreeSaleExtraInfo threeSaleExtraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(bossId, workerId); ThreeSaleExtraInfo threeSaleExtraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(bossId, workerId); if (threeSaleExtraInfo != null) { if (!StringUtil.isNullOrEmpty(threeSaleExtraInfo.getNickname())) { memoName = threeSaleExtraInfo.getNickname(); @@ -247,7 +251,6 @@ save(focusInfo); } @Override public void updateMemoName(Long workerId, int type, String memoName) { TeamFansInfo teamFansInfo = new TeamFansInfo(); @@ -259,7 +262,6 @@ } save(teamFansInfo); } @Override public void updateTags(Long workerId, int type, String tags) { @@ -273,7 +275,6 @@ save(teamFansInfo); } @Override public void updateNickName(Long workerId, String nickName) { TeamFansInfo teamFansInfo = new TeamFansInfo(); @@ -281,7 +282,6 @@ teamFansInfo.setNickName(nickName); save(teamFansInfo); } @Override public void updateStateValid(Long workerId, boolean stateValid) { @@ -307,7 +307,6 @@ save(teamFansInfo); } @Override public void updateWeixinId(Long workerId, String weixinId) { TeamFansInfo teamFansInfo = new TeamFansInfo(); @@ -320,7 +319,6 @@ } save(teamFansInfo); } @Override public void updateInviteCode(Long workerId, String inviteCode) { @@ -354,7 +352,6 @@ save(teamFansInfo); } @Override public void updateIncome(Long workerId, BigDecimal income) { if (income == null) { @@ -378,7 +375,6 @@ teamFansInfo.setFansNum(fansNum); save(teamFansInfo); } @Override public List<TeamFansInfo> query(int start, int count, int type, Long uid, ThreeSaleFocusDTO focusDTO) { fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserTeamMessageListener.java
@@ -20,9 +20,12 @@ 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.entity.bus.user.UserInfo; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.user.invite.TeamFansInfoService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService; import com.yeshi.fanli.util.rocketmq.MQTopicName; import net.sf.json.JSONObject; @@ -41,6 +44,12 @@ @Resource private ThreeSaleDetailService threeSaleDetailService; @Resource private ThreeSaleSerivce threeSaleSerivce; @Resource private TeamUserLevelStatisticService teamUserLevelStatisticService; @Override public Action consume(Message message, ConsumeContext context) { @@ -94,6 +103,14 @@ teamFansInfoService.addFansInfo(mqMsg.getWorkerId(), mqMsg.getBossId(),mqMsg.getSuccessTime()); threeSaleDetailService.addByWorkerUid(mqMsg.getWorkerId()); // 更新队员统计信息 teamUserLevelStatisticService.initData(mqMsg.getBossId()); UserInfo boss = threeSaleSerivce.getBoss(mqMsg.getBossId()); if (boss != null) { teamUserLevelStatisticService.initData(boss.getId()); } } } else if (tag.equalsIgnoreCase(UserTopicTagEnum.userMoneyAdd.name())) {// 资金到账 JSONObject json = JSONObject.fromObject(new String(message.getBody()));