注册功能实现

This commit is contained in:
YuNan 2024-11-10 21:09:44 +08:00
parent be99853779
commit 374c549686
7 changed files with 38 additions and 137 deletions

View File

@ -56,9 +56,6 @@ public class AuthController {
return authService.register(registerDTO); return authService.register(registerDTO);
} }
// 存储已发送的验证码
private final Map<String, String> emailCodeMap = new ConcurrentHashMap<>(16);
/** /**
* 发送验证码 * 发送验证码
* @param registerDTO * @param registerDTO

View File

@ -25,35 +25,4 @@ public class LoginDTO {
private String token; private String token;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
} }

View File

@ -27,43 +27,4 @@ public class RegisterDTO {
private String token; private String token;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
} }

View File

@ -1,12 +1,16 @@
package com.yunan.dto; package com.yunan.dto;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* 用户实体类 * 用户实体类
*/ */
@Data
public class Users implements Serializable { public class Users implements Serializable {
private Integer id; private long id;
/** 用户名*/ /** 用户名*/
private String username; private String username;
/** 密码*/ /** 密码*/
@ -14,7 +18,7 @@ public class Users implements Serializable {
/** 邮箱*/ /** 邮箱*/
private String email; private String email;
/** 创建用户信息时间 */ /** 创建用户信息时间 */
private String createdTime; private Date createdTime;
/** 修改用户信息时间 */ /** 修改用户信息时间 */
private String updatedTime; private String updatedTime;
/** 用户状态*/ /** 用户状态*/
@ -31,60 +35,4 @@ public class Users implements Serializable {
", state=" + state + ", state=" + state +
'}'; '}';
} }
public Integer getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public String getCreated_Time() {
return createdTime;
}
public void setCreated_Time(String create_Time) {
this.createdTime = create_Time;
}
public String getUpdated_Time() {
return updatedTime;
}
public void setUpdated_Time(String update_Time) {
this.updatedTime = update_Time;
}
} }

View File

@ -9,7 +9,7 @@ import java.util.stream.Collectors;
@Service @Service
public class RedisExpireTask { public class RedisExpireTask {
private final long time = 300000; //五分钟 private final long time = 3600000; //一小时
private RedisTemplate<String, Object> redisTemplate; private RedisTemplate<String, Object> redisTemplate;

View File

@ -14,6 +14,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
import java.util.Random;
@Service @Service
@ -36,14 +38,20 @@ public class AuthServiceImpl implements AuthService {
if(authMapper.selectOne(queryWrapper) != null) { if(authMapper.selectOne(queryWrapper) != null) {
return ResponseEntity return ResponseEntity
.status(HttpStatus.CONFLICT) .status(HttpStatus.CONFLICT)
.body(new ErrorResponse("用户已存在!!!")); .body(new ErrorResponse("用户已存在!!!"));
} }
//为用户创建默认用户名
String userName = createUserName();
Users user = new Users(); Users user = new Users();
user.setUsername(registerDTO.getUsername()); //设置账号创建时间
Date currentDate = new Date();
user.setCreatedTime(currentDate);
user.setUsername(userName);
user.setPassword(registerDTO.getPassword()); user.setPassword(registerDTO.getPassword());
user.setEmail(registerDTO.getEmail()); user.setEmail(registerDTO.getEmail());
// boolean isSaved = authMapper.insert(user) > 0; //状态设置 " 1 " 正常账号
boolean isSaved = true; user.setState(1);
boolean isSaved = authMapper.insert(user) > 0;
if (isSaved) { if (isSaved) {
return ResponseEntity return ResponseEntity
.status(HttpStatus.OK) .status(HttpStatus.OK)
@ -61,5 +69,23 @@ public class AuthServiceImpl implements AuthService {
} }
} }
//随机生成用户名算法
public String createUserName() {
// 字符集包括小写字母和数字
String chars = "abcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder randomPart = new StringBuilder();
// 随机生成6位字符
Random random = new Random();
for (int i = 0; i < 6; i++) {
randomPart.append(chars.charAt(random.nextInt(chars.length())));
}
// 获取当前时间戳秒级
long timestamp = System.currentTimeMillis() / 1000;
// 拼接生成用户名例如 "user_xxx123_1638326400"
return "user_" + randomPart.toString() + "_" + timestamp;
}
} }

View File

@ -46,7 +46,7 @@ public class EmailServiceImpl implements EmailService {
// 发送邮件 // 发送邮件
mailSender.send(message); mailSender.send(message);
redisUtils.hPutWithExpire("rightCode", email, code, 5, TimeUnit.SECONDS); redisUtils.hPutWithExpire("rightCode", email, code, 5, TimeUnit.MINUTES);
return new ApiResponse<>(ResponseCode.SUCCESS, "验证码已发送"); return new ApiResponse<>(ResponseCode.SUCCESS, "验证码已发送");
} }
} }