ServerController.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Http\Controllers\User;
  3. use App\Http\Controllers\Controller;
  4. use App\Services\UserService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Cache;
  7. use App\Models\Server;
  8. use App\Models\ServerLog;
  9. use App\Models\User;
  10. use App\Utils\Helper;
  11. class ServerController extends Controller
  12. {
  13. public function fetch(Request $request)
  14. {
  15. $user = User::find($request->session()->get('id'));
  16. $server = [];
  17. $userService = new UserService();
  18. if ($userService->isAvailable($user)) {
  19. $servers = Server::where('show', 1)
  20. ->orderBy('name')
  21. ->get();
  22. foreach ($servers as $item) {
  23. $groupId = json_decode($item['group_id']);
  24. if (in_array($user->group_id, $groupId)) {
  25. array_push($server, $item);
  26. }
  27. }
  28. }
  29. for ($i = 0; $i < count($server); $i++) {
  30. $server[$i]['link'] = Helper::buildVmessLink($server[$i], $user);
  31. if ($server[$i]['parent_id']) {
  32. $server[$i]['last_check_at'] = Cache::get('server_last_check_at_' . $server[$i]['parent_id']);
  33. } else {
  34. $server[$i]['last_check_at'] = Cache::get('server_last_check_at_' . $server[$i]['id']);
  35. }
  36. }
  37. return response([
  38. 'data' => $server
  39. ]);
  40. }
  41. public function logFetch(Request $request)
  42. {
  43. $type = $request->input('type') ? $request->input('type') : 0;
  44. $current = $request->input('current') ? $request->input('current') : 1;
  45. $pageSize = $request->input('pageSize') >= 10 ? $request->input('pageSize') : 10;
  46. $serverLogModel = ServerLog::where('user_id', $request->session()->get('id'))
  47. ->orderBy('created_at', 'DESC');
  48. switch ($type) {
  49. case 0:
  50. $serverLogModel->where('created_at', '>=', strtotime(date('Y-m-d')));
  51. break;
  52. case 1:
  53. $serverLogModel->where('created_at', '>=', strtotime(date('Y-m-d')) - 604800);
  54. break;
  55. case 2:
  56. $serverLogModel->where('created_at', '>=', strtotime(date('Y-m-1')));
  57. }
  58. $sum = [
  59. 'u' => $serverLogModel->sum('u'),
  60. 'd' => $serverLogModel->sum('d')
  61. ];
  62. $total = $serverLogModel->count();
  63. $res = $serverLogModel->forPage($current, $pageSize)
  64. ->get();
  65. return response([
  66. 'data' => $res,
  67. 'total' => $total,
  68. 'sum' => $sum
  69. ]);
  70. }
  71. }