yujian
2019-12-10 c8041ec0544bf122e6819e6bf698997ccbf30aaf
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java
@@ -160,6 +160,7 @@
      }
      boolean isupdateRank = true;
      UserInfoExtra extra = new UserInfoExtra();
      UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
      if (userInfoExtra != null && userInfoExtra.getId() != null) {
@@ -171,14 +172,91 @@
               isupdateRank = false;
            }
         }
         extra.setId(userInfoExtra.getId());
      } else {
         userInfoExtra = new UserInfoExtra();
         userInfoExtra.setUserInfo(new UserInfo(uid));
         extra.setUserInfo(new UserInfo(uid));
      }
      // 更新等级
      if (isupdateRank) {
         updateRank(userInfoExtra);
         List<UserRank> listRank = userRankService.getAllRank();
         if (listRank == null || listRank.size() == 0) {
            throw new UserInfoExtraException(1, "系统等级不存在");
         }
         int selfOrderNum = 0;
         int sharedOrderNum = 0;
         int inviteOrderNum = 0;
         Map<String, Object> map = commonOrderCountService.lastMonthSettleOrderNumber(uid);
         if (map != null) {
            // 返利订单
            if (map.get("totalSelf") != null) {
               selfOrderNum = Integer.parseInt(map.get("totalSelf").toString());
            }
            // 分享订单
            if (map.get("totalShared") != null) {
               sharedOrderNum = Integer.parseInt(map.get("totalShared").toString());
            }
            // 邀请订单
            if (map.get("totalInvite") != null) {
               inviteOrderNum = Integer.parseInt(map.get("totalInvite").toString());
            }
         }
         UserRank rank = null;
         for (UserRank userRank : listRank) {
            // 邀请满足
            Integer inviteNum = userRank.getInviteNum();
            if (inviteOrderNum >= inviteNum) {
               rank = userRank;
               extra.setRankOrderNum(inviteOrderNum);
               extra.setRankSource(Constant.TYPE_INVITE);
            }
            // 分享满足
            int shareNum = userRank.getShareNum();
            if (sharedOrderNum >= shareNum) {
               rank = userRank;
               extra.setRankOrderNum(sharedOrderNum);
               extra.setRankSource(Constant.TYPE_SHAER);
            }
            // 返利满足
            int directNum = userRank.getRebateNum();
            if (selfOrderNum >= directNum) {
               rank = userRank;
               extra.setRankOrderNum(selfOrderNum);
               extra.setRankSource(Constant.TYPE_REBATE);
            }
            if (rank != null) {
               extra.setUserRank(rank);
            } else {
               rank = userRank;
               // 默认最低等级:青铜
               extra.setUserRank(rank);
               extra.setRankOrderNum(selfOrderNum);
               extra.setRankSource(Constant.TYPE_REBATE);
               break;
            }
         }
         // 等级更新时间 当月1号
         Calendar calendar1 = Calendar.getInstance();
         calendar1.set(Calendar.DAY_OF_MONTH, 1);
         extra.setRankUpdateTime(calendar1.getTime());
         // 保存等级信息
         saveUserInfoExtra(extra);
         // 保存等级变化记录
         UserRankRecord userRankRecord = new UserRankRecord();
         userRankRecord.setUid(uid);
         userRankRecord.setRankId(rank.getId());
         userRankRecord.setCreateTime(new Date());
         userRankRecordMapper.insertSelective(userRankRecord);
      }
   }
@@ -198,98 +276,6 @@
      userInfoExtraMapper.insertSelective(userInfoExtra);
   }
   @Override
   public UserInfoExtra updateRank(UserInfoExtra userInfoExtra) throws UserInfoExtraException {
      UserInfo userInfo = userInfoExtra.getUserInfo();
      if (userInfo == null) {
         throw new UserInfoExtraException(1, "用户不存在");
      }
      Long uid = userInfo.getId();
      if (uid == null) {
         throw new UserInfoExtraException(1, "用户ID不存在");
      }
      List<UserRank> listRank = userRankService.getAllRank();
      if (listRank == null || listRank.size() == 0) {
         throw new UserInfoExtraException(1, "系统等级不存在");
      }
      int selfOrderNum = 0;
      int sharedOrderNum = 0;
      int inviteOrderNum = 0;
      Map<String, Object> map = commonOrderCountService.lastMonthSettleOrderNumber(uid);
      if (map != null) {
         // 返利订单
         if (map.get("totalSelf") != null) {
            selfOrderNum = Integer.parseInt(map.get("totalSelf").toString());
         }
         // 分享订单
         if (map.get("totalShared") != null) {
            sharedOrderNum = Integer.parseInt(map.get("totalShared").toString());
         }
         // 邀请订单
         if (map.get("totalInvite") != null) {
            inviteOrderNum = Integer.parseInt(map.get("totalInvite").toString());
         }
      }
      UserRank rank = null;
      for (UserRank userRank : listRank) {
         // 邀请满足
         Integer inviteNum = userRank.getInviteNum();
         if (inviteOrderNum >= inviteNum) {
            rank = userRank;
            userInfoExtra.setRankOrderNum(inviteOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_INVITE);
         }
         // 分享满足
         int shareNum = userRank.getShareNum();
         if (sharedOrderNum >= shareNum) {
            rank = userRank;
            userInfoExtra.setRankOrderNum(sharedOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_SHAER);
         }
         // 返利满足
         int directNum = userRank.getRebateNum();
         if (selfOrderNum >= directNum) {
            rank = userRank;
            userInfoExtra.setRankOrderNum(selfOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_REBATE);
         }
         if (rank != null) {
            userInfoExtra.setUserRank(rank);
         } else {
            rank = userRank;
            // 默认最低等级:青铜
            userInfoExtra.setUserRank(rank);
            userInfoExtra.setRankOrderNum(selfOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_REBATE);
            break;
         }
      }
      // 等级更新时间 当月1号
      Calendar calendar1 = Calendar.getInstance();
      calendar1.set(Calendar.DAY_OF_MONTH, 1);
      userInfoExtra.setRankUpdateTime(calendar1.getTime());
      // 保存信息并返回
      saveUserInfoExtra(userInfoExtra);
      UserRankRecord userRankRecord = new UserRankRecord();
      userRankRecord.setUid(uid);
      userRankRecord.setRankId(rank.getId());
      userRankRecord.setCreateTime(new Date());
      userRankRecordMapper.insertSelective(userRankRecord);
      return userInfoExtra;
   }
   @Override
   public UserInfoExtra saveUserInfoExtra(UserInfoExtra userInfoExtra) throws UserInfoExtraException {
@@ -621,13 +607,25 @@
   }
   @Override
   @Transactional
   public UserInfoExtra getByUidForUpdate(Long uid) {
      return userInfoExtraMapper.getByUidForUpdate(uid);
   }
   @Override
   @Transactional
   public void updateGoldCoin(Long id, Integer goldCoin) {
      userInfoExtraMapper.updateGoldCoin(id, goldCoin);
   }
   @Override
   public void addGoldCoinByUid(Long uid, Integer goldCoin) {
      userInfoExtraMapper.addGoldCoinByUid(uid, goldCoin);
   }
   @Override
   public void updateByPrimaryKeySelective(UserInfoExtra record) {
      userInfoExtraMapper.updateByPrimaryKeySelective(record);
   }
   @Override
@@ -652,11 +650,10 @@
            try {
               String inviteCode = createInviteCode(uid);
               if (!StringUtil.isNullOrEmpty(inviteCode)) {
                  userInfoExtra.setUserInfo(new UserInfo(uid));
                  userInfoExtra.setInviteCode(inviteCode);
                  saveUserInfoExtra(userInfoExtra);
                  UserInfoExtra extra= new UserInfoExtra();
                  extra.setId(userInfoExtra.getId());
                  extra.setInviteCode(inviteCode);
                  userInfoExtraMapper.updateByPrimaryKeySelective(extra);
                  return inviteCode;
               }
            } catch (Exception e) {