Функция Laravel запускается после завершения первого запроса - PullRequest
0 голосов
/ 09 октября 2019

Я занимаюсь разработкой системы, которая может иметь основной счет и субсчет основного счета.

Система имеет функцию перевода кредита с основного счета на другой основной счет.

Субсчет может перевести кредит основной учетной записи на другую основную учетную запись.

public function transferCredit(Request $request)
{
    $authUser = User::find(auth()->user()->sub_user_parent);

    $this->validate($request, [
         'credit'    => 'required|wallet_check_auth',
    ], [
        'wallet_check_auth' => 'Not enough balance. Your current balance is ' . $authUser->wallet
    ]);

    $user = User::find($request->id);
    ProcessCredit::dispatch($authUser, $user, $request->credit);

    return true;
}

ProcessCredit.php (Мой класс работы)

public function handle()
{
    User::where('id', $this->sender->id)->decrement('wallet', $this->amount);
    User::where('id', $this->receiver->receive_id)->increment('wallet', $this->amount);
}

Сценарий:

Основной счет A имеет кредит 100.

Субсчет основного счета A и основного аккаунта A одновременно выполняет вход и перевод на Основной счет B.

Проблема: Кредитпроверка проверки не работает, потому что оба запроса приходят вместе, и проверочный кредит равен 100. Кредит основного счета A в конечном итоге становится -100, потому что два запроса выполнялись вместе и проходят проверку до того, как 1-й запрос вычтет кредит из основного счетаA.

Я попытался реализовать очередь, чтобы убедиться, что 1-й запрос завершен, только запустить 2-й запрос для этой функции, но затем ямне не повезло.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...