public function TaskEnd() { //обновим запись по заданию и укажем файл результата по ней $sql = 'UPDATE ' . Tasks::tableName() . ' SET status=:status, file_result=:file, complete_at=:complete_at WHERE id=:id'; $query = \Yii::$app->db->createCommand($sql); //спишим с баланса юзера сумма за выборку $query->bindValues([':status' => Tasks::STATUS_COMPLETE, ':id' => $this->task->id, ':file' => $this->task->link . '.txt', ':complete_at' => time()]); $query->execute(); //запишим операцию списания денег в лог фин. операций $financy = new Financy(); $financy->sum_operation = \Yii::$app->params['task.cost']; $financy->type_operation = Financy::TYPE_OPERATION_MINUS; $financy->user_id = $this->task->user_id; $financy->balance_user_after_operation = (int) ($this->task->user->balance - \Yii::$app->params['task.cost']); if ($financy->validate()) { $financy->save(); //обновим баланс юзера User::minusBalance($financy->user_id); } else { print_r($financy->errors) . PHP_EOL; $this->log('error'); } \Yii::$app->get('mutex')->release($this->tasks_mutex_name); }