package com.bruce.sams.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bruce.sams.Entity.SysUser; import com.bruce.sams.Exception.User.IncorrectPasswordException; import com.bruce.sams.Exception.User.UserNotFoundException; import com.bruce.sams.Utils.PasswordEncoder; import com.bruce.sams.Utils.TokenUtil; import com.bruce.sams.mapper.SysUserMapper; import com.bruce.sams.service.SysLoginService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @Service public class SysLoginServiceImpl extends ServiceImpl implements SysLoginService { @Resource private PasswordEncoder passwordEncoder; /** * 用户登录验证 * @param schoolId 学号 * @param password 原始密码 * @return 如果登录成功返回用户信息和Token,否则返回null */ @Override public String login(String schoolId, String password) { // 查找用户 SysUser user = this.getOne(Wrappers.lambdaQuery().eq(SysUser::getSchoolId, schoolId)); //如果用户不存在,抛出用户未找到异常 if (user == null) { throw new UserNotFoundException("用户不存在"); } // 检查密码是否正确 if (!passwordEncoder.matches(password, user.getPasswd())) { throw new IncorrectPasswordException("密码错误"); } // 登录成功,生成Token // 返回Token return TokenUtil.generateToken(user.getUserId().toString()); } }