Commit d541b591 authored by yaobaizheng's avatar yaobaizheng

忘记密码和修改密码 和发送短信拆开

parent 20247b1e
...@@ -25,10 +25,10 @@ public class WebConfig implements WebMvcConfigurer { ...@@ -25,10 +25,10 @@ public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry // registry
.addInterceptor(signterceptor) // .addInterceptor(signterceptor)
.addPathPatterns(getIncludePathPatterns()) // .addPathPatterns(getIncludePathPatterns())
.excludePathPatterns(Arrays.asList(swagger())); // .excludePathPatterns(Arrays.asList(swagger()));
// 添加需要拦截的路径,以及处理拦截的拦截器 // 添加需要拦截的路径,以及处理拦截的拦截器
registry registry
// 拦截器 // 拦截器
......
...@@ -4,6 +4,8 @@ import com.lyy.user.domain.JwtInfo; ...@@ -4,6 +4,8 @@ import com.lyy.user.domain.JwtInfo;
import com.lyy.user.enums.SendMsgTypeEnum; import com.lyy.user.enums.SendMsgTypeEnum;
import com.lyy.user.moudle.user.service.SysUserInfoService; import com.lyy.user.moudle.user.service.SysUserInfoService;
import com.lyy.user.moudle.user.vo.ForgetVo; import com.lyy.user.moudle.user.vo.ForgetVo;
import com.lyy.user.moudle.user.vo.SendPhoneVo;
import com.lyy.user.moudle.user.vo.UpdateVo;
import com.lyy.user.moudle.user.vo.UserInfoVo; import com.lyy.user.moudle.user.vo.UserInfoVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -47,10 +49,23 @@ public class SysUserController { ...@@ -47,10 +49,23 @@ public class SysUserController {
*/ */
@PostMapping("/update") @PostMapping("/update")
@ApiOperation(value = "修改密码") @ApiOperation(value = "修改密码")
public boolean update(@RequestBody @Validated ForgetVo forgetVo) { public boolean update(@RequestBody @Validated UpdateVo updateVo) {
return this.sysUserInfoService.forget(forgetVo, SendMsgTypeEnum.UPDATE_PASSWORD.getCode()); return this.sysUserInfoService.update(updateVo, SendMsgTypeEnum.UPDATE_PASSWORD.getCode());
} }
/**
* @description: 发送短信
* @date: 2023/11/20 9:40
* @param: [sendPhoneVo]
* @return: boolean
*/
@PostMapping("/sendMsg")
@ApiOperation(value = "发送短信", notes = "发送短信")
public boolean sendMsg(@RequestBody @Validated SendPhoneVo sendPhoneVo) {
return this.sysUserInfoService.sendMsg(sendPhoneVo);
}
/** /**
* @description: 获取用户信息 * @description: 获取用户信息
* @date: 2023/11/23 10:21 * @date: 2023/11/23 10:21
......
...@@ -53,13 +53,21 @@ public interface SysUserInfoService extends IService<SysUserInfo> { ...@@ -53,13 +53,21 @@ public interface SysUserInfoService extends IService<SysUserInfo> {
//用户注册 //用户注册
boolean sign(RegisterVo registerVo); boolean sign(RegisterVo registerVo);
/** /**
* @description: 忘记/修改密码 * @description: 忘记密码
* @date: 2023/11/23 10:21 * @date: 2023/11/23 10:21
* @param: [forgetVo] * @param: [forgetVo]
* @return: boolean * @return: boolean
**/ **/
boolean forget(ForgetVo forgetVo,Integer code); boolean forget(ForgetVo forgetVo,Integer code);
/**
* @description: 修改密码
* @date: 2023/11/23 10:21
* @param: [forgetVo]
* @return: boolean
**/
boolean update(UpdateVo updateVo,Integer code);
/** /**
* @description: 获取用户信息 * @description: 获取用户信息
* @date: 2023/11/23 10:21 * @date: 2023/11/23 10:21
......
...@@ -219,6 +219,11 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -219,6 +219,11 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
*/ */
@Override @Override
public boolean sendMsg(SendPhoneVo sendPhoneVo) { public boolean sendMsg(SendPhoneVo sendPhoneVo) {
if(SendMsgTypeEnum.UPDATE_PASSWORD.getCode().equals(sendPhoneVo.getType())){
JwtInfo currentUserInfo = BaseContextHandler.getCurrentUserInfo();
String phone = currentUserInfo.getPhone();
sendPhoneVo.setPhone(phone);
}
check(sendPhoneVo.getPhone()); check(sendPhoneVo.getPhone());
if (StringUtils.isEmpty(SendMsgTypeEnum.getTemplateId(sendPhoneVo.getType()))) { if (StringUtils.isEmpty(SendMsgTypeEnum.getTemplateId(sendPhoneVo.getType()))) {
throw new ServiceException("参数有误"); throw new ServiceException("参数有误");
...@@ -314,15 +319,14 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -314,15 +319,14 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
return this.save(userInfo); return this.save(userInfo);
} }
/** /**
* @description: 忘记/修改密码 * @description: 忘记密码
* @date: 2023/11/23 10:21 * @date: 2023/11/23 10:21
* @param: [forgetVo] * @param: [forgetVo]
* @return: boolean * @return: boolean
*/ */
@Override @Override
public boolean forget(ForgetVo forgetVo, Integer type) { public boolean forget(ForgetVo forgetVo, Integer type) {
JwtInfo currentUserInfo = BaseContextHandler.getCurrentUserInfo(); String phone = forgetVo.getPhone();
String phone = currentUserInfo.getPhone();
LambdaQueryWrapper<SysUserInfo> userQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUserInfo> userQuery = new LambdaQueryWrapper<>();
userQuery.eq(SysUserInfo::getPhonenumber, phone); userQuery.eq(SysUserInfo::getPhonenumber, phone);
SysUserInfo sysUserInfo = this.getOne(userQuery); SysUserInfo sysUserInfo = this.getOne(userQuery);
...@@ -344,6 +348,38 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -344,6 +348,38 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
return this.updateById(sysUserInfo); return this.updateById(sysUserInfo);
} }
/**
* @description: 修改密码
* @date: 2023/11/23 10:21
* @param: [forgetVo]
* @return: boolean
*/
@Override
public boolean update(UpdateVo updateVo, Integer type) {
JwtInfo currentUserInfo = BaseContextHandler.getCurrentUserInfo();
String phone = currentUserInfo.getPhone();
LambdaQueryWrapper<SysUserInfo> userQuery = new LambdaQueryWrapper<>();
userQuery.eq(SysUserInfo::getPhonenumber, phone);
SysUserInfo sysUserInfo = this.getOne(userQuery);
if (ObjectUtils.isEmpty(sysUserInfo)) {
throw new ServiceException("该用户不存在,请先注册");
}
String key = RedisConstants.MSG_KEY + type + ":" + phone;
Object code = RedisUtil.get(key);
if (ObjectUtils.isEmpty(code)) {
throw new ServiceException("验证码无效,请重新发送");
}
if (!code.equals(updateVo.getCode())) {
throw new ServiceException("验证码错误");
}
String newPassword =
DigestUtils.md5DigestAsHex(
(updateVo.getPassword() + lyyConfig.getPasswordSalt()).getBytes());
sysUserInfo.setPassword(newPassword);
return this.updateById(sysUserInfo);
}
@Override @Override
public UserInfoVo detail() { public UserInfoVo detail() {
JwtInfo jwtUser = BaseContextHandler.getCurrentUserInfo(); JwtInfo jwtUser = BaseContextHandler.getCurrentUserInfo();
......
...@@ -19,7 +19,7 @@ import javax.validation.constraints.Size; ...@@ -19,7 +19,7 @@ import javax.validation.constraints.Size;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@ToString @ToString
@ApiModel(value = "忘记 修改密码") @ApiModel(value = "忘记密码")
public class ForgetVo { public class ForgetVo {
@NotEmpty(message = "密码不能为空") @NotEmpty(message = "密码不能为空")
...@@ -27,10 +27,10 @@ public class ForgetVo { ...@@ -27,10 +27,10 @@ public class ForgetVo {
@ApiModelProperty(value = "密码",required = true) @ApiModelProperty(value = "密码",required = true)
private String password; private String password;
/*@NotEmpty(message = "手机号不能为空") @NotEmpty(message = "手机号不能为空")
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确") @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
@ApiModelProperty(value = "手机号",required = true) @ApiModelProperty(value = "手机号",required = true)
private String phone;*/ private String phone;
@NotEmpty(message = "验证码不能为空") @NotEmpty(message = "验证码不能为空")
@ApiModelProperty(value = "验证码",required = true) @ApiModelProperty(value = "验证码",required = true)
......
...@@ -20,9 +20,10 @@ import javax.validation.constraints.Pattern; ...@@ -20,9 +20,10 @@ import javax.validation.constraints.Pattern;
@ToString @ToString
@ApiModel(value = "发送短信") @ApiModel(value = "发送短信")
public class SendPhoneVo { public class SendPhoneVo {
@NotBlank(message = "手机号不能为空") // @NotBlank(message = "手机号不能为空")
@Pattern(regexp = "^1[3456789]\\d{9}$", message = "手机号格式不正确") // @Pattern(regexp = "^1[3456789]\\d{9}$", message = "手机号格式不正确")
@ApiModelProperty(value = "手机号",required = true) // @ApiModelProperty(value = "手机号",required = true)
@ApiModelProperty(value = "手机号")
private String phone; private String phone;
//发送短信的类型 1:注册 2:登录 //发送短信的类型 1:注册 2:登录
@ApiModelProperty(value = "短信类型 传数字 1:注册 2:登录 3:忘记密码 4:修改密码",required = true) @ApiModelProperty(value = "短信类型 传数字 1:注册 2:登录 3:忘记密码 4:修改密码",required = true)
......
package com.lyy.user.moudle.user.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
/**
* @Author:zhouxudong
* @version: 1.0
* @Date: 2023/11/17 9:38
* @Description: 忘记密码
*/
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@ApiModel(value = "修改密码")
public class UpdateVo {
@NotEmpty(message = "密码不能为空")
@Pattern(regexp = "^[a-zA-Z0-9~!@#$%^&*()_+?.]{6,20}$", message = "密码长度必须大于等于6位,小于等于20")
@ApiModelProperty(value = "密码",required = true)
private String password;
/*@NotEmpty(message = "手机号不能为空")
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
@ApiModelProperty(value = "手机号",required = true)
private String phone;*/
@NotEmpty(message = "验证码不能为空")
@ApiModelProperty(value = "验证码",required = true)
private String code;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment