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,45 +172,13 @@
               isupdateRank = false;
            }
         }
         extra.setId(userInfoExtra.getId());
      } else {
         userInfoExtra = new UserInfoExtra();
         userInfoExtra.setUserInfo(new UserInfo(uid));
         extra.setUserInfo(new UserInfo(uid));
      }
      // 更新等级
      if (isupdateRank) {
         updateRank(userInfoExtra);
      }
   }
   @Override
   public void createUserInfoExtra(Long uid) throws UserInfoExtraException {
      UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
      if (userInfoExtra != null) {
         return;
      }
      userInfoExtra = new UserInfoExtra();
      userInfoExtra.setUserInfo(new UserInfo(uid));
      userInfoExtra.setFirstLoginTime(new Date());
      userInfoExtra.setCreateTime(new Date());
      userInfoExtra.setUpdateTime(new Date());
      userInfoExtra.setActiveTime(new Date());
      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, "系统等级不存在");
@@ -242,34 +211,34 @@
         Integer inviteNum = userRank.getInviteNum();
         if (inviteOrderNum >= inviteNum) {
            rank = userRank;
            userInfoExtra.setRankOrderNum(inviteOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_INVITE);
               extra.setRankOrderNum(inviteOrderNum);
               extra.setRankSource(Constant.TYPE_INVITE);
         }
         // 分享满足
         int shareNum = userRank.getShareNum();
         if (sharedOrderNum >= shareNum) {
            rank = userRank;
            userInfoExtra.setRankOrderNum(sharedOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_SHAER);
               extra.setRankOrderNum(sharedOrderNum);
               extra.setRankSource(Constant.TYPE_SHAER);
         }
         // 返利满足
         int directNum = userRank.getRebateNum();
         if (selfOrderNum >= directNum) {
            rank = userRank;
            userInfoExtra.setRankOrderNum(selfOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_REBATE);
               extra.setRankOrderNum(selfOrderNum);
               extra.setRankSource(Constant.TYPE_REBATE);
         }
         if (rank != null) {
            userInfoExtra.setUserRank(rank);
               extra.setUserRank(rank);
         } else {
            rank = userRank;
            // 默认最低等级:青铜
            userInfoExtra.setUserRank(rank);
            userInfoExtra.setRankOrderNum(selfOrderNum);
            userInfoExtra.setRankSource(Constant.TYPE_REBATE);
               extra.setUserRank(rank);
               extra.setRankOrderNum(selfOrderNum);
               extra.setRankSource(Constant.TYPE_REBATE);
            break;
         }
      }
@@ -277,19 +246,36 @@
      // 等级更新时间 当月1号
      Calendar calendar1 = Calendar.getInstance();
      calendar1.set(Calendar.DAY_OF_MONTH, 1);
      userInfoExtra.setRankUpdateTime(calendar1.getTime());
         extra.setRankUpdateTime(calendar1.getTime());
      // 保存信息并返回
      saveUserInfoExtra(userInfoExtra);
         // 保存等级信息
         saveUserInfoExtra(extra);
         // 保存等级变化记录
      UserRankRecord userRankRecord = new UserRankRecord();
      userRankRecord.setUid(uid);
      userRankRecord.setRankId(rank.getId());
      userRankRecord.setCreateTime(new Date());
      userRankRecordMapper.insertSelective(userRankRecord);
      return userInfoExtra;
   }
   }
   @Override
   public void createUserInfoExtra(Long uid) throws UserInfoExtraException {
      UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
      if (userInfoExtra != null) {
         return;
      }
      userInfoExtra = new UserInfoExtra();
      userInfoExtra.setUserInfo(new UserInfo(uid));
      userInfoExtra.setFirstLoginTime(new Date());
      userInfoExtra.setCreateTime(new Date());
      userInfoExtra.setUpdateTime(new Date());
      userInfoExtra.setActiveTime(new Date());
      userInfoExtraMapper.insertSelective(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) {