Коллеги, добрый день! Данным вопросом обращаюсь к вашим мыслям, видению и мнению за помощью, своих мозгов к сожалению не хватает, но, я пытался.
Ситуация следующая:
Есть сайт, который принимает разные оплаты от пользователей, у пользователя есть 2 счета это Баланс и Резерв. Любое пополнение денежных средств происходит с внешних агрегаторов типа Робокасы, Яндекс кассы. Варианты движений средств могут быть такими:
- Сделка: Пользователь у второго пользователя что-то купил, при этом средства сначала резервируются - а после завершения сделки средства двигаются от продавца покупателю(Аля маркетплейс).
- Покупка: Пользователь в личном кабинете может приобрести какие либо купоны(разные) сервиса для последующих сделок у сторонних продавцов
- Тарифная сетка: На сайте есть тарифные планы для дополнительных преимуществ при сделке, есть возможность оформить месячную подписку
Внимание! Вопрос:
Каким образом спроектировать базу данных так, что бы это был уверенный рабочий механизм, что бы удобно было расширять функционал и варианты движений средств при необходимости, и отслеживать?