Sync changes and README.md

This commit is contained in:
kashiuno 2025-03-20 21:57:19 +03:00
parent 46bf29a5eb
commit 911f971958
2 changed files with 25 additions and 6 deletions

18
README.md Normal file
View File

@ -0,0 +1,18 @@
# Приложение предоставления API и логики формирования и отправки QR-кодов
Приложение предоставляет API для получения QR-кодов для дверей по идентификатору устройства, получение слотов для дверей по идентификатору партнера.
Реализует логику формирования и отправки QR-кодов, интеграцию с платежным шлюзом методом обратного вызова и методом опроса REST метода шлюза.
## Запуск приложения
Для приложения требуется БД и конфигурация подключения к БД.
При запуске приложения будут выполнены миграции в src/main/resources/db/changelog
Также для работы приложения нужен запущеный авторизационный сервер
Для запуска приложения нужно выполнить команду
`gradle bootRun`
## Сборка приложения
`gradle jar`

View File

@ -3,14 +3,15 @@ package ru.vyatsu.qr_access_api.qr.repository
import org.springframework.jdbc.core.JdbcTemplate
import org.springframework.stereotype.Repository
import ru.vyatsu.models.QrCode
import java.time.LocalDateTime
import java.time.ZoneId
import java.util.*
private const val GET_ACTUAL_QRS_BY_UNIT_ID = """
SELECT q.start_date_time, q.end_date_time, q.door_id, q.key_code FROM qrs q
JOIN doors d ON (d.id = q.door_id)
SELECT r.start_time, r.end_time, r.date, r.door_id, r.qr_code FROM rents r
JOIN doors d ON (d.id = r.door_id)
JOIN oauth2_registered_client c ON (c.client_id = d.unit_id)
WHERE c.client_id = ? AND q.start_date_time <= CURRENT_TIMESTAMP AND q.end_date_time >= CURRENT_TIMESTAMP
WHERE c.client_id = ? AND r.start_time <= CURRENT_TIMESTAMP AND r.end_time >= CURRENT_TIMESTAMP
"""
@Repository
@ -24,10 +25,10 @@ class QrRepository(private val template: JdbcTemplate) {
stmt
}, { rs, _ ->
QrCode(
rs.getTimestamp("start_date_time").toLocalDateTime().atZone(ZoneId.systemDefault()).toOffsetDateTime(),
rs.getTimestamp("end_date_time").toLocalDateTime().atZone(ZoneId.systemDefault()).toOffsetDateTime(),
LocalDateTime.of(rs.getDate("date").toLocalDate(), rs.getTime("start_time").toLocalTime()).atZone(ZoneId.systemDefault()).toOffsetDateTime(),
LocalDateTime.of(rs.getDate("date").toLocalDate(), rs.getTime("end_time").toLocalTime()).atZone(ZoneId.systemDefault()).toOffsetDateTime(),
UUID.fromString(rs.getString("door_id")),
UUID.fromString(rs.getString("key_code"))
UUID.fromString(rs.getString("qr_code"))
)
})
}