catchAdmin/modules/Develop/Http/Controllers/ModuleController.php

135 lines
3.0 KiB
PHP
Raw Normal View History

2022-12-05 23:01:12 +08:00
<?php
namespace Modules\Develop\Http\Controllers;
use Catch\Base\CatchController;
2023-01-09 18:19:20 +08:00
use Catch\CatchAdmin;
2023-03-07 13:58:14 +08:00
use Catch\Contracts\ModuleRepositoryInterface;
use Catch\Exceptions\FailedException;
2022-12-05 23:01:12 +08:00
use Catch\Support\Module\ModuleRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
2023-01-09 18:19:20 +08:00
use Illuminate\Support\Facades\Storage;
use Modules\Develop\Support\Generate\Module;
use Modules\Develop\Support\ModuleInstall;
2022-12-05 23:01:12 +08:00
class ModuleController extends CatchController
{
protected ModuleRepository $repository;
/**
* @param ModuleRepository $repository
*/
public function __construct(ModuleRepository $repository)
{
$this->repository = $repository;
}
/**
* index
*
* @param Request $request
* @return Collection
*/
public function index(Request $request): Collection
{
return $this->repository->all($request->all());
}
/**
* store
*
* @param Request $request
* @return bool|int
*/
public function store(Request $request): bool|int
{
return $this->repository->create($request->all());
}
/**
* show
*
* @param string $name
* @return Collection
* @throws \Exception
*/
public function show(mixed $name): Collection
{
return $this->repository->show($name);
}
/**
* update
*
* @param $name
* @param Request $request
* @return bool|int
*/
public function update($name, Request $request): bool|int
{
return $this->repository->update($name, $request->all());
}
/**
* update
*
* @param $name
* @return bool|int
*/
public function enable($name): bool|int
{
return $this->repository->disOrEnable($name);
}
/**
* destroy
*
* @param $name
* @return bool|int
* @throws \Exception
*/
public function destroy($name): bool|int
{
return $this->repository->delete($name);
}
2023-01-09 18:19:20 +08:00
/**
* install
*
* @param Request $request
2023-03-07 13:58:14 +08:00
* @param ModuleRepositoryInterface $moduleRepository
2023-01-09 18:19:20 +08:00
* @return true
*/
2023-03-07 13:58:14 +08:00
public function install(Request $request, ModuleRepositoryInterface $moduleRepository)
2023-01-09 18:19:20 +08:00
{
2023-03-07 13:58:14 +08:00
if ($moduleRepository->all()->pluck('name')->contains($request->get('title'))) {
throw new FailedException('模块已安装,无法再次安装');
}
2023-01-09 18:19:20 +08:00
$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();
}
2022-12-05 23:01:12 +08:00
}