yujian
2019-07-16 810d27d204e9b993840cf789e77e6bd301d0c1b7
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -57,6 +57,9 @@
import com.yeshi.fanli.util.wx.WXLoginUtil;
import net.sf.json.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Transaction;
@Service
public class UserAccountServiceImpl implements UserAccountService {
@@ -103,6 +106,8 @@
   @Resource
   private UserInfoDeleteRecordService userInfoDeleteRecordService;
   
   @Resource
   private JedisPool jedisPool;
   @Transactional
   @Override
@@ -549,7 +554,6 @@
      userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
      
      userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "删除:账号被打通删除");
   }
@@ -671,6 +675,7 @@
   @Override
   public void addUser(UserInfo user) {
      Long maxUid = userInfoMapper.getMaxUid();
      if (maxUid == null)
         maxUid = 100000L;
@@ -698,7 +703,6 @@
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   @Override
@@ -952,6 +956,8 @@
         if (!Constant.IS_TEST)
            if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
               throw new UserAccountException(1, "验证码错误,重新输入");
            } else {// 验证码输入正确
               redisManager.clearSMSVCode(phone, SMSHistory.TYPE_LOGIN);
            }
      }
@@ -973,6 +979,19 @@
      // 清理次数
      redisManager.removeCommonString("sendMSNLoginCount" + phone);
      // 采用redis事务防止一个手机号多次注册问题
      String watchKey = StringUtil.Md5("REGISTER:" + phone);
      Jedis jedis = jedisPool.getResource();
      try {
         jedis.watch(watchKey);
         if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
            throw new UserAccountException(10, "请稍后再试");
         Transaction tran = jedis.multi();
         tran.incr(watchKey);
         List<Object> exec = tran.exec();
         if (exec == null || exec.size() == 0) {
            throw new UserAccountException(10, "请稍后再试");
         } else {
      // 查询是否存在该电话历史用户
      UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByPhone(phone);
      if (userInfo != null) {
@@ -996,8 +1015,15 @@
            e.printStackTrace();
         }
      }
      return userInfo;
         }
      } catch (Exception e) {
         e.printStackTrace();
      } finally {
         jedis.unwatch();
         jedisPool.returnResource(jedis);
      }
      throw new UserAccountException(10, "请稍后再试");
   }
   @Transactional
@@ -1024,6 +1050,20 @@
      if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective()) {
         throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
      }
      // 采用redis事务防止一个微信号多次注册问题
      String watchKey = StringUtil.Md5("REGISTER:" + weiXinUser.getUnionid());
      Jedis jedis = jedisPool.getResource();
      try {
         jedis.watch(watchKey);
         if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
            throw new UserAccountException(10, "请稍后再试");
         Transaction tran = jedis.multi();
         tran.incr(watchKey);
         List<Object> exec = tran.exec();
         if (exec == null || exec.size() == 0) {
            throw new UserAccountException(10, "请稍后再试");
         } else {
      UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
      // 直接用的微信登录
@@ -1058,6 +1098,14 @@
         }
      }
      return userInfo;
         }
      } catch (Exception e) {
         e.printStackTrace();
      } finally {
         jedis.unwatch();
         jedisPool.returnResource(jedis);
      }
      throw new UserAccountException(10, "请稍后再试");
   }
   /**
@@ -1182,8 +1230,6 @@
      userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
   }
   @Override
   public void forbiddenUserAll(Long uid, String reason) {
      UserInfo currentInfo = userInfoService.selectByPKey(uid);
@@ -1252,7 +1298,6 @@
      }
   }
   
   @Override
   public void forbiddenUser(Long uid, String reason) {
      UserInfo currentInfo = userInfoService.selectByPKey(uid);
@@ -1272,7 +1317,6 @@
      userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_FORBIDDEN, reason);
   }
   
   @Override
   public void DeleteUser(Long uid, String reason) {
      UserInfo currentInfo = userInfoService.selectByPKey(uid);
@@ -1290,7 +1334,6 @@
      // 插入记录
      userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_DELETE, reason);
   }
   
   @Override
   public void DeleteUserOutOfDate(Long uid, String reason) {