Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
87103eefb3 |
27
pom.xml
27
pom.xml
@ -57,21 +57,20 @@
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.liquibase</groupId>
|
||||
<artifactId>liquibase-core</artifactId>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-boot-starter</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-boot-starter</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>2.3.0.RELEASE</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -74,11 +74,9 @@ public class EmployeeController {
|
||||
@PatchMapping("/{login}/open")
|
||||
public ResponseEntity<String> openDoor(@PathVariable String login, @RequestBody Long code) {
|
||||
Optional<Employee> employee = employeeService.findByLogin(login);
|
||||
|
||||
if (employee.isPresent() && !employee.get().isBlocked() && employeeService.openDoor(login, code)) {
|
||||
if (employee.isPresent() && !employee.get().isBlocked() && employeeService.validateCode(login, code)) {
|
||||
return ResponseEntity.ok("Door opened");
|
||||
}
|
||||
|
||||
return ResponseEntity.status(403).body("Access denied");
|
||||
}
|
||||
}
|
@ -46,7 +46,7 @@ public class EmployeeServiceImpl implements EmployeeService {
|
||||
|
||||
@Override
|
||||
public boolean openDoor(String login, long code) {
|
||||
if (!validateCode(code)) { // Проверяем, есть ли код в таблице `code`
|
||||
if (!validateCode(code)) { // Проверяем код без привязки к логину
|
||||
return false; // Код неверный
|
||||
}
|
||||
|
||||
@ -54,15 +54,14 @@ public class EmployeeServiceImpl implements EmployeeService {
|
||||
if (employeeOpt.isPresent()) {
|
||||
Employee employee = employeeOpt.get();
|
||||
|
||||
// Обновляем данные входа сотрудника
|
||||
employee.setLastVisit(LocalDateTime.now()); // Фиксируем время входа
|
||||
employee.setLastEntryCode(code); // Записываем использованный код
|
||||
employee.setEntryMethod("QR"); // Фиксируем метод входа
|
||||
// Обновляем данные входа
|
||||
employee.setLastVisit(LocalDateTime.now()); // Обновляем время последнего визита
|
||||
employee.setLastEntryCode(code); // Сохраняем использованный код
|
||||
employee.setEntryMethod("QR"); // Отмечаем способ входа
|
||||
|
||||
// Сохраняем изменения
|
||||
employeeRepository.save(employee);
|
||||
|
||||
return true; // Дверь открывается
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: com.example.nto.App
|
||||
|
@ -1,13 +1,28 @@
|
||||
spring:
|
||||
|
||||
datasource:
|
||||
url: jdbc:h2:mem:testdb # Укажи нужную базу (например, PostgreSQL)
|
||||
username: sa
|
||||
password:
|
||||
driver-class-name: org.h2.Driver
|
||||
url: jdbc:h2:mem:testdb
|
||||
|
||||
liquibase:
|
||||
change-log: classpath:/db/changelog/db.changelog-1.0.xml
|
||||
h2:
|
||||
console:
|
||||
#enabled: false
|
||||
enabled: true
|
||||
|
||||
sql:
|
||||
init:
|
||||
mode:never
|
||||
jpa:
|
||||
#generate-ddl: false
|
||||
generate-ddl: true
|
||||
|
||||
hibernate:
|
||||
#ddl-auto: none
|
||||
ddl-auto: create-drop
|
||||
|
||||
# Показываем запросы
|
||||
show-sql: true
|
||||
|
||||
# Своевременный запуск data.sql
|
||||
defer-datasource-initialization: true
|
||||
|
||||
spring-doc:
|
||||
swagger-ui:
|
||||
path: /swagger-ui.html
|
||||
operationsSorter: method
|
56
src/main/resources/data.sql
Normal file
56
src/main/resources/data.sql
Normal file
@ -0,0 +1,56 @@
|
||||
-- Создание таблицы employee
|
||||
CREATE TABLE IF NOT EXISTS employee (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
login VARCHAR(255) UNIQUE NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
photo VARCHAR(255),
|
||||
position VARCHAR(255),
|
||||
last_visit TIMESTAMP,
|
||||
password VARCHAR(255) NOT NULL, -- Зашифрованный пароль
|
||||
role VARCHAR(50) NOT NULL,
|
||||
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, 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', 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 PRIMARY KEY,
|
||||
employee_id INT,
|
||||
FOREIGN KEY (employee_id) REFERENCES employee(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Вставка данных в таблицу code
|
||||
INSERT INTO code (value, employee_id) VALUES
|
||||
(1234567890123456789, 1),
|
||||
(9223372036854775807, 2),
|
||||
(1122334455667788990, 3),
|
||||
(998877665544332211, 4),
|
||||
(5566778899001122334, 1);
|
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
|
||||
|
||||
<include file="db.changelog-1.0.xml"/>
|
||||
</databaseChangeLog>
|
Loading…
x
Reference in New Issue
Block a user