This commit is contained in:
77
2024-04-23 01:28:27 +08:00
parent e4dde712e6
commit 67b73e82bb
7 changed files with 70 additions and 7 deletions

View File

@@ -3,6 +3,7 @@ package com.ruoyi.xq.manager;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.secure.BCrypt;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.IdUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON;
@@ -14,6 +15,7 @@ import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.system.service.SysLoginService;
import com.ruoyi.xq.constant.RedisHttpConstant;
import com.ruoyi.xq.domain.*;
import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.enums.common.CodeEnum;
@@ -24,12 +26,14 @@ import com.ruoyi.xq.enums.userstatus.ShowAvatarEnum;
import com.ruoyi.xq.executor.ExecutorConstant;
import com.ruoyi.xq.lock.LockKey;
import com.ruoyi.xq.service.*;
import com.ruoyi.xq.util.UuidUtils;
import com.ruoyi.yunxin.client.ImUserClient;
import com.ruoyi.yunxin.req.CreateUserReq;
import com.ruoyi.yunxin.req.UpdateTokenReq;
import com.ruoyi.yunxin.resp.YxCommonR;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RBucket;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +44,7 @@ import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
@Component
@Slf4j
@@ -242,7 +247,7 @@ public class LoginManager {
return user;
}
public void resetPassword(String mobile,String code,String password) {
public String resetPasswordCheck(String mobile,String code){
User user = userService.getByUsername(mobile);
if(user == null){
throw new ServiceException("账户不存在");
@@ -251,6 +256,24 @@ public class LoginManager {
if(!check){
throw new ServiceException("验证码错误");
}
String uuid = UuidUtils.uuid();
String key = String.format(RedisHttpConstant.RESET_PASSWORD_CHECK_REDIS, uuid);
RBucket<String> bucket = redissonClient.getBucket(key);
bucket.set(mobile,1, TimeUnit.HOURS);
return uuid;
}
public void resetPassword(String mobile,String password,String token) {
User user = userService.getByUsername(mobile);
if(user == null){
throw new ServiceException("账户不存在");
}
String key = String.format(RedisHttpConstant.RESET_PASSWORD_CHECK_REDIS, token);
RBucket<String> bucket = redissonClient.getBucket(key);
String value = bucket.get();
if(StringUtils.isEmpty(value) || value.equals(mobile)){
throw new ServiceException("验证码已过期");
}
userService.resetPassword(user.getId(),password);
}
}