feat(user): 新增用户注册、登录和删除功能
- 新增用户实体类和相关控制器、服务类 - 实现用户注册、登录和删除功能 - 添加用户token生成和验证逻辑 -优化密码存储,使用加密算法
This commit is contained in:
@@ -26,4 +26,11 @@ public interface UserService extends IService<User> {
|
||||
* @param id 用户id
|
||||
*/
|
||||
void deleteUser(Integer id);
|
||||
|
||||
/**
|
||||
* 查询用户token是否过期
|
||||
* @param id 用户id
|
||||
* @return Boolean
|
||||
*/
|
||||
Boolean isTokenExpired(Long id,String token);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package com.test.bijihoudaun.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.test.bijihoudaun.entity.User;
|
||||
import com.test.bijihoudaun.mapper.UserMapper;
|
||||
import com.test.bijihoudaun.service.UserService;
|
||||
import com.test.bijihoudaun.util.PasswordUtils;
|
||||
import com.test.bijihoudaun.util.UuidV7;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -20,6 +21,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
|
||||
@Override
|
||||
public User register(String username, String password, String email) {
|
||||
String encrypt = PasswordUtils.encrypt(password);
|
||||
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(User::getUsername, username);
|
||||
if (this.count(queryWrapper) > 0) {
|
||||
@@ -32,7 +34,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
}
|
||||
User user = new User();
|
||||
user.setUsername(username);
|
||||
user.setPassword(password);
|
||||
user.setPassword(encrypt);
|
||||
user.setEmail(email);
|
||||
user.setCreatedAt(LocalDateTime.now());
|
||||
userMapper.insert(user);
|
||||
@@ -42,13 +44,32 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
@Override
|
||||
public User login(String username, String password) {
|
||||
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(User::getUsername, username)
|
||||
.eq(User::getPassword, password);
|
||||
return userMapper.selectOne(queryWrapper);
|
||||
queryWrapper.eq(User::getUsername, username);
|
||||
User user = userMapper.selectOne(queryWrapper);
|
||||
boolean verify = PasswordUtils.verify(password, user.getPassword());
|
||||
if (!verify) {
|
||||
throw new RuntimeException("密码错误");
|
||||
}
|
||||
user.setToken(UuidV7.uuidNoHyphen());
|
||||
// 过期时间:当前时间+3天的时间
|
||||
user.setTokenEnddata(LocalDateTime.now().plusDays(3));
|
||||
userMapper.updateById(user);
|
||||
return user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteUser(Integer id) {
|
||||
userMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isTokenExpired(Long id, String token) {
|
||||
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(User::getId, id)
|
||||
.eq(User::getToken, token);
|
||||
User user = getOne(queryWrapper);
|
||||
// 新增过期检查
|
||||
return user != null && LocalDateTime.now().isBefore(user.getTokenEnddata());
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user