feat(auth): 优化注册功能并添加注册异常处理
- 新增 RegistrationException 类用于处理注册相关的异常 - 在全局异常处理器中添加 RegistrationException 的处理逻辑 - 修改用户服务中的注册逻辑,当用户名或邮箱已存在时抛出 RegistrationException - 更新注册码实体类,将日期时间字段改为字符串类型 - 调整注册码生成和验证逻辑,使用字符串格式的日期时间
This commit is contained in:
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.UUID;
|
||||
|
||||
@Service
|
||||
@@ -21,7 +22,8 @@ public class RegistrationCodeServiceImpl extends ServiceImpl<RegistrationCodeMap
|
||||
String code = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 16);
|
||||
registrationCode.setCode(code);
|
||||
registrationCode.setCreatedBy(creator);
|
||||
registrationCode.setExpiryTime(LocalDateTime.now().plusDays(1));
|
||||
registrationCode.setCreatedAt(LocalDateTime.now().toString());
|
||||
registrationCode.setExpiryTime(LocalDateTime.now().plusDays(1).toString());
|
||||
save(registrationCode);
|
||||
return code;
|
||||
}
|
||||
@@ -37,7 +39,8 @@ public class RegistrationCodeServiceImpl extends ServiceImpl<RegistrationCodeMap
|
||||
return false;
|
||||
}
|
||||
|
||||
if (registrationCode.getExpiryTime().isBefore(LocalDateTime.now())) {
|
||||
LocalDateTime expiryTime = LocalDateTime.parse(registrationCode.getExpiryTime());
|
||||
if (expiryTime.isBefore(LocalDateTime.now())) {
|
||||
remove(queryWrapper); // 注册码过期,删除
|
||||
return false;
|
||||
}
|
||||
@@ -50,6 +53,6 @@ public class RegistrationCodeServiceImpl extends ServiceImpl<RegistrationCodeMap
|
||||
@Override
|
||||
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
|
||||
public void deleteExpiredCodes() {
|
||||
remove(new QueryWrapper<RegistrationCode>().lt("expiry_time", LocalDateTime.now()));
|
||||
remove(new QueryWrapper<RegistrationCode>().lt("expiry_time", LocalDateTime.now().toString()));
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.test.bijihoudaun.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.test.bijihoudaun.common.exception.RegistrationException;
|
||||
import com.test.bijihoudaun.entity.User;
|
||||
import com.test.bijihoudaun.mapper.UserMapper;
|
||||
import com.test.bijihoudaun.service.UserService;
|
||||
@@ -40,18 +41,18 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(User::getUsername, username);
|
||||
if (this.count(queryWrapper) > 0) {
|
||||
return null;
|
||||
throw new RegistrationException("用户名已存在");
|
||||
}
|
||||
queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(User::getEmail, email);
|
||||
if (this.count(queryWrapper) > 0) {
|
||||
return null;
|
||||
throw new RegistrationException("电子邮箱已被注册");
|
||||
}
|
||||
User user = new User();
|
||||
user.setUsername(username);
|
||||
user.setPassword(encrypt);
|
||||
user.setEmail(email);
|
||||
user.setCreatedAt(new Date());
|
||||
// user.setCreatedAt(new Date()); // Let the database handle the default value
|
||||
userMapper.insert(user);
|
||||
return user;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user