Pu Zhibing
2025-03-31 97d99b76bdde8952cf257c3c85c1a8a080927af4
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -30,6 +30,7 @@
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.redisson.RedissonLock;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -131,6 +132,12 @@
      }
      String openid = map.get("openid").toString();
      String sessionKey = map.get("sessionKey").toString();
      LoginVo loginVo = new LoginVo();
      String key = "login:" + openid;
      Boolean hasKey = redisService.lock(key);
      if(hasKey){
         try {
      //查询用户是否注册,没有注册则跳转到注册页面
      AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0));
      if(null == appUser){
@@ -140,7 +147,6 @@
         }
         JSONObject phone = JSON.parseObject(decrypt);
         String purePhoneNumber = phone.getString("purePhoneNumber");
         LoginVo loginVo = new LoginVo();
         loginVo.setSkipPage(2);
         loginVo.setPhone(purePhoneNumber);
         return R.ok(loginVo);
@@ -149,7 +155,6 @@
      if(2 == appUser.getStatus()){
         return R.fail("账户已被冻结,请联系管理员!");
      }
      LoginVo loginVo = new LoginVo();
      loginVo.setSkipPage(1);
      loginVo.setFirstTime(false);
      loginVo.setPhone(appUser.getPhone());
@@ -164,6 +169,15 @@
      appUser.setLastLoginTime(LocalDateTime.now());
      this.updateById(appUser);
      return R.ok(loginVo);
         }catch (Exception e){
            e.printStackTrace();
         }finally {
            redisService.unlock(key);
         }
      }else{
         return R.fail("请稍后重试");
      }
      return R.fail("登录失败");
   }