155 lines
4.5 KiB
Java
155 lines
4.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.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.stereotype.Service;
|
||
import org.springframework.util.DigestUtils;
|
||
|
||
import java.time.LocalDateTime;
|
||
import java.util.List;
|
||
|
||
@Service
|
||
public class EmployeeServiceImpl implements EmployeeService {
|
||
|
||
@Autowired
|
||
private EmployeeMapper employeeMapper;
|
||
|
||
/**
|
||
* 员工登录
|
||
*
|
||
* @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);
|
||
}
|
||
|
||
//密码比对
|
||
//进行md5加密,然后再进行比对
|
||
password = DigestUtils.md5DigestAsHex(password.getBytes());
|
||
if (!password.equals(employee.getPassword())) {
|
||
//密码错误
|
||
throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
|
||
}
|
||
|
||
if (employee.getStatus() == StatusConstant.DISABLE) {
|
||
//账号被锁定
|
||
throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);
|
||
}
|
||
|
||
//3、返回实体对象
|
||
return employee;
|
||
}
|
||
|
||
/**
|
||
* 新增员工
|
||
* @param employeeDTO
|
||
*/
|
||
@Override
|
||
public void save(EmployeeDTO employeeDTO) {
|
||
Employee employee = new Employee();
|
||
|
||
//拷贝属性
|
||
BeanUtils.copyProperties(employeeDTO, employee);
|
||
|
||
//设置属性
|
||
employee.setStatus(StatusConstant.ENABLE);
|
||
employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));
|
||
employee.setCreateTime(LocalDateTime.now());
|
||
employee.setUpdateTime(LocalDateTime.now());
|
||
|
||
// 设置为当前登录用户的ID
|
||
employee.setCreateUser(BaseContext.getCurrentId());
|
||
employee.setUpdateUser(BaseContext.getCurrentId());
|
||
BaseContext.removeCurrentId();
|
||
|
||
employeeMapper.insert(employee);
|
||
}
|
||
|
||
/**
|
||
* 员工分页查询
|
||
* @param employeePageQueryDTO
|
||
* @return
|
||
*/
|
||
@Override
|
||
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
|
||
//分页查询
|
||
PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
|
||
|
||
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
|
||
|
||
long total = page.getTotal();
|
||
List<Employee> records = page.getResult();
|
||
|
||
return new PageResult(total,records);
|
||
}
|
||
|
||
/**
|
||
* 员工启用禁用
|
||
* @param status
|
||
* @param id
|
||
*/
|
||
@Override
|
||
public void startOrStop(Integer status, Long id) {
|
||
Employee employee = Employee.builder()
|
||
.id(id)
|
||
.status(status)
|
||
.build();
|
||
employeeMapper.update(employee);
|
||
}
|
||
|
||
/**
|
||
* 根据id查询员工
|
||
* @param id
|
||
* @return
|
||
*/
|
||
@Override
|
||
public Employee getById(Long id) {
|
||
Employee employee = employeeMapper.getById(id);
|
||
employee.setPassword("****");
|
||
return employee;
|
||
}
|
||
|
||
/**
|
||
* 编辑员工信息
|
||
* @param employeeDTO
|
||
*/
|
||
@Override
|
||
public void update(EmployeeDTO employeeDTO) {
|
||
Employee employee = new Employee();
|
||
BeanUtils.copyProperties(employeeDTO, employee);
|
||
|
||
employee.setUpdateTime(LocalDateTime.now());
|
||
employee.setUpdateUser(BaseContext.getCurrentId());
|
||
|
||
BaseContext.removeCurrentId();
|
||
employeeMapper.update(employee);
|
||
}
|
||
|
||
}
|