feat(user): 新增用户注册、登录和删除功能

- 新增用户实体类和相关控制器、服务类
- 实现用户注册、登录和删除功能
- 添加用户token生成和验证逻辑
-优化密码存储,使用加密算法
This commit is contained in:
ikmkj
2025-06-16 20:55:08 +08:00
parent 355ba0bad9
commit 3eb2edbe85
12 changed files with 250 additions and 15 deletions

View File

@@ -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);
}

View File

@@ -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());
}
}