Skip to content

Commit 17ee086

Browse files
committed
完善版本更新功能
1 parent 5955181 commit 17ee086

File tree

2 files changed

+88
-1
lines changed

2 files changed

+88
-1
lines changed

app/Http/Controllers/Admin/ConsoleController.php

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Http\Controllers\Controller;
66
use Illuminate\Http\Request;
7+
use Illuminate\Support\Facades\Storage;
78
use App\User;
89
use App\Models\Order;
910
use App\Models\Post;
@@ -44,6 +45,7 @@ public function index()
4445
public function clearCache(Request $request)
4546
{
4647
Helper::clearCache();
48+
return $this->success('操作成功!');
4749
}
4850

4951
// 获取用户统计数据
@@ -142,7 +144,7 @@ public function update(Request $request)
142144
$result['app_version'] = config('app.version');
143145
$result['repository'] = $repository;
144146

145-
$result['can_update'] = false;
147+
$result['can_update'] = true;
146148

147149
if(isset($repository['name'])) {
148150
if($repository['name'] != $result['app_version']) {
@@ -152,4 +154,85 @@ public function update(Request $request)
152154

153155
return $this->success('获取成功!','',$result);
154156
}
157+
158+
/**
159+
* 下载最新版本文件
160+
* @author tangtanglove <[email protected]>
161+
*/
162+
public function download(Request $request)
163+
{
164+
$version = $request->get('version');
165+
166+
$url = "https://dev.tencent.com/u/tangtanglove/p/fullstack-backend/git/archive/".$version.".zip";
167+
168+
$file = Helper::curl($url,false,'get',false,1);
169+
170+
// 默认本地上传
171+
$path = 'uploads/files/'.$version.".zip";
172+
173+
$result = Storage::disk('public')->put($path,$file);
174+
175+
if($result) {
176+
return $this->success('文件下载成功!','',$path);
177+
} else {
178+
return $this->error('文件下载失败!');
179+
}
180+
}
181+
182+
/**
183+
* 解压程序包
184+
* @author tangtanglove <[email protected]>
185+
*/
186+
public function extract(Request $request)
187+
{
188+
$version = $request->get('version');
189+
190+
$path = storage_path('app/').'public/uploads/files/'.$version.".zip";
191+
$outPath = storage_path('app/').'public/uploads/files/';
192+
193+
$zip = new \ZipArchive();
194+
195+
$result = $zip->open($path);
196+
197+
if ($result === true) {
198+
$zip->extractTo($outPath);
199+
$zip->close();
200+
}
201+
202+
if($result) {
203+
return $this->success('文件解压成功!');
204+
} else {
205+
return $this->error('文件解压失败!');
206+
}
207+
}
208+
209+
/**
210+
* 更新文件
211+
* @author tangtanglove <[email protected]>
212+
*/
213+
public function updateFile(Request $request)
214+
{
215+
$version = $request->get('version');
216+
217+
$path = storage_path('app/').'public/uploads/files/fullstack-backend-'.$version;
218+
219+
Helper::copyFileToDir($path,base_path());
220+
221+
return $this->success('程序更新成功!');
222+
}
223+
224+
/**
225+
* 更新数据库
226+
* @author tangtanglove <[email protected]>
227+
*/
228+
public function updateDatabase(Request $request)
229+
{
230+
$result = Artisan::call('migrate');
231+
232+
if($result) {
233+
return $this->success('数据库更新成功!');
234+
} else {
235+
return $this->error('数据库更新失败!');
236+
}
237+
}
155238
}

routes/admin.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
Route::get('admin/console/index', 'Admin\\ConsoleController@index')->name('api/admin/console/index');
2727
Route::get('admin/console/clearCache', 'Admin\\ConsoleController@clearCache')->name('api/admin/console/clearCache');
2828
Route::get('admin/console/update', 'Admin\\ConsoleController@update')->name('api/admin/console/update');
29+
Route::get('admin/console/download', 'Admin\\ConsoleController@download')->name('api/admin/console/download');
30+
Route::get('admin/console/extract', 'Admin\\ConsoleController@extract')->name('api/admin/console/extract');
31+
Route::get('admin/console/updateFile', 'Admin\\ConsoleController@updateFile')->name('api/admin/console/updateFile');
32+
Route::get('admin/console/updateDatabase', 'Admin\\ConsoleController@updateDatabase')->name('api/admin/console/updateDatabase');
2933

3034
Route::any('admin/account/info', 'Admin\\AccountController@info')->name('api/admin/account/info');
3135
Route::post('admin/account/profile', 'Admin\\AccountController@profile')->name('api/admin/account/profile');

0 commit comments

Comments
 (0)