SAMS/src/main/java/com/bruce/sams/service/impl/SysLoginServiceImpl.java

50 lines
1.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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