middleware('auth:api')->except('login', 'register', 'shop', 'getConfig','version','buy','ClashConfig','getsysconfig','GetV2rayNode','checkNodeWeihu','UserDis'); auth()->shouldUse('api'); } //刷新用户信息 public function GetUserinfo(Request $request) { $user = auth()->user(); $userinfo = $user->profile(); if (empty($userinfo)){ return response()->json(['ret' => 0, 'msg' => "获取用户信息失败"]); } return response()->json(['ret' => 1, 'data' => $userinfo], 200); } public function checkNodeWeihu() { $query = Node::with(['onlineLogs', 'dailyDataFlows']); $nodeList = $query->where("country_code","=","hk")->get(); $nodeOlin = []; foreach ($nodeList as $key => $node) { // 在线人数 $online_log = $node->onlineLogs()->where('log_time', '>=', strtotime('-5 minutes'))->latest('log_time')->first(); $online_users = $online_log->online_user ?? 0; $nodeOlin[$key]["name"] =$node->name; $nodeOlin[$key]["id"] =$node->id; $nodeOlin[$key]["online_user"] = $online_users; } // var_dump($nodeOlin); die(); $logInfo = []; foreach ($nodeOlin as $key => $vva) { $input = [ "status" => $vva["online_user"] > 10 ? 1 : 0 ]; $post = Node::find($vva["id"]); // var_dump($post["name"]); // var_dump($post["status"]); die(); if($post->update($input)){ $logInfo[$key]["id"] = $vva["id"]; $logInfo[$key]["name"] =$vva["name"]; $logInfo[$key]["status"] = "{$input["status"]}更新成功"; }else{ $logInfo[$key]["id"] = $vva["id"]; $logInfo[$key]["name"] =$vva["name"]; $logInfo[$key]["status"] = "{$input["status"]}更新失败"; } // var_dump($logInfo); // die(); } return response()->json(['ret' => 1, 'data' => $logInfo], 200); } public function GetV2rayNode(Request $request){ $user = User::query(); $node = Node::query(); $userinfo = $user->where('email','=','17624688@qq.com')->get(); //$query = $query->nodes()->with(['labels', 'level_table','onlineLogs']); $retlist = $node->where('type','=',2)->get(); $servers = []; foreach ($retlist as $key => $v ){ $servers[] = $v->config($userinfo[0]); } return (new ClientController)->config("", $userinfo[0], $servers); //return response()->json(['ret' => 1, 'data' => $servers]); //return response()->json(['ret' => 1, 'data' => ['userinfo'=>$userinfo,'servers'=>$servers],'']); } public function AutoNode(Request $request){ $auth_user = auth()->user(); //select b.node_id, max(b.online_user) as online_user from node_online_log as b group by b.node_id $sub_query = 'select b.node_id, max(b.online_user) as online_user from node_online_log as b group by b.node_id'; $query = Node::query(); //select aa.online_user, aa.node_id, bb.* from (select b.node_id, max(log_time), b.online_user from node_online_log as b group by b.node_id) as aa left join node as bb on bb.id = aa.node_id where bb.country_code = 'hk' group by aa.online_user //limit 1 $nodeList = $query->from(DB::raw('('.$sub_query.') as a')) ->leftJoin('node as bb','bb.id','=','a.node_id') ->where('bb.country_code','=','hk') ->groupBy('a.online_user') ->limit(1) ->get(['a.online_user','bb.*']); $keys = "online_users"; foreach ($nodeList as $key => $v ){ $servers = $v->config($auth_user); $servers[$keys] = $v["online_user"]; } return response()->json(['ret' => 1, 'data' => $servers], 200); } /** * 获取全部节点 * @param int|null $id * @return \Illuminate\Http\JsonResponse */ public function nodeList(Request $request,int $id = null) { $isVless = $request->input("vless"); $debug = $request->input("isdebug"); $user = auth()->user(); $query = $user->nodes()->with(['labels', 'level_table','onlineLogs']); if (empty($isVless)){ $isVless = 0; } if ($isVless == 1){ $nodeList = $query->orderByDesc('sort')->orderBy('id')->get(); } else { $nodeList = $query->where("vless",'=',0)->orderByDesc('sort')->orderBy('id')->get(); } if(isset($debug)) { foreach ($nodeList as $node) { // 在线人数 $online_log = $node->onlineLogs()->where('log_time', '>=', strtotime('-5 minutes'))->latest('log_time')->first(); $node->leables = $node->labels; $node->online_users = $online_log->online_user ?? 0; $firstnode[] = $node; } foreach ($firstnode as $key => $val){ $namesString = ""; foreach ($firstnode[$key]["leables"] as $label) { $namesString .= $label["name"] . ", "; } // 移除最后一个逗号和空格 $namesString = rtrim($namesString, ", "); $servers[] = $val->config($user); $servers[$key]["ip"] = $firstnode[$key]["ip"]; $servers[$key]["online_users"] = $firstnode[$key]["online_users"]; $servers[$key]["leables"] = $namesString; $servers[$key]["leables_level"] = $firstnode[$key]["level_table"]["level"]; $servers[$key]["country_code"] = $firstnode[$key]["country_code"]; } return response()->json($servers); } //var_dump($nodes); die(); if (isset($id)) { $nodes = $user->nodes()->get(); $node = $nodes->find($id); if (empty($node)) { return response()->json([], 204); } return response()->json($node->config($user)); } $temp = array(); $servers = []; $firstnode = []; foreach ($nodeList as $node) { // 在线人数 $online_log = $node->onlineLogs()->where('log_time', '>=', strtotime('-5 minutes'))->latest('log_time')->first(); $node->leables = $node->labels; $node->online_users = $online_log->online_user ?? 0; $firstnode[] = $node; } foreach ($firstnode as $key => $val){ $namesString = ""; foreach ($firstnode[$key]["leables"] as $label) { $namesString .= $label["name"] . ", "; } $namesString = rtrim($namesString, ", "); $servers[] = $val->config($user); $servers[$key]["ip"] = $firstnode[$key]["ip"]; $servers[$key]["online_users"] = $firstnode[$key]["online_users"]; $servers[$key]["country_code"] = $firstnode[$key]["country_code"]; $servers[$key]["leables"] = $namesString; $servers[$key]["leables_level"] = $firstnode[$key]["level_table"]["level"]; $servers[$key]["traffic_rate"] = $firstnode[$key]["traffic_rate"]; } return response()->json(['ret' => 1, 'data' => $servers]); } public function UserDis(Request $request){ $id = $request->input('id'); // 从请求中获取需要更新的数据 $data = [ 'enable' => 0, 'expired_at' => '2023-05-01 15:35:19', 'remark' => '已经退款' ]; // 使用Eloquent ORM查找对应的用户记录 $user = User::find($id); // 使用update()方法更新用户记录 return $user->update($data); } }