| | |
| | | private static final Pattern PASSWORD_PATTERN = Pattern.compile("^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d@$!%*?&]{6,}$"); |
| | | |
| | | /** |
| | | * 辅助方法:将Employee转换为EmployeeResponse |
| | | */ |
| | | private EmployeeResponse convertToResponse(Employee employee) { |
| | | Optional<User> userOpt = userService.findById(employee.getUserId()); |
| | | if (userOpt.isPresent()) { |
| | | User user = userOpt.get(); |
| | | return new EmployeeResponse(employee, user); |
| | | } else { |
| | | throw new BusinessException("USER_NOT_FOUND", "员工对应的用户不存在,员工ID: " + employee.getId()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取所有员工列表 |
| | | */ |
| | | public List<EmployeeResponse> findAllEmployees() { |
| | | List<Employee> employees = employeeRepository.findAll(); |
| | | return employees.stream() |
| | | .map(EmployeeResponse::new) |
| | | .map(this::convertToResponse) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | |
| | | public Page<EmployeeResponse> findEmployees(String name, int page, int size) { |
| | | Pageable pageable = PageRequest.of(page, size); |
| | | Page<Employee> employeePage = employeeRepository.findByNameContainingOrderByCreateTimeDesc(name, pageable); |
| | | return employeePage.map(EmployeeResponse::new); |
| | | return employeePage.map(this::convertToResponse); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | List<Employee> employees = employeeRepository.findByNameContaining(name.trim()); |
| | | return employees.stream() |
| | | .map(EmployeeResponse::new) |
| | | .map(this::convertToResponse) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | |
| | | public EmployeeResponse findById(Long id) { |
| | | Optional<Employee> employee = employeeRepository.findById(id); |
| | | if (employee.isPresent()) { |
| | | return new EmployeeResponse(employee.get()); |
| | | Employee emp = employee.get(); |
| | | Optional<User> userOpt = userService.findById(emp.getUserId()); |
| | | if (userOpt.isPresent()) { |
| | | User user = userOpt.get(); |
| | | return new EmployeeResponse(emp, user); |
| | | } else { |
| | | throw new BusinessException("USER_NOT_FOUND", "员工对应的用户不存在,员工ID: " + id); |
| | | } |
| | | } |
| | | throw new BusinessException("EMPLOYEE_NOT_FOUND", "员工不存在"); |
| | | } |
| | |
| | | employee = employeeRepository.findById(input.getId()) |
| | | .orElseThrow(() -> new BusinessException("EMPLOYEE_NOT_FOUND", "员工不存在")); |
| | | |
| | | // 检查手机号是否被其他员工使用 |
| | | if (employeeRepository.existsByPhoneAndIdNot(input.getPhone(), input.getId())) { |
| | | throw new BusinessException("PHONE_ALREADY_EXISTS", "手机号已被其他员工使用"); |
| | | // 检查用户ID是否被其他员工使用(排除当前员工) |
| | | Optional<Employee> existingEmployee = employeeRepository.findByUserId(user.getId()); |
| | | if (existingEmployee.isPresent() && !existingEmployee.get().getId().equals(input.getId())) { |
| | | throw new BusinessException("PHONE_ALREADY_EXISTS", "该手机号已被其他员工使用"); |
| | | } |
| | | } else { |
| | | // 新增员工 |
| | | if (employeeRepository.existsByPhone(input.getPhone())) { |
| | | throw new BusinessException("PHONE_ALREADY_EXISTS", "手机号已存在"); |
| | | // 新增员工 - 检查该用户是否已经是员工 |
| | | Optional<Employee> existingEmployee = employeeRepository.findByUserId(user.getId()); |
| | | if (existingEmployee.isPresent()) { |
| | | throw new BusinessException("PHONE_ALREADY_EXISTS", "该手机号已被其他员工使用"); |
| | | } |
| | | employee = new Employee(); |
| | | } |
| | | |
| | | // 设置基本信息 |
| | | employee.setName(input.getName()); |
| | | employee.setPhone(input.getPhone()); |
| | | // 不再设置phone字段,保持为null |
| | | employee.setPhone(null); |
| | | employee.setRoleId(input.getRoleId()); |
| | | employee.setDescription(input.getDescription()); |
| | | employee.setUserId(user.getId()); // 设置关联的用户ID |
| | |
| | | Employee savedEmployee = employeeRepository.save(employee); |
| | | logger.info("员工保存成功: {}", savedEmployee.getName()); |
| | | |
| | | return new EmployeeResponse(savedEmployee); |
| | | return new EmployeeResponse(savedEmployee, user); |
| | | } |
| | | |
| | | /** |