AgentDomainPool.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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'], 'type' => ['nullable', 'in:pc,h5,common'],
  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. if (($data['type'] ?? null) === 'common') $data['type'] = '';
  19. return $service->paginate($data);
  20. });
  21. }
  22. public function options(Request $request, AgentDomainPoolService $service)
  23. {
  24. return $this->execute(function () use ($request, $service) {
  25. $data = $request->validate(['type' => ['nullable', 'in:pc,h5']]);
  26. return $service->options($data['type'] ?? null);
  27. });
  28. }
  29. public function create(Request $request, AgentDomainPoolService $service)
  30. {
  31. return $this->execute(function () use ($request, $service) {
  32. $data = $request->validate([
  33. // 数组,或多行文本(每行一个)
  34. 'domains' => ['required'], 'type' => ['nullable', 'in:pc,h5,common'], 'remark' => ['nullable', 'string', 'max:255'],
  35. ]);
  36. $domains = is_array($data['domains']) ? $data['domains'] : preg_split('/[\r\n,,]+/u', (string) $data['domains']);
  37. $type = ($data['type'] ?? 'common') === 'common' ? '' : (string) $data['type'];
  38. return $service->create($domains, $type, trim((string) ($data['remark'] ?? '')), (int) request()->user->id);
  39. });
  40. }
  41. public function update(Request $request, AgentDomainPoolService $service)
  42. {
  43. return $this->execute(function () use ($request, $service) {
  44. $data = $request->validate([
  45. 'id' => ['required', 'integer'], 'domain' => ['nullable', 'string', 'max:255'],
  46. 'type' => ['nullable', 'in:pc,h5,common'], 'status' => ['nullable', 'in:0,1'], 'remark' => ['nullable', 'string', 'max:255'],
  47. ]);
  48. if (($data['type'] ?? null) === 'common') $data['type'] = '';
  49. return $service->update((int) $data['id'], $data);
  50. });
  51. }
  52. public function delete(Request $request, AgentDomainPoolService $service)
  53. {
  54. return $this->execute(function () use ($request, $service) {
  55. $data = $request->validate(['id' => ['required', 'integer']]);
  56. $service->delete((int) $data['id']);
  57. return [];
  58. });
  59. }
  60. }