AgentDomainPool.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Http\Controllers\admin;
  3. use App\Http\Controllers\AgentApiController;
  4. use App\Services\Agent\AgentDomainPoolService;
  5. use Illuminate\Http\Request;
  6. /** 总后台「代理域名管理」:可用域名、使用情况、绑定到哪个代理。 */
  7. class AgentDomainPool extends AgentApiController
  8. {
  9. public function index(Request $request, AgentDomainPoolService $service)
  10. {
  11. return $this->execute(function () use ($request, $service) {
  12. $data = $request->validate([
  13. 'page' => ['nullable', 'integer', 'min:1'], 'limit' => ['nullable', 'integer', 'min:1', 'max:100'],
  14. 'keyword' => ['nullable', 'string', 'max:255'],
  15. 'status' => ['nullable', 'in:0,1'], 'usage' => ['nullable', 'in:in_use,available'],
  16. 'agent_id' => ['nullable', 'integer'], 'agent_username' => ['nullable', 'string', 'max:64'],
  17. ]);
  18. return $service->paginate($data);
  19. });
  20. }
  21. public function options(AgentDomainPoolService $service)
  22. {
  23. return $this->execute(fn () => $service->options());
  24. }
  25. public function create(Request $request, AgentDomainPoolService $service)
  26. {
  27. return $this->execute(function () use ($request, $service) {
  28. $data = $request->validate([
  29. // 数组,或多行文本(每行一个)
  30. 'domains' => ['required'], 'remark' => ['nullable', 'string', 'max:255'],
  31. ]);
  32. $domains = is_array($data['domains']) ? $data['domains'] : preg_split('/[\r\n,,]+/u', (string) $data['domains']);
  33. return $service->create($domains, trim((string) ($data['remark'] ?? '')), (int) request()->user->id);
  34. });
  35. }
  36. public function update(Request $request, AgentDomainPoolService $service)
  37. {
  38. return $this->execute(function () use ($request, $service) {
  39. $data = $request->validate([
  40. 'id' => ['required', 'integer'], 'domain' => ['nullable', 'string', 'max:255'],
  41. 'status' => ['nullable', 'in:0,1'], 'remark' => ['nullable', 'string', 'max:255'],
  42. ]);
  43. return $service->update((int) $data['id'], $data);
  44. });
  45. }
  46. public function delete(Request $request, AgentDomainPoolService $service)
  47. {
  48. return $this->execute(function () use ($request, $service) {
  49. $data = $request->validate(['id' => ['required', 'integer']]);
  50. $service->delete((int) $data['id']);
  51. return [];
  52. });
  53. }
  54. }