コード例 #1
0
ファイル: FileService.php プロジェクト: lawguangwei/webDB
 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';
     }
 }