修改登录逻辑,配合前后端联调

This commit is contained in:
spllzh
2025-08-11 19:31:54 +08:00
parent 2ab6f0c7d8
commit 895d6662d8
25 changed files with 208 additions and 22 deletions

View File

@@ -14,3 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface IMenuService extends IService<Menu> {
}

View File

@@ -14,3 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface IRoleService extends IService<Role> {
}

View File

@@ -14,3 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface IUserRoleService extends IService<UserRole> {
}

View File

@@ -1,6 +1,8 @@
package com.rj.service.sys;
import com.rj.entity.sys.User;
import com.rj.pojo.sys.LoginRequest;
import com.rj.pojo.sys.LoginResponse;
import com.baomidou.mybatisplus.extension.service.IService;
/**
@@ -13,4 +15,32 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IUserService extends IService<User> {
/**
* 用户登录
*
* @param loginRequest 登录请求
* @return 登录响应
*/
LoginResponse login(LoginRequest loginRequest);
/**
* 根据用户名查询用户
*
* @param userName 用户名
* @return 用户信息
*/
User getUserByUserName(String userName);
/**
* 根据token查询用户
*
* @param token 用户token
* @return 用户信息
*/
User getUserByToken(String token);
/**
* 通过token查询用户信息
*/
User getUserInfoByToken(String token);
}

View File

@@ -18,3 +18,6 @@ import org.springframework.stereotype.Service;
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {
}

View File

@@ -18,3 +18,6 @@ import org.springframework.stereotype.Service;
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
}

View File

@@ -18,3 +18,6 @@ import org.springframework.stereotype.Service;
public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements IUserRoleService {
}

View File

@@ -1,11 +1,22 @@
package com.rj.service.sys.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rj.common.PasswordUtil;
import com.rj.entity.sys.User;
import com.rj.mapper.sys.UserMapper;
import com.rj.pojo.sys.LoginRequest;
import com.rj.pojo.sys.LoginResponse;
import com.rj.service.sys.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* <p>
* 用户表 服务实现类
@@ -17,4 +28,58 @@ import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
@Override
public LoginResponse login(LoginRequest loginRequest) {
// 根据用户名查询用户
User user = getUserByUserName(loginRequest.getUserName());
if (user == null) {
throw new RuntimeException("用户不存在");
}
// 验证密码
if (!PasswordUtil.verifyPassword(loginRequest.getPassword(), user.getPassword())) {
throw new RuntimeException("密码错误");
}
// 生成token
String token = UUID.randomUUID().toString().replace("-", "");
// 更新用户的token
user.setToken(token);
this.updateById(user);
// 构建登录响应
LoginResponse loginResponse = new LoginResponse();
loginResponse.setUserId(user.getUserId());
loginResponse.setUserName(user.getUserName());
loginResponse.setEmail(user.getEmail());
loginResponse.setAvatar(user.getAvatar());
loginResponse.setToken(token);
loginResponse.setLoginTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
return loginResponse;
}
@Override
public User getUserByUserName(String userName) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getUserName, userName);
return this.getOne(queryWrapper);
}
@Override
public User getUserByToken(String token) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getToken, token);
return this.getOne(queryWrapper);
}
@Override
public User getUserInfoByToken(String token) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getToken, token);
return this.getOne(queryWrapper);
}
}