ModuleController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace Modules\Develop\Http\Controllers;
  3. use Catch\Base\CatchController;
  4. use Catch\Contracts\ModuleRepositoryInterface;
  5. use Catch\Exceptions\FailedException;
  6. use Catch\Support\Module\ModuleRepository;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Collection;
  9. use Illuminate\Support\Facades\Storage;
  10. use Modules\Develop\Support\ModuleInstall;
  11. class ModuleController extends CatchController
  12. {
  13. protected ModuleRepository $repository;
  14. /**
  15. * @param ModuleRepository $repository
  16. */
  17. public function __construct(ModuleRepository $repository)
  18. {
  19. $this->repository = $repository;
  20. }
  21. /**
  22. * index
  23. *
  24. * @param Request $request
  25. * @return Collection
  26. */
  27. public function index(Request $request): Collection
  28. {
  29. return $this->repository->all($request->all());
  30. }
  31. /**
  32. * store
  33. *
  34. * @param Request $request
  35. * @return bool|int
  36. */
  37. public function store(Request $request): bool|int
  38. {
  39. return $this->repository->create($request->all());
  40. }
  41. /**
  42. * show
  43. *
  44. * @param string $name
  45. * @return Collection
  46. * @throws \Exception
  47. */
  48. public function show(mixed $name): Collection
  49. {
  50. return $this->repository->show($name);
  51. }
  52. /**
  53. * update
  54. *
  55. * @param $name
  56. * @param Request $request
  57. * @return bool|int
  58. */
  59. public function update($name, Request $request): bool|int
  60. {
  61. return $this->repository->update($name, $request->all());
  62. }
  63. /**
  64. * update
  65. *
  66. * @param $name
  67. * @return bool|int
  68. */
  69. public function enable($name): bool|int
  70. {
  71. return $this->repository->disOrEnable($name);
  72. }
  73. /**
  74. * destroy
  75. *
  76. * @param $name
  77. * @return bool|int
  78. * @throws \Exception
  79. */
  80. public function destroy($name): bool|int
  81. {
  82. return $this->repository->delete($name);
  83. }
  84. /**
  85. * install
  86. *
  87. * @param Request $request
  88. * @param ModuleRepositoryInterface $moduleRepository
  89. * @return true
  90. */
  91. public function install(Request $request, ModuleRepositoryInterface $moduleRepository)
  92. {
  93. if ($moduleRepository->all()->pluck('name')->contains($request->get('title'))) {
  94. throw new FailedException('模块已安装,无法再次安装');
  95. }
  96. $moduleInstall = new ModuleInstall($request->get('type'));
  97. $moduleInstall->install($request->all());
  98. return true;
  99. }
  100. /**
  101. * upload
  102. *
  103. * @param Request $request
  104. * @return string
  105. */
  106. public function upload(Request $request)
  107. { $file = $request->file('file');
  108. Storage::build([
  109. 'driver' => 'local',
  110. 'root' => storage_path('app')
  111. ])->put($file->getClientOriginalName(), $file->getContent());
  112. return storage_path('app') . DIRECTORY_SEPARATOR . $file->getClientOriginalName();
  113. }
  114. }