Как вычесть баланс клиента, когда одновременно подключено более одного звонка - PullRequest
1 голос
/ 14 декабря 2011

мы разрешаем ему звонить, основываясь на его текущем балансе, звонок назначен на 10 минут, следующий звонок поступает, он также запланирован на 10 минут, потому что баланс клиента не был обновлен, так как его первый звонок все еще в процессе мы обновляем баланс только когда звонок отключен. таким образом, баланс будет отрицательным. но есть ли решение этой проблемы, чтобы баланс не стал отрицательным?

1 Ответ

2 голосов
/ 14 декабря 2011

Банки решают эту проблему путем «удержания» средств и отслеживания двух отдельных балансов: текущего баланса (все деньги на счете) и доступного баланса (который является текущим балансом за вычетом суммы всех«держит» все неоплаченные средства).

Допустим, у вас есть баланс в 10 долларов, а стоимость звонков - 1 доллар в минуту.

Идея состоит в том, что ваш первый 10-минутный звонок не будетна самом деле вычесть средства до того, как это будет сделано, но там будет сказано: «Эй, мне понадобится 10 долларов из текущего баланса».Деньги, как вы сказали, на самом деле забираются только тогда, когда вызов отключен.

Однако, поскольку «удержание» этих 10 долларов уже установлено, когда второй вызов настроен, он проверяет баланси говорит: «Эй, мне понадобятся 10 долларов», но алгоритм возьмет общее сальдо (10 долларов) и вычтет сумму всех «удерживающих» сумм (10 долларов) и вернет 0 долларов.

Итак, в основном, второй вызов не будет настроен, потому что ваш алгоритм баланса скажет: «Да, у вас есть 10 долларов на вашем счете, но вы в настоящее время зарезервировали 10 долларов, оставив при этом« 0 доступного баланса ». ПоэтомуЯ не могу зарезервировать время для вашего звонка, если вы не отмените свой первый звонок или не добавите больше денег на свой баланс. "

...