package com.example.service.impl;
|
|
import com.example.dto.LoginRequest;
|
import com.example.dto.LoginResponse;
|
import com.example.entity.Department;
|
import com.example.entity.User;
|
import com.example.mapper.DepartmentMapper;
|
import com.example.security.JwtTokenUtil;
|
import com.example.security.UserContext;
|
import com.example.service.AuthService;
|
import com.example.service.UserService;
|
import com.example.utils.Md5Util;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
@Service
|
public class AuthServiceImpl implements AuthService {
|
|
@Autowired
|
private UserService userService;
|
|
@Autowired
|
private DepartmentMapper departmentMapper;
|
|
@Autowired
|
private JwtTokenUtil jwtTokenUtil;
|
|
@Override
|
public LoginResponse login(LoginRequest request) {
|
User user = userService.lambdaQuery()
|
.eq(User::getUsername, request.getUsername())
|
.eq(User::getStatus, 1)
|
.one();
|
|
if (user == null) {
|
throw new RuntimeException("用户不存在或已禁用");
|
}
|
|
String encryptedPassword = Md5Util.encrypt(request.getPassword());
|
if (!user.getPassword().equals(encryptedPassword)) {
|
throw new RuntimeException("密码错误");
|
}
|
|
String token = jwtTokenUtil.generateToken(user.getId(), user.getUsername(), user.getDeptCode());
|
|
String deptName = null;
|
if (user.getDeptCode() != null) {
|
Department dept = departmentMapper.selectByDeptCode(user.getDeptCode());
|
if (dept != null) {
|
deptName = dept.getDeptName();
|
}
|
}
|
|
return new LoginResponse(token, user.getId(), user.getUsername(), user.getRealName(), user.getDeptCode(), deptName);
|
}
|
|
@Override
|
public String getCurrentUserDeptCode() {
|
return UserContext.getCurrentDeptCode();
|
}
|
|
@Override
|
public Long getCurrentUserId() {
|
return UserContext.getCurrentUserId();
|
}
|
}
|