From 967818c6d0f455d890af01b126782eb056b62fc3 Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Mon, 9 Jan 2023 18:19:20 +0800 Subject: [PATCH] feat: module new feat --- .../Http/Controllers/ModuleController.php | 36 ++++++++++ modules/Develop/Support/ModuleInstall.php | 67 +++++++++++++++++++ modules/Develop/route.php | 2 + modules/Develop/views/module/index.vue | 16 ++++- modules/Develop/views/module/install.vue | 66 ++++++++++++++++++ modules/Permissions/Providers/Installer.php | 12 ---- modules/User/views/user/center.vue | 4 +- .../admin/{Select => select}/index.vue | 0 .../admin/components/admin/upload/index.vue | 33 +++++++++ 9 files changed, 220 insertions(+), 16 deletions(-) create mode 100644 modules/Develop/Support/ModuleInstall.php create mode 100644 modules/Develop/views/module/install.vue rename resources/admin/components/admin/{Select => select}/index.vue (100%) create mode 100644 resources/admin/components/admin/upload/index.vue diff --git a/modules/Develop/Http/Controllers/ModuleController.php b/modules/Develop/Http/Controllers/ModuleController.php index 2255eb9..c1bbcbc 100644 --- a/modules/Develop/Http/Controllers/ModuleController.php +++ b/modules/Develop/Http/Controllers/ModuleController.php @@ -3,9 +3,13 @@ namespace Modules\Develop\Http\Controllers; use Catch\Base\CatchController; +use Catch\CatchAdmin; use Catch\Support\Module\ModuleRepository; use Illuminate\Http\Request; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Storage; +use Modules\Develop\Support\Generate\Module; +use Modules\Develop\Support\ModuleInstall; class ModuleController extends CatchController { @@ -88,4 +92,36 @@ class ModuleController extends CatchController { return $this->repository->delete($name); } + + /** + * install + * + * @param Request $request + * @return true + */ + public function install(Request $request) + { + $moduleInstall = new ModuleInstall($request->get('type')); + + $moduleInstall->install($request->all()); + + return true; + } + + /** + * upload + * + * @param Request $request + * @return string + */ + public function upload(Request $request) + { $file = $request->file('file'); + + Storage::build([ + 'driver' => 'local', + 'root' => storage_path('app') + ])->put($file->getClientOriginalName(), $file->getContent()); + + return storage_path('app') . DIRECTORY_SEPARATOR . $file->getClientOriginalName(); + } } diff --git a/modules/Develop/Support/ModuleInstall.php b/modules/Develop/Support/ModuleInstall.php new file mode 100644 index 0000000..e903388 --- /dev/null +++ b/modules/Develop/Support/ModuleInstall.php @@ -0,0 +1,67 @@ +type === self::NORMAL_INSTALL) { + $this->installWithTitle($params['title']); + } + + if ($this->type == self::ZIP_INSTALL) { + $this->installWithZip($params['title'], $params['file']); + } + } catch (\Exception $e) { + if ($this->type == self::ZIP_INSTALL) { + CatchAdmin::deleteModulePath($params['title']); + } + + throw new FailedException('安装失败: ' . $e->getMessage()); + } + } + + /** + * + * @param string $title + */ + protected function installWithTitle(string $title): void + { + $installer = CatchAdmin::getModuleInstaller($title); + + $installer->install(); + } + + /** + * get + * + * @param string $title + * @param string $zip + */ + protected function installWithZip(string $title, string $zip): void + { + $zipRepository = Zipper::make($zip)->getRepository(); + + $zipRepository->getArchive()->extractTo(CatchAdmin::getModulePath($title)); + + $this->installWithTitle($title); + } +} diff --git a/modules/Develop/route.php b/modules/Develop/route.php index f4575de..dbcc1d1 100644 --- a/modules/Develop/route.php +++ b/modules/Develop/route.php @@ -6,6 +6,8 @@ use Modules\Develop\Http\Controllers\GenerateController; use Modules\Develop\Http\Controllers\SchemaController; Route::apiResource('module', ModuleController::class); +Route::post('module/install', [ModuleController::class, 'install']); +Route::post('module/upload', [ModuleController::class, 'upload']); Route::put('module/enable/{name}', [ModuleController::class, 'enable']); diff --git a/modules/Develop/views/module/index.vue b/modules/Develop/views/module/index.vue index 39e8877..678a054 100644 --- a/modules/Develop/views/module/index.vue +++ b/modules/Develop/views/module/index.vue @@ -8,7 +8,12 @@
- + + + @@ -33,12 +38,18 @@ + + + + +
diff --git a/modules/Permissions/Providers/Installer.php b/modules/Permissions/Providers/Installer.php index fc2c208..2b79edb 100644 --- a/modules/Permissions/Providers/Installer.php +++ b/modules/Permissions/Providers/Installer.php @@ -18,18 +18,6 @@ class Installer extends ModuleInstaller ]; } - protected function migration(): string - { - // TODO: Implement migration() method. - return ''; - } - - protected function seeder(): string - { - // TODO: Implement seeder() method. - return ''; - } - protected function requirePackages(): void { // TODO: Implement requirePackages() method. diff --git a/modules/User/views/user/center.vue b/modules/User/views/user/center.vue index d74d1cb..f9381e0 100644 --- a/modules/User/views/user/center.vue +++ b/modules/User/views/user/center.vue @@ -1,6 +1,6 @@