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,5 +3,8 @@ package com.ruoyi.xq.constant;
public class RedisHttpConstant {
public static final String REDIS_P = "xq-";
public static final String SYSTEM_CONFIG = REDIS_P + "system-config";
public static final String RESET_PASSWORD_CHECK_REDIS = REDIS_P + "resetPasswordCheck:%s";
}

View File

@@ -8,6 +8,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.dto.app.auth.LoginUser;
import com.ruoyi.xq.dto.app.auth.LoginVo;
import com.ruoyi.xq.dto.app.auth.RegisterCode;
import com.ruoyi.xq.dto.app.auth.RegisterCodeCheck;
import com.ruoyi.xq.dto.app.user.ResetPasswordReq;
import com.ruoyi.xq.dto.common.sms.SmsCodeReq;
import com.ruoyi.xq.enums.common.CodeEnum;
@@ -91,13 +92,29 @@ public class AuthAppController {
return R.ok("发送成功");
}
@PostMapping("/resetPassword")
@Operation(summary = "重置密码")
@Log(title = "重置密码", businessType = BusinessType.OTHER, isSaveDb = false)
public R<Void> resetPassword(@RequestBody ResetPasswordReq code){
loginManager.resetPassword(code.getMobile(),code.getCode(),code.getPassword());
@PostMapping("/resetPassword/checkCode")
@Operation(summary = "重置密码-验证码校验")
@Log(title = "重置密码-验证码校验", businessType = BusinessType.OTHER, isSaveDb = false)
public R<String> resetPasswordCheck(@RequestBody RegisterCodeCheck code){
String check = loginManager.resetPasswordCheck(code.getMobile(), code.getCode());
R<String> ok = R.ok();
ok.setData(check);
return R.ok();
}
@PostMapping("/resetPassword")
@Operation(summary = "重置密码")
@Log(title = "重置密码", businessType = BusinessType.OTHER, isSaveDb = false)
public R<Void> resetPassword(@RequestBody ResetPasswordReq code){
loginManager.resetPassword(code.getMobile(),code.getPassword(),code.getToken());
return R.ok();
}
}

View File

@@ -4,6 +4,7 @@ package com.ruoyi.xq.controller.app;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.xq.dto.app.other.FeedbackReq;
import com.ruoyi.xq.dto.app.report.ReportPushReq;
import com.ruoyi.xq.service.FeedbackService;
@@ -29,6 +30,7 @@ public class OtherController {
@Operation(summary = "留言反馈")
@Log(title = "留言反馈", businessType = BusinessType.OTHER, isSaveDb = false)
public R<Void> feedback(@RequestBody FeedbackReq req){
req.setUserId(LoginHelper.getUserId());
feedbackService.feedback(req);
return R.ok();
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.xq.dto.app.auth;
import lombok.Data;
@Data
public class RegisterCodeCheck {
private String mobile;
private String code;
}

View File

@@ -7,6 +7,6 @@ import lombok.Data;
@Schema(description = "重置密码入参")
public class ResetPasswordReq {
private String mobile;
private String code;
private String password;
private String token;
}

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);
}
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.xq.util;
import cn.hutool.core.lang.UUID;
public class UuidUtils {
public static String uuid(){
return UUID.fastUUID().toString().replace("-","");
}
}