100 lines
3.5 KiB
Java
Raw Normal View History

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
}