added new sql open doesnot work

This commit is contained in:
truettwo 2025-02-20 12:54:43 +03:00
parent 659b0daf5e
commit a72000f7eb
4 changed files with 83 additions and 13 deletions

View File

@ -39,4 +39,24 @@ public class Employee {
public boolean isBlocked() {
return "blocked".equals(status);
}
}
// Время последнего визита
@Column(name = "last_entry_code")
private Long lastEntryCode; // Последний использованный код
@Column(name = "entry_method")
private String entryMethod; // Метод входа (QR, карта и т.д.)
public LocalDateTime getLastVisit() { return lastVisit; }
public void setLastVisit(LocalDateTime lastVisit) { this.lastVisit = lastVisit; }
public Long getLastEntryCode() { return lastEntryCode; }
public void setLastEntryCode(Long lastEntryCode) { this.lastEntryCode = lastEntryCode; }
public String getEntryMethod() { return entryMethod; }
public void setEntryMethod(String entryMethod) { this.entryMethod = entryMethod; }
}

View File

@ -9,6 +9,11 @@ public interface EmployeeService {
List<Employee> findAll();
Optional<Employee> findByLogin(String login);
boolean validateCode(String login, long code);
boolean validateCode(long code);
boolean openDoor(String login, long code);
boolean authenticate(String login, String rawPassword);
void toggleBlockStatus(String login);
}

View File

@ -7,6 +7,7 @@ import com.example.nto.service.EmployeeService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
@ -35,14 +36,34 @@ public class EmployeeServiceImpl implements EmployeeService {
@Override
public boolean validateCode(String login, long code) {
return false;
}
@Override
public boolean validateCode(long code) {
return codeRepository.existsByValue(code);
}
boolean exists = codeRepository.existsByValue(code);
@Override
public boolean openDoor(String login, long code) {
if (!validateCode(code)) { // Проверяем код без привязки к логину
return false; // Код неверный
}
// (можно удалить в продакшене)
System.out.println("Checking code: " + code + " | Exists: " + exists);
Optional<Employee> employeeOpt = findByLogin(login);
if (employeeOpt.isPresent()) {
Employee employee = employeeOpt.get();
return exists;
// Обновляем данные входа
employee.setLastVisit(LocalDateTime.now()); // Обновляем время последнего визита
employee.setLastEntryCode(code); // Сохраняем использованный код
employee.setEntryMethod("QR"); // Отмечаем способ входа
// Сохраняем изменения
employeeRepository.save(employee);
return true;
}
return false;
}
@ -62,4 +83,6 @@ public class EmployeeServiceImpl implements EmployeeService {
employeeRepository.save(emp);
});
}
}

View File

@ -8,21 +8,43 @@ CREATE TABLE IF NOT EXISTS employee (
last_visit TIMESTAMP,
password VARCHAR(255) NOT NULL, -- Зашифрованный пароль
role VARCHAR(50) NOT NULL,
status VARCHAR(20) DEFAULT 'works' -- Новый статус
status VARCHAR(20) DEFAULT 'works', -- Новый статус
last_entry_code BIGINT, -- Код последнего входа
entry_method VARCHAR(50) -- Метод входа (например, QR)
);
-- Вставка данных в таблицу employee
INSERT INTO employee (id, login, name, photo, position, last_visit, password, role, status)
INSERT INTO employee (id, login, name, photo, position, last_visit, password, role, status, last_entry_code, entry_method)
VALUES
(1, 'pivanov', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30', '$2a$10$LRykcZHYR0tb72biv9aqp./icK7ReK57gRFDd74kiF02ZoZqQtnEm', 'ADMIN','works'),
(2, 'ipetrov', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', '$2a$10$rscyLIftEqucmDbSzBHZbO5DUOyICzkYXzQ4stJfbSN.Ao9R4kfQe', 'USER', 'works'),
(3, 'asemenov', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', '$2a$10$o/g9lV7iDi.WhwztohTcfuIEhHHWUo5xlR0Vvdy2xaaI3RNwfbqzO', 'USER', 'works'),
(4, 'afedorov', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', '$2a$10$s33LR8PuMLQJQY85.zusceJVJLUn8mwEEwAsAUzQIaiwnjeKjt.km', 'USER', 'works');
(1, 'pivanov', 'Иванов Петр Федорович',
'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg',
'Разработчик', '2024-02-12T08:30',
'$2a$10$LRykcZHYR0tb72biv9aqp./icK7ReK57gRFDd74kiF02ZoZqQtnEm',
'ADMIN', 'works', 1234567890123456789, 'QR'),
(2, 'ipetrov', 'Петров Иван Константинович',
'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg',
'Аналитик', '2024-02-13T08:35',
'$2a$10$rscyLIftEqucmDbSzBHZbO5DUOyICzkYXzQ4stJfbSN.Ao9R4kfQe',
'USER', 'works', NULL, NULL),
(3, 'asemenov', 'Семенов Анатолий Анатольевич',
'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg',
'Разработчик', '2024-02-13T08:31',
'$2a$10$o/g9lV7iDi.WhwztohTcfuIEhHHWUo5xlR0Vvdy2xaaI3RNwfbqzO',
'USER', 'works', NULL, NULL),
(4, 'afedorov', 'Федоров Александр Сергеевич',
'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg',
'Тестировщик', '2024-02-12T08:36',
'$2a$10$s33LR8PuMLQJQY85.zusceJVJLUn8mwEEwAsAUzQIaiwnjeKjt.km',
'USER', 'works', NULL, NULL);
-- Создание таблицы code
CREATE TABLE IF NOT EXISTS code (
value BIGINT,
employee_id INT
value BIGINT PRIMARY KEY,
employee_id INT,
FOREIGN KEY (employee_id) REFERENCES employee(id) ON DELETE CASCADE
);
-- Вставка данных в таблицу code