|
0 / 0 / 1
Регистрация: 02.03.2022
Сообщений: 29
|
|
Событие в базе данных Postgresql27.03.2023, 19:27. Показов 900. Ответов 12
Задача - есть User, который покупает товар, у пользователя списываются деньги, но пользователь в течении 20 минут может отказаться, или вообще не получить услугу.
У товара есть статус который будет либо активный, либо завершенный, либо отменённый. Как бы сделать чтобы по истечению 20 мин при отсутствии действий покупателя статус переходил в состояние закрытого и пользователю возвращались деньги на счёт? Использую базу данных Postgresql
0
|
|
| 27.03.2023, 19:27 | |
|
Ответы с готовыми решениями:
12
PostgreSQL не получается подключиться к базе данных Php + postgresql поиск по базе данных Php+postgresql поиск по базе данных |
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|
| 28.03.2023, 01:36 | |
|
а причем тут база?
запускаете таску в коде и ждёте 20 минут
0
|
|
|
0 / 0 / 1
Регистрация: 02.03.2022
Сообщений: 29
|
|
| 28.03.2023, 12:18 [ТС] | |
|
Насчёт таски в коде я тоже подумал в первую очередь, но если сервер упадёт или перезагрузиться, то вся эта логика вместе с таской пропадёт и в таком случаи не будет возвращён баланс на счёт клиента.
Речь идёт про asp.net приложение, + мне нужно вернуть результат операции не через 20 мин, а сразу о том что всё окей заказ создан и детали заказа Первый раз реализую подобный функционал, спросить не у кого, поэтому прошу не судить строго.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
|
|||
| 28.03.2023, 13:20 | |||
![]() Добавлено через 4 минуты Станцевать буги-вуги, предвкушая распаковку товара? Добавлено через 5 минут efi0p, для начала продумайте внимательно статусную модель заказа.
0
|
|||
|
0 / 0 / 1
Регистрация: 02.03.2022
Сообщений: 29
|
|
| 28.03.2023, 13:33 [ТС] | |
|
В целом цепочка такая
1 - пользователь делает заказ 2 - asp приложение создаёт в базе данных заказ, списывает деньги с баланса пользователя и возвращает ответ что всё ок заказ создан, дополнительная информация по заказу. 3 - Пользователь не получает услугу и не производит никаких действий отмены. 4 - Проходит условные 20 мин, услуга считается не активной т.к. оказания услуги не произошло, не по вине пользователя. 5 - Необходимо вернуть пользователю деньги на счёт т.к. услуга не была оказана за этот промежуток времени и состояния заказа по времени уже закрыто, то есть услугой этой пользователь воспользоваться уже не сможет. Как я понимаю создать не ожидаемую таску и вернуть ответ что всё ок, это полный бред, т.к. за это время может случиться всё что угодно, упасть сервер вылететь ошибка т.д. и где хранить эти таски если вдруг сервер уйдёт в перезагрузку, в этом случае всей логике хана и деньги не вернуться на счёт пользователя. Соответственно это нужно делать в бд где будет храниться логика этих событий. Скорее всего я не правильно рассуждаю и задача решается просто, но пока я не вижу никаких решений, смотрю в сторону pg_cron Добавлено через 8 минут Буги вуги не нужно, достаточно просто либо подтвердить получение услуги или отменить её, но в случае не оказания услуги пользователь не должен орать в сервер что верните деньги и всё такое, они автоматически вернуться ему на счёт, вот такая задача.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
|
||||||||||||
| 28.03.2023, 13:47 | ||||||||||||
|
Пусть наш заказ, это не просто какой-то товар, это критичная по времени исполнения услуга, BoundedOrder, у него есть статусы:
Если пользователь каким-то образом получил услугу/сам отменил ее, то отменяете таску автоматической отмены заказа. Ну в общих чертах как-то так. Добавлено через 1 минуту Ну и условное время доставки услуги назовем DeliveryTimeout - будем брать это значение из настроек.
0
|
||||||||||||
|
Valechka-Думай о Высоком
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
|
|
| 28.03.2023, 13:49 | |
|
Пусть подтверждает перевод денег сознательно отдельной кнопкой.
А возврат через службу поддержки только.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
|
|
| 28.03.2023, 13:52 | |
|
Тут можно по-разному проектировать. Можно держать все заказы в одной таблице.
1. Можно активные в одной, отмененные в другой, выполненные в третьей, недосставленные вовремя - в четвертой. Тут EF-овский TPC очень хорошо зайдет (когда один базовый абстрактный класс, и 4 производных - под каждую таблицу). 2. А можно просто кучей держать все в одной таблице.
0
|
|
|
0 / 0 / 1
Регистрация: 02.03.2022
Сообщений: 29
|
||||||
| 28.03.2023, 14:42 [ТС] | ||||||
|
Видимо я не понял вашу мысль..
Вот чисто абстрактный пример Но это же совершено точно бред...
0
|
||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
|
|||||||
| 28.03.2023, 15:05 | |||||||
Попробуйте придумать что-нибудь свое. ЗЫ: + еще одна возможная сущность в базу - OrderProcessing - куда можно заносить информацию о результатах обработки (Cancelled, Deliviered, Exception).
0
|
|||||||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
||
| 28.03.2023, 15:14 | ||
|
который и будет хранить состояние а таска просто проверять что да как
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
|
||
| 28.03.2023, 15:23 | ||
|
0
|
||
| 28.03.2023, 15:23 | |
|
Помогаю со студенческими работами здесь
13
Подключение Python к Базе Данных PostgreSQL и ее отображение в PyQt5 Как подключиться к базе данных Postgresql на локальном сервере? Как обновить таблицы в Базе данных PostgreSQL, из полученного DataSet
Событие на изменение данных в базе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|