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 class RedisHttpConstant {
public static final String REDIS_P = "xq-"; public static final String REDIS_P = "xq-";
public static final String SYSTEM_CONFIG = REDIS_P + "system-config"; 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.LoginUser;
import com.ruoyi.xq.dto.app.auth.LoginVo; import com.ruoyi.xq.dto.app.auth.LoginVo;
import com.ruoyi.xq.dto.app.auth.RegisterCode; 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.app.user.ResetPasswordReq;
import com.ruoyi.xq.dto.common.sms.SmsCodeReq; import com.ruoyi.xq.dto.common.sms.SmsCodeReq;
import com.ruoyi.xq.enums.common.CodeEnum; import com.ruoyi.xq.enums.common.CodeEnum;
@@ -91,13 +92,29 @@ public class AuthAppController {
return R.ok("发送成功"); return R.ok("发送成功");
} }
@PostMapping("/resetPassword")
@Operation(summary = "重置密码") @PostMapping("/resetPassword/checkCode")
@Log(title = "重置密码", businessType = BusinessType.OTHER, isSaveDb = false) @Operation(summary = "重置密码-验证码校验")
public R<Void> resetPassword(@RequestBody ResetPasswordReq code){ @Log(title = "重置密码-验证码校验", businessType = BusinessType.OTHER, isSaveDb = false)
loginManager.resetPassword(code.getMobile(),code.getCode(),code.getPassword()); 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(); 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.annotation.Log;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType; 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.other.FeedbackReq;
import com.ruoyi.xq.dto.app.report.ReportPushReq; import com.ruoyi.xq.dto.app.report.ReportPushReq;
import com.ruoyi.xq.service.FeedbackService; import com.ruoyi.xq.service.FeedbackService;
@@ -29,6 +30,7 @@ public class OtherController {
@Operation(summary = "留言反馈") @Operation(summary = "留言反馈")
@Log(title = "留言反馈", businessType = BusinessType.OTHER, isSaveDb = false) @Log(title = "留言反馈", businessType = BusinessType.OTHER, isSaveDb = false)
public R<Void> feedback(@RequestBody FeedbackReq req){ public R<Void> feedback(@RequestBody FeedbackReq req){
req.setUserId(LoginHelper.getUserId());
feedbackService.feedback(req); feedbackService.feedback(req);
return R.ok(); 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 = "重置密码入参") @Schema(description = "重置密码入参")
public class ResetPasswordReq { public class ResetPasswordReq {
private String mobile; private String mobile;
private String code;
private String password; 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.exception.NotLoginException;
import cn.dev33.satoken.secure.BCrypt; import cn.dev33.satoken.secure.BCrypt;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON; 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.MessageUtils;
import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.system.service.SysLoginService; import com.ruoyi.system.service.SysLoginService;
import com.ruoyi.xq.constant.RedisHttpConstant;
import com.ruoyi.xq.domain.*; import com.ruoyi.xq.domain.*;
import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.enums.common.CodeEnum; 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.executor.ExecutorConstant;
import com.ruoyi.xq.lock.LockKey; import com.ruoyi.xq.lock.LockKey;
import com.ruoyi.xq.service.*; import com.ruoyi.xq.service.*;
import com.ruoyi.xq.util.UuidUtils;
import com.ruoyi.yunxin.client.ImUserClient; import com.ruoyi.yunxin.client.ImUserClient;
import com.ruoyi.yunxin.req.CreateUserReq; import com.ruoyi.yunxin.req.CreateUserReq;
import com.ruoyi.yunxin.req.UpdateTokenReq; import com.ruoyi.yunxin.req.UpdateTokenReq;
import com.ruoyi.yunxin.resp.YxCommonR; import com.ruoyi.yunxin.resp.YxCommonR;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RBucket;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +44,7 @@ import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections; import java.util.Collections;
import java.util.concurrent.TimeUnit;
@Component @Component
@Slf4j @Slf4j
@@ -242,7 +247,7 @@ public class LoginManager {
return user; return user;
} }
public void resetPassword(String mobile,String code,String password) { public String resetPasswordCheck(String mobile,String code){
User user = userService.getByUsername(mobile); User user = userService.getByUsername(mobile);
if(user == null){ if(user == null){
throw new ServiceException("账户不存在"); throw new ServiceException("账户不存在");
@@ -251,6 +256,24 @@ public class LoginManager {
if(!check){ if(!check){
throw new ServiceException("验证码错误"); 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); 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("-","");
}
}