2024-03-27 11:12:20 +08:00
|
|
|
|
package com.sky.service.impl;
|
|
|
|
|
|
2024-03-29 16:08:30 +08:00
|
|
|
|
import com.github.pagehelper.Page;
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
import com.sky.constant.MessageConstant;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
import com.sky.constant.PasswordConstant;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
import com.sky.constant.StatusConstant;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
import com.sky.context.BaseContext;
|
|
|
|
|
import com.sky.dto.EmployeeDTO;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
import com.sky.dto.EmployeeLoginDTO;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
import com.sky.dto.EmployeePageQueryDTO;
|
2024-03-29 16:25:24 +08:00
|
|
|
|
import com.sky.dto.StartOrStopDTO;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
import com.sky.entity.Employee;
|
|
|
|
|
import com.sky.exception.AccountLockedException;
|
|
|
|
|
import com.sky.exception.AccountNotFoundException;
|
|
|
|
|
import com.sky.exception.PasswordErrorException;
|
|
|
|
|
import com.sky.mapper.EmployeeMapper;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
import com.sky.result.PageResult;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
import com.sky.service.EmployeeService;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
import org.springframework.beans.BeanUtils;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
import org.springframework.stereotype.Service;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.List;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
public class EmployeeServiceImpl implements EmployeeService {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private EmployeeMapper employeeMapper;
|
2024-03-29 16:08:30 +08:00
|
|
|
|
@Autowired
|
|
|
|
|
private BCryptPasswordEncoder bCryptPasswordEncoder;
|
2024-03-27 11:12:20 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 员工登录
|
|
|
|
|
*
|
|
|
|
|
* @param employeeLoginDTO
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public Employee login(EmployeeLoginDTO employeeLoginDTO) {
|
|
|
|
|
String username = employeeLoginDTO.getUsername();
|
|
|
|
|
String password = employeeLoginDTO.getPassword();
|
|
|
|
|
|
|
|
|
|
//1、根据用户名查询数据库中的数据
|
|
|
|
|
Employee employee = employeeMapper.getByUsername(username);
|
|
|
|
|
|
|
|
|
|
//2、处理各种异常情况(用户名不存在、密码不对、账号被锁定)
|
|
|
|
|
if (employee == null) {
|
|
|
|
|
//账号不存在
|
|
|
|
|
throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//密码比对
|
|
|
|
|
// TODO 后期需要进行md5加密,然后再进行比对
|
2024-03-29 16:08:30 +08:00
|
|
|
|
if (!bCryptPasswordEncoder.matches(password,employee.getPassword())) {
|
2024-03-27 11:12:20 +08:00
|
|
|
|
//密码错误
|
|
|
|
|
throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (employee.getStatus() == StatusConstant.DISABLE) {
|
|
|
|
|
//账号被锁定
|
|
|
|
|
throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//3、返回实体对象
|
|
|
|
|
return employee;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-29 16:08:30 +08:00
|
|
|
|
@Override
|
|
|
|
|
public void save(EmployeeDTO employeeDTO) {
|
|
|
|
|
Employee employee = new Employee();
|
|
|
|
|
//对象属性拷贝
|
|
|
|
|
BeanUtils.copyProperties(employeeDTO, employee);
|
|
|
|
|
employee.setCreateTime(LocalDateTime.now());
|
|
|
|
|
employee.setUpdateTime(LocalDateTime.now());
|
|
|
|
|
employee.setUpdateUser(BaseContext.getCurrentId());
|
|
|
|
|
employee.setCreateUser(BaseContext.getCurrentId());
|
|
|
|
|
String encodedPassword=bCryptPasswordEncoder.encode(PasswordConstant.DEFAULT_PASSWORD);
|
|
|
|
|
employee.setPassword(encodedPassword);
|
|
|
|
|
employee.setStatus(StatusConstant.ENABLE);
|
|
|
|
|
employeeMapper.save(employee);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
|
|
|
|
|
PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
|
|
|
|
|
List<Employee> employeeList=employeeMapper.list(employeePageQueryDTO);
|
|
|
|
|
Page<Employee> p= (Page<Employee>) employeeList;
|
|
|
|
|
PageResult pageResult=new PageResult(p.getTotal(),p.getResult());
|
|
|
|
|
return pageResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void startOrStop(StartOrStopDTO startOrStopDTO) {
|
|
|
|
|
employeeMapper.startOrStop(startOrStopDTO);
|
|
|
|
|
}
|
2024-03-27 11:12:20 +08:00
|
|
|
|
}
|