init
This commit is contained in:
@@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.ruoyi.xq.dto.app.auth;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RegisterCodeCheck {
|
||||||
|
private String mobile;
|
||||||
|
private String code;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
9
ruoyi-xq/src/main/java/com/ruoyi/xq/util/UuidUtils.java
Normal file
9
ruoyi-xq/src/main/java/com/ruoyi/xq/util/UuidUtils.java
Normal 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("-","");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user