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()); employeeMapper.insert(employee); } /** * 员工分页查询 * @param employeePageQueryDTO * @return */ @Override public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) { //分页查询 PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize()); Page page = employeeMapper.pageQuery(employeePageQueryDTO); long total = page.getTotal(); List 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()); employeeMapper.update(employee); } }