100 lines
3.5 KiB
Java
100 lines
3.5 KiB
Java
package com.sky.service.impl;
|
||
|
||
import com.github.pagehelper.Page;
|
||
import com.github.pagehelper.PageHelper;
|
||
import com.sky.constant.MessageConstant;
|
||
import com.sky.constant.PasswordConstant;
|
||
import com.sky.constant.StatusConstant;
|
||
import com.sky.context.BaseContext;
|
||
import com.sky.dto.EmployeeDTO;
|
||
import com.sky.dto.EmployeeLoginDTO;
|
||
import com.sky.dto.EmployeePageQueryDTO;
|
||
import com.sky.dto.StartOrStopDTO;
|
||
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;
|
||
import com.sky.result.PageResult;
|
||
import com.sky.service.EmployeeService;
|
||
import org.springframework.beans.BeanUtils;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||
import org.springframework.stereotype.Service;
|
||
|
||
import java.time.LocalDateTime;
|
||
import java.util.List;
|
||
|
||
@Service
|
||
public class EmployeeServiceImpl implements EmployeeService {
|
||
|
||
@Autowired
|
||
private EmployeeMapper employeeMapper;
|
||
@Autowired
|
||
private BCryptPasswordEncoder bCryptPasswordEncoder;
|
||
|
||
/**
|
||
* 员工登录
|
||
*
|
||
* @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加密,然后再进行比对
|
||
if (!bCryptPasswordEncoder.matches(password,employee.getPassword())) {
|
||
//密码错误
|
||
throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
|
||
}
|
||
|
||
if (employee.getStatus() == StatusConstant.DISABLE) {
|
||
//账号被锁定
|
||
throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);
|
||
}
|
||
|
||
//3、返回实体对象
|
||
return employee;
|
||
}
|
||
|
||
@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);
|
||
}
|
||
}
|