From cfc71e1951df9de9f20c2386c0e549507d43c596 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sun, 23 Jul 2023 11:25:40 +0800 Subject: [PATCH] =?UTF-8?q?AddFeature:=20=E8=B5=9E=E5=8A=A9=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8A=9F=E8=83=BD=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加赞助列表内容显示,前端构建及赞助方式API获取 修改: - api.php - Sponsor.php - sponsor.blade.php Signed-off-by: XiaoLFeng --- app/Http/Controllers/Function/Sponsor.php | 137 +++++++++++++++- resources/views/function/sponsor.blade.php | 181 +++++++++++++++++---- routes/api.php | 15 +- 3 files changed, 294 insertions(+), 39 deletions(-) diff --git a/app/Http/Controllers/Function/Sponsor.php b/app/Http/Controllers/Function/Sponsor.php index 2ec641f..af89d86 100644 --- a/app/Http/Controllers/Function/Sponsor.php +++ b/app/Http/Controllers/Function/Sponsor.php @@ -9,9 +9,17 @@ use App\Http\Controllers\Controller; use App\Http\Controllers\Index; +use ErrorException; +use GuzzleHttp\Client; +use GuzzleHttp\Exception\GuzzleException; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Response; +use Illuminate\Support\Facades\Validator; class Sponsor extends Controller { @@ -23,8 +31,135 @@ public function __construct() $this->data = $data->data; } - protected function viewSponsor(): Factory|View|Application + protected function viewSponsor(): Application|Factory|View { + // 获取赞助信息 + $this->getAfadianData(); + $this->data['sponsorCountNumber'] = count($this->data['sponsor']); + $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, + ]; + } + $this->data['sponsorInfo'] = (new Index())->MarkdownToStringReplace(DB::table('info')->find(20)->data); + $this->data['sponsorCountYear'] = 0; + $this->data['sponsorCount'] = 0; + foreach ($this->data['sponsorType'] as $value) { + $this->data['sponsorURL'] = $value['url']; + break; + }; + 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']; + } + } return view('function.sponsor', $this->data); } + + public function apiSponsorType(Request $request): JsonResponse + { + $checkData = Validator::make($request->all(), [ + 'id' => 'required|int', + ]); + if (!$checkData->fails()) { + $resultSponsorType = DB::table('sponsor_type') + ->where([['id', '=', $request->id]]) + ->get() + ->toArray(); + $returnData = [ + 'output' => 'Success', + 'code' => 200, + 'data' => $resultSponsorType[0], + ]; + } else { + $returnData = [ + 'output' => 'CheckFail', + 'code' => 403, + 'data' => [ + 'message' => '输入参数有误', + ], + ]; + } + return Response::json($returnData, $returnData['code']); + } + + 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' => $sponsor[$i]->time, + ]; + } + } catch (ErrorException $e) { + } + $userID = $result[20]->data; + $token = $result[21]->data; + $time = time(); + $params = [ + 'page' => 1, + 'per_page' => 50, + ]; + $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 H:i:s', $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']); + }); + } } diff --git a/resources/views/function/sponsor.blade.php b/resources/views/function/sponsor.blade.php index f25a853..55a21e6 100644 --- a/resources/views/function/sponsor.blade.php +++ b/resources/views/function/sponsor.blade.php @@ -10,7 +10,7 @@ @include('modules.head') {!! $webHeader !!} - +
@include('modules.navbar')
@@ -21,11 +21,62 @@ class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translat style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)">
-
- qwe +
+ @csrf +
+ image description +
{{ $sqlAuthor }}
+
{{ $webDescription }}
+
+ + +
+
+
+ 今年({{ date('Y') }})收款 {{ $sponsorCountYear }} 元 +
+
+ 总计金额 {{ $sponsorCount }} 元 +
+
+ 目前站长收到了 {{ $sponsorCountNumber }} 份赞助 +
+
-
- qwe +
+
+ @if($sponsor[0] != null) +
    + @foreach($sponsor as $value) +
  1. + + + +

    + @if(!empty($value['url'])) + {{ $value['name'] }} + @else + {{ $value['name'] }} + @endif +

    + +
  2. + @endforeach +
+ @endif +
+ @include('modules.footer')
-
- @if(empty($sqlIcp) && empty($sqlGongan)) -
-
- @if(empty(!$sqlCopyRightYear)) - {{ $sqlCopyRightYear }}-{{ date('Y') }} - @else - {{ date('Y') }} - @endif {{ $sqlAuthor }}. All Rights Reserved. + +
+ + - + + {!! $webFooter !!} diff --git a/routes/api.php b/routes/api.php index a207354..f023db9 100644 --- a/routes/api.php +++ b/routes/api.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Authme; use App\Http\Controllers\Console\Link as ConsoleLink; use App\Http\Controllers\Function\Link; +use App\Http\Controllers\Function\Sponsor; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Route; @@ -25,9 +26,9 @@ // 登陆类 Route::prefix('auth')->group(function () { - Route::post('login',[Authme::class,'Login'])->name('api.auth.login'); - Route::post('register',[Authme::class,'Register'])->name('api.auth.register'); - Route::match(['get','post'],'logout',function () { + Route::post('login', [Authme::class, 'Login'])->name('api.auth.login'); + Route::post('register', [Authme::class, 'Register'])->name('api.auth.register'); + Route::match(['get', 'post'], 'logout', function () { Auth::logout(); return Response::redirectTo(''); })->name('logout'); @@ -46,7 +47,11 @@ Route::post('add', [Link::class, 'apiCustomAdd'])->name('api.link.custom.add'); Route::post('edit/{friendId}', [Link::class, 'apiCustomEdit'])->name('api.link.custom.edit'); Route::get('search', [Link::class, 'apiCustomSearch'])->name('api.link.custom.search'); - Route::post('blogCheck',[Link::class,'apiCustomBlogCheck'])->name('api.link.custom.blogCheck'); - Route::post('blogVerify',[Link::class,'apiCustomBlogVerify'])->name('api.link.custom.blogVerify'); + Route::post('blogCheck', [Link::class, 'apiCustomBlogCheck'])->name('api.link.custom.blogCheck'); + Route::post('blogVerify', [Link::class, 'apiCustomBlogVerify'])->name('api.link.custom.blogVerify'); }); }); + +Route::prefix('sponsor')->group(function () { + Route::get('get-type', [Sponsor::class, 'apiSponsorType'])->name('api.sponsor.get-type'); +});