diff --git a/app/Http/Controllers/AppVersionController.php b/app/Http/Controllers/AppVersionController.php index 58ae8096..cf06bfc3 100644 --- a/app/Http/Controllers/AppVersionController.php +++ b/app/Http/Controllers/AppVersionController.php @@ -2,10 +2,13 @@ namespace App\Http\Controllers; +use App\Models\AppVersion; use App\Services\AppVersionService; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\View\View; +use Illuminate\Support\Facades\Storage; +use Symfony\Component\HttpFoundation\StreamedResponse; class AppVersionController extends Controller { @@ -71,6 +74,26 @@ public function update(Request $request, int $id): RedirectResponse ->with('success', '버전이 수정되었습니다.'); } + /** + * APK 다운로드 + */ + public function download(int $id): StreamedResponse + { + $version = AppVersion::findOrFail($id); + + if (! $version->apk_path || ! Storage::disk('app_releases')->exists($version->apk_path)) { + abort(404, 'APK 파일을 찾을 수 없습니다.'); + } + + $version->increment('download_count'); + + $fileName = $version->apk_original_name ?: "sam-v{$version->version_name}.apk"; + + return Storage::disk('app_releases')->download($version->apk_path, $fileName, [ + 'Content-Type' => 'application/vnd.android.package-archive', + ]); + } + /** * 활성 토글 */ diff --git a/resources/views/app-versions/index.blade.php b/resources/views/app-versions/index.blade.php index 429f8ead..9666a614 100644 --- a/resources/views/app-versions/index.blade.php +++ b/resources/views/app-versions/index.blade.php @@ -137,9 +137,15 @@ class="rounded border-gray-300 text-blue-600 shadow-sm focus:ring-blue-500"> @if($version->apk_path) - - {{ $version->apk_original_name ? \Illuminate\Support\Str::limit($version->apk_original_name, 20) : 'APK' }} - + @if($isTrashed) + + {{ $version->apk_original_name ? \Illuminate\Support\Str::limit($version->apk_original_name, 20) : 'APK' }} + + @else + + {{ $version->apk_original_name ? \Illuminate\Support\Str::limit($version->apk_original_name, 20) : 'APK' }} + + @endif @if($version->apk_size) ({{ number_format($version->apk_size / 1024 / 1024, 1) }}MB) @endif diff --git a/routes/web.php b/routes/web.php index 011e9f9c..f940182b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -357,6 +357,7 @@ Route::get('/', [AppVersionController::class, 'index'])->name('index'); Route::post('/', [AppVersionController::class, 'store'])->name('store'); Route::put('/{id}', [AppVersionController::class, 'update'])->name('update'); + Route::get('/{id}/download', [AppVersionController::class, 'download'])->name('download'); Route::post('/{id}/toggle', [AppVersionController::class, 'toggleActive'])->name('toggle'); Route::delete('/{id}', [AppVersionController::class, 'destroy'])->name('destroy'); Route::post('/{id}/restore', [AppVersionController::class, 'restore'])->name('restore');