added new sql open doesnot work
This commit is contained in:
parent
659b0daf5e
commit
a72000f7eb
@ -39,4 +39,24 @@ public class Employee {
|
|||||||
public boolean isBlocked() {
|
public boolean isBlocked() {
|
||||||
return "blocked".equals(status);
|
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; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,6 +9,11 @@ public interface EmployeeService {
|
|||||||
List<Employee> findAll();
|
List<Employee> findAll();
|
||||||
Optional<Employee> findByLogin(String login);
|
Optional<Employee> findByLogin(String login);
|
||||||
boolean validateCode(String login, long code);
|
boolean validateCode(String login, long code);
|
||||||
|
|
||||||
|
boolean validateCode(long code);
|
||||||
|
|
||||||
|
boolean openDoor(String login, long code);
|
||||||
|
|
||||||
boolean authenticate(String login, String rawPassword);
|
boolean authenticate(String login, String rawPassword);
|
||||||
void toggleBlockStatus(String login);
|
void toggleBlockStatus(String login);
|
||||||
}
|
}
|
@ -7,6 +7,7 @@ import com.example.nto.service.EmployeeService;
|
|||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@ -35,14 +36,34 @@ public class EmployeeServiceImpl implements EmployeeService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validateCode(String login, long code) {
|
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; // Код неверный
|
||||||
|
}
|
||||||
|
|
||||||
// (можно удалить в продакшене)
|
Optional<Employee> employeeOpt = findByLogin(login);
|
||||||
System.out.println("Checking code: " + code + " | Exists: " + exists);
|
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);
|
employeeRepository.save(emp);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -8,21 +8,43 @@ CREATE TABLE IF NOT EXISTS employee (
|
|||||||
last_visit TIMESTAMP,
|
last_visit TIMESTAMP,
|
||||||
password VARCHAR(255) NOT NULL, -- Зашифрованный пароль
|
password VARCHAR(255) NOT NULL, -- Зашифрованный пароль
|
||||||
role VARCHAR(50) 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
|
-- Вставка данных в таблицу 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
|
VALUES
|
||||||
(1, 'pivanov', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30', '$2a$10$LRykcZHYR0tb72biv9aqp./icK7ReK57gRFDd74kiF02ZoZqQtnEm', 'ADMIN','works'),
|
(1, 'pivanov', 'Иванов Петр Федорович',
|
||||||
(2, 'ipetrov', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', '$2a$10$rscyLIftEqucmDbSzBHZbO5DUOyICzkYXzQ4stJfbSN.Ao9R4kfQe', 'USER', 'works'),
|
'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg',
|
||||||
(3, 'asemenov', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', '$2a$10$o/g9lV7iDi.WhwztohTcfuIEhHHWUo5xlR0Vvdy2xaaI3RNwfbqzO', 'USER', 'works'),
|
'Разработчик', '2024-02-12T08:30',
|
||||||
(4, 'afedorov', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', '$2a$10$s33LR8PuMLQJQY85.zusceJVJLUn8mwEEwAsAUzQIaiwnjeKjt.km', 'USER', 'works');
|
'$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
|
-- Создание таблицы code
|
||||||
CREATE TABLE IF NOT EXISTS code (
|
CREATE TABLE IF NOT EXISTS code (
|
||||||
value BIGINT,
|
value BIGINT PRIMARY KEY,
|
||||||
employee_id INT
|
employee_id INT,
|
||||||
|
FOREIGN KEY (employee_id) REFERENCES employee(id) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Вставка данных в таблицу code
|
-- Вставка данных в таблицу code
|
||||||
|
Loading…
x
Reference in New Issue
Block a user