优化验证码注册逻辑

This commit is contained in:
2025-08-05 16:20:51 +08:00
parent 69700c8fe1
commit 7bc94795e5
5 changed files with 117 additions and 37 deletions

View File

@@ -2,6 +2,7 @@ package com.onekeycall.videotablet.service;
import com.onekeycall.videotablet.entity.User;
import com.onekeycall.videotablet.repository.UserRepository;
import com.onekeycall.videotablet.utils.SecureIdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.core.userdetails.UserDetails;
@@ -27,19 +28,19 @@ public class UserService implements UserDetailsService {
this.redisTemplate = redisTemplate;
}
public User registerUser(String username, String password) {
if (userRepository.existsByUsername(username)) {
public User registerUser(String userId, String password) {
if (userRepository.existsByUserId(userId)) {
throw new RuntimeException("Username already exists");
}
User user = new User();
user.setUsername(username);
user.setUsername(userId);
user.setPassword(passwordEncoder.encode(password));
return userRepository.save(user);
}
public User registerByPhone(String phone, String code, Date createTime) {
public User registerByPhone(String phone, String code, String deviceId, Date createTime) {
// 1. 验证验证码
Map<String, Object> codeMap = (Map<String, Object>) redisTemplate.opsForValue().get(phone);
if (codeMap == null || !code.equals(codeMap.get("code").toString())) {
@@ -55,7 +56,11 @@ public class UserService implements UserDetailsService {
User user = new User();
user.setPhone(phone);
user.setCreatTime(createTime);
user.setLastLoginTime(createTime);
user.setUpdateTime(createTime);
user.setUserId(SecureIdGenerator.generateSecureId(12));
user.setUsername(SecureIdGenerator.generateSecureUserName(8));
user.setDeviceId(deviceId);
return userRepository.save(user);
}
@@ -72,8 +77,8 @@ public class UserService implements UserDetailsService {
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return userRepository.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found with username: " + username));
public UserDetails loadUserByUsername(String userId) throws UsernameNotFoundException {
return userRepository.findByUserId(userId)
.orElseThrow(() -> new UsernameNotFoundException("User not found with userId: " + userId));
}
}