ModuleController.php 3.0 KB

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