data = $data->data; } public function apiEdit(Request $request, $sponsorId): JsonResponse { $getData = $request->all(); $getData['id'] = $sponsorId; if (Auth::check()) { if (Auth::user()->admin) { $dataCheck = Validator::make($getData, [ 'id' => 'required|int', 'name' => 'required|string', 'type' => 'required|int', 'money' => 'required|numeric', 'url' => 'regex:#[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?#', 'date' => 'required|string', ]); // 检查是否符合规则 if ($dataCheck->fails()) { $errorType = array_keys($dataCheck->failed()); $i = 0; foreach ($dataCheck->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); if ($i == 0) { $errorSingle = [ 'info' => $errorType[$i], 'need' => $errorInfo[$errorType[$i]], ]; } $i++; } $returnData = [ 'output' => 'DataFormatError', 'code' => 403, 'data' => [ 'message' => '输入内容有错误', 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; } else { // 查询数据 $resultSponsor = (array)DB::table('sponsor') ->where([['id', '=', $getData['id']]]) ->get() ->toArray()[0]; // 检查数据 if ($resultSponsor['id'] !== null) { // 修改数据 DB::table('sponsor') ->where([['id', '=', $resultSponsor['id']]]) ->update([ 'name' => $request->name, 'type' => $request->type, 'money' => $request->money, 'url' => $request->url, 'time' => date('Y-m-d H:i:s', strtotime($request->date)), ]); $returnData = [ 'output' => 'Success', 'code' => 200, 'data' => [ 'message' => '操作成功', ], ]; } else { $returnData = [ 'output' => 'NoData', 'code' => 403, 'data' => [ 'message' => '数据不存在', ], ]; } } } else { $returnData = [ 'output' => 'NoPermission', 'code' => 403, 'data' => [ 'message' => '没有权限', ], ]; } } else { $returnData = [ 'output' => 'PleaseLogin', 'code' => 403, 'data' => [ 'message' => '请登录', ], ]; } return Response::json($returnData, $returnData['code']); } public function apiDelete($sponsorId): JsonResponse { $arrayData['sponsorId'] = $sponsorId; if (Auth::check()) { if (Auth::user()->admin) { $checkData = Validator::make($arrayData, [ 'sponsorId' => 'required|int' ]);// 检查是否符合规则 if ($checkData->fails()) { $errorType = array_keys($checkData->failed()); $i = 0; foreach ($checkData->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); if ($i == 0) { $errorSingle = [ 'info' => $errorType[$i], 'need' => $errorInfo[$errorType[$i]], ]; } $i++; } $returnData = [ 'output' => 'DataFormatError', 'code' => 403, 'data' => [ 'message' => '输入内容有错误', 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; } else { // 查询数据 $resultSponsor = (array)DB::table('sponsor') ->where([['id', '=', $sponsorId]]) ->get() ->toArray()[0]; // 检查数据 if ($resultSponsor['id'] !== null) { // 修改数据 DB::table('sponsor') ->where([['id', '=', $resultSponsor['id']]]) ->delete(); $returnData = [ 'output' => 'Success', 'code' => 200, 'data' => [ 'message' => '删除成功', ], ]; } else { $returnData = [ 'output' => 'NoData', 'code' => 403, 'data' => [ 'message' => '数据不存在', ], ]; } } } else { $returnData = [ 'output' => 'NoPermission', 'code' => 403, 'data' => [ 'message' => '没有权限', ], ]; } } else { $returnData = [ 'output' => 'PleaseLogin', 'code' => 403, 'data' => [ 'message' => '请登录', ], ]; } return Response::json($returnData, $returnData['code']); } public function apiAdd(Request $request): JsonResponse { if (Auth::check()) { if (Auth::user()->admin) { // 处理数据 $dataCheck = Validator::make($request->all(), [ 'name' => 'required|string', 'type' => 'required|int', 'money' => 'required|numeric', 'date' => 'required|string', 'url' => 'regex:#[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?#', ]); if ($dataCheck->fails()) { $errorType = array_keys($dataCheck->failed()); $i = 0; foreach ($dataCheck->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); if ($i == 0) { $errorSingle = [ 'info' => $errorType[$i], 'need' => $errorInfo[$errorType[$i]], ]; } $i++; } $returnData = [ 'output' => 'DataFormatError', 'code' => 403, 'data' => [ 'message' => '输入内容有错误', 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; } else { if (empty($request->url)) $request->url = null; // 操作数据库 DB::table('sponsor') ->insert([ 'name' => $request->name, 'url' => $request->url, 'type' => $request->type, 'money' => $request->money, 'time' => date('Y-m-d H:i:s', strtotime($request->date)), ]); $returnData = [ 'output' => 'Success', 'code' => 200, 'data' => [ 'message' => '操作成功', ], ]; } } else { $returnData = [ 'output' => 'NoPermission', 'code' => 403, 'data' => [ 'message' => '没有权限', ], ]; } } else { $returnData = [ 'output' => 'PleaseLogin', 'code' => 403, 'data' => [ 'message' => '请登录', ], ]; } return Response::json($returnData, $returnData['code']); } public function apiTypeAdd(Request $request): JsonResponse { if (Auth::check()) { if (Auth::user()->admin) { $dataCheck = Validator::make($request->all(), [ 'name' => 'required|string', 'url' => 'required|regex:#[a-zA-z]+://[^\s]*#', 'include' => 'int', 'link' => 'int', ]); if ($dataCheck->fails()) { $errorType = array_keys($dataCheck->failed()); $i = 0; foreach ($dataCheck->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); if ($i == 0) { $errorSingle = [ 'info' => $errorType[$i], 'need' => $errorInfo[$errorType[$i]], ]; } $i++; } $returnData = [ 'output' => 'DataFormatError', 'code' => 403, 'data' => [ 'message' => '输入内容有错误', 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; } else { // 处理数据 if (empty($request->include)) $request->include = 0; if (empty($request->link)) $request->link = 0; DB::table('sponsor_type') ->insert([ 'name' => $request->name, 'url' => $request->url, 'include' => $request->include, 'link' => $request->link, 'created_at' => date('Y-m-d H:i:s'), ]); $returnData = [ 'output' => 'Success', 'code' => 200, 'data' => [ 'message' => '创建成功', ], ]; } } else { $returnData = [ 'output' => 'NoPermission', 'code' => 403, 'data' => [ 'message' => '没有权限', ], ]; } } else { $returnData = [ 'output' => 'PleaseLogin', 'code' => 403, 'data' => [ 'message' => '请登录', ], ]; } return Response::json($returnData, $returnData['code']); } public function apiTypeEdit(Request $request, $typeId = null): JsonResponse { if ((empty($typeId) && !empty($request->edit_id)) || (!empty($typeId) && empty($request->edit_id))) { $getData = $request->all(); if (!empty($typeId) && empty($request->edit_id)) $getData['edit_id'] = $typeId; if (Auth::check()) { if (Auth::user()->admin) { // 检查数据 $dataCheck = Validator::make($getData, [ 'edit_id' => 'required|int', 'edit_name' => 'required|string', 'edit_url' => 'required|regex:#[a-zA-z]+://[^\s]*#', 'edit_include' => 'int', 'edit_link' => 'int', ]); if ($dataCheck->fails()) { $errorType = array_keys($dataCheck->failed()); $i = 0; foreach ($dataCheck->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); if ($i == 0) { $errorSingle = [ 'info' => $errorType[$i], 'need' => $errorInfo[$errorType[$i]], ]; } $i++; } $returnData = [ 'output' => 'DataFormatError', 'code' => 403, 'data' => [ 'message' => '输入内容有错误', 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; } else { // 操作数据库 $resultSponsorType = (array)DB::table('sponsor_type') ->where([['id', '=', $getData['edit_id']]]) ->get() ->toArray()[0]; if (!empty($resultSponsorType['id'])) { if (empty($getData['edit_include'])) $getData['edit_include'] = 0; if (empty($getData['edit_link'])) $getData['edit_link'] = 0; // 操作数据库 DB::table('sponsor_type') ->where([['id', '=', $resultSponsorType['id']]]) ->update([ 'name' => $getData['edit_name'], 'url' => $getData['edit_url'], 'include' => $getData['edit_include'], 'link' => $getData['edit_link'], 'updated_at' => date('Y-m-d H:i:s'), ]); $returnData = [ 'output' => 'Success', 'code' => 200, 'data' => [ 'message' => '修改成功', ], ]; } else { $returnData = [ 'output' => 'NoData', 'code' => 403, 'data' => [ 'message' => '不存在数据', ], ]; } } } else { $returnData = [ 'output' => 'NoPermission', 'code' => 403, 'data' => [ 'message' => '没有权限', ], ]; } } else { $returnData = [ 'output' => 'PleaseLogin', 'code' => 403, 'data' => [ 'message' => '请登录', ], ]; } } else { $returnData = [ 'output' => 'InputError', 'code' => 403, 'data' => [ 'message' => '不允许Url参数与表单参数同时输入', ], ]; } return Response::json($returnData, $returnData['code']); } public function apiTypeDelete($typeId): JsonResponse { if (Auth::check()) { if (Auth::user()->admin) { // 检查ID $arrayData['typeId'] = $typeId; $dataCheck = Validator::make($arrayData, [ 'typeId' => 'required|int', ]); if ($dataCheck->fails()) { $errorType = array_keys($dataCheck->failed()); $i = 0; foreach ($dataCheck->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); if ($i == 0) { $errorSingle = [ 'info' => $errorType[$i], 'need' => $errorInfo[$errorType[$i]], ]; } $i++; } $returnData = [ 'output' => 'DataFormatError', 'code' => 403, 'data' => [ 'message' => '输入内容有错误', 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; } else { // 操作数据库 $resultSponsorType = (array)DB::table('sponsor_type') ->where([['id', '=', $typeId]]) ->get() ->toArray()[0]; if (!empty($resultSponsorType['id'])) { // 删除数据 DB::table('sponsor_type') ->where([['id', '=', $resultSponsorType['id']]]) ->delete(); $returnData = [ 'output' => 'Success', 'code' => 200, 'data' => [ 'message' => '操作成功', ], ]; } else { $returnData = [ 'output' => 'NoData', 'code' => 403, 'data' => [ 'message' => '不存在数据', ], ]; } } } else { $returnData = [ 'output' => 'NoPermission', 'code' => 403, 'data' => [ 'message' => '没有权限', ], ]; } } else { $returnData = [ 'output' => 'PleaseLogin', 'code' => 403, 'data' => [ 'message' => '请登录', ], ]; } return Response::json($returnData, $returnData['code']); } public function apiTypeSelect($typeId): JsonResponse { if (Auth::check()) { if (Auth::user()->admin) { // 检查ID $arrayData['typeId'] = $typeId; $dataCheck = Validator::make($arrayData, [ 'typeId' => 'required|int', ]); if ($dataCheck->fails()) { $errorType = array_keys($dataCheck->failed()); $i = 0; foreach ($dataCheck->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); if ($i == 0) { $errorSingle = [ 'info' => $errorType[$i], 'need' => $errorInfo[$errorType[$i]], ]; } $i++; } $returnData = [ 'output' => 'DataFormatError', 'code' => 403, 'data' => [ 'message' => '输入内容有错误', 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; } else { // 获取数据 $resultTypeSponsor = (array)DB::table('sponsor_type') ->where([['id', '=', $typeId]]) ->get() ->toArray()[0]; if (!empty($resultTypeSponsor['id'])) { $returnData = [ 'output' => 'Success', 'code' => 200, 'data' => [ 'message' => '查询成功', 'data' => $resultTypeSponsor, ], ]; } else { $returnData = [ 'output' => 'NoData', 'code' => 403, 'data' => [ 'message' => '不存在数据', ], ]; } } } else { $returnData = [ 'output' => 'NoPermission', 'code' => 403, 'data' => [ 'message' => '没有权限', ], ]; } } else { $returnData = [ 'output' => 'PleaseLogin', 'code' => 403, 'data' => [ 'message' => '请登录', ], ]; } return Response::json($returnData, $returnData['code']); } protected function viewSponsorDashboard(): Factory|View|Application { $this->getAfadianData(); // 获取模块 $resultSponsorType = DB::table('sponsor_type') ->get() ->toArray(); $this->data['sponsorCountYear'] = 0; $this->data['sponsorCount'] = 0; $this->data['sponsorCountNumber'] = count($this->data['sponsor']); foreach ($this->data['sponsor'] as $value) { $this->data['sponsorCount'] += $value['money']; if ($value['time'] >= date('Y') . '-01-01 00:00:00') { $this->data['sponsorCountYear'] += $value['money']; } } foreach ($resultSponsorType as $value) { $this->data['sponsorType'][$value->id] = [ 'id' => $value->id, 'name' => $value->name, 'url' => $value->url, 'include' => $value->include, 'link' => $value->link, ]; } return view('console.sponsor.dashboard', $this->data); } private function getAfadianData(): void { $verify = ['verify' => true]; if ($_SERVER['SERVER_PORT'] != 443) $verify = ['verify' => false]; // 从数据库获取数据 $result = DB::table('info') ->get() ->toArray(); $sponsor = DB::table('sponsor') ->orderBy('time', 'desc') ->limit(50) ->get() ->toArray(); try { for ($i = 0; $sponsor[$i] != null; $i++) { $this->data['sponsor'][$i] = [ 'id' => $sponsor[$i]->id, 'name' => $sponsor[$i]->name, 'url' => $sponsor[$i]->url, 'type' => $sponsor[$i]->type, 'money' => $sponsor[$i]->money, 'time' => date('Y-m-d', strtotime($sponsor[$i]->time)), ]; } } catch (ErrorException $e) { } $userID = $result[20]->data; $token = $result[21]->data; $time = time(); $params = [ 'page' => 1, 'per_page' => 100, ]; $sign = md5($token . 'params' . json_encode($params) . 'ts' . $time . 'user_id' . $userID); $data = [ 'query' => [ 'user_id' => $userID, 'params' => json_encode($params), 'ts' => $time, 'sign' => $sign, ], ]; $client = new Client($verify); try { $response = $client->get('https://afdian.net/api/open/query-sponsor', $data); $getData = json_decode($response->getBody()->getContents()); } catch (GuzzleException $e) { return; } // 处理数据 $j = 0; foreach ($getData->data->list as $value) { // 整合数据 $data_elem[$j] = [ 'id' => $value->last_pay_time, 'name' => $value->user->name, 'url' => null, 'type' => 5, 'money' => (double)$value->all_sum_amount, 'time' => date('Y-m-d', $value->last_pay_time), ]; $j++; } $this->data['sponsor'] = array_merge($this->data['sponsor'], $data_elem); usort($this->data['sponsor'], function ($a, $b) { return strtotime($b['time']) - strtotime($a['time']); }); } protected function viewEdit($sponsorId): Application|Factory|View|RedirectResponse { $getData['sponsorId'] = $sponsorId; $checkData = Validator::make($getData, [ 'sponsorId' => 'required|int' ]); if ($checkData->fails()) { return Response::redirectTo(route('console.sponsor.dashboard')); } else { $resultSponsor = DB::table('sponsor') ->where([['id', '=', $sponsorId]]) ->get() ->toArray(); $resultSponsor = (array)$resultSponsor[0]; if (!empty($resultSponsor['id'])) { $this->data['sponsor'] = $resultSponsor; $this->data['sponsor']['time'] = date('m/d/Y', strtotime($resultSponsor['time'])); $resultSponsorType = DB::table('sponsor_type') ->get() ->toArray(); foreach ($resultSponsorType as $value) { $this->data['sponsorType'][$value->id] = [ 'id' => $value->id, 'name' => $value->name, 'url' => $value->url, 'include' => $value->include, 'link' => $value->link, ]; } return view('console.sponsor.edit', $this->data); } else { return Response::redirectTo(route('console.sponsor.dashboard')); } } } protected function viewMode(): Factory|View|Application { $this->data['sponsorTypeCount'] = DB::table('sponsor_type')->count('id'); $this->data['sponsorType'] = DB::table('sponsor_type') ->get() ->toArray(); return view('console.sponsor.mode', $this->data); } }