50 lines
1.6 KiB
Java
50 lines
1.6 KiB
Java
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<SysUserMapper, SysUser>
|
||
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.<SysUser>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());
|
||
}
|
||
|
||
}
|