public function revertFiles($files, $userId) { $tran = \Yii::$app->db->beginTransaction(); try { foreach ($files as $recordId) { $fileRecord = FileRecord::findOne(['f_record_id' => $recordId]); $disk = Disk::findOne(['user_id' => $userId]); if ($disk->available_size < $fileRecord->file_size) { $tran->rollBack(); return '2'; //空间不足 } $fileRecord->state = '0'; $fileRecord->parent_id = $userId; if (!$fileRecord->save()) { $tran->rollBack(); return '1'; //还原错误 } $disk->available_size = $disk->available_size - $fileRecord->file_size; if (!$disk->save()) { $tran->rollBack(); return '1'; //还原错误 } $removeLog = RemoveLog::findOne(['f_record_id' => $fileRecord->f_record_id]); if (!$removeLog->delete()) { $tran->rollBack(); return '1'; //还原错误 } } $tran->commit(); return '0'; } catch (Exception $e) { $tran->rollBack(); return '1'; } }