GroupController.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Http\Controllers\V1\Admin\Server;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Plan;
  5. use App\Models\ServerGroup;
  6. use App\Models\ServerVmess;
  7. use App\Models\User;
  8. use App\Services\ServerService;
  9. use Illuminate\Http\Request;
  10. class GroupController extends Controller
  11. {
  12. public function fetch(Request $request)
  13. {
  14. if ($request->input('group_id')) {
  15. return response([
  16. 'data' => [ServerGroup::find($request->input('group_id'))]
  17. ]);
  18. }
  19. $serverGroups = ServerGroup::get();
  20. $serverService = new ServerService();
  21. $servers = $serverService->getAllServers();
  22. foreach ($serverGroups as $k => $v) {
  23. $serverGroups[$k]['user_count'] = User::where('group_id', $v['id'])->count();
  24. $serverGroups[$k]['server_count'] = 0;
  25. foreach ($servers as $server) {
  26. if (in_array($v['id'], $server['group_id'])) {
  27. $serverGroups[$k]['server_count'] = $serverGroups[$k]['server_count']+1;
  28. }
  29. }
  30. }
  31. return response([
  32. 'data' => $serverGroups
  33. ]);
  34. }
  35. public function save(Request $request)
  36. {
  37. if (empty($request->input('name'))) {
  38. abort(500, '组名不能为空');
  39. }
  40. if ($request->input('id')) {
  41. $serverGroup = ServerGroup::find($request->input('id'));
  42. } else {
  43. $serverGroup = new ServerGroup();
  44. }
  45. $serverGroup->name = $request->input('name');
  46. return response([
  47. 'data' => $serverGroup->save()
  48. ]);
  49. }
  50. public function drop(Request $request)
  51. {
  52. if ($request->input('id')) {
  53. $serverGroup = ServerGroup::find($request->input('id'));
  54. if (!$serverGroup) {
  55. abort(500, '组不存在');
  56. }
  57. }
  58. $servers = ServerVmess::all();
  59. foreach ($servers as $server) {
  60. if (in_array($request->input('id'), $server->group_id)) {
  61. abort(500, '该组已被节点所使用,无法删除');
  62. }
  63. }
  64. if (Plan::where('group_id', $request->input('id'))->first()) {
  65. abort(500, '该组已被订阅所使用,无法删除');
  66. }
  67. if (User::where('group_id', $request->input('id'))->first()) {
  68. abort(500, '该组已被用户所使用,无法删除');
  69. }
  70. return response([
  71. 'data' => $serverGroup->delete()
  72. ]);
  73. }
  74. }