1.新增重置密码

This commit is contained in:
乾乾
2025-04-17 20:54:54 +08:00
parent e9732707c9
commit 15a6e58013
6 changed files with 81 additions and 14 deletions

View File

@@ -159,7 +159,7 @@ public class RoomController {
} }
@Operation(summary = "查看公告") @Operation(summary = "查看公告")
@GetMapping("/announcement/{id}") @GetMapping("/announcement")
public ApiResult announcement(ReadAnnouncementsParam param){ public ApiResult announcement(ReadAnnouncementsParam param){
return ApiResult.success(roomService.getAnnouncement(RequestHolder.get().getUid(), param)); return ApiResult.success(roomService.getAnnouncement(RequestHolder.get().getUid(), param));
} }

View File

@@ -1,5 +1,6 @@
package com.hula.core.user.controller; package com.hula.core.user.controller;
import com.hula.core.user.domain.vo.req.user.ForgotPasswordReq;
import com.hula.core.user.domain.vo.req.user.LoginReq; import com.hula.core.user.domain.vo.req.user.LoginReq;
import com.hula.core.user.domain.vo.req.user.LogoutReq; import com.hula.core.user.domain.vo.req.user.LogoutReq;
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq; import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
@@ -49,6 +50,12 @@ public class TokenController {
return ApiResult.success(registerReq.getEmail()); return ApiResult.success(registerReq.getEmail());
} }
@PostMapping("/forgotPassword")
@Operation(summary ="忘记密码|重置密码")
public ApiResult<Boolean> forgotPassword(@Valid @RequestBody ForgotPasswordReq forgotPasswordReq) {
return ApiResult.success(loginService.forgotPassword(forgotPasswordReq));
}
@PostMapping("/refreshToken") @PostMapping("/refreshToken")
@Operation(summary ="token续签") @Operation(summary ="token续签")
public ApiResult<LoginResultVO> refreshToken(@RequestBody RefreshTokenReq refreshTokenReq) { public ApiResult<LoginResultVO> refreshToken(@RequestBody RefreshTokenReq refreshTokenReq) {

View File

@@ -46,8 +46,8 @@ public class UserDao extends ServiceImpl<UserMapper, User> {
updateById(update); updateById(update);
} }
public User getByName(String name) { public User getByEmail(String email) {
return lambdaQuery().eq(User::getName, name).one(); return lambdaQuery().eq(User::getEmail, email).one();
} }
public List<User> getMemberList() { public List<User> getMemberList() {

View File

@@ -0,0 +1,30 @@
package com.hula.core.user.domain.vo.req.user;
import com.hula.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
/**
* @author 乾乾
*/
@Data
public class ForgotPasswordReq extends BaseEntity {
@NotEmpty(message = "请填写邮箱")
@Schema(description = "邮箱")
@Pattern(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$", message = "请输入有效的邮箱地址")
private String email;
@NotEmpty(message = "邮箱验证码不能为空")
@Schema(description = "邮箱验证码")
private String code;
@NotEmpty(message = "修改码非法!")
@Schema(description = "uuid")
private String uuid;
@NotEmpty(message = "请输入密码")
private String password;
}

View File

@@ -1,10 +1,12 @@
package com.hula.core.user.service; package com.hula.core.user.service;
import com.hula.core.user.domain.vo.req.user.ForgotPasswordReq;
import com.hula.core.user.domain.vo.req.user.LoginReq; import com.hula.core.user.domain.vo.req.user.LoginReq;
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq; import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
import com.hula.core.user.domain.vo.req.user.RegisterReq; import com.hula.core.user.domain.vo.req.user.RegisterReq;
import com.hula.core.user.domain.vo.resp.user.LoginResultVO; import com.hula.core.user.domain.vo.resp.user.LoginResultVO;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
/** /**
* @author nyh * @author nyh
@@ -39,4 +41,9 @@ public interface LoginService {
* 退出登录 * 退出登录
*/ */
void logout(Boolean autoLogin); void logout(Boolean autoLogin);
/**
* 重置密码
*/
Boolean forgotPassword(@Valid ForgotPasswordReq forgotPasswordReq);
} }

View File

@@ -14,6 +14,7 @@ import com.hula.core.chat.service.ContactService;
import com.hula.core.chat.service.RoomService; import com.hula.core.chat.service.RoomService;
import com.hula.core.user.dao.UserDao; import com.hula.core.user.dao.UserDao;
import com.hula.core.user.domain.entity.User; import com.hula.core.user.domain.entity.User;
import com.hula.core.user.domain.vo.req.user.ForgotPasswordReq;
import com.hula.core.user.domain.vo.req.user.LoginReq; import com.hula.core.user.domain.vo.req.user.LoginReq;
import com.hula.core.user.domain.vo.req.user.RefreshTokenReq; import com.hula.core.user.domain.vo.req.user.RefreshTokenReq;
import com.hula.core.user.domain.vo.req.user.RegisterReq; import com.hula.core.user.domain.vo.req.user.RegisterReq;
@@ -78,17 +79,7 @@ public class LoginServiceImpl implements LoginService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void normalRegister(RegisterReq req) { public void normalRegister(RegisterReq req) {
String emailCode; checkCode(req.getUuid(), req.getCode());
Object codeObj = RedisUtils.hget("emailCode", req.getUuid());
if (ObjectUtil.isNotNull(codeObj)) {
emailCode = codeObj.toString();
} else {
throw new BizException("验证码已过期");
}
if(StrUtil.isEmpty(emailCode) || !emailCode.equals(req.getCode())){
throw new BizException("验证码错误!");
}
// 2. 检查邮箱是否已被其他用户绑定 // 2. 检查邮箱是否已被其他用户绑定
if (userDao.existsByEmailAndIdNot(null, req.getEmail())) { if (userDao.existsByEmailAndIdNot(null, req.getEmail())) {
@@ -162,4 +153,36 @@ public class LoginServiceImpl implements LoginService {
} }
} }
@Override
public Boolean forgotPassword(ForgotPasswordReq req) {
// 1. 校验
checkCode(req.getUuid(), req.getCode());
// 2. 修改密码
User dbuUser = userDao.getByEmail(req.getEmail());
User user = new User();
user.setId(dbuUser.getId());
user.setPassword(req.getPassword());
return userDao.updateById(user);
}
/**
* 检查验证码
* @param uuid 验证码id
* @param code 验证码值
*/
private static void checkCode(String uuid, String code) {
String emailCode;
Object codeObj = RedisUtils.hget("emailCode", uuid);
if (ObjectUtil.isNotNull(codeObj)) {
emailCode = codeObj.toString();
} else {
throw new BizException("验证码已过期");
}
if (StrUtil.isEmpty(emailCode) || !emailCode.equals(code)) {
throw new BizException("验证码错误!");
}
}
} }