Проблема: Рассмотрим банк, который выдает счета своим пользователям с несколькими балансами с истечением срока действия, т.е. сумма, зачисленная на ваш счет сегодня, истекает ровно через шесть месяцев.Допустим, вы получили 500 $ сегодня (2 июня 2018 года), этот баланс истекает (2 декабря 2018 года).Теперь рассмотрим следующую таблицу балансов клиента.
id balance createdAt expiry
001 100 4th November 2017 4th May 2018
002 200 2nd January 2018 2nd July 2018
003 100 10th Feb 2018 10th August 2018
Если пользователь хочет потратить 250 на какой-либо продукт сегодня (2 июня 2018 года), эти 250 единиц следует вычесть шаг за шагом из всех доступных неистекших.сальдо и просроченные строки должны быть очищены.
Поэтому таблица сальдо после покупки должна быть
id balance createdAt expiry
003 50 10th Feb 2018 10th August 2018
решение, которое у меня есть
- получить все строки пользовательских балансов по возрастанию срока действия
- удалить все строки с истекшим сроком действия
- перебрать другие строки
- если тратить - балансв строке> 0 затем удалите строку и выполните расходы = остаток-расход в строке.
- если расходы - баланс в строке <= 0, то обновите строку набора баланса = баланс-расход </li>
что я ожидаю Может ли вышеуказанное решение быть реализовано более умным способом.
Заранее спасибо