package com.rj.service.sys.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.UUID; /** *

* 用户表 服务实现类 *

* * @author 系统生成 * @since 2025-08-07 */ @Service public class UserServiceImpl extends ServiceImpl 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.setPhone(user.getPhone()); 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 queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getUserName, userName); return this.getOne(queryWrapper); } @Override public User getUserByToken(String token) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getToken, token); return this.getOne(queryWrapper); } @Override public User getUserInfoByToken(String token) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getToken, token); return this.getOne(queryWrapper); } }