diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php index 138b9335e..0e00fa133 100755 --- a/app/Http/Controllers/Api/FileController.php +++ b/app/Http/Controllers/Api/FileController.php @@ -2,10 +2,10 @@ namespace App\Http\Controllers\Api; -use Hhxsv5\LaravelS\Swoole\Task\Task; +use App\Models\WebSocketDialogMsg; +use App\Models\WebSocketDialog; use App\Exceptions\ApiException; use App\Models\AbstractModel; -use App\Tasks\FilePackTask; use App\Models\File; use App\Models\FileContent; use App\Models\FileLink; @@ -1020,15 +1020,15 @@ class FileController extends AbstractController } $zip = new \ZipArchive(); - $zipName = 'temp/download/' . date("Ym") . '/' . $user->userid . '/' . $downName; - $zipPath = storage_path('app/'.$zipName); + $zipName = 'tmp/file/' . date("Ym") . '/' . $user->userid . '/' . $downName; + $zipPath = public_path($zipName); Base::makeDir(dirname($zipPath)); if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) { return Base::retError('创建压缩文件失败'); } - go(function() use ($zip, $files, $downName) { + go(function() use ($user, $zip, $files, $downName, $zipName) { Coroutine::sleep(0.1); // 压缩进度 $progress = 0; @@ -1051,6 +1051,19 @@ class FileController extends AbstractController 'progress' => 100 ]); } + // + $botUser = User::botGetOrCreate('system-msg'); + if (empty($botUser)) { + return; + } + if ($dialog = WebSocketDialog::checkUserDialog($botUser, $user->userid)) { + $text = "文件下载打包已完成。"; + $text .= "\n\n"; + $text .= "文件名:{$downName}"; + $text .= "\n"; + $text .= "下载地址:".Base::fillUrl($zipName); + WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $text], $botUser->userid, false, false, true); + } }); return Base::retSuccess('success'); @@ -1074,8 +1087,8 @@ class FileController extends AbstractController { $user = User::auth(); $downName = Request::input('name'); - $zipName = 'temp/download/' . date("Ym") . '/' . $user->userid . '/' . $downName; - $zipPath = storage_path('app/'.$zipName); + $zipName = 'tmp/file/' . date("Ym") . '/' . $user->userid . '/' . $downName; + $zipPath = public_path($zipName); if (!file_exists($zipPath)) { abort(403, "The file does not exist."); } diff --git a/app/Tasks/DeleteTmpTask.php b/app/Tasks/DeleteTmpTask.php index 62e46ee00..8a9d3a0d8 100644 --- a/app/Tasks/DeleteTmpTask.php +++ b/app/Tasks/DeleteTmpTask.php @@ -102,7 +102,7 @@ class DeleteTmpTask extends AbstractTask */ case 'file_pack': { - $path = storage_path('app/temp/download/'); + $path = public_path('tmp/file/'); $dirIterator = new \RecursiveDirectoryIterator($path); $iterator = new \RecursiveIteratorIterator($dirIterator); diff --git a/app/Tasks/WebSocketDialogMsgTask.php b/app/Tasks/WebSocketDialogMsgTask.php index d8c2dfd0e..7a092010d 100644 --- a/app/Tasks/WebSocketDialogMsgTask.php +++ b/app/Tasks/WebSocketDialogMsgTask.php @@ -38,12 +38,17 @@ class WebSocketDialogMsgTask extends AbstractTask { parent::__construct(...func_get_args()); $this->id = $id; - $this->ignoreFd = $ignoreFd === null ? Request::header('fd') : $ignoreFd; - $this->client = [ - 'version' => Base::headerOrInput('version'), - 'language' => Base::headerOrInput('language'), - 'platform' => Base::headerOrInput('platform'), - ]; + // 判断是否有Request方法,兼容go协程请求 + $this->ignoreFd = $ignoreFd; + $this->client = []; + if (method_exists(new Request,"header")) { + $this->ignoreFd = $ignoreFd === null ? Request::header('fd') : $ignoreFd; + $this->client = [ + 'version' => Base::headerOrInput('version'), + 'language' => Base::headerOrInput('language'), + 'platform' => Base::headerOrInput('platform'), + ]; + } } /**