ServerController.php 2.5 KB

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